]> git.pld-linux.org Git - packages/kernel.git/blob - 2.6.0-t6-s390-lkml.patch
Don't register empty sysctl dirs in /proc/sys.
[packages/kernel.git] / 2.6.0-t6-s390-lkml.patch
1  - Makefile fix: default make target builds the kernel image.
2  - Add export statement for cpcmd.
3  - Add tgkill system call.
4  - Reserve system call number for vserver.
5
6 diffstat:
7  arch/s390/Makefile            |   16 +++++++---------
8  arch/s390/boot/Makefile       |    2 +-
9  arch/s390/kernel/s390_ksyms.c |    3 +++
10  arch/s390/kernel/syscalls.S   |    5 +++--
11  arch/s390/kernel/time.c       |    2 +-
12  include/asm-s390/unistd.h     |    9 +++++----
13  6 files changed, 20 insertions(+), 17 deletions(-)
14
15 diff -urN linux-2.6/arch/s390/Makefile linux-2.6-s390/arch/s390/Makefile
16 --- linux-2.6/arch/s390/Makefile        Sun Sep 28 02:50:10 2003
17 +++ linux-2.6-s390/arch/s390/Makefile   Mon Oct  6 10:59:17 2003
18 @@ -48,20 +48,18 @@
19  drivers-y      += drivers/s390/
20  drivers-$(CONFIG_MATHEMU) += arch/$(ARCH)/math-emu/
21  
22 +boot           := arch/$(ARCH)/boot
23  
24 -makeboot =$(Q)$(MAKE) -f scripts/Makefile.build obj=arch/$(ARCH)/boot $(1)
25 -
26 -all: image listing
27 -
28 -listing image: vmlinux
29 -       $(call makeboot,arch/$(ARCH)/boot/$@)
30 +all: image
31  
32  install: vmlinux
33 -       $(call makeboot, $@)
34 +       $(Q)$(MAKE) $(build)=$(boot) $@
35  
36 -archclean:
37 -       $(Q)$(MAKE) -f scripts/Makefile.clean obj=arch/$(ARCH)/boot
38 +image: vmlinux
39 +       $(Q)$(MAKE) $(build)=$(boot) $(boot)/$@
40  
41 +archclean:
42 +       $(Q)$(MAKE) $(clean)=$(boot)
43  
44  prepare: include/asm-$(ARCH)/offsets.h
45  
46 diff -urN linux-2.6/arch/s390/boot/Makefile linux-2.6-s390/arch/s390/boot/Makefile
47 --- linux-2.6/arch/s390/boot/Makefile   Sun Sep 28 02:51:21 2003
48 +++ linux-2.6-s390/arch/s390/boot/Makefile      Mon Oct  6 10:59:17 2003
49 @@ -6,7 +6,7 @@
50                         tr -c '[0-9A-Za-z]' '_'`__`date | \
51                         tr -c '[0-9A-Za-z]' '_'`_t
52  
53 -EXTRA_CFLAGS  := -DCOMPILE_VERSION=$(COMPILE_VERSION) -gstabs -I .
54 +EXTRA_CFLAGS  := -DCOMPILE_VERSION=$(COMPILE_VERSION) -gstabs -I.
55  
56  targets := image
57  
58 diff -urN linux-2.6/arch/s390/kernel/s390_ksyms.c linux-2.6-s390/arch/s390/kernel/s390_ksyms.c
59 --- linux-2.6/arch/s390/kernel/s390_ksyms.c     Sun Sep 28 02:50:30 2003
60 +++ linux-2.6-s390/arch/s390/kernel/s390_ksyms.c        Mon Oct  6 10:59:17 2003
61 @@ -10,6 +10,7 @@
62  #include <linux/smp.h>
63  #include <linux/interrupt.h>
64  #include <asm/checksum.h>
65 +#include <asm/cpcmd.h>
66  #include <asm/delay.h>
67  #include <asm/pgalloc.h>
68  #include <asm/setup.h>
69 @@ -72,3 +73,5 @@
70  EXPORT_SYMBOL(console_device);
71  EXPORT_SYMBOL_NOVERS(do_call_softirq);
72  EXPORT_SYMBOL(sys_wait4);
73 +EXPORT_SYMBOL(cpcmd);
74 +
75 diff -urN linux-2.6/arch/s390/kernel/syscalls.S linux-2.6-s390/arch/s390/kernel/syscalls.S
76 --- linux-2.6/arch/s390/kernel/syscalls.S       Sun Sep 28 02:50:09 2003
77 +++ linux-2.6-s390/arch/s390/kernel/syscalls.S  Mon Oct  6 10:59:17 2003
78 @@ -249,7 +249,7 @@
79  SYSCALL(sys_futex,sys_futex,compat_sys_futex_wrapper)
80  SYSCALL(sys_sched_setaffinity,sys_sched_setaffinity,sys32_sched_setaffinity_wrapper)
81  SYSCALL(sys_sched_getaffinity,sys_sched_getaffinity,sys32_sched_getaffinity_wrapper)   /* 240 */
82 -NI_SYSCALL                                     
83 +SYSCALL(sys_tgkill,sys_tgkill,sys_tgkill)
84  NI_SYSCALL                                                     /* reserved for TUX */
85  SYSCALL(sys_io_setup,sys_io_setup,sys_ni_syscall)
86  SYSCALL(sys_io_destroy,sys_io_destroy,sys_ni_syscall)
87 @@ -268,6 +268,7 @@
88  SYSCALL(sys_timer_getoverrun,sys_timer_getoverrun,sys_ni_syscall)
89  SYSCALL(sys_timer_delete,sys_timer_delete,sys_ni_syscall)
90  SYSCALL(sys_clock_settime,sys_clock_settime,sys_ni_syscall)
91 -SYSCALL(sys_clock_gettime,sys_clock_gettime,sys_ni_syscall)
92 +SYSCALL(sys_clock_gettime,sys_clock_gettime,sys_ni_syscall)    /* 260 */
93  SYSCALL(sys_clock_getres,sys_clock_getres,sys_ni_syscall)
94  SYSCALL(sys_clock_nanosleep,sys_clock_nanosleep,sys_ni_syscall)
95 +NI_SYSCALL                                                     /* reserved for vserver */
96 diff -urN linux-2.6/arch/s390/kernel/time.c linux-2.6-s390/arch/s390/kernel/time.c
97 --- linux-2.6/arch/s390/kernel/time.c   Sun Sep 28 02:50:05 2003
98 +++ linux-2.6-s390/arch/s390/kernel/time.c      Mon Oct  6 10:59:17 2003
99 @@ -266,7 +266,7 @@
100         jiffies_timer_cc = init_timer_cc - jiffies_64 * CLK_TICKS_PER_JIFFY;
101  
102         /* set xtime */
103 -       xtime_cc = init_timer_cc;
104 +       xtime_cc = init_timer_cc + CLK_TICKS_PER_JIFFY;
105         set_time_cc = init_timer_cc - 0x8126d60e46000000LL +
106                 (0x3c26700LL*1000000*4096);
107          tod_to_timeval(set_time_cc, &xtime);
108 diff -urN linux-2.6/include/asm-s390/unistd.h linux-2.6-s390/include/asm-s390/unistd.h
109 --- linux-2.6/include/asm-s390/unistd.h Sun Sep 28 02:51:28 2003
110 +++ linux-2.6-s390/include/asm-s390/unistd.h    Mon Oct  6 10:59:17 2003
111 @@ -232,9 +232,7 @@
112  #define __NR_futex             238
113  #define __NR_sched_setaffinity 239
114  #define __NR_sched_getaffinity 240
115 -/*
116 - * Number 241 is currently unused
117 - */
118 +#define __NR_tgkill            241
119  /*
120   * Number 242 is reserved for tux
121   */
122 @@ -258,8 +256,11 @@
123  #define __NR_clock_gettime     (__NR_timer_create+6)
124  #define __NR_clock_getres      (__NR_timer_create+7)
125  #define __NR_clock_nanosleep   (__NR_timer_create+8)
126 +/*
127 + * Number 263 is reserved for vserver
128 + */
129  
130 -#define NR_syscalls 263
131 +#define NR_syscalls 264
132  
133  /* 
134   * There are some system calls that are not present on 64 bit, some
135  - Remove atomic_read hack to test for presence of ccw device directory.
136  - Add dummy release function to channel path object and cu3088 group devices.
137  - Don't rely on the chaining bit of the channel report word. 
138  - Don't call schedule while holding a lock in read_dev_chars/read_conf_data.
139
140 diffstat:
141  drivers/s390/cio/ccwgroup.c   |    9 +++------
142  drivers/s390/cio/chsc.c       |   14 +++++++++++---
143  drivers/s390/cio/device_ops.c |   25 +++++++++++++------------
144  drivers/s390/cio/qdio.c       |    8 +++-----
145  drivers/s390/net/cu3088.c     |    8 +++++++-
146  drivers/s390/s390mach.c       |    4 ++--
147  6 files changed, 39 insertions(+), 29 deletions(-)
148
149 diff -urN linux-2.6/drivers/s390/cio/ccwgroup.c linux-2.6-s390/drivers/s390/cio/ccwgroup.c
150 --- linux-2.6/drivers/s390/cio/ccwgroup.c       Sun Sep 28 02:50:26 2003
151 +++ linux-2.6-s390/drivers/s390/cio/ccwgroup.c  Mon Oct  6 10:59:18 2003
152 @@ -1,7 +1,7 @@
153  /*
154   *  drivers/s390/cio/ccwgroup.c
155   *  bus driver for ccwgroup
156 - *   $Revision$
157 + *   $Revision$
158   *
159   *    Copyright (C) 2002 IBM Deutschland Entwicklung GmbH,
160   *                       IBM Corporation
161 @@ -67,10 +67,7 @@
162         for (i = 0; i < gdev->count; i++) {
163                 sprintf(str, "cdev%d", i);
164                 sysfs_remove_link(&gdev->dev.kobj, str);
165 -               /* Hack: Make sure we act on still valid subdirs. */
166 -               if (atomic_read(&gdev->cdev[i]->dev.kobj.dentry->d_count))
167 -                       sysfs_remove_link(&gdev->cdev[i]->dev.kobj,
168 -                                         "group_device");
169 +               sysfs_remove_link(&gdev->cdev[i]->dev.kobj, "group_device");
170         }
171         
172  }
173 @@ -187,7 +184,7 @@
174                 .dev = {
175                         .bus = &ccwgroup_bus_type,
176                         .parent = root,
177 -                       .release = &ccwgroup_release,
178 +                       .release = ccwgroup_release,
179                 },
180         };
181  
182 diff -urN linux-2.6/drivers/s390/cio/chsc.c linux-2.6-s390/drivers/s390/cio/chsc.c
183 --- linux-2.6/drivers/s390/cio/chsc.c   Sun Sep 28 02:50:26 2003
184 +++ linux-2.6-s390/drivers/s390/cio/chsc.c      Mon Oct  6 10:59:18 2003
185 @@ -1,7 +1,7 @@
186  /*
187   *  drivers/s390/cio/chsc.c
188   *   S/390 common I/O routines -- channel subsystem call
189 - *   $Revision$
190 + *   $Revision$
191   *
192   *    Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
193   *                           IBM Corporation
194 @@ -843,6 +843,12 @@
195  
196  static DEVICE_ATTR(status, 0644, chp_status_show, chp_status_write);
197  
198 +
199 +static void
200 +chp_release(struct device *dev)
201 +{
202 +}
203 +
204  /*
205   * Entries for chpids on the system bus.
206   * This replaces /proc/chpids.
207 @@ -863,8 +869,10 @@
208         /* fill in status, etc. */
209         chp->id = chpid;
210         chp->state = status;
211 -       chp->dev.parent = &css_bus_device;
212 -
213 +       chp->dev = (struct device) {
214 +               .parent  = &css_bus_device,
215 +               .release = chp_release,
216 +       };
217         snprintf(chp->dev.bus_id, BUS_ID_SIZE, "chp0.%x", chpid);
218  
219         /* make it known to the system */
220 diff -urN linux-2.6/drivers/s390/cio/device_ops.c linux-2.6-s390/drivers/s390/cio/device_ops.c
221 --- linux-2.6/drivers/s390/cio/device_ops.c     Sun Sep 28 02:50:38 2003
222 +++ linux-2.6-s390/drivers/s390/cio/device_ops.c        Mon Oct  6 10:59:18 2003
223 @@ -244,8 +244,7 @@
224  }
225  
226  static inline int
227 -__ccw_device_retry_loop(struct ccw_device *cdev, struct ccw1 *ccw, long magic,
228 -                       unsigned long flags)
229 +__ccw_device_retry_loop(struct ccw_device *cdev, struct ccw1 *ccw, long magic)
230  {
231         int ret;
232         struct subchannel *sch;
233 @@ -255,7 +254,9 @@
234                 ret = cio_start (sch, ccw, magic, 0);
235                 if ((ret == -EBUSY) || (ret == -EACCES)) {
236                         /* Try again later. */
237 +                       spin_unlock_irq(&sch->lock);
238                         schedule_timeout(1);
239 +                       spin_lock_irq(&sch->lock);
240                         continue;
241                 }
242                 if (ret != 0)
243 @@ -263,12 +264,12 @@
244                         break;
245                 /* Wait for end of request. */
246                 cdev->private->intparm = magic;
247 -               spin_unlock_irqrestore(&sch->lock, flags);
248 +               spin_unlock_irq(&sch->lock);
249                 wait_event(cdev->private->wait_q,
250                            (cdev->private->intparm == -EIO) ||
251                            (cdev->private->intparm == -EAGAIN) ||
252                            (cdev->private->intparm == 0));
253 -               spin_lock_irqsave(&sch->lock, flags);
254 +               spin_lock_irq(&sch->lock);
255                 /* Check at least for channel end / device end */
256                 if (cdev->private->intparm == -EIO) {
257                         /* Non-retryable error. */
258 @@ -279,7 +280,9 @@
259                         /* Success. */
260                         break;
261                 /* Try again later. */
262 +               spin_unlock_irq(&sch->lock);
263                 schedule_timeout(1);
264 +               spin_lock_irq(&sch->lock);
265         } while (1);
266  
267         return ret;
268 @@ -300,7 +303,6 @@
269  {
270         void (*handler)(struct ccw_device *, unsigned long, struct irb *);
271         char dbf_txt[15];
272 -       unsigned long flags;
273         struct subchannel *sch;
274         int ret;
275         struct ccw1 *rdc_ccw;
276 @@ -327,7 +329,7 @@
277                 return ret;
278         }
279  
280 -       spin_lock_irqsave(&sch->lock, flags);
281 +       spin_lock_irq(&sch->lock);
282         /* Save interrupt handler. */
283         handler = cdev->handler;
284         /* Temporarily install own handler. */
285 @@ -338,11 +340,11 @@
286                 ret = -EBUSY;
287         else
288                 /* 0x00D9C4C3 == ebcdic "RDC" */
289 -               ret = __ccw_device_retry_loop(cdev, rdc_ccw, 0x00D9C4C3, flags);
290 +               ret = __ccw_device_retry_loop(cdev, rdc_ccw, 0x00D9C4C3);
291  
292         /* Restore interrupt handler. */
293         cdev->handler = handler;
294 -       spin_unlock_irqrestore(&sch->lock, flags);
295 +       spin_unlock_irq(&sch->lock);
296  
297         clear_normalized_cda (rdc_ccw);
298         kfree(rdc_ccw);
299 @@ -360,7 +362,6 @@
300         char dbf_txt[15];
301         struct subchannel *sch;
302         struct ciw *ciw;
303 -       unsigned long flags;
304         char *rcd_buf;
305         int ret;
306         struct ccw1 *rcd_ccw;
307 @@ -396,7 +397,7 @@
308         rcd_ccw->count = ciw->count;
309         rcd_ccw->flags = CCW_FLAG_SLI;
310  
311 -       spin_lock_irqsave(&sch->lock, flags);
312 +       spin_lock_irq(&sch->lock);
313         /* Save interrupt handler. */
314         handler = cdev->handler;
315         /* Temporarily install own handler. */
316 @@ -407,11 +408,11 @@
317                 ret = -EBUSY;
318         else
319                 /* 0x00D9C3C4 == ebcdic "RCD" */
320 -               ret = __ccw_device_retry_loop(cdev, rcd_ccw, 0x00D9C3C4, flags);
321 +               ret = __ccw_device_retry_loop(cdev, rcd_ccw, 0x00D9C3C4);
322  
323         /* Restore interrupt handler. */
324         cdev->handler = handler;
325 -       spin_unlock_irqrestore(&sch->lock, flags);
326 +       spin_unlock_irq(&sch->lock);
327  
328         /*
329          * on success we update the user input parms
330 diff -urN linux-2.6/drivers/s390/cio/qdio.c linux-2.6-s390/drivers/s390/cio/qdio.c
331 --- linux-2.6/drivers/s390/cio/qdio.c   Sun Sep 28 02:50:30 2003
332 +++ linux-2.6-s390/drivers/s390/cio/qdio.c      Mon Oct  6 10:59:18 2003
333 @@ -43,6 +43,7 @@
334  #include <asm/io.h>
335  #include <asm/atomic.h>
336  #include <asm/semaphore.h>
337 +#include <asm/timex.h>
338  
339  #include <asm/debug.h>
340  #include <asm/qdio.h>
341 @@ -55,7 +56,7 @@
342  #include "ioasm.h"
343  #include "chsc.h"
344  
345 -#define VERSION_QDIO_C "$Revision$"
346 +#define VERSION_QDIO_C "$Revision$"
347  
348  /****************** MODULE PARAMETER VARIABLES ********************/
349  MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>");
350 @@ -112,10 +113,7 @@
351  static inline volatile __u64 
352  qdio_get_micros(void)
353  {
354 -        __u64 time;
355 -
356 -        asm volatile ("STCK %0" : "=m" (time));
357 -        return time>>12; /* time>>12 is microseconds*/
358 +        return (get_clock() >> 12); /* time>>12 is microseconds */
359  }
360  
361  /* 
362 diff -urN linux-2.6/drivers/s390/net/cu3088.c linux-2.6-s390/drivers/s390/net/cu3088.c
363 --- linux-2.6/drivers/s390/net/cu3088.c Sun Sep 28 02:50:15 2003
364 +++ linux-2.6-s390/drivers/s390/net/cu3088.c    Mon Oct  6 10:59:18 2003
365 @@ -1,5 +1,5 @@
366  /*
367 - * $Id$
368 + * $Id$
369   *
370   * CTC / LCS ccw_device driver
371   *
372 @@ -55,8 +55,14 @@
373  
374  static struct ccw_driver cu3088_driver;
375  
376 +static void
377 +cu3088_root_dev_release (struct device *dev)
378 +{
379 +}
380 +
381  struct device cu3088_root_dev = {
382         .bus_id = "cu3088",
383 +       .release = cu3088_root_dev_release,
384  };
385  
386  static ssize_t
387 diff -urN linux-2.6/drivers/s390/s390mach.c linux-2.6-s390/drivers/s390/s390mach.c
388 --- linux-2.6/drivers/s390/s390mach.c   Sun Sep 28 02:51:15 2003
389 +++ linux-2.6-s390/drivers/s390/s390mach.c      Mon Oct  6 10:59:18 2003
390 @@ -44,7 +44,7 @@
391         struct crw crw;
392         int ccode;
393  
394 -       do {
395 +       while (1) {
396                 ccode = stcrw(&crw);
397                 if (ccode != 0)
398                         break;
399 @@ -85,7 +85,7 @@
400                         pr_debug("unknown source\n");
401                         break;
402                 }
403 -       } while (crw.chn);
404 +       }
405  }
406  
407  /*
408  - Remove dynamic allocation of major numbers. Just use static major 94.
409  - Use bus_id instead of device number where possible.
410  - Don't check open_count in dasd_generic_set_offline.
411
412 diffstat:
413  drivers/s390/block/dasd.c        |   52 +-----
414  drivers/s390/block/dasd_devmap.c |  304 +++++++++++++++++++--------------------
415  drivers/s390/block/dasd_genhd.c  |  121 +--------------
416  drivers/s390/block/dasd_int.h    |    8 -
417  drivers/s390/block/dasd_proc.c   |    4 
418  5 files changed, 181 insertions(+), 308 deletions(-)
419
420 diff -urN linux-2.6/drivers/s390/block/dasd.c linux-2.6-s390/drivers/s390/block/dasd.c
421 --- linux-2.6/drivers/s390/block/dasd.c Sun Sep 28 02:50:19 2003
422 +++ linux-2.6-s390/drivers/s390/block/dasd.c    Mon Oct  6 10:59:19 2003
423 @@ -7,7 +7,7 @@
424   * Bugreports.to..: <Linux390@de.ibm.com>
425   * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001
426   *
427 - * $Revision$
428 + * $Revision$
429   */
430  
431  #include <linux/config.h>
432 @@ -1142,8 +1142,8 @@
433                 req = elv_next_request(queue);
434                 if (device->ro_flag && rq_data_dir(req) == WRITE) {
435                         DBF_EVENT(DBF_ERR,
436 -                                 "(%04x) Rejecting write request %p",
437 -                                 _ccw_device_get_device_number(device->cdev),
438 +                                 "(%s) Rejecting write request %p",
439 +                                 device->cdev->dev.bus_id,
440                                   req);
441                         blkdev_dequeue_request(req);
442                         dasd_end_request(req, 0);
443 @@ -1154,8 +1154,8 @@
444                         if (PTR_ERR(cqr) == -ENOMEM)
445                                 break;  /* terminate request queue loop */
446                         DBF_EVENT(DBF_ERR,
447 -                                 "(%04x) CCW creation failed on request %p",
448 -                                 _ccw_device_get_device_number(device->cdev),
449 +                                 "(%s) CCW creation failed on request %p",
450 +                                 device->cdev->dev.bus_id,
451                                   req);
452                         blkdev_dequeue_request(req);
453                         dasd_end_request(req, 0);
454 @@ -1728,12 +1728,10 @@
455  dasd_generic_probe (struct ccw_device *cdev,
456                     struct dasd_discipline *discipline)
457  {
458 -       int devno;
459         int ret = 0;
460  
461 -       devno = _ccw_device_get_device_number(cdev);
462 -       if (dasd_autodetect
463 -           && (ret = dasd_add_range(devno, devno, DASD_FEATURE_DEFAULT))) {
464 +       if (dasd_autodetect &&
465 +           (ret = dasd_add_busid(cdev->dev.bus_id, DASD_FEATURE_DEFAULT))) {
466                 printk (KERN_WARNING
467                         "dasd_generic_probe: cannot autodetect %s\n",
468                         cdev->dev.bus_id);
469 @@ -1830,12 +1828,6 @@
470         struct dasd_device *device;
471  
472         device = cdev->dev.driver_data;
473 -       if (atomic_read(&device->open_count) > 0) {
474 -               printk (KERN_WARNING "Can't offline dasd device with open"
475 -                       " count = %i.\n",
476 -                       atomic_read(&device->open_count));
477 -               return -EBUSY;
478 -       }
479         dasd_set_target_state(device, DASD_STATE_NEW);
480         dasd_delete_device(device);
481         
482 @@ -1854,7 +1846,6 @@
483         struct device_driver *drv;
484         struct device *d, *dev;
485         struct ccw_device *cdev;
486 -       int devno;
487  
488         drv = get_driver(&dasd_discipline_driver->driver);
489         down_read(&drv->bus->subsys.rwsem);
490 @@ -1864,8 +1855,7 @@
491                 if (!dev)
492                         continue;
493                 cdev = to_ccwdev(dev);
494 -               devno = _ccw_device_get_device_number(cdev);
495 -               if (dasd_autodetect || dasd_devno_in_range(devno) == 0)
496 +               if (dasd_autodetect || dasd_busid_known(cdev->dev.bus_id) == 0)
497                         ccw_device_set_online(cdev);
498                 put_device(dev);
499         }
500 @@ -1934,31 +1924,6 @@
501  static
502  DEVICE_ATTR(use_diag, 0644, dasd_use_diag_show, dasd_use_diag_store);
503  
504 -#if 0
505 -/* this file shows the same information as /proc/dasd/devices using
506 - * an inaccaptable interface */
507 -/* TODO: Split this up into smaller files! */
508 -static ssize_t
509 -dasd_devices_show(struct device *dev, char *buf)
510 -{
511 -       
512 -       struct dasd_device *device;
513 -       dasd_devmap_t *devmap;
514 -
515 -       devmap = NULL;
516 -       device = dev->driver_data;
517 -       if (device)
518 -               devmap = dasd_devmap_from_devno(device->devno);
519 -
520 -       if (!devmap)
521 -               return sprintf(buf, "unused\n");
522 -
523 -       return min ((size_t) dasd_devices_print(devmap, buf), PAGE_SIZE);
524 -}
525 -
526 -static DEVICE_ATTR(dasd, 0444, dasd_devices_show, 0);
527 -#endif
528 -
529  static ssize_t
530  dasd_discipline_show(struct device *dev, char *buf)
531  {
532 @@ -1973,7 +1938,6 @@
533  static DEVICE_ATTR(discipline, 0444, dasd_discipline_show, NULL);
534  
535  static struct attribute * dasd_attrs[] = {
536 -       //&dev_attr_dasd.attr,
537         &dev_attr_readonly.attr,
538         &dev_attr_discipline.attr,
539         &dev_attr_use_diag.attr,
540 diff -urN linux-2.6/drivers/s390/block/dasd_devmap.c linux-2.6-s390/drivers/s390/block/dasd_devmap.c
541 --- linux-2.6/drivers/s390/block/dasd_devmap.c  Sun Sep 28 02:50:20 2003
542 +++ linux-2.6-s390/drivers/s390/block/dasd_devmap.c     Mon Oct  6 10:59:19 2003
543 @@ -11,7 +11,7 @@
544   * functions may not be called from interrupt context. In particular
545   * dasd_get_device is a no-no from interrupt context.
546   *
547 - * $Revision$
548 + * $Revision$
549   */
550  
551  #include <linux/config.h>
552 @@ -37,10 +37,9 @@
553   * to the device index.
554   */
555  struct dasd_devmap {
556 -       struct list_head devindex_list;
557 -       struct list_head devno_list;
558 +       struct list_head list;
559 +       char bus_id[BUS_ID_SIZE];
560          unsigned int devindex;
561 -        unsigned short devno;
562          unsigned short features;
563         struct dasd_device *device;
564  };
565 @@ -48,12 +47,15 @@
566  /*
567   * Parameter parsing functions for dasd= parameter. The syntax is:
568   *   <devno>           : (0x)?[0-9a-fA-F]+
569 + *   <busid>           : [0-0a-f]\.[0-9a-f]\.(0x)?[0-9a-fA-F]+
570   *   <feature>         : ro
571   *   <feature_list>    : \(<feature>(:<feature>)*\)
572 - *   <range>           : <devno>(-<devno>)?<feature_list>?
573 + *   <devno-range>     : <devno>(-<devno>)?<feature_list>?
574 + *   <busid-range>     : <busid>(-<busid>)?<feature_list>?
575 + *   <devices>         : <devno-range>|<busid-range>
576   *   <dasd_module>     : dasd_diag_mod|dasd_eckd_mod|dasd_fba_mod
577   *
578 - *   <dasd>            : autodetect|probeonly|<range>(,<range>)*
579 + *   <dasd>            : autodetect|probeonly|<devices>(,<devices>)*
580   */
581  
582  int dasd_probeonly =  0;       /* is true, when probeonly mode is active */
583 @@ -74,10 +76,20 @@
584  /*
585   * Hash lists for devmap structures.
586   */
587 -static struct list_head dasd_devindex_hashlists[256];
588 -static struct list_head dasd_devno_hashlists[256];
589 +static struct list_head dasd_hashlists[256];
590  int dasd_max_devindex;
591  
592 +static inline int
593 +dasd_hash_busid(char *bus_id)
594 +{
595 +       int hash, i;
596 +
597 +       hash = 0;
598 +       for (i = 0; (i < BUS_ID_SIZE) && *bus_id; i++, bus_id++)
599 +               hash += *bus_id;
600 +       return hash & 0xff;
601 +}
602 +
603  #ifndef MODULE
604  /*
605   * The parameter parsing functions for builtin-drivers are called
606 @@ -98,27 +110,47 @@
607  #endif /* #ifndef MODULE */
608  
609  /*
610 - * Read a device number from a string. The number is always in hex,
611 - * a leading 0x is accepted.
612 + * Read a device busid/devno from a string.
613   */
614  static inline int
615 -dasd_devno(char *str, char **endp)
616 +dasd_busid(char **str, int *id0, int *id1, int *devno)
617  {
618 -       int val;
619 +       int val, old_style;
620   
621 -       /* remove leading '0x' */
622 -       if (*str == '0') {
623 -               str++;
624 -               if (*str == 'x')
625 -                       str++;
626 +       /* check for leading '0x' */
627 +       old_style = 0;
628 +       if ((*str)[0] == '0' && (*str)[1] == 'x') {
629 +               *str += 2;
630 +               old_style = 1;
631         }
632 -       /* We require at least one hex digit */
633 -       if (!isxdigit(*str))
634 +       if (!isxdigit((*str)[0]))       /* We require at least one hex digit */
635 +               return -EINVAL;
636 +       val = simple_strtoul(*str, str, 16);
637 +       if (old_style || (*str)[0] != '.') {
638 +               *id0 = *id1 = 0;
639 +               if (val < 0 || val > 0xffff)
640 +                       return -EINVAL;
641 +               *devno = val;
642 +               return 0;
643 +       }
644 +       /* New style x.y.z busid */
645 +       if (val < 0 || val > 0xff)
646 +               return -EINVAL;
647 +       *id0 = val;
648 +       (*str)++;
649 +       if (!isxdigit((*str)[0]))       /* We require at least one hex digit */
650                 return -EINVAL;
651 -       val = simple_strtoul(str, endp, 16);
652 -       if ((val > 0xFFFF) || (val < 0))
653 +       val = simple_strtoul(*str, str, 16);
654 +       if (val < 0 || val > 0xff || (*str)++[0] != '.')
655                 return -EINVAL;
656 -       return val;
657 +       *id1 = val;
658 +       if (!isxdigit((*str)[0]))       /* We require at least one hex digit */
659 +               return -EINVAL;
660 +       val = simple_strtoul(*str, str, 16);
661 +       if (val < 0 || val > 0xffff)
662 +               return -EINVAL;
663 +       *devno = val;
664 +       return 0;
665  }
666  
667  /*
668 @@ -171,18 +203,37 @@
669  static inline int
670  dasd_ranges_list(char *str)
671  {
672 -       int from, to, features, rc;
673 +       int from, from_id0, from_id1;
674 +       int to, to_id0, to_id1;
675 +       int features, rc;
676 +       char bus_id[BUS_ID_SIZE+1], *orig_str;
677  
678 +       orig_str = str;
679         while (1) {
680 -               to = from = dasd_devno(str, &str);
681 -               if (*str == '-') {
682 -                       str++;
683 -                       to = dasd_devno(str, &str);
684 +               rc = dasd_busid(&str, &from_id0, &from_id1, &from);
685 +               if (rc == 0) {
686 +                       to = from;
687 +                       to_id0 = from_id0;
688 +                       to_id1 = from_id1;
689 +                       if (*str == '-') {
690 +                               str++;
691 +                               rc = dasd_busid(&str, &to_id0, &to_id1, &to);
692 +                       }
693 +               }
694 +               if (rc == 0 &&
695 +                   (from_id0 != to_id0 || from_id1 != to_id1 || from > to))
696 +                       rc = -EINVAL;
697 +               if (rc) {
698 +                       MESSAGE(KERN_ERR, "Invalid device range %s", orig_str);
699 +                       return rc;
700                 }
701                 features = dasd_feature_list(str, &str);
702 -               /* Negative numbers in from/to/features indicate errors */
703 -               if (from >= 0 && to >= 0 && features >= 0) {
704 -                       rc = dasd_add_range(from, to, features);
705 +               if (features < 0)
706 +                       return -EINVAL;
707 +               while (from <= to) {
708 +                       sprintf(bus_id, "%01x.%01x.%04x",
709 +                               from_id0, from_id1, from++);
710 +                       rc = dasd_add_busid(bus_id, features);
711                         if (rc)
712                                 return rc;
713                 }
714 @@ -243,77 +294,74 @@
715  }
716  
717  /*
718 - * Add a range of devices and creates the corresponding devreg_t
719 - * structures. The order of the ranges added through this function
720 - * will define the kdevs for the individual devices. 
721 + * Add a devmap for the device specified by busid. It is possible that
722 + * the devmap already exists (dasd= parameter). The order of the devices
723 + * added through this function will define the kdevs for the individual
724 + * devices. 
725   */
726  int
727 -dasd_add_range(int from, int to, int features)
728 +dasd_add_busid(char *bus_id, int features)
729  {
730 -       int devindex;
731 -       int devno;
732 +       struct dasd_devmap *devmap, *new, *tmp;
733 +       int hash;
734  
735 -       if (from > to) {
736 -               MESSAGE(KERN_ERR,
737 -                       "Invalid device range %04x-%04x", from, to);
738 -               return -EINVAL;
739 -       }
740 +       new = (struct dasd_devmap *)
741 +               kmalloc(sizeof(struct dasd_devmap), GFP_KERNEL);
742 +       if (!new)
743 +               return -ENOMEM;
744         spin_lock(&dasd_devmap_lock);
745 -       for (devno = from; devno <= to; devno++) {
746 -               struct dasd_devmap *devmap, *tmp;
747 -
748 -               devmap = NULL;
749 -               /* Find previous devmap for device number i */
750 -               list_for_each_entry(tmp, &dasd_devno_hashlists[devno & 255],
751 -                                   devno_list) {
752 -                       if (tmp->devno == devno) {
753 -                               devmap = tmp;
754 -                               break;
755 -                       }
756 -               }
757 -               if (devmap == NULL) {
758 -                       /* This devno is new. */
759 -                       devmap = (struct dasd_devmap *)
760 -                               kmalloc(sizeof(struct dasd_devmap),GFP_KERNEL);
761 -                       if (devmap == NULL)
762 -                               return -ENOMEM;
763 -                       devindex = dasd_max_devindex++;
764 -                       devmap->devindex = devindex;
765 -                       devmap->devno = devno;
766 -                       devmap->features = features;
767 -                       devmap->device = NULL;
768 -                       list_add(&devmap->devindex_list,
769 -                                &dasd_devindex_hashlists[devindex & 255]);
770 -                       list_add(&devmap->devno_list,
771 -                                &dasd_devno_hashlists[devno & 255]);
772 +       devmap = 0;
773 +       hash = dasd_hash_busid(bus_id);
774 +       list_for_each_entry(tmp, &dasd_hashlists[hash], list)
775 +               if (strncmp(tmp->bus_id, bus_id, BUS_ID_SIZE) == 0) {
776 +                       devmap = tmp;
777 +                       break;
778                 }
779 +       if (!devmap) {
780 +               /* This bus_id is new. */
781 +               new->devindex = dasd_max_devindex++;
782 +               strncpy(new->bus_id, bus_id, BUS_ID_SIZE);
783 +               new->features = features;
784 +               new->device = 0;
785 +               list_add(&new->list, &dasd_hashlists[hash]);
786 +               devmap = new;
787 +               new = 0;
788         }
789         spin_unlock(&dasd_devmap_lock);
790 +       if (new)
791 +               kfree(new);
792         return 0;
793  }
794  
795  /*
796 - * Check if devno has been added to the list of dasd ranges.
797 + * Find devmap for device with given bus_id.
798   */
799 -int
800 -dasd_devno_in_range(int devno)
801 +static struct dasd_devmap *
802 +dasd_find_busid(char *bus_id)
803  {
804 -       struct dasd_devmap *devmap;
805 -       int ret;
806 -               
807 -       ret = -ENOENT;
808 +       struct dasd_devmap *devmap, *tmp;
809 +       int hash;
810 +
811         spin_lock(&dasd_devmap_lock);
812 -       /* Find devmap for device with device number devno */
813 -       list_for_each_entry(devmap, &dasd_devno_hashlists[devno&255],
814 -                           devno_list) {
815 -               if (devmap->devno == devno) {
816 -                       /* Found the device. */
817 -                       ret = 0;
818 +       devmap = 0;
819 +       hash = dasd_hash_busid(bus_id);
820 +       list_for_each_entry(tmp, &dasd_hashlists[hash], list) {
821 +               if (strncmp(tmp->bus_id, bus_id, BUS_ID_SIZE) == 0) {
822 +                       devmap = tmp;
823                         break;
824                 }
825         }
826         spin_unlock(&dasd_devmap_lock);
827 -       return ret;
828 +       return devmap;
829 +}
830 +
831 +/*
832 + * Check if busid has been added to the list of dasd ranges.
833 + */
834 +int
835 +dasd_busid_known(char *bus_id)
836 +{
837 +       return dasd_find_busid(bus_id) ? 0 : -ENOENT;
838  }
839  
840  /*
841 @@ -323,18 +371,15 @@
842  static void
843  dasd_forget_ranges(void)
844  {
845 +       struct dasd_devmap *devmap, *n;
846         int i;
847  
848         spin_lock(&dasd_devmap_lock);
849         for (i = 0; i < 256; i++) {
850 -               struct list_head *l, *next;
851 -               struct dasd_devmap *devmap;
852 -               list_for_each_safe(l, next, &dasd_devno_hashlists[i]) {
853 -                       devmap = list_entry(l, struct dasd_devmap, devno_list);
854 +               list_for_each_entry_safe(devmap, n, &dasd_hashlists[i], list) {
855                         if (devmap->device != NULL)
856                                 BUG();
857 -                       list_del(&devmap->devindex_list);
858 -                       list_del(&devmap->devno_list);
859 +                       list_del(&devmap->list);
860                         kfree(devmap);
861                 }
862         }
863 @@ -342,64 +387,28 @@
864  }
865  
866  /*
867 - * Find the devmap structure from a devno. Can be removed as soon
868 - * as big minors are available.
869 + * Find the device struct by its device index.
870   */
871 -static struct dasd_devmap *
872 -dasd_devmap_from_devno(int devno)
873 -{
874 -       struct dasd_devmap *devmap, *tmp;
875 -               
876 -       devmap = NULL;
877 -       spin_lock(&dasd_devmap_lock);
878 -       /* Find devmap for device with device number devno */
879 -       list_for_each_entry(tmp, &dasd_devno_hashlists[devno&255], devno_list) {
880 -               if (tmp->devno == devno) {
881 -                       /* Found the device, return devmap */
882 -                       devmap = tmp;
883 -                       break;
884 -               }
885 -       }
886 -       spin_unlock(&dasd_devmap_lock);
887 -       return devmap;
888 -}
889 -
890 -/*
891 - * Find the devmap for a device by its device index. Can be removed
892 - * as soon as big minors are available.
893 - */
894 -static struct dasd_devmap *
895 -dasd_devmap_from_devindex(int devindex)
896 -{
897 -       struct dasd_devmap *devmap, *tmp;
898 -               
899 -       devmap = NULL;
900 -       spin_lock(&dasd_devmap_lock);
901 -       /* Find devmap for device with device index devindex */
902 -       list_for_each_entry(tmp, &dasd_devindex_hashlists[devindex & 255],
903 -                           devindex_list) {
904 -               if (tmp->devindex == devindex) {
905 -                       /* Found the device, return devno */
906 -                       devmap = tmp;
907 -                       break;
908 -               }
909 -       }
910 -       spin_unlock(&dasd_devmap_lock);
911 -       return devmap;
912 -}
913 -
914  struct dasd_device *
915  dasd_device_from_devindex(int devindex)
916  {
917 -       struct dasd_devmap *devmap;
918 +       struct dasd_devmap *devmap, *tmp;
919         struct dasd_device *device;
920 +       int i;
921  
922 -       devmap = dasd_devmap_from_devindex(devindex);
923         spin_lock(&dasd_devmap_lock);
924 -       device = devmap->device;
925 -       if (device)
926 +       devmap = 0;
927 +       for (i = 0; (i < 256) && !devmap; i++)
928 +               list_for_each_entry(tmp, &dasd_hashlists[i], list)
929 +                       if (tmp->devindex == devindex) {
930 +                               /* Found the devmap for the device. */
931 +                               devmap = tmp;
932 +                               break;
933 +                       }
934 +       if (devmap && devmap->device) {
935 +               device = devmap->device;
936                 dasd_get_device(device);
937 -       else
938 +       } else
939                 device = ERR_PTR(-ENODEV);
940         spin_unlock(&dasd_devmap_lock);
941         return device;
942 @@ -413,16 +422,15 @@
943  {
944         struct dasd_devmap *devmap;
945         struct dasd_device *device;
946 -       int devno;
947         int rc;
948  
949 -       devno = _ccw_device_get_device_number(cdev);
950 -       rc = dasd_add_range(devno, devno, DASD_FEATURE_DEFAULT);
951 +       rc = dasd_add_busid(cdev->dev.bus_id, DASD_FEATURE_DEFAULT);
952         if (rc)
953                 return ERR_PTR(rc);
954  
955 -       if (!(devmap = dasd_devmap_from_devno (devno)))
956 -               return ERR_PTR(-ENODEV);
957 +       devmap = dasd_find_busid(cdev->dev.bus_id);
958 +       if (IS_ERR(devmap))
959 +               return (void *) devmap;
960  
961         device = dasd_alloc_device();
962         if (IS_ERR(device))
963 @@ -467,11 +475,9 @@
964  {
965         struct ccw_device *cdev;
966         struct dasd_devmap *devmap;
967 -       int devno;
968  
969         /* First remove device pointer from devmap. */
970 -       devno = _ccw_device_get_device_number(device->cdev);
971 -       devmap = dasd_devmap_from_devno (devno);
972 +       devmap = dasd_find_busid(device->cdev->dev.bus_id);
973         spin_lock(&dasd_devmap_lock);
974         devmap->device = NULL;
975         spin_unlock(&dasd_devmap_lock);
976 @@ -509,10 +515,8 @@
977  
978         /* Initialize devmap structures. */
979         dasd_max_devindex = 0;
980 -       for (i = 0; i < 256; i++) {
981 -               INIT_LIST_HEAD(&dasd_devindex_hashlists[i]);
982 -               INIT_LIST_HEAD(&dasd_devno_hashlists[i]);
983 -       }
984 +       for (i = 0; i < 256; i++)
985 +               INIT_LIST_HEAD(&dasd_hashlists[i]);
986         return 0;
987  
988  }
989 diff -urN linux-2.6/drivers/s390/block/dasd_genhd.c linux-2.6-s390/drivers/s390/block/dasd_genhd.c
990 --- linux-2.6/drivers/s390/block/dasd_genhd.c   Sun Sep 28 02:50:39 2003
991 +++ linux-2.6-s390/drivers/s390/block/dasd_genhd.c      Mon Oct  6 10:59:19 2003
992 @@ -7,9 +7,9 @@
993   * Bugreports.to..: <Linux390@de.ibm.com>
994   * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999-2001
995   *
996 - * Dealing with devices registered to multiple major numbers.
997 + * gendisk related functions for the dasd driver.
998   *
999 - * $Revision$
1000 + * $Revision$
1001   */
1002  
1003  #include <linux/config.h>
1004 @@ -24,116 +24,26 @@
1005  
1006  #include "dasd_int.h"
1007  
1008 -static spinlock_t dasd_major_lock = SPIN_LOCK_UNLOCKED;
1009 -static struct list_head dasd_major_info = LIST_HEAD_INIT(dasd_major_info);
1010 -
1011 -struct major_info {
1012 -       struct list_head list;
1013 -       int major;
1014 -};
1015 -
1016 -/*
1017 - * Register major number for the dasd driver. Call with DASD_MAJOR to
1018 - * setup the static dasd device major 94 or with 0 to allocated a major
1019 - * dynamically.
1020 - */
1021 -static int
1022 -dasd_register_major(int major)
1023 -{
1024 -       struct major_info *mi;
1025 -       int new_major;
1026 -
1027 -       /* Allocate major info structure. */
1028 -       mi = kmalloc(sizeof(struct major_info), GFP_KERNEL);
1029 -
1030 -       /* Check if one of the allocations failed. */
1031 -       if (mi == NULL) {
1032 -               MESSAGE(KERN_WARNING, "%s",
1033 -                       "Cannot get memory to allocate another "
1034 -                       "major number");
1035 -               return -ENOMEM;
1036 -       }
1037 -
1038 -       /* Register block device. */
1039 -       new_major = register_blkdev(major, "dasd");
1040 -       if (new_major < 0) {
1041 -               kfree(mi);
1042 -               return new_major;
1043 -       }
1044 -       if (major != 0)
1045 -               new_major = major;
1046 -
1047 -       /* Initialize major info structure. */
1048 -       mi->major = new_major;
1049 -
1050 -       /* Insert the new major info structure into dasd_major_info list. */
1051 -       spin_lock(&dasd_major_lock);
1052 -       list_add_tail(&mi->list, &dasd_major_info);
1053 -       spin_unlock(&dasd_major_lock);
1054 -
1055 -       return 0;
1056 -}
1057 -
1058 -static void
1059 -dasd_unregister_major(struct major_info * mi)
1060 -{
1061 -       int rc;
1062 -
1063 -       if (mi == NULL)
1064 -               return;
1065 -
1066 -       /* Delete the major info from dasd_major_info. */
1067 -       spin_lock(&dasd_major_lock);
1068 -       list_del(&mi->list);
1069 -       spin_unlock(&dasd_major_lock);
1070 -
1071 -       rc = unregister_blkdev(mi->major, "dasd");
1072 -       if (rc < 0)
1073 -               MESSAGE(KERN_WARNING,
1074 -                       "Cannot unregister from major no %d, rc = %d",
1075 -                       mi->major, rc);
1076 -
1077 -       /* Free memory. */
1078 -       kfree(mi);
1079 -}
1080 -
1081  /*
1082   * Allocate and register gendisk structure for device.
1083   */
1084  int
1085  dasd_gendisk_alloc(struct dasd_device *device)
1086  {
1087 -       struct major_info *mi;
1088         struct gendisk *gdp;
1089 -       int index, len, rc;
1090 +       int len;
1091 +
1092 +       /* Make sure the minor for this device exists. */
1093 +       if (device->devindex >= DASD_PER_MAJOR)
1094 +               return -EBUSY;
1095  
1096 -       /* Make sure the major for this device exists. */
1097 -       mi = NULL;
1098 -       while (1) {
1099 -               spin_lock(&dasd_major_lock);
1100 -               index = device->devindex;
1101 -               list_for_each_entry(mi, &dasd_major_info, list) {
1102 -                       if (index < DASD_PER_MAJOR)
1103 -                               break;
1104 -                       index -= DASD_PER_MAJOR;
1105 -               }
1106 -               spin_unlock(&dasd_major_lock);
1107 -               if (index < DASD_PER_MAJOR)
1108 -                       break;
1109 -               rc = dasd_register_major(0);
1110 -               if (rc) {
1111 -                       DBF_EXC(DBF_ALERT, "%s", "out of major numbers!");
1112 -                       return rc;
1113 -               }
1114 -       }
1115 -       
1116         gdp = alloc_disk(1 << DASD_PARTN_BITS);
1117         if (!gdp)
1118                 return -ENOMEM;
1119  
1120         /* Initialize gendisk structure. */
1121 -       gdp->major = mi->major;
1122 -       gdp->first_minor = index << DASD_PARTN_BITS;
1123 +       gdp->major = DASD_MAJOR;
1124 +       gdp->first_minor = device->devindex << DASD_PARTN_BITS;
1125         gdp->fops = &dasd_device_operations;
1126         gdp->driverfs_dev = &device->cdev->dev;
1127  
1128 @@ -153,8 +63,7 @@
1129         }
1130         len += sprintf(gdp->disk_name + len, "%c", 'a'+(device->devindex%26));
1131  
1132 -       sprintf(gdp->devfs_name, "dasd/%04x",
1133 -               _ccw_device_get_device_number(device->cdev));
1134 +       sprintf(gdp->devfs_name, "dasd/%s", device->cdev->dev.bus_id);
1135  
1136         if (device->ro_flag)
1137                 set_disk_ro(gdp, 1);
1138 @@ -173,6 +82,7 @@
1139  dasd_gendisk_free(struct dasd_device *device)
1140  {
1141         del_gendisk(device->gdp);
1142 +       device->gdp->queue = 0;
1143         put_disk(device->gdp);
1144         device->gdp = 0;
1145  }
1146 @@ -221,7 +131,7 @@
1147         int rc;
1148  
1149         /* Register to static dasd major 94 */
1150 -       rc = dasd_register_major(DASD_MAJOR);
1151 +       rc = register_blkdev(DASD_MAJOR, "dasd");
1152         if (rc != 0) {
1153                 MESSAGE(KERN_WARNING,
1154                         "Couldn't register successfully to "
1155 @@ -234,10 +144,5 @@
1156  void
1157  dasd_gendisk_exit(void)
1158  {
1159 -       struct list_head *l, *n;
1160 -
1161 -       spin_lock(&dasd_major_lock);
1162 -       list_for_each_safe(l, n, &dasd_major_info)
1163 -               dasd_unregister_major(list_entry(l, struct major_info, list));
1164 -       spin_unlock(&dasd_major_lock);
1165 +       unregister_blkdev(DASD_MAJOR, "dasd");
1166  }
1167 diff -urN linux-2.6/drivers/s390/block/dasd_int.h linux-2.6-s390/drivers/s390/block/dasd_int.h
1168 --- linux-2.6/drivers/s390/block/dasd_int.h     Sun Sep 28 02:50:38 2003
1169 +++ linux-2.6-s390/drivers/s390/block/dasd_int.h        Mon Oct  6 10:59:19 2003
1170 @@ -6,7 +6,7 @@
1171   * Bugreports.to..: <Linux390@de.ibm.com>
1172   * (C) IBM Corporation, IBM Deutschland Entwicklung GmbH, 1999,2000
1173   *
1174 - * $Revision$
1175 + * $Revision$
1176   */
1177  
1178  #ifndef DASD_INT_H
1179 @@ -15,7 +15,7 @@
1180  #ifdef __KERNEL__
1181  
1182  /* we keep old device allocation scheme; IOW, minors are still in 0..255 */
1183 -#define DASD_PER_MAJOR ( 1U<<(8-DASD_PARTN_BITS))
1184 +#define DASD_PER_MAJOR (1U << (MINORBITS - DASD_PARTN_BITS))
1185  #define DASD_PARTN_MASK ((1 << DASD_PARTN_BITS) - 1)
1186  
1187  /*
1188 @@ -477,8 +477,8 @@
1189  struct dasd_device *dasd_device_from_devindex(int);
1190  
1191  int dasd_parse(void);
1192 -int dasd_add_range(int, int, int);
1193 -int dasd_devno_in_range(int);
1194 +int dasd_add_busid(char *, int);
1195 +int dasd_busid_known(char *);
1196  
1197  /* externals in dasd_gendisk.c */
1198  int  dasd_gendisk_init(void);
1199 diff -urN linux-2.6/drivers/s390/block/dasd_proc.c linux-2.6-s390/drivers/s390/block/dasd_proc.c
1200 --- linux-2.6/drivers/s390/block/dasd_proc.c    Sun Sep 28 02:50:10 2003
1201 +++ linux-2.6-s390/drivers/s390/block/dasd_proc.c       Mon Oct  6 10:59:19 2003
1202 @@ -9,7 +9,7 @@
1203   *
1204   * /proc interface for the dasd driver.
1205   *
1206 - * $Revision$
1207 + * $Revision$
1208   */
1209  
1210  #include <linux/config.h>
1211 @@ -59,7 +59,7 @@
1212         if (IS_ERR(device))
1213                 return 0;
1214         /* Print device number. */
1215 -       seq_printf(m, "%04x", _ccw_device_get_device_number(device->cdev));
1216 +       seq_printf(m, "%s", device->cdev->dev.bus_id);
1217         /* Print discipline string. */
1218         if (device != NULL && device->discipline != NULL)
1219                 seq_printf(m, "(%s)", device->discipline->name);
1220 diffstat:
1221  drivers/s390/net/ctctty.c |    7 +++----
1222  1 files changed, 3 insertions(+), 4 deletions(-)
1223
1224 diff -urN linux-2.6/drivers/s390/net/ctctty.c linux-2.6-s390/drivers/s390/net/ctctty.c
1225 --- linux-2.6/drivers/s390/net/ctctty.c Sun Sep 28 02:50:28 2003
1226 +++ linux-2.6-s390/drivers/s390/net/ctctty.c    Mon Oct  6 10:59:26 2003
1227 @@ -1,5 +1,5 @@
1228  /*
1229 - * $Id$
1230 + * $Id$
1231   *
1232   * CTC / ESCON network driver, tty interface.
1233   *
1234 @@ -758,7 +758,7 @@
1235                         printk(KERN_DEBUG "%s%d ioctl TIOCGSOFTCAR\n", CTC_TTY_NAME,
1236                                info->line);
1237  #endif
1238 -                       error = verify_area(VERIFY_WRITE, (void *) arg, sizeof(long));
1239 +                       error = put_user(C_CLOCAL(tty) ? 1 : 0, (ulong *) arg);
1240                         if (error)
1241                                 return error;
1242                         put_user(C_CLOCAL(tty) ? 1 : 0, (ulong *) arg);
1243 @@ -768,10 +768,9 @@
1244                         printk(KERN_DEBUG "%s%d ioctl TIOCSSOFTCAR\n", CTC_TTY_NAME,
1245                                info->line);
1246  #endif
1247 -                       error = verify_area(VERIFY_READ, (void *) arg, sizeof(long));
1248 +                       error = get_user(arg, (ulong *) arg);
1249                         if (error)
1250                                 return error;
1251 -                       get_user(arg, (ulong *) arg);
1252                         tty->termios->c_cflag =
1253                             ((tty->termios->c_cflag & ~CLOCAL) |
1254                              (arg ? CLOCAL : 0));
1255  - Add dummy release function to iucv bus.
1256
1257 diffstat:
1258  drivers/s390/net/iucv.c |   12 +++++++++---
1259  1 files changed, 9 insertions(+), 3 deletions(-)
1260
1261 diff -urN linux-2.6/drivers/s390/net/iucv.c linux-2.6-s390/drivers/s390/net/iucv.c
1262 --- linux-2.6/drivers/s390/net/iucv.c   Sun Sep 28 02:50:09 2003
1263 +++ linux-2.6-s390/drivers/s390/net/iucv.c      Mon Oct  6 10:59:27 2003
1264 @@ -1,5 +1,5 @@
1265  /* 
1266 - * $Id$
1267 + * $Id$
1268   *
1269   * IUCV network driver
1270   *
1271 @@ -29,7 +29,7 @@
1272   * along with this program; if not, write to the Free Software
1273   * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
1274   *
1275 - * RELEASE-TAG: IUCV lowlevel driver $Revision$
1276 + * RELEASE-TAG: IUCV lowlevel driver $Revision$
1277   *
1278   */
1279  \f
1280 @@ -79,6 +79,11 @@
1281         return 0;
1282  }
1283  
1284 +static void
1285 +iucv_root_release (struct device *dev)
1286 +{
1287 +}
1288 +
1289  struct bus_type iucv_bus = {
1290         .name = "iucv",
1291         .match = iucv_bus_match,
1292 @@ -86,6 +91,7 @@
1293  
1294  struct device iucv_root = {
1295         .bus_id = "iucv",
1296 +       .release = iucv_root_release,
1297  };
1298  
1299  /* General IUCV interrupt structure */
1300 @@ -349,7 +355,7 @@
1301  static void
1302  iucv_banner(void)
1303  {
1304 -       char vbuf[] = "$Revision$";
1305 +       char vbuf[] = "$Revision$";
1306         char *version = vbuf;
1307  
1308         if ((version = strchr(version, ':'))) {
1309  - Remove read, write and data device pointers from card structure. Use
1310    ccw group array to get the device pointers.
1311
1312 diffstat:
1313  drivers/s390/net/qeth.c |  870 +++++++++++++++++++-----------------------------
1314  drivers/s390/net/qeth.h |   34 +
1315  2 files changed, 375 insertions(+), 529 deletions(-)
1316
1317 diff -urN linux-2.6/drivers/s390/net/qeth.c linux-2.6-s390/drivers/s390/net/qeth.c
1318 --- linux-2.6/drivers/s390/net/qeth.c   Sun Sep 28 02:51:22 2003
1319 +++ linux-2.6-s390/drivers/s390/net/qeth.c      Mon Oct  6 10:59:26 2003
1320 @@ -1,6 +1,6 @@
1321  /*
1322   *
1323 - * linux/drivers/s390/net/qeth.c ($Revision$)
1324 + * linux/drivers/s390/net/qeth.c ($Revision$)
1325   *
1326   * Linux on zSeries OSA Express and HiperSockets support
1327   *
1328 @@ -116,6 +116,7 @@
1329  #include <asm/ebcdic.h>
1330  #include <linux/ctype.h>
1331  #include <asm/semaphore.h>
1332 +#include <asm/timex.h>
1333  #include <linux/if.h>
1334  #include <linux/if_arp.h>
1335  #include <linux/ip.h>
1336 @@ -164,7 +165,7 @@
1337                  "reserved for low memory situations");
1338  
1339  /****************** MODULE STUFF **********************************/
1340 -#define VERSION_QETH_C "$Revision$"
1341 +#define VERSION_QETH_C "$Revision$"
1342  static const char *version = "qeth S/390 OSA-Express driver ("
1343      VERSION_QETH_C "/" VERSION_QETH_H "/" VERSION_QETH_MPC_H
1344      QETH_VERSION_IPV6 QETH_VERSION_VLAN ")";
1345 @@ -245,21 +246,15 @@
1346  static inline unsigned int
1347  qeth_get_millis(void)
1348  {
1349 -       __u64 time;
1350 -
1351 -       asm volatile ("STCK %0":"=m" (time));
1352 -       return (int) (time >> 22);   /* time>>12 is microseconds, we divide it
1353 -                                       by 1024 */
1354 +       return (int) (get_clock() >> 22);   /* time>>12 is microseconds, we
1355 +                                              divide it by 1024 */
1356  }
1357  
1358  #ifdef QETH_PERFORMANCE_STATS
1359  static inline unsigned int
1360  qeth_get_micros(void)
1361  {
1362 -       __u64 time;
1363 -
1364 -       asm volatile ("STCK %0":"=m" (time));
1365 -       return (int) (time >> 12);
1366 +       return (int) (get_clock() >> 12);
1367  }
1368  #endif /* QETH_PERFORMANCE_STATS */
1369  
1370 @@ -591,10 +586,8 @@
1371         struct qeth_card *card;
1372  
1373         card = (struct qeth_card *) dev->priv;
1374 -       QETH_DBF_TEXT2(0, trace, "open");
1375 -       QETH_DBF_TEXT2(0, setup, "open");
1376 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
1377 -       QETH_DBF_TEXT2(0, setup, card->rdev->dev.bus_id);
1378 +       QETH_DBF_CARD2(0, trace, "open", card);
1379 +       QETH_DBF_CARD2(0, setup, "open", card);
1380  
1381         qeth_save_dev_flag_state(card);
1382  
1383 @@ -607,9 +600,10 @@
1384  static int
1385  qeth_set_config(struct net_device *dev, struct ifmap *map)
1386  {
1387 -       QETH_DBF_TEXT3(0, trace, "nscf");
1388 -       QETH_DBF_TEXT3(0, trace,
1389 -                      ((struct qeth_card *)dev->priv)->rdev->dev.bus_id);
1390 +       struct qeth_card *card;
1391 +
1392 +       card = (struct qeth_card *)dev->priv;
1393 +       QETH_DBF_CARD3(0, trace, "nscf", card);
1394  
1395         return -EOPNOTSUPP;
1396  }
1397 @@ -697,8 +691,7 @@
1398  static void
1399  qeth_wakeup(struct qeth_card *card)
1400  {
1401 -       QETH_DBF_TEXT5(0, trace, "wkup");
1402 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1403 +       QETH_DBF_CARD5(0, trace, "wkup", card);
1404  
1405         atomic_set(&card->data_has_arrived, 1);
1406         wake_up(&card->wait_q);
1407 @@ -731,32 +724,27 @@
1408         if (dstat & DEV_STAT_UNIT_CHECK) {
1409                 if (sense[SENSE_RESETTING_EVENT_BYTE] &
1410                     SENSE_RESETTING_EVENT_FLAG) {
1411 -                       QETH_DBF_TEXT1(0, trace, "REVN");
1412 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1413 +                       QETH_DBF_CARD1(0, trace, "REVN", card);
1414                         problem = PROBLEM_RESETTING_EVENT_INDICATOR;
1415                         goto out;
1416                 }
1417                 if (sense[SENSE_COMMAND_REJECT_BYTE] &
1418                     SENSE_COMMAND_REJECT_FLAG) {
1419 -                       QETH_DBF_TEXT1(0, trace, "CREJ");
1420 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1421 +                       QETH_DBF_CARD1(0, trace, "CREJ", card);
1422                         problem = PROBLEM_COMMAND_REJECT;
1423                         goto out;
1424                 }
1425                 if ((sense[2] == 0xaf) && (sense[3] == 0xfe)) {
1426 -                       QETH_DBF_TEXT1(0, trace, "AFFE");
1427 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1428 +                       QETH_DBF_CARD1(0, trace, "AFFE", card);
1429                         problem = PROBLEM_AFFE;
1430                         goto out;
1431                 }
1432                 if ((!sense[0]) && (!sense[1]) && (!sense[2]) && (!sense[3])) {
1433 -                       QETH_DBF_TEXT1(0, trace, "ZSNS");
1434 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1435 +                       QETH_DBF_CARD1(0, trace, "ZSNS", card);
1436                         problem = PROBLEM_ZERO_SENSE_DATA;
1437                         goto out;
1438                 }
1439 -               QETH_DBF_TEXT1(0, trace, "GCHK");
1440 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1441 +               QETH_DBF_CARD1(0, trace, "GCHK", card);
1442                 problem = PROBLEM_GENERAL_CHECK;
1443                 goto out;
1444         }
1445 @@ -764,7 +752,7 @@
1446                      SCHN_STAT_CHN_DATA_CHK | SCHN_STAT_CHAIN_CHECK |
1447                      SCHN_STAT_PROT_CHECK | SCHN_STAT_PROG_CHECK)) {
1448                 QETH_DBF_TEXT1(0, trace, "GCHK");
1449 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1450 +               QETH_DBF_TEXT1(0, trace, cdev->dev.bus_id);
1451                 QETH_DBF_HEX1(0, misc, irb, __max(QETH_DBF_MISC_LEN, 64));
1452                 PRINT_WARN("check on device %s, dstat=x%x, cstat=x%x, "
1453                            "rqparam=x%x\n",
1454 @@ -777,11 +765,10 @@
1455         if (qeth_check_idx_response(buffer)) {
1456                 PRINT_WARN("received an IDX TERMINATE on device %s "
1457                            "with cause code 0x%02x%s\n",
1458 -                          card->rdev->dev.bus_id, buffer[4],
1459 +                          CARD_BUS_ID(card), buffer[4],
1460                            (buffer[4] ==
1461                             0x22) ? " -- try another portname" : "");
1462 -               QETH_DBF_TEXT1(0, trace, "RTRM");
1463 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1464 +               QETH_DBF_CARD1(0, trace, "RTRM", card);
1465                 problem = PROBLEM_RECEIVED_IDX_TERMINATE;
1466                 goto out;
1467         }
1468 @@ -796,8 +783,7 @@
1469                                    "pulled the cable or disabled the port."
1470                                    "Discarding outgoing packets.\n",
1471                                    card->dev_name, card->chpid);
1472 -                       QETH_DBF_TEXT1(0, trace, "CBOT");
1473 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1474 +                       QETH_DBF_CARD1(0, trace, "CBOT", card);
1475                         qeth_set_dev_flag_norunning(card);
1476                         problem = 0;
1477                         goto out;
1478 @@ -809,27 +795,21 @@
1479                         }
1480                         goto out;
1481                 }
1482 -               if (*(PDU_ENCAPSULATION(buffer)) == IPA_CMD_REGISTER_LOCAL_ADDR) {
1483 -                       QETH_DBF_TEXT3(0, trace, "irla");
1484 -                       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
1485 -               }
1486 -               if (*(PDU_ENCAPSULATION(buffer)) ==
1487 -                   IPA_CMD_UNREGISTER_LOCAL_ADDR) {
1488 -                       QETH_DBF_TEXT3(0, trace, "irla");
1489 -                       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
1490 -               }
1491 +               if (*(PDU_ENCAPSULATION(buffer)) == IPA_CMD_REGISTER_LOCAL_ADDR)
1492 +                       QETH_DBF_CARD3(0, trace, "irla", card);
1493 +               if (*(PDU_ENCAPSULATION(buffer)) == 
1494 +                   IPA_CMD_UNREGISTER_LOCAL_ADDR)
1495 +                       QETH_DBF_CARD3(0, trace, "irla", card);
1496                 PRINT_WARN("probably a problem on %s: received data is IPA, "
1497                            "but not a reply: command=0x%x\n", card->dev_name,
1498                            *(PDU_ENCAPSULATION(buffer) + 1));
1499 -               QETH_DBF_TEXT1(0, trace, "INRP");
1500 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1501 +               QETH_DBF_CARD1(0, trace, "INRP", card);
1502                 goto out;
1503         }
1504         /* no probs */
1505  out:
1506         if (problem) {
1507 -               QETH_DBF_TEXT3(0, trace, "gcpr");
1508 -               QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
1509 +               QETH_DBF_CARD3(0, trace, "gcpr", card);
1510                 sprintf(dbf_text, "%2x%2x%4x", dstat, cstat, problem);
1511                 QETH_DBF_TEXT3(0, trace, dbf_text);
1512                 sprintf(dbf_text, "%8x", rqparam);
1513 @@ -849,8 +829,7 @@
1514         int result, result2;
1515         char dbf_text[15];
1516  
1517 -       QETH_DBF_TEXT5(0, trace, "isnr");
1518 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1519 +       QETH_DBF_CARD5(0, trace, "isnr", card);
1520  
1521         /* set up next read ccw */
1522         memcpy(&card->dma_stuff->read_ccw, READ_CCW, sizeof (struct ccw1));
1523 @@ -859,21 +838,20 @@
1524         card->dma_stuff->read_ccw.cda = QETH_GET_ADDR(card->dma_stuff->recbuf);
1525  
1526         /* 
1527 -        * we don't spin_lock_irqsave(get_ccwdev_lock(card->rdev),flags), as
1528 +        * we don't spin_lock_irqsave(get_ccwdev_lock(CARD_RDEV(card)),flags), as
1529          * we are only called in the interrupt handler
1530          */
1531 -       result = ccw_device_start(card->rdev, &card->dma_stuff->read_ccw,
1532 +       result = ccw_device_start(CARD_RDEV(card), &card->dma_stuff->read_ccw,
1533                                   MPC_SETUP_STATE, 0, 0);
1534         if (result) {
1535                 qeth_delay_millis(QETH_WAIT_BEFORE_2ND_DOIO);
1536                 result2 =
1537 -                   ccw_device_start(card->rdev, &card->dma_stuff->read_ccw,
1538 +                   ccw_device_start(CARD_RDEV(card), &card->dma_stuff->read_ccw,
1539                                      MPC_SETUP_STATE, 0, 0);
1540                 PRINT_WARN("read handler on device %s, read: ccw_device_start "
1541                            "returned %i, next try returns %i\n",
1542 -                          card->rdev->dev.bus_id, result, result2);
1543 -               QETH_DBF_TEXT1(0, trace, "IsNR");
1544 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1545 +                          CARD_BUS_ID(card), result, result2);
1546 +               QETH_DBF_CARD1(0, trace, "IsNR", card);
1547                 sprintf(dbf_text, "%04x%04x", (__s16) result, (__s16) result2);
1548                 QETH_DBF_TEXT1(0, trace, dbf_text);
1549         }
1550 @@ -977,8 +955,7 @@
1551         int elements, el_m_1;
1552         char dbf_text[15];
1553  
1554 -       QETH_DBF_TEXT6(0, trace, "clib");
1555 -       QETH_DBF_TEXT6(0, trace, card->rdev->dev.bus_id);
1556 +       QETH_DBF_CARD6(0, trace, "clib", card);
1557         sprintf(dbf_text, "bufno%3x", bufno);
1558         QETH_DBF_TEXT6(0, trace, dbf_text);
1559  
1560 @@ -1010,8 +987,7 @@
1561         char dbf_text[15];
1562         int no;
1563  
1564 -       QETH_DBF_TEXT5(0, trace, "qibf");
1565 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1566 +       QETH_DBF_CARD5(0, trace, "qibf", card);
1567         sprintf(dbf_text, "%4x%4x", under_int, bufno);
1568         QETH_DBF_TEXT5(0, trace, dbf_text);
1569         atomic_inc(&card->requeue_counter);
1570 @@ -1019,8 +995,7 @@
1571                 return;
1572  
1573         if (!spin_trylock(&card->requeue_input_lock)) {
1574 -               QETH_DBF_TEXT5(0, trace, "qibl");
1575 -               QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1576 +               QETH_DBF_CARD5(0, trace, "qibl", card);
1577                 return;
1578         }
1579         requeue_counter = atomic_read(&card->requeue_counter);
1580 @@ -1046,8 +1021,7 @@
1581                                           "be lost! Try increasing the bufcnt "
1582                                           "parameter\n",
1583                                           card->dev_name);
1584 -                               QETH_DBF_TEXT2(1, trace, "QINB");
1585 -                               QETH_DBF_TEXT2(1, trace, card->rdev->dev.bus_id);
1586 +                               QETH_DBF_CARD2(1, trace, "QINB", card);
1587                                 goto out;
1588                         }
1589                         card->inbound_buffer_entry_no[pos] =
1590 @@ -1065,8 +1039,7 @@
1591         /* stop points to the position after the last element */
1592         stop = pos;
1593  
1594 -       QETH_DBF_TEXT3(0, trace, "qibi");
1595 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
1596 +       QETH_DBF_CARD3(0, trace, "qibi", card);
1597         sprintf(dbf_text, "%4x", requeue_counter);
1598         QETH_DBF_TEXT3(0, trace, dbf_text);
1599         sprintf(dbf_text, "%4x%4x", start, stop);
1600 @@ -1093,15 +1066,14 @@
1601                 for (i = start; i < start + cnt1; i++) {
1602                         qeth_clear_input_buffer(card, i);
1603                 }
1604 -               result = do_QDIO(card->ddev,
1605 +               result = do_QDIO(CARD_DDEV(card),
1606                                  QDIO_FLAG_SYNC_INPUT | under_int,
1607                                  0, start, cnt1, NULL);
1608                 if (result) {
1609                         PRINT_WARN("qeth_queue_input_buffer's "
1610                                    "do_QDIO returnd %i (device %s)\n",
1611 -                                  result, card->ddev->dev.bus_id);
1612 -                       QETH_DBF_TEXT1(0, trace, "QIDQ");
1613 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1614 +                                  result, CARD_DDEV_ID(card));
1615 +                       QETH_DBF_CARD1(0, trace, "QIDQ", card);
1616                         sprintf(dbf_text, "%4x%4x", result, requeue_counter);
1617                         QETH_DBF_TEXT1(0, trace, dbf_text);
1618                         sprintf(dbf_text, "%4x%4x", start, cnt1);
1619 @@ -1112,15 +1084,14 @@
1620                 for (i = 0; i < cnt2; i++) {
1621                         qeth_clear_input_buffer(card, i);
1622                 }
1623 -               result = do_QDIO(card->ddev,
1624 +               result = do_QDIO(CARD_DDEV(card),
1625                                  QDIO_FLAG_SYNC_INPUT | under_int, 0,
1626                                  0, cnt2, NULL);
1627                 if (result) {
1628                         PRINT_WARN("qeth_queue_input_buffer's "
1629                                    "do_QDIO returnd %i (device %s)\n",
1630 -                                  result, card->ddev->dev.bus_id);
1631 -                       QETH_DBF_TEXT1(0, trace, "QIDQ");
1632 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1633 +                                  result, CARD_DDEV_ID(card));
1634 +                       QETH_DBF_CARD1(0, trace, "QIDQ", card);
1635                         sprintf(dbf_text, "%4x%4x", result, requeue_counter);
1636                         QETH_DBF_TEXT1(0, trace, dbf_text);
1637                         sprintf(dbf_text, "%4x%4x", 0, cnt2);
1638 @@ -1170,9 +1141,8 @@
1639         if (element >= max_elements) {
1640                 PRINT_WARN("device %s: error in interpreting buffer (data "
1641                            "too long), %i elements.\n",
1642 -                          card->rdev->dev.bus_id, element);
1643 -               QETH_DBF_TEXT0(0, trace, "IEDL");
1644 -               QETH_DBF_TEXT0(0, trace, card->rdev->dev.bus_id);
1645 +                          CARD_BUS_ID(card), element);
1646 +               QETH_DBF_CARD0(0, trace, "IEDL", card);
1647                 sprintf(dbf_text, "%4x%4x", *element_ptr, *pos_in_el_ptr);
1648                 QETH_DBF_TEXT0(1, trace, dbf_text);
1649                 QETH_DBF_HEX0(0, misc, buffer, QETH_DBF_MISC_LEN);
1650 @@ -1186,9 +1156,8 @@
1651         curr_len = SBALE_LEN(element);
1652         if (curr_len > PAGE_SIZE) {
1653                 PRINT_WARN("device %s: bad element length in element %i: "
1654 -                          "0x%x\n", card->rdev->dev.bus_id, element, curr_len);
1655 -               QETH_DBF_TEXT0(0, trace, "BELN");
1656 -               QETH_DBF_TEXT0(0, trace, card->rdev->dev.bus_id);
1657 +                          "0x%x\n", CARD_BUS_ID(card), element, curr_len);
1658 +               QETH_DBF_CARD0(0, trace, "BELN", card);
1659                 sprintf(dbf_text, "%4x", curr_len);
1660                 QETH_DBF_TEXT0(0, trace, dbf_text);
1661                 sprintf(dbf_text, "%4x%4x", *element_ptr, *pos_in_el_ptr);
1662 @@ -1201,8 +1170,7 @@
1663         /* header fits in current element? */
1664         if (curr_len < pos_in_el + QETH_HEADER_SIZE) {
1665                 if (!pos_in_el) {
1666 -                       QETH_DBF_TEXT6(0, trace, "gnmh");
1667 -                       QETH_DBF_TEXT6(0, trace, card->rdev->dev.bus_id);
1668 +                       QETH_DBF_CARD6(0, trace, "gnmh", card);
1669                         return NULL;    /* no more data in buffer */
1670                 }
1671                 /* set hdr to next element */
1672 @@ -1211,8 +1179,7 @@
1673                 curr_len = SBALE_LEN(element);
1674                 /* does it fit in there? */
1675                 if (curr_len < QETH_HEADER_SIZE) {
1676 -                       QETH_DBF_TEXT6(0, trace, "gdnf");
1677 -                       QETH_DBF_TEXT6(0, trace, card->rdev->dev.bus_id);
1678 +                       QETH_DBF_CARD6(0, trace, "gdnf", card);
1679                         return NULL;
1680                 }
1681         }
1682 @@ -1221,8 +1188,7 @@
1683  
1684         length = *(__u16 *) ((char *) (*hdr_ptr) + QETH_HEADER_LEN_POS);
1685  
1686 -       QETH_DBF_TEXT6(0, trace, "gdHd");
1687 -       QETH_DBF_TEXT6(0, trace, card->rdev->dev.bus_id);
1688 +       QETH_DBF_CARD6(0, trace, "gdHd", card);
1689         QETH_DBF_HEX6(0, trace, hdr_ptr, sizeof (void *));
1690  
1691         pos_in_el += QETH_HEADER_SIZE;
1692 @@ -1234,9 +1200,8 @@
1693                 if (!curr_len) {
1694                         PRINT_WARN("device %s: inb. buffer with more headers "
1695                                    "than data areas (%i elements).\n",
1696 -                                  card->rdev->dev.bus_id, element);
1697 -                       QETH_DBF_TEXT0(0, trace, "IEMH");
1698 -                       QETH_DBF_TEXT0(0, trace, card->rdev->dev.bus_id);
1699 +                                  CARD_BUS_ID(card), element);
1700 +                       QETH_DBF_CARD0(0, trace, "IEMH", card);
1701                         sprintf(dbf_text, "%2x%2x%4x", element, *element_ptr,
1702                                 *pos_in_el_ptr);
1703                         QETH_DBF_TEXT0(1, trace, dbf_text);
1704 @@ -1254,10 +1219,6 @@
1705                 if (!skb)
1706                         goto nomem;
1707                 skb_pull(skb, QETH_FAKE_LL_LEN);
1708 -               if (!skb) {
1709 -                       dev_kfree_skb_irq(skb);
1710 -                       goto nomem;
1711 -               }
1712         } else {
1713                 skb = qeth_get_skb(length);
1714                 if (!skb)
1715 @@ -1274,9 +1235,8 @@
1716                         PRINT_WARN("device %s: unexpected end of buffer, "
1717                                    "length of element %i is 0. Discarding "
1718                                    "packet.\n",
1719 -                                  card->rdev->dev.bus_id, element);
1720 -                       QETH_DBF_TEXT0(0, trace, "IEUE");
1721 -                       QETH_DBF_TEXT0(0, trace, card->rdev->dev.bus_id);
1722 +                                  CARD_BUS_ID(card), element);
1723 +                       QETH_DBF_CARD0(0, trace, "IEUE", card);
1724                         sprintf(dbf_text, "%2x%2x%4x", element, *element_ptr,
1725                                 *pos_in_el_ptr);
1726                         QETH_DBF_TEXT0(0, trace, dbf_text);
1727 @@ -1321,8 +1281,7 @@
1728         if (net_ratelimit()) {
1729                 PRINT_WARN("no memory for packet from %s\n", card->dev_name);
1730         }
1731 -       QETH_DBF_TEXT0(0, trace, "NOMM");
1732 -       QETH_DBF_TEXT0(0, trace, card->rdev->dev.bus_id);
1733 +       QETH_DBF_CARD0(0, trace, "NOMM", card);
1734         return NULL;
1735  }
1736  
1737 @@ -1426,8 +1385,7 @@
1738                 break;
1739         case QETH_CAST_ANYCAST:
1740         case QETH_CAST_NOCAST:
1741 -               QETH_DBF_TEXT2(0, trace, "ribf");
1742 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
1743 +               QETH_DBF_CARD2(0, trace, "ribf", card);
1744                 sprintf(dbf_text, "castan%2x", cast_type);
1745                 QETH_DBF_TEXT2(1, trace, dbf_text);
1746                 skb->pkt_type = PACKET_HOST;
1747 @@ -1437,8 +1395,7 @@
1748                            "of 0x%x. Using unicasting instead.\n",
1749                            cast_type);
1750                 skb->pkt_type = PACKET_HOST;
1751 -               QETH_DBF_TEXT2(0, trace, "ribf");
1752 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
1753 +               QETH_DBF_CARD2(0, trace, "ribf", card);
1754                 sprintf(dbf_text, "castun%2x", cast_type);
1755                 QETH_DBF_TEXT2(1, trace, dbf_text);
1756         }
1757 @@ -1518,10 +1475,10 @@
1758         if (buffer->element[15].flags & 0xff) {
1759                 PRINT_WARN("on device %s: incoming SBALF 15 on buffer "
1760                            "0x%x are 0x%x\n",
1761 -                          card->rdev->dev.bus_id, buffer_no,
1762 +                          CARD_BUS_ID(card), buffer_no,
1763                            buffer->element[15].flags & 0xff);
1764                 sprintf(dbf_text, "SF%s%2x%2x",
1765 -                       card->rdev->dev.bus_id, buffer_no,
1766 +                       CARD_BUS_ID(card), buffer_no,
1767                         buffer->element[15].flags & 0xff);
1768                 QETH_DBF_HEX1(1, trace, dbf_text, QETH_DBF_TRACE_LEN);
1769         }
1770 @@ -1536,7 +1493,7 @@
1771         card->perf_stats.bufs_rec++;
1772  #endif /* QETH_PERFORMANCE_STATS */
1773  
1774 -       sprintf(dbf_text, "ribX%s", card->rdev->dev.bus_id);
1775 +       sprintf(dbf_text, "ribX%s", CARD_BUS_ID(card));
1776         dbf_text[3] = buffer_no;
1777         QETH_DBF_HEX6(0, trace, dbf_text, QETH_DBF_TRACE_LEN);
1778  
1779 @@ -1563,8 +1520,7 @@
1780                         card->perf_stats.inbound_cnt++;
1781  #endif /* QETH_PERFORMANCE_STATS */
1782  
1783 -                       QETH_DBF_TEXT6(0, trace, "rxpk");
1784 -                       QETH_DBF_TEXT6(0, trace, card->rdev->dev.bus_id);
1785 +                       QETH_DBF_CARD6(0, trace, "rxpk", card);
1786  
1787                         netif_rx(skb);
1788                         dev->last_rx = jiffies;
1789 @@ -1573,8 +1529,7 @@
1790                 } else {
1791                         PRINT_WARN("%s: dropped packet, no buffers "
1792                                    "available.\n", card->dev_name);
1793 -                       QETH_DBF_TEXT2(1, trace, "DROP");
1794 -                       QETH_DBF_TEXT2(1, trace, card->rdev->dev.bus_id);
1795 +                       QETH_DBF_CARD2(1, trace, "DROP", card);
1796                         card->stats->rx_dropped++;
1797                 }
1798         }
1799 @@ -1792,8 +1747,7 @@
1800  
1801         atomic_inc(&card->outbound_used_buffers[queue]);
1802  
1803 -       QETH_DBF_TEXT5(0, trace, "flsp");
1804 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1805 +       QETH_DBF_CARD5(0, trace, "flsp", card);
1806         sprintf(dbf_text, "%4x%2x%2x", position_for_do_qdio, under_int, queue);
1807         QETH_DBF_TEXT5(0, trace, dbf_text);
1808         QETH_DBF_HEX5(0, misc, buffer, QETH_DBF_MISC_LEN);
1809 @@ -1849,14 +1803,13 @@
1810          * this has to be at the end, otherwise a buffer could be flushed
1811          * twice (see comment in qeth_do_send_packet)
1812          */
1813 -       result = do_QDIO(card->ddev, QDIO_FLAG_SYNC_OUTPUT | under_int, queue,
1814 +       result = do_QDIO(CARD_DDEV(card), QDIO_FLAG_SYNC_OUTPUT | under_int, queue,
1815                          position_for_do_qdio, 1, NULL);
1816  
1817         if (result) {
1818                 PRINT_WARN("Outbound do_QDIO returned %i "
1819 -                          "(device %s)\n", result, card->ddev->dev.bus_id);
1820 -               QETH_DBF_TEXT5(0, trace, "FLSP");
1821 -               QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1822 +                          "(device %s)\n", result, CARD_DDEV_ID(card));
1823 +               QETH_DBF_CARD5(0, trace, "FLSP", card);
1824                 sprintf(dbf_text, "odoQ%4x", result);
1825                 QETH_DBF_TEXT5(0, trace, dbf_text);
1826                 sprintf(dbf_text, "%4x%2x%2x", position_for_do_qdio,
1827 @@ -1923,8 +1876,7 @@
1828         switch (card->outbound_buffer_send_state[queue][bufno]) {
1829         case SEND_STATE_DONT_PACK:      /* fallthrough */
1830         case SEND_STATE_PACK:
1831 -               QETH_DBF_TEXT5(0, trace, "frbf");
1832 -               QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1833 +               QETH_DBF_CARD5(0, trace, "frbf", card);
1834                 sprintf(dbf_text, "%2x%2x%4x", queue, bufno,
1835                         card->outbound_buffer_send_state[queue][bufno]);
1836                 QETH_DBF_TEXT5(0, trace, dbf_text);
1837 @@ -1935,7 +1887,7 @@
1838                     qeth_determine_send_error(siga_error, qdio_error, sbalf15);
1839                 if (error == ERROR_KICK_THAT_PUPPY) {
1840                         sprintf(dbf_text, "KP%s%2x",
1841 -                               card->rdev->dev.bus_id, queue);
1842 +                               CARD_BUS_ID(card), queue);
1843                         QETH_DBF_TEXT2(0, trace, dbf_text);
1844                         QETH_DBF_TEXT2(0, qerr, dbf_text);
1845                         QETH_DBF_TEXT2(1, setup, dbf_text);
1846 @@ -1946,7 +1898,7 @@
1847                         PRINT_ERR("Outbound queue x%x on device %s (%s); "
1848                                   "errs: siga: x%x, qdio: x%x, flags15: "
1849                                   "x%x. The device will be taken down.\n",
1850 -                                 queue, card->rdev->dev.bus_id, card->dev_name,
1851 +                                 queue, CARD_BUS_ID(card), card->dev_name,
1852                                   siga_error, qdio_error, sbalf15);
1853                         netif_stop_queue(card->dev);
1854                         qeth_set_dev_flag_norunning(card);
1855 @@ -1957,7 +1909,7 @@
1856                         retries = card->send_retries[queue][bufno];
1857  
1858                         sprintf(dbf_text, "Rt%s%2x",
1859 -                               card->rdev->dev.bus_id, queue);
1860 +                               CARD_BUS_ID(card), queue);
1861                         QETH_DBF_TEXT4(0, trace, dbf_text);
1862                         sprintf(dbf_text, "b%2x:%2x%2x", bufno,
1863                                 sbalf15, retries);
1864 @@ -1971,8 +1923,7 @@
1865                 } else if (error == ERROR_LINK_FAILURE) {
1866                         /* we don't want to log failures resulting from
1867                          * too many retries */
1868 -                       QETH_DBF_TEXT3(1, trace, "Fail");
1869 -                       QETH_DBF_TEXT3(1, trace, card->rdev->dev.bus_id);
1870 +                       QETH_DBF_CARD3(1, trace, "Fail", card);
1871                         QETH_DBF_HEX3(0, misc, buffer, QETH_DBF_MISC_LEN);
1872                         QETH_DBF_HEX3(0, misc, buffer + QETH_DBF_MISC_LEN,
1873                                       QETH_DBF_MISC_LEN);
1874 @@ -2009,10 +1960,8 @@
1875                            "(line %i). q=%i, bufno=x%x, state=%i\n",
1876                            card->dev_name, __LINE__, queue, bufno,
1877                            card->outbound_buffer_send_state[queue][bufno]);
1878 -               QETH_DBF_TEXT0(1, trace, "UPSf");
1879 -               QETH_DBF_TEXT0(1, qerr, "UPSf");
1880 -               QETH_DBF_TEXT0(1, trace, card->rdev->dev.bus_id);
1881 -               QETH_DBF_TEXT0(1, qerr, card->rdev->dev.bus_id);
1882 +               QETH_DBF_CARD0(1, trace, "UPSf", card);
1883 +               QETH_DBF_CARD0(1, qerr, "UPSf", card);
1884                 sprintf(dbf_text, "%2x%2x%4x", queue, bufno,
1885                         card->outbound_buffer_send_state[queue][bufno]);
1886                 QETH_DBF_TEXT0(1, trace, dbf_text);
1887 @@ -2038,8 +1987,7 @@
1888  qeth_flush_buffer(struct qeth_card *card, int queue, int under_int)
1889  {
1890         char dbf_text[15];
1891 -       QETH_DBF_TEXT5(0, trace, "flsb");
1892 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
1893 +       QETH_DBF_CARD5(0, trace, "flsb", card);
1894         sprintf(dbf_text, "%2x%2x%2x", queue, under_int,
1895                 card->outbound_buffer_send_state[queue]
1896                 [card->outbound_first_free_buffer[queue]]);
1897 @@ -2127,8 +2075,7 @@
1898                 PRINT_STUPID("%s: not enough headroom in skb (missing: %i)\n",
1899                              card->dev_name,
1900                              QETH_HEADER_SIZE - skb_headroom(skb));
1901 -               QETH_DBF_TEXT3(0, trace, "NHRf");
1902 -               QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
1903 +               QETH_DBF_CARD3(0, trace, "NHRf", card);
1904                 sprintf(dbf_text, "%2x%2x%2x%2x", skb_headroom(skb),
1905                         version, multicast, queue);
1906                 QETH_DBF_TEXT3(0, trace, dbf_text);
1907 @@ -2138,8 +2085,7 @@
1908                 if (!nskb) {
1909                         PRINT_WARN("%s: could not realloc headroom\n",
1910                                    card->dev_name);
1911 -                       QETH_DBF_TEXT2(0, trace, "CNRf");
1912 -                       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
1913 +                       QETH_DBF_CARD2(0, trace, "CNRf", card);
1914                         dev_kfree_skb_irq(skb);
1915                         return;
1916                 }
1917 @@ -2162,8 +2108,7 @@
1918                           card->dev_name,
1919                           QETH_HEADER_SIZE + QETH_IP_HEADER_SIZE);
1920                 PRINT_ERR("head=%p, data=%p\n", skb->head, skb->data);
1921 -               QETH_DBF_TEXT1(0, trace, "PMAf");
1922 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1923 +               QETH_DBF_CARD1(0, trace, "PMAf", card);
1924                 sprintf(dbf_text, "%2x%2x%2x%2x", skb_headroom(skb),
1925                         version, multicast, queue);
1926                 QETH_DBF_TEXT1(0, trace, dbf_text);
1927 @@ -2220,8 +2165,7 @@
1928                 PRINT_STUPID("%s: not enough headroom in skb (missing: %i)\n",
1929                              card->dev_name,
1930                              QETH_HEADER_SIZE - skb_headroom(skb));
1931 -               QETH_DBF_TEXT3(0, trace, "NHRp");
1932 -               QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
1933 +               QETH_DBF_CARD3(0, trace, "NHRp", card);
1934                 sprintf(dbf_text, "%2x%2x%2x%2x", skb_headroom(skb),
1935                         version, multicast, queue);
1936                 QETH_DBF_TEXT3(0, trace, dbf_text);
1937 @@ -2231,8 +2175,7 @@
1938                 if (!nskb) {
1939                         PRINT_WARN("%s: could not realloc headroom\n",
1940                                    card->dev_name);
1941 -                       QETH_DBF_TEXT2(0, trace, "CNRp");
1942 -                       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
1943 +                       QETH_DBF_CARD2(0, trace, "CNRp", card);
1944                         dev_kfree_skb_irq(skb);
1945                         return;
1946                 }
1947 @@ -2257,8 +2200,7 @@
1948                           "are not in the same page. Discarding packet!\n",
1949                           card->dev_name,
1950                           QETH_HEADER_SIZE + QETH_IP_HEADER_SIZE);
1951 -               QETH_DBF_TEXT1(0, trace, "PMAp");
1952 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
1953 +               QETH_DBF_CARD1(0, trace, "PMAp", card);
1954                 sprintf(dbf_text, "%2x%2x%2x%2x", skb_headroom(skb),
1955                         version, multicast, queue);
1956                 QETH_DBF_TEXT1(0, trace, dbf_text);
1957 @@ -2354,8 +2296,7 @@
1958  {
1959         char dbf_text[15];
1960  
1961 -       QETH_DBF_TEXT6(0, trace, "dsp:");
1962 -       QETH_DBF_TEXT6(0, trace, card->rdev->dev.bus_id);
1963 +       QETH_DBF_CARD6(0, trace, "dsp:", card);
1964         sprintf(dbf_text, "%c %c%4x",
1965                 (version == 4) ? '4' : ((version == 6) ? '6' : '0'),
1966                 (multicast) ? 'm' : '_', queue);
1967 @@ -2384,8 +2325,7 @@
1968         if (atomic_read(&card->outbound_used_buffers[queue])
1969             >= HIGH_WATERMARK_PACK) {
1970                 card->send_state[queue] = SEND_STATE_PACK;
1971 -               QETH_DBF_TEXT3(0, trace, "stchup");
1972 -               QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
1973 +               QETH_DBF_CARD3(0, trace, "stchup", card);
1974  #ifdef QETH_PERFORMANCE_STATS
1975                 card->perf_stats.sc_dp_p++;
1976  #endif /* QETH_PERFORMANCE_STATS */
1977 @@ -2407,8 +2347,7 @@
1978  
1979         if (atomic_read(&card->outbound_used_buffers[queue])
1980             >= QDIO_MAX_BUFFERS_PER_Q - 1) {
1981 -               QETH_DBF_TEXT2(1, trace, "cdbs");
1982 -               QETH_DBF_TEXT2(1, trace, card->rdev->dev.bus_id);
1983 +               QETH_DBF_CARD2(1, trace, "cdbs", card);
1984                 netif_stop_queue(dev);
1985                 return -EBUSY;
1986         }
1987 @@ -2420,13 +2359,11 @@
1988          */
1989         if (atomic_compare_and_swap(QETH_LOCK_UNLOCKED, QETH_LOCK_NORMAL,
1990                                     &card->outbound_ringbuffer_lock[queue])) {
1991 -               QETH_DBF_TEXT2(0, trace, "SPIN");
1992 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
1993 +               QETH_DBF_CARD2(0, trace, "SPIN", card);
1994                 while (atomic_compare_and_swap
1995                        (QETH_LOCK_UNLOCKED, QETH_LOCK_NORMAL,
1996                         &card->outbound_ringbuffer_lock[queue])) ;
1997 -               QETH_DBF_TEXT2(0, trace, "spin");
1998 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
1999 +               QETH_DBF_CARD2(0, trace, "spin", card);
2000         }
2001  #ifdef QETH_PERFORMANCE_STATS
2002         card->perf_stats.skbs_sent++;
2003 @@ -2445,8 +2382,7 @@
2004                         break;
2005                 default:
2006                         result = -EBUSY;
2007 -                       QETH_DBF_TEXT0(1, trace, "UPSs");
2008 -                       QETH_DBF_TEXT0(1, trace, card->rdev->dev.bus_id);
2009 +                       QETH_DBF_CARD0(1, trace, "UPSs", card);
2010                         PRINT_ALL("oops... shouldn't happen (line %i:%i).\n",
2011                                   __LINE__, card->send_state[queue]);
2012                 }
2013 @@ -2499,8 +2435,7 @@
2014  
2015         if (!atomic_read(&card->is_startlaned)) {
2016                 card->stats->tx_carrier_errors++;
2017 -               QETH_DBF_TEXT2(0, trace, "XMNS");
2018 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2019 +               QETH_DBF_CARD2(0, trace, "XMNS", card);
2020                 dst_link_failure(skb);
2021                 dev_kfree_skb_irq(skb);
2022                 return 0;
2023 @@ -2521,8 +2456,7 @@
2024  
2025         card = (struct qeth_card *) (dev->priv);
2026  
2027 -       QETH_DBF_TEXT3(0, trace, "gtst");
2028 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2029 +       QETH_DBF_CARD3(0, trace, "gtst", card);
2030  
2031         return card->stats;
2032  }
2033 @@ -2535,8 +2469,7 @@
2034  
2035         card = (struct qeth_card *) (dev->priv);
2036  
2037 -       QETH_DBF_TEXT2(0, trace, "mtu");
2038 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2039 +       QETH_DBF_CARD2(0, trace, "mtu", card);
2040         sprintf(dbf_text, "%8x", new_mtu);
2041         QETH_DBF_TEXT2(0, trace, dbf_text);
2042  
2043 @@ -2555,8 +2488,7 @@
2044  qeth_start_softsetup_thread(struct qeth_card *card)
2045  {
2046         if (!atomic_read(&card->shutdown_phase)) {
2047 -               QETH_DBF_TEXT2(0, trace, "stss");
2048 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2049 +               QETH_DBF_CARD2(0, trace, "stss", card);
2050                 up(&card->softsetup_thread_sem);
2051         }
2052  }
2053 @@ -2566,8 +2498,7 @@
2054  {
2055         char dbf_text[15];
2056  
2057 -       QETH_DBF_TEXT5(0, trace, "slpn");
2058 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
2059 +       QETH_DBF_CARD5(0, trace, "slpn", card);
2060         sprintf(dbf_text, "%08x", timeout);
2061         QETH_DBF_TEXT5(0, trace, dbf_text);
2062  
2063 @@ -2585,8 +2516,7 @@
2064  qeth_wakeup_ioctl(struct qeth_card *card)
2065  {
2066  
2067 -       QETH_DBF_TEXT5(0, trace, "wkup");
2068 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
2069 +       QETH_DBF_CARD5(0, trace, "wkup", card);
2070  
2071         atomic_set(&card->ioctl_data_has_arrived, 1);
2072         wake_up(&card->ioctl_wait_q);
2073 @@ -2597,8 +2527,7 @@
2074  {
2075         char dbf_text[15];
2076  
2077 -       QETH_DBF_TEXT5(0, trace, "ioctlslpn");
2078 -       QETH_DBF_TEXT5(0, trace, card->rdev->dev.bus_id);
2079 +       QETH_DBF_CARD5(0, trace, "ioctlslpn", card);
2080         sprintf(dbf_text, "%08x", timeout);
2081         QETH_DBF_TEXT5(0, trace, dbf_text);
2082  
2083 @@ -2656,8 +2585,7 @@
2084         /* we lock very early to synchronize access to seqnos */
2085         if (atomic_swap(&card->write_busy, 1)) {
2086                 qeth_wait_nonbusy(QETH_IDLE_WAIT_TIME);
2087 -               QETH_DBF_TEXT2(0, trace, "LSCD");
2088 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2089 +               QETH_DBF_CARD2(0, trace, "LSCD", card);
2090                 goto again;
2091         }
2092         memcpy(card->dma_stuff->sendbuf, card->send_buf, QETH_BUFSIZE);
2093 @@ -2680,19 +2608,18 @@
2094         card->dma_stuff->write_ccw.cda =
2095             QETH_GET_ADDR(card->dma_stuff->sendbuf);
2096  
2097 -       QETH_DBF_TEXT2(0, trace, "scdw");
2098 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2099 +       QETH_DBF_CARD2(0, trace, "scdw", card);
2100         sprintf(dbf_text, "%8x", len);
2101         QETH_DBF_TEXT4(0, trace, dbf_text);
2102         QETH_DBF_HEX4(0, trace, &intparam, QETH_DBF_TRACE_LEN);
2103         QETH_DBF_HEX2(0, control, buffer, QETH_DBF_CONTROL_LEN);
2104  
2105 -       spin_lock_irqsave(get_ccwdev_lock(card->wdev), flags);
2106 -       result = ccw_device_start(card->wdev, &card->dma_stuff->write_ccw,
2107 +       spin_lock_irqsave(get_ccwdev_lock(CARD_WDEV(card)), flags);
2108 +       result = ccw_device_start(CARD_WDEV(card), &card->dma_stuff->write_ccw,
2109                                   intparam, 0, 0);
2110         if (result) {
2111                 qeth_delay_millis(QETH_WAIT_BEFORE_2ND_DOIO);
2112 -               result2 = ccw_device_start(card->wdev,
2113 +               result2 = ccw_device_start(CARD_WDEV(card),
2114                                            &card->dma_stuff->write_ccw,
2115                                            intparam, 0, 0);
2116                 if (result2 != -ENODEV)
2117 @@ -2701,7 +2628,7 @@
2118                                    result, result2);
2119                 result = result2;
2120         }
2121 -       spin_unlock_irqrestore(get_ccwdev_lock(card->wdev), flags);
2122 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_WDEV(card)), flags);
2123  
2124         if (result) {
2125                 QETH_DBF_TEXT2(0, trace, "scd:doio");
2126 @@ -2718,8 +2645,7 @@
2127                         return NULL;
2128                 }
2129                 rec_buf = card->ipa_buf;
2130 -               QETH_DBF_TEXT2(0, trace, "scro");
2131 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2132 +               QETH_DBF_CARD2(0, trace, "scro", card);
2133         } else {
2134                 if (qeth_sleepon(card, (setip) ? QETH_IPA_TIMEOUT :
2135                                  QETH_MPC_TIMEOUT)) {
2136 @@ -2729,8 +2655,7 @@
2137                         return NULL;
2138                 }
2139                 rec_buf = card->ipa_buf;
2140 -               QETH_DBF_TEXT2(0, trace, "scri");
2141 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2142 +               QETH_DBF_CARD2(0, trace, "scri", card);
2143         }
2144         QETH_DBF_HEX2(0, control, rec_buf, QETH_DBF_CONTROL_LEN);
2145  
2146 @@ -2832,16 +2757,14 @@
2147         int result;
2148         char dbf_text[15];
2149  
2150 -       QETH_DBF_TEXT4(0, trace, "stln");
2151 -       QETH_DBF_TEXT4(0, trace, card->rdev->dev.bus_id);
2152 +       QETH_DBF_CARD4(0, trace, "stln", card);
2153  
2154         result = qeth_send_startstoplan(card, IPA_CMD_STARTLAN, ip_vers);
2155         if (!result)
2156                 atomic_set(&card->is_startlaned, 1);
2157  
2158         if (result) {
2159 -               QETH_DBF_TEXT2(0, trace, "STRTLNFL");
2160 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2161 +               QETH_DBF_CARD2(0, trace, "STRTLNFL", card);
2162                 sprintf(dbf_text, "%4x", result);
2163                 QETH_DBF_TEXT2(0, trace, dbf_text);
2164         }
2165 @@ -2858,14 +2781,12 @@
2166  
2167         atomic_set(&card->is_startlaned, 0);
2168  
2169 -       QETH_DBF_TEXT4(0, trace, "spln");
2170 -       QETH_DBF_TEXT4(0, trace, card->rdev->dev.bus_id);
2171 +       QETH_DBF_CARD4(0, trace, "spln", card);
2172  
2173         result = qeth_send_startstoplan(card, IPA_CMD_STOPLAN, 4);
2174  
2175         if (result) {
2176 -               QETH_DBF_TEXT2(0, trace, "STPLNFLD");
2177 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2178 +               QETH_DBF_CARD2(0, trace, "STPLNFLD", card);
2179                 sprintf(dbf_text, "%4x", result);
2180                 QETH_DBF_TEXT2(0, trace, dbf_text);
2181         }
2182 @@ -3443,8 +3364,7 @@
2183  
2184         retries = (use_retries) ? QETH_SETIP_RETRIES : 1;
2185         if (qeth_is_ipa_covered_by_ipato_entries(ip_vers, ip, card)) {
2186 -               QETH_DBF_TEXT2(0, trace, "ipto");
2187 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2188 +               QETH_DBF_CARD2(0, trace, "ipto", card);
2189                 if (ip_vers == 4) {
2190                         *((__u32 *) (&dbf_text[0])) = *((__u32 *) ip);
2191                         *((__u32 *) (&dbf_text[4])) = *((__u32 *) netmask);
2192 @@ -3467,15 +3387,13 @@
2193         PRINT_SETIP_ERROR(' ');
2194  
2195         if (result) {
2196 -               QETH_DBF_TEXT2(0, trace, "SETIPFLD");
2197 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2198 +               QETH_DBF_CARD2(0, trace, "SETIPFLD", card);
2199                 sprintf(dbf_text, "%4x", result);
2200                 QETH_DBF_TEXT2(0, trace, dbf_text);
2201         }
2202  
2203         if (((result == -1) || (result == 0xe080)) && (retries--)) {
2204 -               QETH_DBF_TEXT2(0, trace, "sipr");
2205 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2206 +               QETH_DBF_CARD2(0, trace, "sipr", card);
2207                 if (ip_vers == 4) {
2208                         *((__u32 *) (&dbf_text[0])) = *((__u32 *) ip);
2209                         *((__u32 *) (&dbf_text[4])) = *((__u32 *) netmask);
2210 @@ -3513,8 +3431,7 @@
2211  
2212         retries = (use_retries) ? QETH_SETIP_RETRIES : 1;
2213         if (qeth_is_ipa_covered_by_ipato_entries(ip_vers, ip, card)) {
2214 -               QETH_DBF_TEXT2(0, trace, "imto");
2215 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2216 +               QETH_DBF_CARD2(0, trace, "imto", card);
2217                 if (ip_vers == 4) {
2218                         *((__u32 *) (&dbf_text[0])) = *((__u32 *) ip);
2219                         QETH_DBF_HEX2(0, trace, dbf_text, QETH_DBF_TRACE_LEN);
2220 @@ -3530,15 +3447,13 @@
2221         PRINT_SETIP_ERROR('m');
2222  
2223         if (result) {
2224 -               QETH_DBF_TEXT2(0, trace, "SETIMFLD");
2225 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2226 +               QETH_DBF_CARD2(0, trace, "SETIMFLD", card);
2227                 sprintf(dbf_text, "%4x", result);
2228                 QETH_DBF_TEXT2(0, trace, dbf_text);
2229         }
2230  
2231         if ((result == -1) && (retries--)) {
2232 -               QETH_DBF_TEXT2(0, trace, "simr");
2233 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2234 +               QETH_DBF_CARD2(0, trace, "simr", card);
2235                 if (ip_vers == 4) {
2236                         sprintf(dbf_text, "%08x", *((__u32 *) ip));
2237                         QETH_DBF_TEXT2(0, trace, dbf_text);
2238 @@ -3726,8 +3641,7 @@
2239                 PRINT_SETIP_ERROR('s');
2240  
2241                 if (result) {
2242 -                       QETH_DBF_TEXT2(0, trace, "SETSVFLD");
2243 -                       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2244 +                       QETH_DBF_CARD2(0, trace, "SETSVFLD", card);
2245                         sprintf(dbf_text, "%4x", result);
2246                         QETH_DBF_TEXT2(0, trace, dbf_text);
2247                         if (priv_add_list->version == 4) {
2248 @@ -3761,8 +3675,7 @@
2249                                             priv_del_list->version,
2250                                             priv_del_list->flag);
2251                 if (result) {
2252 -                       QETH_DBF_TEXT2(0, trace, "DELSVFLD");
2253 -                       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2254 +                       QETH_DBF_CARD2(0, trace, "DELSVFLD", card);
2255                         sprintf(dbf_text, "%4x", result);
2256                         QETH_DBF_TEXT2(0, trace, dbf_text);
2257                         if (priv_del_list->version == 4) {
2258 @@ -3943,7 +3856,7 @@
2259                                   addr6->addr.s6_addr16[6],
2260                                   addr6->addr.s6_addr16[7],
2261                                   addr6->prefix_len,
2262 -                                 card->rdev->dev.bus_id, result);
2263 +                                 CARD_BUS_ID(card), result);
2264                         sprintf(dbf_text, "std6%4x", result);
2265                         QETH_DBF_TEXT3(0, trace, dbf_text);
2266                 }
2267 @@ -3987,7 +3900,7 @@
2268                           addr6->addr.s6_addr16[6],
2269                           addr6->addr.s6_addr16[7],
2270                           addr6->prefix_len,
2271 -                         card->rdev->dev.bus_id, result);
2272 +                         CARD_BUS_ID(card), result);
2273                 sprintf(dbf_text, "sts6%4x", result);
2274                 QETH_DBF_TEXT3(0, trace, dbf_text);
2275                 addr6 = addr6->if_next;
2276 @@ -4002,8 +3915,7 @@
2277         int result;
2278         char dbf_text[15];
2279  
2280 -       QETH_DBF_TEXT3(0, trace, "stip");
2281 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2282 +       QETH_DBF_CARD3(0, trace, "stip", card);
2283  
2284         addr = card->ip_current_state.ip_ifa;
2285         while (addr) {
2286 @@ -4023,7 +3935,7 @@
2287                                           "(result: 0x%x), "
2288                                           "trying to continue\n",
2289                                           addr->ifa_address, addr->ifa_mask,
2290 -                                         card->rdev->dev.bus_id, result);
2291 +                                         CARD_BUS_ID(card), result);
2292                                 sprintf(dbf_text, "stdl%4x", result);
2293                                 QETH_DBF_TEXT3(0, trace, dbf_text);
2294                         }
2295 @@ -4051,7 +3963,7 @@
2296                 PRINT_ERR("was not able to set ip "
2297                           "%08x/%08x on device %s, trying to continue\n",
2298                           addr->ifa_address, addr->ifa_mask,
2299 -                         card->rdev->dev.bus_id);
2300 +                         CARD_BUS_ID(card));
2301                 sprintf(dbf_text, "stst%4x", result);
2302                 QETH_DBF_TEXT3(0, trace, dbf_text);
2303                 addr = addr->ifa_next;
2304 @@ -4161,7 +4073,7 @@
2305                                           addr->mac[0], addr->mac[1],
2306                                           addr->mac[2], addr->mac[3],
2307                                           addr->mac[4], addr->mac[5],
2308 -                                         card->rdev->dev.bus_id, result);
2309 +                                         CARD_BUS_ID(card), result);
2310                                 sprintf(dbf_text, "smd6%4x", result);
2311                                 QETH_DBF_TEXT3(0, trace, dbf_text);
2312                         }
2313 @@ -4203,7 +4115,7 @@
2314                                   addr->mac[0], addr->mac[1],
2315                                   addr->mac[2], addr->mac[3],
2316                                   addr->mac[4], addr->mac[5],
2317 -                                 card->rdev->dev.bus_id, result);
2318 +                                 CARD_BUS_ID(card), result);
2319                         sprintf(dbf_text, "sms6%4x", result);
2320                         QETH_DBF_TEXT3(0, trace, dbf_text);
2321                         qeth_remove_mc_ifa_from_list
2322 @@ -4221,8 +4133,7 @@
2323         int result;
2324         char dbf_text[15];
2325  
2326 -       QETH_DBF_TEXT3(0, trace, "stim");
2327 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2328 +       QETH_DBF_CARD3(0, trace, "stim", card);
2329  
2330         if (!qeth_is_supported(IPA_MULTICASTING))
2331                 return 0;
2332 @@ -4252,7 +4163,7 @@
2333                                           addr->mac[0], addr->mac[1],
2334                                           addr->mac[2], addr->mac[3],
2335                                           addr->mac[4], addr->mac[5],
2336 -                                         card->rdev->dev.bus_id, result);
2337 +                                         CARD_BUS_ID(card), result);
2338                                 sprintf(dbf_text, "smdl%4x", result);
2339                                 QETH_DBF_TEXT3(0, trace, dbf_text);
2340                         }
2341 @@ -4285,7 +4196,7 @@
2342                                   addr->mac[0], addr->mac[1],
2343                                   addr->mac[2], addr->mac[3],
2344                                   addr->mac[4], addr->mac[5],
2345 -                                 card->rdev->dev.bus_id, result);
2346 +                                 CARD_BUS_ID(card), result);
2347                         sprintf(dbf_text, "smst%4x", result);
2348                         QETH_DBF_TEXT3(0, trace, dbf_text);
2349                         qeth_remove_mc_ifa_from_list
2350 @@ -4334,8 +4245,7 @@
2351  
2352         PRINT_STUPID("CALL: qeth_do_ioctl called with cmd %i (=0x%x).\n", cmd,
2353                      cmd);
2354 -       QETH_DBF_TEXT2(0, trace, "ioct");
2355 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2356 +       QETH_DBF_CARD2(0, trace, "ioct", card);
2357         sprintf(dbf_text, "cmd=%4x", cmd);
2358         QETH_DBF_TEXT2(0, trace, dbf_text);
2359         QETH_DBF_HEX2(0, trace, &rq, sizeof (void *));
2360 @@ -4562,8 +4472,7 @@
2361                 
2362                 in6_vdev = in6_dev_get(card_group->vlan_devices[i]);
2363                 if (!in6_vdev) {
2364 -                       QETH_DBF_TEXT2(0, trace, "id26");
2365 -                       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2366 +                       QETH_DBF_CARD2(0, trace, "id26", card);
2367                         continue;
2368                 }
2369  
2370 @@ -4625,8 +4534,7 @@
2371         in6_dev = in6_dev_get(card->dev);
2372  
2373         if (!in6_dev) {
2374 -               QETH_DBF_TEXT2(0, trace, "id16");
2375 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2376 +               QETH_DBF_CARD2(0, trace, "id16", card);
2377                 return ERR_PTR(-ENODEV);
2378         }
2379         read_lock(&in6_dev->lock);
2380 @@ -4702,8 +4610,7 @@
2381         int remove;
2382         struct inet6_dev *in6_dev;
2383  
2384 -       QETH_DBF_TEXT3(0, trace, "tip6");
2385 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2386 +       QETH_DBF_CARD3(0, trace, "tip6", card);
2387         /* unicast */
2388         /* clear ip_current_state */
2389         qeth_clear_ifa6_list(&card->ip_current_state.ip6_ifa);
2390 @@ -5003,8 +4910,7 @@
2391         int remove;
2392         struct in_device *in4_dev;
2393  
2394 -       QETH_DBF_TEXT3(0, trace, "tips");
2395 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2396 +       QETH_DBF_CARD3(0, trace, "tips", card);
2397         /* unicast */
2398         /* clear ip_current_state */
2399         qeth_clear_ifa4_list(&card->ip_current_state.ip_ifa);
2400 @@ -5083,16 +4989,14 @@
2401                            "autoconfig on other lpars may lead to duplicate "
2402                            "ip addresses. please use manually "
2403                            "configured ones.\n",
2404 -                          card->rdev->dev.bus_id, result);
2405 -               QETH_DBF_TEXT2(0, trace, "unid fld");
2406 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2407 +                          CARD_BUS_ID(card), result);
2408 +               QETH_DBF_CARD2(0, trace, "unid fld", card);
2409                 sprintf(dbf_text, "%4x", result);
2410                 QETH_DBF_TEXT2(0, trace, dbf_text);
2411         } else {
2412                 card->unique_id =
2413                     *((__u16 *) & cmd.data.create_destroy_addr.unique_id[6]);
2414 -               QETH_DBF_TEXT2(0, setup, "uniqueid");
2415 -               QETH_DBF_TEXT2(0, setup, card->rdev->dev.bus_id);
2416 +               QETH_DBF_CARD2(0, setup, "uniqueid", card);
2417                 sprintf(dbf_text, "%4x", card->unique_id);
2418                 QETH_DBF_TEXT2(0, setup, dbf_text);
2419         }
2420 @@ -5123,8 +5027,7 @@
2421         result = qeth_send_ipa_cmd(card, &cmd, 1, IPA_CMD_STATE);
2422  
2423         if (result) {
2424 -               QETH_DBF_TEXT2(0, trace, "unibkfld");
2425 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2426 +               QETH_DBF_CARD2(0, trace, "unibkfld", card);
2427                 sprintf(dbf_text, "%4x", result);
2428                 QETH_DBF_TEXT2(0, trace, dbf_text);
2429         }
2430 @@ -5144,8 +5047,7 @@
2431             (card->link_type != QETH_MPC_LINK_TYPE_LANE_TR))
2432                 return;
2433  
2434 -       QETH_DBF_TEXT3(0, trace, "hstr");
2435 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2436 +       QETH_DBF_CARD3(0, trace, "hstr", card);
2437         
2438         if (qeth_is_adp_supported(IPA_SETADP_SET_BROADCAST_MODE)) {
2439                 result = qeth_send_setadapterparms_mode
2440 @@ -5154,18 +5056,16 @@
2441                 if (result) {
2442                         PRINT_WARN("couldn't set broadcast mode on "
2443                                    "device %s: x%x\n",
2444 -                                  card->rdev->dev.bus_id, result);
2445 -                       QETH_DBF_TEXT1(0, trace, "STBRDCST");
2446 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2447 +                                  CARD_BUS_ID(card), result);
2448 +                       QETH_DBF_CARD1(0, trace, "STBRDCST", card);
2449                         sprintf(dbf_text, "%4x", result);
2450                         QETH_DBF_TEXT1(1, trace, dbf_text);
2451                 }
2452         } else if (card->options.broadcast_mode) {
2453                 PRINT_WARN("set adapter parameters not available "
2454                            "to set broadcast mode, using ALLRINGS "
2455 -                          "on device %s:\n", card->rdev->dev.bus_id);
2456 -               QETH_DBF_TEXT1(0, trace, "NOBC");
2457 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2458 +                          "on device %s:\n", CARD_BUS_ID(card));
2459 +               QETH_DBF_CARD1(0, trace, "NOBC", card);
2460         }
2461         
2462         if (qeth_is_adp_supported(IPA_SETADP_SET_BROADCAST_MODE)) {
2463 @@ -5174,19 +5074,17 @@
2464                          card->options.macaddr_mode);
2465                 if (result) {
2466                         PRINT_WARN("couldn't set macaddr mode on "
2467 -                                  "device %s: x%x\n", card->rdev->dev.bus_id,
2468 +                                  "device %s: x%x\n", CARD_BUS_ID(card),
2469                                    result);
2470 -                       QETH_DBF_TEXT1(0, trace, "STMACMOD");
2471 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2472 +                       QETH_DBF_CARD1(0, trace, "STMACMOD", card);
2473                         sprintf(dbf_text, "%4x", result);
2474                         QETH_DBF_TEXT1(1, trace, dbf_text);
2475                 }
2476         } else if (card->options.macaddr_mode) {
2477                 PRINT_WARN("set adapter parameters not available "
2478                            "to set macaddr mode, using NONCANONICAL "
2479 -                          "on device %s:\n", card->rdev->dev.bus_id);
2480 -               QETH_DBF_TEXT1(0, trace, "NOMA");
2481 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2482 +                          "on device %s:\n", CARD_BUS_ID(card));
2483 +               QETH_DBF_CARD1(0, trace, "NOMA", card);
2484         }
2485  }
2486  
2487 @@ -5200,16 +5098,14 @@
2488                 return;
2489         }
2490  
2491 -       QETH_DBF_TEXT4(0, trace, "stap");
2492 -       QETH_DBF_TEXT4(0, trace, card->rdev->dev.bus_id);
2493 +       QETH_DBF_CARD4(0, trace, "stap", card);
2494  
2495         result = qeth_send_setadapterparms_query(card);
2496  
2497         if (result) {
2498                 PRINT_WARN("couldn't set adapter parameters on device %s: "
2499 -                          "x%x\n", card->rdev->dev.bus_id, result);
2500 -               QETH_DBF_TEXT1(0, trace, "SETADPFL");
2501 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2502 +                          "x%x\n", CARD_BUS_ID(card), result);
2503 +               QETH_DBF_CARD1(0, trace, "SETADPFL", card);
2504                 sprintf(dbf_text, "%4x", result);
2505                 QETH_DBF_TEXT1(1, trace, dbf_text);
2506                 return;
2507 @@ -5219,10 +5115,8 @@
2508         QETH_DBF_TEXT2(0, trace, dbf_text);
2509  
2510         if (qeth_is_adp_supported(IPA_SETADP_ALTER_MAC_ADDRESS)) {
2511 -               QETH_DBF_TEXT3(0, trace, "rdmc");
2512 -               QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2513 -               QETH_DBF_TEXT2(0, setup, "rdmc");
2514 -               QETH_DBF_TEXT2(0, setup, card->rdev->dev.bus_id);
2515 +               QETH_DBF_CARD3(0, trace, "rdmc", card);
2516 +               QETH_DBF_CARD2(0, setup, "rdmc", card);
2517  
2518                 result = qeth_send_setadapterparms_change_addr(card,
2519                                                                IPA_SETADP_ALTER_MAC_ADDRESS,
2520 @@ -5233,9 +5127,8 @@
2521                 if (result) {
2522                         PRINT_WARN("couldn't get MAC address on "
2523                                    "device %s: x%x\n",
2524 -                                  card->rdev->dev.bus_id, result);
2525 -                       QETH_DBF_TEXT1(0, trace, "NOMACADD");
2526 -                       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2527 +                                  CARD_BUS_ID(card), result);
2528 +                       QETH_DBF_CARD1(0, trace, "NOMACADD", card);
2529                         sprintf(dbf_text, "%4x", result);
2530                         QETH_DBF_TEXT1(1, trace, dbf_text);
2531                 } else {
2532 @@ -5701,8 +5594,7 @@
2533  
2534         qeth_save_dev_flag_state(card);
2535  
2536 -       QETH_DBF_TEXT1(0, trace, wait_for_lock?"sscw":"sscn");
2537 -       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2538 +       QETH_DBF_CARD1(0, trace, wait_for_lock?"sscw":"sscn", card);
2539  
2540         result = __qeth_softsetup_start_assists(card);
2541         if (result)
2542 @@ -5753,19 +5645,17 @@
2543         struct qeth_card *card = (struct qeth_card *) param;
2544  
2545         /* set a nice name ... */
2546 -       sprintf(name, "qethsoftd%s", card->rdev->dev.bus_id);
2547 +       sprintf(name, "qethsoftd%s", CARD_BUS_ID(card));
2548         daemonize(name);
2549  
2550 -       QETH_DBF_TEXT2(0, trace, "ssth");
2551 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2552 +       QETH_DBF_CARD2(0, trace, "ssth", card);
2553  
2554         atomic_set(&card->softsetup_thread_is_running, 1);
2555         for (;;) {
2556                 if (atomic_read(&card->shutdown_phase))
2557                         goto out;
2558                 down_interruptible(&card->softsetup_thread_sem);
2559 -               QETH_DBF_TEXT2(0, trace, "ssst");
2560 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2561 +               QETH_DBF_CARD2(0, trace, "ssst", card);
2562                 if (atomic_read(&card->shutdown_phase))
2563                         goto out;
2564                 while (qeth_softsetup_card(card, QETH_DONT_WAIT_FOR_LOCK)
2565 @@ -5774,15 +5664,13 @@
2566                                 goto out;
2567                         qeth_wait_nonbusy(QETH_IDLE_WAIT_TIME);
2568                 }
2569 -               QETH_DBF_TEXT2(0, trace, "sssd");
2570 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2571 +               QETH_DBF_CARD2(0, trace, "sssd", card);
2572                 netif_wake_queue(card->dev);
2573         }
2574  out:
2575         atomic_set(&card->softsetup_thread_is_running, 0);
2576  
2577 -       QETH_DBF_TEXT2(0, trace, "lsst");
2578 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2579 +       QETH_DBF_CARD2(0, trace, "lsst", card);
2580  
2581         return 0;
2582  }
2583 @@ -5792,8 +5680,7 @@
2584  {
2585         struct qeth_card *card = (struct qeth_card *) data;
2586  
2587 -       QETH_DBF_TEXT4(0, trace, "ssts");
2588 -       QETH_DBF_TEXT4(0, trace, card->rdev->dev.bus_id);
2589 +       QETH_DBF_CARD4(0, trace, "ssts", card);
2590         sema_init(&card->softsetup_thread_sem, 0);
2591         kernel_thread(qeth_softsetup_thread, card, SIGCHLD);
2592  }
2593 @@ -5810,8 +5697,7 @@
2594                         atomic_dec(&card->reinit_counter);
2595                         return;
2596                 }
2597 -               QETH_DBF_TEXT2(0, trace, "stri");
2598 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2599 +               QETH_DBF_CARD2(0, trace, "stri", card);
2600                 PRINT_STUPID("starting reinit-thread\n");
2601                 kernel_thread(qeth_reinit_thread, card, SIGCHLD);
2602         }
2603 @@ -5826,8 +5712,7 @@
2604  
2605         card = (struct qeth_card *) data;
2606  
2607 -       QETH_DBF_TEXT2(0, trace, "recv");
2608 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2609 +       QETH_DBF_CARD2(0, trace, "recv", card);
2610  
2611         if (atomic_compare_and_swap(0, 1, &card->in_recovery))
2612                 return;
2613 @@ -5840,7 +5725,7 @@
2614         if (i != PROBLEM_TX_TIMEOUT)
2615                 PRINT_WARN("recovery was scheduled on device %s (%s) with "
2616                            "problem 0x%x\n",
2617 -                          card->rdev->dev.bus_id, card->dev_name, i);
2618 +                          CARD_BUS_ID(card), card->dev_name, i);
2619         switch (i) {
2620         case PROBLEM_RECEIVED_IDX_TERMINATE:
2621                 if (atomic_read(&card->in_recovery))
2622 @@ -5931,8 +5816,7 @@
2623                         QETH_DBF_TEXT1(0, trace, dbf_text);
2624                         sprintf(dbf_text, "%4x%4x", queue, status);
2625                         QETH_DBF_TEXT1(0, trace, dbf_text);
2626 -                       QETH_DBF_TEXT1(1, trace, "qscd");
2627 -                       QETH_DBF_TEXT1(1, trace, card->rdev->dev.bus_id);
2628 +                       QETH_DBF_CARD1(1, trace, "qscd", card);
2629                         qeth_schedule_recovery(card);
2630                         return;
2631                 }
2632 @@ -5948,10 +5832,8 @@
2633                              'y' : 'n', siga_error,
2634                              (status & QDIO_STATUS_MORE_THAN_ONE_SIGA_ERROR) ?
2635                              'y' : 'n', sbalf15, first_element);
2636 -               QETH_DBF_TEXT1(0, trace, "IQTI");
2637 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2638 -               QETH_DBF_TEXT1(0, qerr, "IQTI");
2639 -               QETH_DBF_TEXT1(0, qerr, card->rdev->dev.bus_id);
2640 +               QETH_DBF_CARD1(0, trace, "IQTI", card);
2641 +               QETH_DBF_CARD1(0, qerr, "IQTI", card);
2642                 sprintf(dbf_text, "%4x%4x", first_element, count);
2643                 QETH_DBF_TEXT1(0, trace, dbf_text);
2644                 QETH_DBF_TEXT1(0, qerr, dbf_text);
2645 @@ -5989,8 +5871,7 @@
2646         /* first_element is the last buffer that we got back from hydra */
2647         if (!switch_state && !last_pci_hit)
2648                 return;;
2649 -       QETH_DBF_TEXT3(0, trace, "stchcw");
2650 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2651 +       QETH_DBF_CARD3(0, trace, "stchcw", card);
2652         if (atomic_swap(&card->outbound_ringbuffer_lock[queue], QETH_LOCK_FLUSH)
2653             == QETH_LOCK_UNLOCKED) {
2654                 /* 
2655 @@ -6052,8 +5933,7 @@
2656                         QETH_DBF_TEXT1(0, trace, dbf_text);
2657                         sprintf(dbf_text, "%4x%4x", queue, status);
2658                         QETH_DBF_TEXT1(0, trace, dbf_text);
2659 -                       QETH_DBF_TEXT1(1, trace, "qscd");
2660 -                       QETH_DBF_TEXT1(1, trace, card->rdev->dev.bus_id);
2661 +                       QETH_DBF_CARD1(1, trace, "qscd", card);
2662                         qeth_schedule_recovery(card);
2663                         goto out;
2664                 }
2665 @@ -6069,10 +5949,8 @@
2666                              siga_error, status &
2667                              QDIO_STATUS_MORE_THAN_ONE_SIGA_ERROR ? 'y' : 'n',
2668                              sbalf15, first_element);
2669 -               QETH_DBF_TEXT1(0, trace, "IQTO");
2670 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2671 -               QETH_DBF_TEXT1(0, qerr, "IQTO");
2672 -               QETH_DBF_TEXT1(0, qerr, card->rdev->dev.bus_id);
2673 +               QETH_DBF_CARD1(0, trace, "IQTO", card);
2674 +               QETH_DBF_CARD1(0, qerr, "IQTO", card);
2675                 sprintf(dbf_text, "%4x%4x", first_element, count);
2676                 QETH_DBF_TEXT1(0, trace, dbf_text);
2677                 QETH_DBF_TEXT1(0, qerr, dbf_text);
2678 @@ -6246,8 +6124,7 @@
2679  
2680  recover:
2681         if (qeth_is_to_recover(card, problem)) {
2682 -               QETH_DBF_TEXT2(1, trace, "rscd");
2683 -               QETH_DBF_TEXT2(1, trace, card->rdev->dev.bus_id);
2684 +               QETH_DBF_CARD2(1, trace, "rscd", card);
2685                 qeth_schedule_recovery(card);
2686                 goto wakeup_out;
2687         }
2688 @@ -6365,8 +6242,7 @@
2689  
2690  recover:
2691         if (qeth_is_to_recover(card, problem)) {
2692 -               QETH_DBF_TEXT2(1, trace, "wscd");
2693 -               QETH_DBF_TEXT2(1, trace, card->rdev->dev.bus_id);
2694 +               QETH_DBF_CARD2(1, trace, "wscd", card);
2695                 qeth_schedule_recovery(card);
2696                 goto out;
2697         }
2698 @@ -6466,8 +6342,7 @@
2699  {
2700         int result;
2701  
2702 -       QETH_DBF_TEXT3(0, trace, "rgnd");
2703 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2704 +       QETH_DBF_CARD3(0, trace, "rgnd", card);
2705  
2706         result = register_netdev(card->dev);
2707  
2708 @@ -6477,8 +6352,7 @@
2709  static void
2710  qeth_unregister_netdev(struct qeth_card *card)
2711  {
2712 -       QETH_DBF_TEXT3(0, trace, "nrgn");
2713 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2714 +       QETH_DBF_CARD3(0, trace, "nrgn", card);
2715  
2716         unregister_netdev(card->dev);
2717  }
2718 @@ -6489,15 +6363,13 @@
2719         struct qeth_card *card;
2720  
2721         card = (struct qeth_card *) dev->priv;
2722 -       QETH_DBF_TEXT2(0, trace, "stop");
2723 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2724 -       QETH_DBF_TEXT2(0, setup, "stop");
2725 -       QETH_DBF_TEXT2(0, setup, card->rdev->dev.bus_id);
2726 +       QETH_DBF_CARD2(0, trace, "stop", card);
2727 +       QETH_DBF_CARD2(0, setup, "stop", card);
2728  
2729         qeth_save_dev_flag_state(card);
2730  
2731         netif_stop_queue(dev);
2732 -       atomic_set(&((struct qeth_card *) dev->priv)->is_open, 0);
2733 +       atomic_set(&card->is_open, 0);
2734  
2735         return 0;
2736  }
2737 @@ -6505,8 +6377,7 @@
2738  static void
2739  qeth_softshutdown(struct qeth_card *card)
2740  {
2741 -       QETH_DBF_TEXT3(0, trace, "ssht");
2742 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2743 +       QETH_DBF_CARD3(0, trace, "ssht", card);
2744  
2745         qeth_send_stoplan(card);
2746  }
2747 @@ -6521,26 +6392,26 @@
2748         atomic_set(&card->clear_succeeded1, 0);
2749         atomic_set(&card->clear_succeeded2, 0);
2750         
2751 -       spin_lock_irqsave(get_ccwdev_lock(card->rdev), flags0);
2752 +       spin_lock_irqsave(get_ccwdev_lock(CARD_RDEV(card)), flags0);
2753         if (halt)
2754 -               ret0 = ccw_device_halt(card->rdev, CLEAR_STATE);
2755 +               ret0 = ccw_device_halt(CARD_RDEV(card), CLEAR_STATE);
2756         else
2757 -               ret0 = ccw_device_clear(card->rdev, CLEAR_STATE);
2758 -       spin_unlock_irqrestore(get_ccwdev_lock(card->rdev), flags0);
2759 +               ret0 = ccw_device_clear(CARD_RDEV(card), CLEAR_STATE);
2760 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_RDEV(card)), flags0);
2761         
2762 -       spin_lock_irqsave(get_ccwdev_lock(card->wdev), flags1);
2763 +       spin_lock_irqsave(get_ccwdev_lock(CARD_WDEV(card)), flags1);
2764         if (halt)
2765 -               ret1 = ccw_device_halt(card->wdev, CLEAR_STATE);
2766 +               ret1 = ccw_device_halt(CARD_WDEV(card), CLEAR_STATE);
2767         else
2768 -               ret1 = ccw_device_clear(card->wdev, CLEAR_STATE);
2769 -       spin_unlock_irqrestore(get_ccwdev_lock(card->wdev), flags1);
2770 +               ret1 = ccw_device_clear(CARD_WDEV(card), CLEAR_STATE);
2771 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_WDEV(card)), flags1);
2772         
2773 -       spin_lock_irqsave(get_ccwdev_lock(card->ddev), flags2);
2774 +       spin_lock_irqsave(get_ccwdev_lock(CARD_DDEV(card)), flags2);
2775         if (halt)
2776 -               ret2 = ccw_device_halt(card->ddev, CLEAR_STATE);
2777 +               ret2 = ccw_device_halt(CARD_DDEV(card), CLEAR_STATE);
2778         else
2779 -               ret2 = ccw_device_clear(card->ddev, CLEAR_STATE);
2780 -       spin_unlock_irqrestore(get_ccwdev_lock(card->ddev), flags2);
2781 +               ret2 = ccw_device_clear(CARD_DDEV(card), CLEAR_STATE);
2782 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_DDEV(card)), flags2);
2783  
2784         /* The device owns us an interrupt. */
2785         if ((ret0 == 0) && (atomic_read(&card->clear_succeeded0) == 0))
2786 @@ -6557,14 +6428,12 @@
2787  static void
2788  qeth_clear_card(struct qeth_card *card, int qdio_clean, int use_halt)
2789  {
2790 -       QETH_DBF_TEXT3(0, trace, qdio_clean?"clrq":"clr");
2791 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2792 -       QETH_DBF_TEXT1(0, setup, qdio_clean?"clrq":"clr");
2793 -       QETH_DBF_TEXT1(0, setup, card->rdev->dev.bus_id);
2794 +       QETH_DBF_CARD3(0, trace, qdio_clean?"clrq":"clr", card);
2795 +       QETH_DBF_CARD1(0, setup, qdio_clean?"clrq":"clr", card);
2796  
2797         atomic_set(&card->write_busy, 0);
2798         if (qdio_clean)
2799 -               qdio_cleanup(card->ddev,
2800 +               qdio_cleanup(CARD_DDEV(card),
2801                              (card->type == QETH_CARD_TYPE_IQD) ?
2802                              QDIO_FLAG_CLEANUP_USING_HALT :
2803                              QDIO_FLAG_CLEANUP_USING_CLEAR);
2804 @@ -6584,10 +6453,8 @@
2805         if (!card)
2806                 return;
2807  
2808 -       QETH_DBF_TEXT3(0, trace, "freest");
2809 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2810 -       QETH_DBF_TEXT1(0, setup, "freest");
2811 -       QETH_DBF_TEXT1(0, setup, card->rdev->dev.bus_id);
2812 +       QETH_DBF_CARD3(0, trace, "freest", card);
2813 +       QETH_DBF_CARD1(0, setup, "freest", card);
2814  
2815         write_lock(&card->vipa_list_lock);
2816         e = card->vipa_list;
2817 @@ -6626,10 +6493,8 @@
2818         if (!card)
2819                 return;
2820  
2821 -       QETH_DBF_TEXT3(0, trace, "free");
2822 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2823 -       QETH_DBF_TEXT1(0, setup, "free");
2824 -       QETH_DBF_TEXT1(0, setup, card->rdev->dev.bus_id);
2825 +       QETH_DBF_CARD3(0, trace, "free", card);
2826 +       QETH_DBF_CARD1(0, setup, "free", card);
2827  
2828         vfree(card);            /* we checked against NULL already */
2829  }
2830 @@ -6649,8 +6514,7 @@
2831                 return;
2832         }
2833  
2834 -       QETH_DBF_TEXT3(0, trace, "rmcl");
2835 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
2836 +       QETH_DBF_CARD3(0, trace, "rmcl", card);
2837  
2838         /* check first, if card is in list */
2839         if (!firstcard) {
2840 @@ -6661,9 +6525,9 @@
2841                 return;
2842         }
2843  
2844 -       spin_lock_irqsave(get_ccwdev_lock(card->rdev), flags0);
2845 -       spin_lock_irqsave(get_ccwdev_lock(card->wdev), flags1);
2846 -       spin_lock_irqsave(get_ccwdev_lock(card->ddev), flags2);
2847 +       spin_lock_irqsave(get_ccwdev_lock(CARD_RDEV(card)), flags0);
2848 +       spin_lock_irqsave(get_ccwdev_lock(CARD_WDEV(card)), flags1);
2849 +       spin_lock_irqsave(get_ccwdev_lock(CARD_DDEV(card)), flags2);
2850  
2851         if (firstcard == card)
2852                 firstcard = card->next;
2853 @@ -6679,9 +6543,9 @@
2854                 }
2855         }
2856  
2857 -       spin_unlock_irqrestore(get_ccwdev_lock(card->ddev), flags2);
2858 -       spin_unlock_irqrestore(get_ccwdev_lock(card->wdev), flags1);
2859 -       spin_unlock_irqrestore(get_ccwdev_lock(card->rdev), flags0);
2860 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_DDEV(card)), flags2);
2861 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_WDEV(card)), flags1);
2862 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_RDEV(card)), flags0);
2863  
2864         write_unlock(&list_lock);
2865  
2866 @@ -6718,10 +6582,8 @@
2867         if (!card)
2868                 return;
2869  
2870 -       QETH_DBF_TEXT2(0, trace, "rmcd");
2871 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2872 -       QETH_DBF_TEXT1(0, setup, "rmcd");
2873 -       QETH_DBF_TEXT1(0, setup, card->rdev->dev.bus_id);
2874 +       QETH_DBF_CARD2(0, trace, "rmcd", card);
2875 +       QETH_DBF_CARD1(0, setup, "rmcd", card);
2876  
2877         if (method == QETH_REMOVE_CARD_PROPER) {
2878                 atomic_set(&card->shutdown_phase, QETH_REMOVE_CARD_PROPER);
2879 @@ -6762,7 +6624,7 @@
2880                 /* Remove sysfs symlinks. */
2881                 sysfs_remove_link(&card->gdev->dev.kobj, card->dev_name);
2882                 sysfs_remove_link(&card->dev->class_dev.kobj,
2883 -                                 card->gdev->dev.bus_id);
2884 +                                 CARD_BUS_ID(card));
2885                 QETH_DBF_TEXT2(0, trace, "unregdev");
2886                 qeth_unregister_netdev(card);
2887                 qeth_wait_nonbusy(QETH_REMOVE_WAIT_TIME);
2888 @@ -6790,8 +6652,7 @@
2889         struct qeth_card *card;
2890  
2891         card = (struct qeth_card *) (dev->priv);
2892 -       QETH_DBF_TEXT2(0, trace, "dstr");
2893 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2894 +       QETH_DBF_CARD2(0, trace, "dstr", card);
2895  }
2896  
2897  static void
2898 @@ -6799,8 +6660,7 @@
2899  {
2900         struct qeth_card *card = dev->priv;
2901  
2902 -       QETH_DBF_TEXT2(0, trace, "smcl");
2903 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2904 +       QETH_DBF_CARD2(0, trace, "smcl", card);
2905  
2906         qeth_start_softsetup_thread(card);
2907  }
2908 @@ -6811,8 +6671,7 @@
2909         struct qeth_card *card;
2910  
2911         card = (struct qeth_card *) dev->priv;
2912 -       QETH_DBF_TEXT2(0, trace, "stmc");
2913 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2914 +       QETH_DBF_CARD2(0, trace, "stmc", card);
2915  
2916         return -EOPNOTSUPP;
2917  }
2918 @@ -6823,8 +6682,7 @@
2919         struct qeth_card *card;
2920  
2921         card = (struct qeth_card *) dev->priv;
2922 -       QETH_DBF_TEXT2(0, trace, "ngst");
2923 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2924 +       QETH_DBF_CARD2(0, trace, "ngst", card);
2925  
2926         return 0;
2927  }
2928 @@ -6883,23 +6741,23 @@
2929         memcpy(QETH_IDX_ACT_FUNC_LEVEL(card->dma_stuff->sendbuf),
2930                &card->func_level, 2);
2931  
2932 -       temp = __raw_devno_from_bus_id(card->ddev->dev.bus_id);
2933 +       temp = __raw_devno_from_bus_id(CARD_DDEV_ID(card));
2934         memcpy(QETH_IDX_ACT_QDIO_DEV_CUA(card->dma_stuff->sendbuf), &temp, 2);
2935         temp = (card->cula << 8) + card->unit_addr2;
2936         memcpy(QETH_IDX_ACT_QDIO_DEV_REALADDR(card->dma_stuff->sendbuf),
2937                &temp, 2);
2938  
2939         QETH_DBF_TEXT2(0, trace, "iarw");
2940 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
2941 +       QETH_DBF_TEXT2(0, trace, CARD_RDEV_ID(card));
2942         QETH_DBF_HEX2(0, control, card->dma_stuff->sendbuf,
2943                       QETH_DBF_CONTROL_LEN);
2944  
2945 -       spin_lock_irqsave(get_ccwdev_lock(card->rdev), flags);
2946 -       result = ccw_device_start(card->rdev, &card->dma_stuff->write_ccw,
2947 +       spin_lock_irqsave(get_ccwdev_lock(CARD_RDEV(card)), flags);
2948 +       result = ccw_device_start(CARD_RDEV(card), &card->dma_stuff->write_ccw,
2949                                   IDX_ACTIVATE_WRITE_STATE, 0, 0);
2950         if (result) {
2951                 qeth_delay_millis(QETH_WAIT_BEFORE_2ND_DOIO);
2952 -               result2 = ccw_device_start(card->rdev,
2953 +               result2 = ccw_device_start(CARD_RDEV(card),
2954                                            &card->dma_stuff->write_ccw,
2955                                            IDX_ACTIVATE_WRITE_STATE, 0, 0);
2956                 sprintf(dbf_text, "IRW1%4x", result);
2957 @@ -6909,7 +6767,7 @@
2958                 PRINT_WARN("qeth_idx_activate_read (write): do_IO returned "
2959                            "%i, next try returns %i\n", result, result2);
2960         }
2961 -       spin_unlock_irqrestore(get_ccwdev_lock(card->rdev), flags);
2962 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_RDEV(card)), flags);
2963  
2964         if (atomic_read(&card->break_out)) {
2965                 QETH_DBF_TEXT3(0, trace, "IARWBRKO");
2966 @@ -6918,9 +6776,9 @@
2967  
2968         if (qeth_sleepon(card, QETH_MPC_TIMEOUT)) {
2969                 QETH_DBF_TEXT1(0, trace, "IRWT");
2970 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
2971 +               QETH_DBF_TEXT1(0, trace, CARD_RDEV_ID(card));
2972                 PRINT_ERR("IDX_ACTIVATE(wr) on read channel device %s: "
2973 -                         "timeout\n", card->rdev->dev.bus_id);
2974 +                         "timeout\n", CARD_RDEV_ID(card));
2975                 return -EIO;
2976         }
2977  
2978 @@ -6929,13 +6787,13 @@
2979         card->dma_stuff->read_ccw.count = QETH_BUFSIZE;
2980         card->dma_stuff->read_ccw.cda = QETH_GET_ADDR(card->dma_stuff->recbuf);
2981  
2982 -       spin_lock_irqsave(get_ccwdev_lock(card->rdev), flags);
2983 +       spin_lock_irqsave(get_ccwdev_lock(CARD_RDEV(card)), flags);
2984         result2 = 0;
2985 -       result = ccw_device_start(card->rdev, &card->dma_stuff->read_ccw,
2986 +       result = ccw_device_start(CARD_RDEV(card), &card->dma_stuff->read_ccw,
2987                                   IDX_ACTIVATE_READ_STATE, 0, 0);
2988         if (result) {
2989                 qeth_delay_millis(QETH_WAIT_BEFORE_2ND_DOIO);
2990 -               result2 = ccw_device_start(card->rdev,
2991 +               result2 = ccw_device_start(CARD_RDEV(card),
2992                                            &card->dma_stuff->read_ccw,
2993                                            IDX_ACTIVATE_READ_STATE, 0, 0);
2994                 sprintf(dbf_text, "IRR1%4x", result);
2995 @@ -6946,7 +6804,7 @@
2996                            "returned %i, next try returns %i\n",
2997                            result, result2);
2998         }
2999 -       spin_unlock_irqrestore(get_ccwdev_lock(card->rdev), flags);
3000 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_RDEV(card)), flags);
3001  
3002         if (result2) {
3003                 result = result2;
3004 @@ -6956,21 +6814,21 @@
3005  
3006         if (qeth_sleepon(card, QETH_MPC_TIMEOUT)) {
3007                 QETH_DBF_TEXT1(0, trace, "IRRT");
3008 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
3009 +               QETH_DBF_TEXT1(0, trace, CARD_RDEV_ID(card));
3010                 PRINT_ERR("IDX_ACTIVATE(rd) on read channel device %s: "
3011 -                         "timeout\n", card->rdev->dev.bus_id);
3012 +                         "timeout\n", CARD_RDEV_ID(card));
3013                 return -EIO;
3014         }
3015         QETH_DBF_TEXT2(0, trace, "iarr");
3016 -       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3017 +       QETH_DBF_TEXT2(0, trace, CARD_RDEV_ID(card));
3018         QETH_DBF_HEX2(0, control, card->dma_stuff->recbuf,
3019                       QETH_DBF_CONTROL_LEN);
3020  
3021         if (!(QETH_IS_IDX_ACT_POS_REPLY(card->dma_stuff->recbuf))) {
3022                 QETH_DBF_TEXT1(0, trace, "IRNR");
3023 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
3024 +               QETH_DBF_TEXT1(0, trace, CARD_RDEV_ID(card));
3025                 PRINT_ERR("IDX_ACTIVATE on read channel device %s: negative "
3026 -                         "reply\n", card->rdev->dev.bus_id);
3027 +                         "reply\n", CARD_RDEV_ID(card));
3028                 return -EIO;
3029         }
3030  
3031 @@ -6987,12 +6845,12 @@
3032         memcpy(&temp, QETH_IDX_ACT_FUNC_LEVEL(card->dma_stuff->recbuf), 2);
3033         if (temp != qeth_peer_func_level(card->func_level)) {
3034                 QETH_DBF_TEXT1(0, trace, "IRFL");
3035 -               QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
3036 +               QETH_DBF_TEXT1(0, trace, CARD_RDEV_ID(card));
3037                 sprintf(dbf_text, "%4x%4x", card->func_level, temp);
3038                 QETH_DBF_TEXT1(0, trace, dbf_text);
3039                 PRINT_WARN("IDX_ACTIVATE on read channel device %s: function "
3040                            "level mismatch (sent: 0x%x, received: 0x%x)\n",
3041 -                          card->rdev->dev.bus_id, card->func_level, temp);
3042 +                          CARD_RDEV_ID(card), card->func_level, temp);
3043                 result = -EIO;
3044         }
3045  
3046 @@ -7031,23 +6889,23 @@
3047         memcpy(QETH_IDX_ACT_FUNC_LEVEL(card->dma_stuff->sendbuf),
3048                &card->func_level, 2);
3049  
3050 -       temp = __raw_devno_from_bus_id(card->ddev->dev.bus_id);
3051 +       temp = __raw_devno_from_bus_id(CARD_DDEV_ID(card));
3052         memcpy(QETH_IDX_ACT_QDIO_DEV_CUA(card->dma_stuff->sendbuf), &temp, 2);
3053         temp = (card->cula << 8) + card->unit_addr2;
3054         memcpy(QETH_IDX_ACT_QDIO_DEV_REALADDR(card->dma_stuff->sendbuf),
3055                &temp, 2);
3056  
3057         QETH_DBF_TEXT2(0, trace, "iaww");
3058 -       QETH_DBF_TEXT2(0, trace, card->wdev->dev.bus_id);
3059 +       QETH_DBF_TEXT2(0, trace, CARD_WDEV_ID(card));
3060         QETH_DBF_HEX2(0, control, card->dma_stuff->sendbuf,
3061                       QETH_DBF_CONTROL_LEN);
3062  
3063 -       spin_lock_irqsave(get_ccwdev_lock(card->wdev), flags);
3064 -       result = ccw_device_start(card->wdev, &card->dma_stuff->write_ccw,
3065 +       spin_lock_irqsave(get_ccwdev_lock(CARD_WDEV(card)), flags);
3066 +       result = ccw_device_start(CARD_WDEV(card), &card->dma_stuff->write_ccw,
3067                                   IDX_ACTIVATE_WRITE_STATE, 0, 0);
3068         if (result) {
3069                 qeth_delay_millis(QETH_WAIT_BEFORE_2ND_DOIO);
3070 -               result2 = ccw_device_start(card->wdev,
3071 +               result2 = ccw_device_start(CARD_WDEV(card),
3072                                            &card->dma_stuff->write_ccw,
3073                                            IDX_ACTIVATE_WRITE_STATE, 0, 0);
3074                 sprintf(dbf_text, "IWW1%4x", result);
3075 @@ -7058,7 +6916,7 @@
3076                            "returned %i, next try returns %i\n",
3077                            result, result2);
3078         }
3079 -       spin_unlock_irqrestore(get_ccwdev_lock(card->wdev), flags);
3080 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_WDEV(card)), flags);
3081  
3082         if (atomic_read(&card->break_out)) {
3083                 QETH_DBF_TEXT3(0, trace, "IAWWBRKO");
3084 @@ -7067,9 +6925,9 @@
3085  
3086         if (qeth_sleepon(card, QETH_MPC_TIMEOUT)) {
3087                 QETH_DBF_TEXT1(0, trace, "IWWT");
3088 -               QETH_DBF_TEXT1(0, trace, card->wdev->dev.bus_id);
3089 +               QETH_DBF_TEXT1(0, trace, CARD_WDEV_ID(card));
3090                 PRINT_ERR("IDX_ACTIVATE(wr) on write channel device %s: "
3091 -                         "timeout\n", card->wdev->dev.bus_id);
3092 +                         "timeout\n", CARD_WDEV_ID(card));
3093                 return -EIO;
3094         }
3095  
3096 @@ -7081,13 +6939,13 @@
3097            read channel program */
3098         card->dma_stuff->read_ccw.cda = QETH_GET_ADDR(card->dma_stuff->recbuf);
3099  
3100 -       spin_lock_irqsave(get_ccwdev_lock(card->wdev), flags);
3101 +       spin_lock_irqsave(get_ccwdev_lock(CARD_WDEV(card)), flags);
3102         result2 = 0;
3103 -       result = ccw_device_start(card->wdev, &card->dma_stuff->read_ccw,
3104 +       result = ccw_device_start(CARD_WDEV(card), &card->dma_stuff->read_ccw,
3105                                   IDX_ACTIVATE_READ_STATE, 0, 0);
3106         if (result) {
3107                 qeth_delay_millis(QETH_WAIT_BEFORE_2ND_DOIO);
3108 -               result2 = ccw_device_start(card->wdev,
3109 +               result2 = ccw_device_start(CARD_WDEV(card),
3110                                            &card->dma_stuff->read_ccw,
3111                                            IDX_ACTIVATE_READ_STATE, 0, 0);
3112                 sprintf(dbf_text, "IWR1%4x", result);
3113 @@ -7098,7 +6956,7 @@
3114                            "%i, next try returns %i\n", result, result2);
3115         }
3116  
3117 -       spin_unlock_irqrestore(get_ccwdev_lock(card->wdev), flags);
3118 +       spin_unlock_irqrestore(get_ccwdev_lock(CARD_WDEV(card)), flags);
3119  
3120         if (result2) {
3121                 result = result2;
3122 @@ -7108,33 +6966,33 @@
3123  
3124         if (qeth_sleepon(card, QETH_MPC_TIMEOUT)) {
3125                 QETH_DBF_TEXT1(0, trace, "IWRT");
3126 -               QETH_DBF_TEXT1(0, trace, card->wdev->dev.bus_id);
3127 +               QETH_DBF_TEXT1(0, trace, CARD_WDEV_ID(card));
3128                 PRINT_ERR("IDX_ACTIVATE(rd) on write channel device %s: "
3129 -                         "timeout\n", card->wdev->dev.bus_id);
3130 +                         "timeout\n", CARD_WDEV_ID(card));
3131                 return -EIO;
3132         }
3133         QETH_DBF_TEXT2(0, trace, "iawr");
3134 -       QETH_DBF_TEXT2(0, trace, card->wdev->dev.bus_id);
3135 +       QETH_DBF_TEXT2(0, trace, CARD_WDEV_ID(card));
3136         QETH_DBF_HEX2(0, control, card->dma_stuff->recbuf,
3137                       QETH_DBF_CONTROL_LEN);
3138  
3139         if (!(QETH_IS_IDX_ACT_POS_REPLY(card->dma_stuff->recbuf))) {
3140                 QETH_DBF_TEXT1(0, trace, "IWNR");
3141 -               QETH_DBF_TEXT1(0, trace, card->wdev->dev.bus_id);
3142 +               QETH_DBF_TEXT1(0, trace, CARD_WDEV_ID(card));
3143                 PRINT_ERR("IDX_ACTIVATE on write channel device %s: negative "
3144 -                         "reply\n", card->wdev->dev.bus_id);
3145 +                         "reply\n", CARD_WDEV_ID(card));
3146                 return -EIO;
3147         }
3148  
3149         memcpy(&temp, QETH_IDX_ACT_FUNC_LEVEL(card->dma_stuff->recbuf), 2);
3150         if ((temp & ~0x0100) != qeth_peer_func_level(card->func_level)) {
3151                 QETH_DBF_TEXT1(0, trace, "IWFM");
3152 -               QETH_DBF_TEXT1(0, trace, card->wdev->dev.bus_id);
3153 +               QETH_DBF_TEXT1(0, trace, CARD_WDEV_ID(card));
3154                 sprintf(dbf_text, "%4x%4x", card->func_level, temp);
3155                 QETH_DBF_TEXT1(0, trace, dbf_text);
3156                 PRINT_WARN("IDX_ACTIVATE on write channel device %s: function "
3157                            "level mismatch (sent: 0x%x, received: 0x%x)\n",
3158 -                          card->wdev->dev.bus_id, card->func_level, temp);
3159 +                          CARD_WDEV_ID(card), card->func_level, temp);
3160                 result = -EIO;
3161         }
3162  
3163 @@ -7249,8 +7107,7 @@
3164                 memcpy(&framesize, QETH_ULP_ENABLE_RESP_MAX_MTU(buffer), 2);
3165                 mtu = qeth_get_mtu_outof_framesize(framesize);
3166  
3167 -               QETH_DBF_TEXT2(0, trace, "ule");
3168 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3169 +               QETH_DBF_CARD2(0, trace, "ule", card);
3170                 sprintf(dbf_text, "mtu=%4x", mtu);
3171                 QETH_DBF_TEXT2(0, trace, dbf_text);
3172  
3173 @@ -7300,7 +7157,7 @@
3174         memcpy(QETH_ULP_SETUP_FILTER_TOKEN(card->send_buf),
3175                &card->token.ulp_filter_r, QETH_MPC_TOKEN_LENGTH);
3176  
3177 -       temp = __raw_devno_from_bus_id(card->ddev->dev.bus_id);
3178 +       temp = __raw_devno_from_bus_id(CARD_DDEV_ID(card));
3179         memcpy(QETH_ULP_SETUP_CUA(card->send_buf), &temp, 2);
3180         temp = (card->cula << 8) + card->unit_addr2;
3181         memcpy(QETH_ULP_SETUP_REAL_DEVADDR(card->send_buf), &temp, 2);
3182 @@ -7375,7 +7232,7 @@
3183                         ptr++;
3184                 }
3185  
3186 -       init_data.cdev = card->ddev;
3187 +       init_data.cdev = CARD_DDEV(card);
3188         init_data.q_format = qeth_get_q_format(card->type);
3189         init_data.qib_param_field_format = 0;
3190         init_data.qib_param_field = adapter_area;
3191 @@ -7413,7 +7270,7 @@
3192         int result;
3193         char dbf_text[15];
3194  
3195 -       result = qdio_activate(card->ddev, 0);
3196 +       result = qdio_activate(CARD_DDEV(card), 0);
3197  
3198         sprintf(dbf_text, "qda=%4x", result);
3199         QETH_DBF_TEXT3(0, trace, dbf_text);
3200 @@ -7680,8 +7537,7 @@
3201         struct qeth_card *card;
3202  
3203         card = (struct qeth_card *) dev->priv;
3204 -       QETH_DBF_TEXT2(1, trace, "XMTO");
3205 -       QETH_DBF_TEXT2(1, trace, card->rdev->dev.bus_id);
3206 +       QETH_DBF_CARD2(1, trace, "XMTO", card);
3207         card->stats->tx_errors++;
3208         atomic_set(&card->problem, PROBLEM_TX_TIMEOUT);
3209         qeth_schedule_recovery(card);
3210 @@ -7737,8 +7593,7 @@
3211  
3212         card = (struct qeth_card *) dev->priv;
3213  
3214 -       QETH_DBF_TEXT3(0, trace, "inid");
3215 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
3216 +       QETH_DBF_CARD3(0, trace, "inid", card);
3217  
3218         dev->tx_timeout = &qeth_tx_timeout;
3219         dev->watchdog_timeo = QETH_TX_TIMEOUT;
3220 @@ -7798,15 +7653,14 @@
3221         char dbf_text[15];
3222         int length;
3223  
3224 -       QETH_DBF_TEXT3(0, trace, "gtua");
3225 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
3226 +       QETH_DBF_CARD3(0, trace, "gtua", card);
3227  
3228 -       result = read_conf_data(card->ddev, (void **) &prcd, &length);
3229 +       result = read_conf_data(CARD_DDEV(card), (void **) &prcd, &length);
3230         if (result) {
3231                 sprintf(dbf_text, "rcd%4x", result);
3232                 QETH_DBF_TEXT3(0, trace, dbf_text);
3233                 PRINT_ERR("read_conf_data for device %s returned %i\n",
3234 -                         card->ddev->dev.bus_id, result);
3235 +                         CARD_DDEV_ID(card), result);
3236                 return result;
3237         }
3238  
3239 @@ -7866,9 +7720,9 @@
3240          } \
3241  } while (0)
3242  
3243 -       DO_SEND_NOP(card->rdev);
3244 -       DO_SEND_NOP(card->wdev);
3245 -       DO_SEND_NOP(card->ddev);
3246 +       DO_SEND_NOP(CARD_RDEV(card));
3247 +       DO_SEND_NOP(CARD_WDEV(card));
3248 +       DO_SEND_NOP(CARD_DDEV(card));
3249  
3250  exit:
3251         return result;
3252 @@ -7884,8 +7738,7 @@
3253                 return;
3254         }
3255  
3256 -       QETH_DBF_TEXT3(0, trace, "clcs");
3257 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
3258 +       QETH_DBF_CARD3(0, trace, "clcs", card);
3259  
3260         atomic_set(&card->is_startlaned, 0);
3261  
3262 @@ -7955,7 +7808,7 @@
3263                 if (i < card->options.inbound_buffer_count)
3264                         qeth_queue_input_buffer(card,i,0);
3265         }
3266 -       qdio_synchronize(card->ddev, QDIO_FLAG_SYNC_INPUT, 0);
3267 +       qdio_synchronize(CARD_DDEV(card), QDIO_FLAG_SYNC_INPUT, 0);
3268  }
3269  
3270  /* initializes all the structures for a card */
3271 @@ -7974,8 +7827,7 @@
3272         atomic_set(&card->shutdown_phase, 0);
3273  
3274         if (atomic_read(&card->is_hardsetup)) {
3275 -               QETH_DBF_TEXT2(1, trace, "hscd");
3276 -               QETH_DBF_TEXT2(1, trace, card->rdev->dev.bus_id);
3277 +               QETH_DBF_CARD2(1, trace, "hscd", card);
3278                 PRINT_ALL("card is already hardsetup.\n");
3279                 return 0;
3280         }
3281 @@ -7990,8 +7842,7 @@
3282                 if (in_recovery) {
3283                         PRINT_STUPID("qeth: recovery: quiescing %s...\n",
3284                                      card->dev_name);
3285 -                       QETH_DBF_TEXT2(0, trace, "Rqsc");
3286 -                       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3287 +                       QETH_DBF_CARD2(0, trace, "Rqsc", card);
3288                         qeth_wait_nonbusy(QETH_QUIESCE_WAIT_BEFORE_CLEAR);
3289                 }
3290                 clear_laps = QETH_HARDSETUP_CLEAR_LAPS;
3291 @@ -8011,8 +7862,7 @@
3292                 if (in_recovery) {
3293                         PRINT_STUPID("qeth: recovery: still quiescing %s...\n",
3294                                      card->dev_name);
3295 -                       QETH_DBF_TEXT2(0, trace, "RQsc");
3296 -                       QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3297 +                       QETH_DBF_CARD2(0, trace, "RQsc", card);
3298                         qeth_wait_nonbusy(QETH_QUIESCE_WAIT_AFTER_CLEAR);
3299                 } else {
3300                         atomic_set(&card->shutdown_phase, 0);
3301 @@ -8100,9 +7950,9 @@
3302  
3303                 QETH_DBF_TEXT2(0, trace, "hsissurd");
3304                 /* from here, there will always be an outstanding read */
3305 -               spin_lock_irqsave(get_ccwdev_lock(card->rdev), flags);
3306 +               spin_lock_irqsave(get_ccwdev_lock(CARD_RDEV(card)), flags);
3307                 qeth_issue_next_read(card);
3308 -               spin_unlock_irqrestore(get_ccwdev_lock(card->rdev), flags);
3309 +               spin_unlock_irqrestore(get_ccwdev_lock(CARD_RDEV(card)), flags);
3310  
3311                 PRINT_TOKENS;
3312                 QETH_DBF_TEXT2(0, trace, "hscmenab");
3313 @@ -8141,12 +7991,11 @@
3314                 CHECK_ERRORS;
3315         } while ((laps--) && (breakout == QETH_BREAKOUT_AGAIN));
3316         if (breakout == QETH_BREAKOUT_AGAIN) {
3317 -               QETH_DBF_TEXT2(0, trace, "hsnr");
3318 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3319 +               QETH_DBF_CARD2(0, trace, "hsnr", card);
3320                 PRINT_ERR("qeth: recovery not successful on device "
3321                           "%s/%s/%s; giving up.\n",
3322 -                         card->rdev->dev.bus_id,
3323 -                         card->wdev->dev.bus_id, card->ddev->dev.bus_id);
3324 +                         CARD_RDEV_ID(card),
3325 +                         CARD_WDEV_ID(card), CARD_DDEV_ID(card));
3326                 result = -EIO;
3327                 goto exit;
3328         }
3329 @@ -8212,9 +8061,9 @@
3330                 QETH_DBF_TEXT1(0, trace, "RECOVSUC");
3331                 PRINT_INFO("qeth: recovered device %s/%s/%s (%s) "
3332                            "successfully.\n",
3333 -                          card->rdev->dev.bus_id,
3334 -                          card->wdev->dev.bus_id,
3335 -                          card->ddev->dev.bus_id, card->dev_name);
3336 +                          CARD_RDEV_ID(card),
3337 +                          CARD_WDEV_ID(card),
3338 +                          CARD_DDEV_ID(card), card->dev_name);
3339         } else {
3340                 QETH_DBF_TEXT2(0, trace, "hrdsetok");
3341  
3342 @@ -8254,9 +8103,9 @@
3343                         dbf_text[8] = 0;
3344                         printk("qeth: Device %s/%s/%s is a%s card%s%s%s\n"
3345                                "with link type %s (portname: %s)\n",
3346 -                              card->rdev->dev.bus_id,
3347 -                              card->wdev->dev.bus_id,
3348 -                              card->ddev->dev.bus_id,
3349 +                              CARD_RDEV_ID(card),
3350 +                              CARD_WDEV_ID(card),
3351 +                              CARD_DDEV_ID(card),
3352                                qeth_get_cardname(card->type,
3353                                                  card->is_guest_lan),
3354                                (card->level[0]) ? " (level: " : "",
3355 @@ -8270,9 +8119,9 @@
3356                                 printk("qeth: Device %s/%s/%s is a%s "
3357                                        "card%s%s%s\nwith link type %s "
3358                                        "(no portname needed by interface).\n",
3359 -                                      card->rdev->dev.bus_id,
3360 -                                      card->wdev->dev.bus_id,
3361 -                                      card->ddev->dev.bus_id,
3362 +                                      CARD_RDEV_ID(card),
3363 +                                      CARD_WDEV_ID(card),
3364 +                                      CARD_DDEV_ID(card),
3365                                        qeth_get_cardname(card->type,
3366                                                          card->is_guest_lan),
3367                                        (card->level[0]) ? " (level: " : "",
3368 @@ -8283,9 +8132,9 @@
3369                         else
3370                                 printk("qeth: Device %s/%s/%s is a%s "
3371                                        "card%s%s%s\nwith link type %s.\n",
3372 -                                      card->rdev->dev.bus_id,
3373 -                                      card->wdev->dev.bus_id,
3374 -                                      card->ddev->dev.bus_id,
3375 +                                      CARD_RDEV_ID(card),
3376 +                                      CARD_WDEV_ID(card),
3377 +                                      CARD_DDEV_ID(card),
3378                                        qeth_get_cardname(card->type,
3379                                                          card->is_guest_lan),
3380                                        (card->level[0]) ? " (level: " : "",
3381 @@ -8311,11 +8160,10 @@
3382         int result;
3383         char name[15];
3384  
3385 -       QETH_DBF_TEXT1(0, trace, "RINI");
3386 -       QETH_DBF_TEXT1(0, trace, card->rdev->dev.bus_id);
3387 +       QETH_DBF_CARD1(0, trace, "RINI", card);
3388  
3389         /* set a nice name ... */
3390 -       sprintf(name, "qethrinid%s", card->rdev->dev.bus_id);
3391 +       sprintf(name, "qethrinid%s", CARD_BUS_ID(card));
3392         daemonize(name);
3393  
3394         if (atomic_read(&card->shutdown_phase))
3395 @@ -8391,9 +8239,9 @@
3396                                   "(%s/%s/%s), GIVING UP, "
3397                                   "OUTGOING PACKETS WILL BE DISCARDED!\n",
3398                                   card->dev_name,
3399 -                                 card->rdev->dev.bus_id,
3400 -                                 card->wdev->dev.bus_id,
3401 -                                 card->ddev->dev.bus_id);
3402 +                                 CARD_RDEV_ID(card),
3403 +                                 CARD_WDEV_ID(card),
3404 +                                 CARD_DDEV_ID(card));
3405                         /* early leave hard_start_xmit! */
3406                         atomic_set(&card->is_startlaned, 0);
3407                         qeth_wakeup_procfile();
3408 @@ -8562,8 +8410,7 @@
3409  {
3410         int i, j;
3411  
3412 -       QETH_DBF_TEXT3(0, trace, "irb1");
3413 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
3414 +       QETH_DBF_CARD3(0, trace, "irb1", card);
3415  
3416         for (i = 0; i < card->no_queues; i++) {
3417                 card->outbound_ringbuffer[i] =
3418 @@ -8590,8 +8437,7 @@
3419  {
3420         int i, j;
3421  
3422 -       QETH_DBF_TEXT3(0, trace, "irb2");
3423 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
3424 +       QETH_DBF_CARD3(0, trace, "irb2", card);
3425  
3426         for (i = 0; i < card->options.inbound_buffer_count; i++) {
3427                 for (j = 0; j < BUFFER_MAX_ELEMENTS; j++) {
3428 @@ -8630,8 +8476,7 @@
3429  static void
3430  qeth_insert_card_into_list(struct qeth_card *card)
3431  {
3432 -       QETH_DBF_TEXT3(0, trace, "icil");
3433 -       QETH_DBF_TEXT3(0, trace, card->rdev->dev.bus_id);
3434 +       QETH_DBF_CARD3(0, trace, "icil", card);
3435  
3436         write_lock(&list_lock);
3437         card->next = firstcard;
3438 @@ -8646,8 +8491,8 @@
3439         char dbf_text[15];
3440  
3441         while (known_devices[i][4]) {
3442 -               if ((card->rdev->id.dev_type == known_devices[i][2]) &&
3443 -                   (card->rdev->id.dev_model == known_devices[i][3])) {
3444 +               if ((CARD_RDEV(card)->id.dev_type == known_devices[i][2]) &&
3445 +                   (CARD_RDEV(card)->id.dev_model == known_devices[i][3])) {
3446                         card->type = known_devices[i][4];
3447                         if (card->options.ena_ipat == ENABLE_TAKEOVER)
3448                                 card->func_level = known_devices[i][6];
3449 @@ -8655,7 +8500,7 @@
3450                                 card->func_level = known_devices[i][7];
3451                         card->no_queues = known_devices[i][8];
3452                         card->is_multicast_different = known_devices[i][9];
3453 -                       QETH_DBF_TEXT2(0, setup, card->rdev->dev.bus_id);
3454 +                       QETH_DBF_TEXT2(0, setup, CARD_BUS_ID(card));
3455                         sprintf(dbf_text, "ctyp%4x", card->type);
3456                         QETH_DBF_TEXT2(0, setup, dbf_text);
3457                         return 0;
3458 @@ -8663,10 +8508,10 @@
3459                 i++;
3460         }
3461         card->type = QETH_CARD_TYPE_UNKNOWN;
3462 -       QETH_DBF_TEXT2(0, setup, card->rdev->dev.bus_id);
3463 +       QETH_DBF_TEXT2(0, setup, CARD_BUS_ID(card));
3464         sprintf(dbf_text, "ctypUNKN");
3465         QETH_DBF_TEXT2(0, setup, dbf_text);
3466 -       PRINT_ERR("unknown card type on device %s\n", card->rdev->dev.bus_id);
3467 +       PRINT_ERR("unknown card type on device %s\n", CARD_BUS_ID(card));
3468         return -ENOENT;
3469  }
3470  
3471 @@ -8815,10 +8660,8 @@
3472  {
3473         struct qeth_card *card;
3474         struct net_device *dev = (struct net_device *) ptr;
3475 -       char dbf_text[15];
3476  
3477 -       sprintf(dbf_text, "devevent");
3478 -       QETH_DBF_TEXT3(0, trace, dbf_text);
3479 +       QETH_DBF_TEXT3(0, trace, "devevent");
3480         QETH_DBF_HEX3(0, trace, &event, sizeof (unsigned long));
3481         QETH_DBF_HEX3(0, trace, &dev, sizeof (void *));
3482  
3483 @@ -8843,8 +8686,7 @@
3484         struct net_device *dev = ifa->ifa_dev->dev;
3485         char dbf_text[15];
3486  
3487 -       sprintf(dbf_text, "ipevent");
3488 -       QETH_DBF_TEXT3(0, trace, dbf_text);
3489 +       QETH_DBF_TEXT3(0, trace, "ipevent");
3490         QETH_DBF_HEX3(0, trace, &event, sizeof (unsigned long));
3491         QETH_DBF_HEX3(0, trace, &dev, sizeof (void *));
3492         sprintf(dbf_text, "%08x", ifa->ifa_address);
3493 @@ -8869,10 +8711,8 @@
3494         struct qeth_card *card;
3495         struct inet6_ifaddr *ifa = (struct inet6_ifaddr *) ptr;
3496         struct net_device *dev = ifa->idev->dev;
3497 -       char dbf_text[15];
3498  
3499 -       sprintf(dbf_text, "ip6event");
3500 -       QETH_DBF_TEXT3(0, trace, dbf_text);
3501 +       QETH_DBF_TEXT3(0, trace, "ip6event");
3502         QETH_DBF_HEX3(0, trace, &event, sizeof (unsigned long));
3503         QETH_DBF_HEX3(0, trace, &dev, sizeof (void *));
3504         QETH_DBF_HEX3(0, trace, ifa->addr.s6_addr, QETH_DBF_TRACE_LEN);
3505 @@ -8900,14 +8740,14 @@
3506                 card = firstcard;
3507         clear_another_one:
3508                 if (card->type == QETH_CARD_TYPE_IQD) {
3509 -                       ccw_device_halt(card->ddev, 0);
3510 -                       ccw_device_clear(card->rdev, 0);
3511 -                       ccw_device_clear(card->wdev, 0);
3512 -                       ccw_device_clear(card->ddev, 0);
3513 +                       ccw_device_halt(CARD_DDEV(card), 0);
3514 +                       ccw_device_clear(CARD_RDEV(card), 0);
3515 +                       ccw_device_clear(CARD_WDEV(card), 0);
3516 +                       ccw_device_clear(CARD_DDEV(card), 0);
3517                 } else {
3518 -                       ccw_device_clear(card->ddev, 0);
3519 -                       ccw_device_clear(card->rdev, 0);
3520 -                       ccw_device_clear(card->wdev, 0);
3521 +                       ccw_device_clear(CARD_DDEV(card), 0);
3522 +                       ccw_device_clear(CARD_RDEV(card), 0);
3523 +                       ccw_device_clear(CARD_WDEV(card), 0);
3524                 }
3525                 if (card->next) {
3526                         card = card->next;
3527 @@ -9121,9 +8961,9 @@
3528                         length += sprintf(buffer + length,
3529                                           "%s/%s/%s x%02X %10s %14s %2i"
3530                                           "  +++ CABLE PULLED +++\n",
3531 -                                         card->rdev->dev.bus_id,
3532 -                                         card->wdev->dev.bus_id,
3533 -                                         card->ddev->dev.bus_id,
3534 +                                         CARD_RDEV_ID(card),
3535 +                                         CARD_WDEV_ID(card),
3536 +                                         CARD_DDEV_ID(card),
3537                                           card->chpid,
3538                                           card->dev_name,
3539                                           qeth_get_cardname_short
3540 @@ -9134,9 +8974,9 @@
3541                         length += sprintf(buffer + length,
3542                                           "%s/%s/%s x%02X %10s %14s %2i"
3543                                           "     %2s %10s %3s %3s %3i\n",
3544 -                                         card->rdev->dev.bus_id,
3545 -                                         card->wdev->dev.bus_id,
3546 -                                         card->ddev->dev.bus_id,
3547 +                                         CARD_RDEV_ID(card),
3548 +                                         CARD_WDEV_ID(card),
3549 +                                         CARD_DDEV_ID(card),
3550                                           card->chpid, card->dev_name,
3551                                           qeth_get_cardname_short
3552                                           (card->type, card->link_type,
3553 @@ -9175,9 +9015,9 @@
3554  
3555         while (card) {
3556                 _OUTP_IT("For card with devnos %s/%s/%s (%s):\n",
3557 -                        card->rdev->dev.bus_id,
3558 -                        card->wdev->dev.bus_id,
3559 -                        card->ddev->dev.bus_id, card->dev_name);
3560 +                        CARD_RDEV_ID(card),
3561 +                        CARD_WDEV_ID(card),
3562 +                        CARD_DDEV_ID(card), card->dev_name);
3563                 _OUTP_IT("  Skb's/buffers received                 : %i/%i\n",
3564                          card->perf_stats.skbs_rec, card->perf_stats.bufs_rec);
3565                 _OUTP_IT("  Skb's/buffers sent                     : %i/%i\n",
3566 @@ -9686,6 +9526,7 @@
3567  };
3568  
3569  static struct file_operations qeth_procfile_fops = {
3570 +       .owner = THIS_MODULE,
3571         .ioctl = qeth_procfile_ioctl,
3572         .read = qeth_procfile_read,
3573         .open = qeth_procfile_open,
3574 @@ -9695,6 +9536,7 @@
3575  static struct proc_dir_entry *qeth_proc_file;
3576  
3577  static struct file_operations qeth_ipato_procfile_fops = {
3578 +       .owner = THIS_MODULE,
3579         .read = qeth_procfile_read,     /* same as above! */
3580         .write = qeth_ipato_procfile_write,
3581         .open = qeth_ipato_procfile_open,
3582 @@ -9937,8 +9779,14 @@
3583         .remove = ccwgroup_remove_ccwdev,
3584  };
3585  
3586 +static void
3587 +qeth_root_dev_release (struct device *dev)
3588 +{
3589 +}
3590 +
3591  static struct device qeth_root_dev = {
3592         .bus_id = "qeth",
3593 +       .release = qeth_root_dev_release,
3594  };
3595  
3596  static struct ccwgroup_driver qeth_ccwgroup_driver;
3597 @@ -10099,37 +9947,27 @@
3598         tmp = strsep((char **) &buf, "\n");
3599         cnt = strlen(tmp);
3600         if (!strncmp(tmp, "primary_router", cnt)) {
3601 -               QETH_DBF_TEXT2(0, trace, "pri4");
3602 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3603 +               QETH_DBF_CARD2(0, trace, "pri4", card);
3604                 card->options.routing_type4 =
3605                         PRIMARY_ROUTER | RESET_ROUTING_FLAG;
3606         } else if (!strncmp(tmp, "secondary_router", cnt)) {
3607 -               QETH_DBF_TEXT2(0, trace, "sec4");
3608 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3609 +               QETH_DBF_CARD2(0, trace, "sec4", card);
3610                 card->options.routing_type4 =
3611                         SECONDARY_ROUTER | RESET_ROUTING_FLAG;
3612         }  else if (!strncmp(tmp, "multicast_router", cnt)) {
3613 -               QETH_DBF_TEXT2(0, trace, "mcr4");
3614 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3615 -
3616 +               QETH_DBF_CARD2(0, trace, "mcr4", card);
3617                 card->options.routing_type4 =
3618                         MULTICAST_ROUTER | RESET_ROUTING_FLAG;
3619         } else if (!strncmp(tmp, "primary_connector", cnt)) {
3620 -               QETH_DBF_TEXT2(0, trace, "prc4");
3621 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3622 -
3623 +               QETH_DBF_CARD2(0, trace, "prc4", card);
3624                 card->options.routing_type4 =
3625                         PRIMARY_CONNECTOR | RESET_ROUTING_FLAG;
3626         } else if (!strncmp(tmp, "secondary_connector", cnt)) {
3627 -               QETH_DBF_TEXT2(0, trace, "scc4");
3628 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3629 -
3630 +               QETH_DBF_CARD2(0, trace, "scc4", card);
3631                 card->options.routing_type4 =
3632                         SECONDARY_CONNECTOR | RESET_ROUTING_FLAG;
3633         } else if (!strncmp(tmp, "no_router", cnt)) {
3634 -               QETH_DBF_TEXT2(0, trace, "nor4");
3635 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3636 -               
3637 +               QETH_DBF_CARD2(0, trace, "nor4", card);
3638                 card->options.routing_type4 = NO_ROUTER | RESET_ROUTING_FLAG;
3639         } else {
3640                 PRINT_WARN("unknown command input in route4 attribute\n");
3641 @@ -10192,37 +10030,28 @@
3642         tmp = strsep((char **) &buf, "\n");
3643         cnt = strlen(tmp);
3644         if (!strncmp(tmp, "primary_router", cnt)) {
3645 -               QETH_DBF_TEXT2(0, trace, "pri6");
3646 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3647 +               QETH_DBF_CARD2(0, trace, "pri6", card);
3648                 card->options.routing_type6 =
3649                         PRIMARY_ROUTER | RESET_ROUTING_FLAG;
3650         } else if (!strncmp(tmp, "secondary_router", cnt)) {
3651                                 QETH_DBF_TEXT2(0, trace, "sec6");
3652 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3653 +               QETH_DBF_CARD2(0, trace, "sec6", card);
3654                 card->options.routing_type6 =
3655                         SECONDARY_ROUTER | RESET_ROUTING_FLAG;
3656         }  else if (!strncmp(tmp, "multicast_router", cnt)) {
3657 -               QETH_DBF_TEXT2(0, trace, "mcr6");
3658 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3659 -
3660 +               QETH_DBF_CARD2(0, trace, "mcr6", card);
3661                 card->options.routing_type6 =
3662                         MULTICAST_ROUTER | RESET_ROUTING_FLAG;
3663         } else if (!strncmp(tmp, "primary_connector", cnt)) {
3664 -               QETH_DBF_TEXT2(0, trace, "prc6");
3665 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3666 -
3667 +               QETH_DBF_CARD2(0, trace, "prc6", card);
3668                 card->options.routing_type6 =
3669                         PRIMARY_CONNECTOR | RESET_ROUTING_FLAG;
3670         } else if (!strncmp(tmp, "secondary_connector", cnt)) {
3671 -               QETH_DBF_TEXT2(0, trace, "scc6");
3672 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3673 -
3674 +               QETH_DBF_CARD2(0, trace, "scc6", card);
3675                 card->options.routing_type6 =
3676                         SECONDARY_CONNECTOR | RESET_ROUTING_FLAG;
3677         } else if (!strncmp(tmp, "no_router", cnt)) {
3678 -               QETH_DBF_TEXT2(0, trace, "nor6");
3679 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3680 -               
3681 +               QETH_DBF_CARD2(0, trace, "nor6", card);
3682                 card->options.routing_type6 = NO_ROUTER | RESET_ROUTING_FLAG;
3683         } else {
3684                 PRINT_WARN("unknown command input in route6 attribute\n");
3685 @@ -10663,8 +10492,7 @@
3686  
3687         i = simple_strtoul(buf, &tmp, 16);
3688         if (i == 1) {
3689 -               QETH_DBF_TEXT2(0, trace, "UTRC");
3690 -               QETH_DBF_TEXT2(0, trace, card->rdev->dev.bus_id);
3691 +               QETH_DBF_CARD2(0, trace, "UTRC", card);
3692                 atomic_set(&card->problem, PROBLEM_USER_TRIGGERED_RECOVERY);
3693                 qeth_schedule_recovery(card);
3694                 return count;
3695 @@ -10746,15 +10574,12 @@
3696         gdev->dev.driver_data = card;
3697         card->gdev = gdev;
3698  
3699 -       card->rdev = gdev->cdev[0];
3700         gdev->cdev[0]->handler = qeth_interrupt_handler_read;
3701         gdev->cdev[0]->dev.driver_data = card;
3702  
3703 -       card->wdev = gdev->cdev[1];
3704         gdev->cdev[1]->handler = qeth_interrupt_handler_write;
3705         gdev->cdev[1]->dev.driver_data = card;
3706  
3707 -       card->ddev = gdev->cdev[2];
3708         gdev->cdev[2]->handler = qeth_interrupt_handler_qdio;
3709         gdev->cdev[2]->dev.driver_data = card;
3710  
3711 @@ -10779,16 +10604,11 @@
3712  {
3713         int result;
3714  
3715 -       PRINT_STUPID("%s: got devices %s, %s, %s\n",
3716 -                    __func__,
3717 -                    rdev->dev.bus_id, wdev->dev.bus_id, ddev->dev.bus_id);
3718 -
3719 -       ccw_device_set_online(card->rdev);
3720 -       ccw_device_set_online(card->wdev);
3721 -       ccw_device_set_online(card->ddev);
3722 +       ccw_device_set_online(CARD_RDEV(card));
3723 +       ccw_device_set_online(CARD_WDEV(card));
3724 +       ccw_device_set_online(CARD_DDEV(card));
3725  
3726 -       QETH_DBF_TEXT1(0, setup, "activ");
3727 -       QETH_DBF_TEXT1(0, setup, card->rdev->dev.bus_id);
3728 +       QETH_DBF_CARD1(0, setup, "activ", card);
3729         QETH_DBF_HEX1(0, setup, &card, sizeof (void *));
3730         QETH_DBF_HEX1(0, setup, &card->dev, sizeof (void *));
3731         QETH_DBF_HEX1(0, setup, &card->stats, sizeof (void *));
3732 @@ -10833,7 +10653,7 @@
3733                 goto out_remove;
3734         }
3735         if (sysfs_create_link(&card->dev->class_dev.kobj, &card->gdev->dev.kobj,
3736 -                             card->gdev->dev.bus_id)) {
3737 +                             CARD_BUS_ID(card))) {
3738                 sysfs_remove_link(&card->gdev->dev.kobj, card->dev_name);
3739                 qeth_unregister_netdev(card);
3740                 goto out_remove;
3741 @@ -10847,9 +10667,9 @@
3742  out:
3743         QETH_DBF_TEXT4(0, trace, "freecard");
3744  
3745 -       ccw_device_set_offline(card->ddev);
3746 -       ccw_device_set_offline(card->wdev);
3747 -       ccw_device_set_offline(card->rdev);
3748 +       ccw_device_set_offline(CARD_DDEV(card));
3749 +       ccw_device_set_offline(CARD_WDEV(card));
3750 +       ccw_device_set_offline(CARD_RDEV(card));
3751  
3752         return -ENODEV;
3753  }
3754 @@ -10894,9 +10714,9 @@
3755  
3756         QETH_DBF_TEXT4(0, trace, "freecard");
3757  
3758 -       ccw_device_set_offline(card->ddev);
3759 -       ccw_device_set_offline(card->wdev);
3760 -       ccw_device_set_offline(card->rdev);
3761 +       ccw_device_set_offline(CARD_DDEV(card));
3762 +       ccw_device_set_offline(CARD_WDEV(card));
3763 +       ccw_device_set_offline(CARD_RDEV(card));
3764  
3765         qeth_free_card_stuff(card);
3766  
3767 diff -urN linux-2.6/drivers/s390/net/qeth.h linux-2.6-s390/drivers/s390/net/qeth.h
3768 --- linux-2.6/drivers/s390/net/qeth.h   Sun Sep 28 02:50:05 2003
3769 +++ linux-2.6-s390/drivers/s390/net/qeth.h      Mon Oct  6 10:59:26 2003
3770 @@ -14,7 +14,7 @@
3771  
3772  #define QETH_NAME " qeth"
3773  
3774 -#define VERSION_QETH_H "$Revision$"
3775 +#define VERSION_QETH_H "$Revision$"
3776  
3777  /******************** CONFIG STUFF ***********************/
3778  //#define QETH_DBF_LIKE_HELL
3779 @@ -106,6 +106,12 @@
3780                  debug_text_event(qeth_dbf_##name,level,text); \
3781          } while (0)
3782  
3783 +#define QETH_DBF_CARD(ex,name,level,text,card) \
3784 +       do { \
3785 +               QETH_DBF_TEXT(ex,name,level,text); \
3786 +               QETH_DBF_TEXT(ex,name,level,card->gdev->dev.bus_id); \
3787 +       } while (0)
3788 +
3789  #define QETH_DBF_HEX0(ex,name,addr,len) QETH_DBF_HEX(ex,name,0,addr,len)
3790  #define QETH_DBF_HEX1(ex,name,addr,len) QETH_DBF_HEX(ex,name,1,addr,len)
3791  #define QETH_DBF_HEX2(ex,name,addr,len) QETH_DBF_HEX(ex,name,2,addr,len)
3792 @@ -136,6 +142,21 @@
3793  #define QETH_DBF_TEXT6(ex,name,text) do {} while (0)
3794  #endif /* QETH_DBF_LIKE_HELL */
3795  
3796 +#define QETH_DBF_CARD0(ex,name,text,card) QETH_DBF_CARD(ex,name,0,text,card)
3797 +#define QETH_DBF_CARD1(ex,name,text,card) QETH_DBF_CARD(ex,name,1,text,card)
3798 +#define QETH_DBF_CARD2(ex,name,text,card) QETH_DBF_CARD(ex,name,2,text,card)
3799 +#ifdef QETH_DBF_LIKE_HELL
3800 +#define QETH_DBF_CARD3(ex,name,text,card) QETH_DBF_CARD(ex,name,3,text,card)
3801 +#define QETH_DBF_CARD4(ex,name,text,card) QETH_DBF_CARD(ex,name,4,text,card)
3802 +#define QETH_DBF_CARD5(ex,name,text,card) QETH_DBF_CARD(ex,name,5,text,card)
3803 +#define QETH_DBF_CARD6(ex,name,text,card) QETH_DBF_CARD(ex,name,6,text,card)
3804 +#else /* QETH_DBF_LIKE_HELL */
3805 +#define QETH_DBF_CARD3(ex,name,text,card) do {} while (0)
3806 +#define QETH_DBF_CARD4(ex,name,text,card) do {} while (0)
3807 +#define QETH_DBF_CARD5(ex,name,text,card) do {} while (0)
3808 +#define QETH_DBF_CARD6(ex,name,text,card) do {} while (0)
3809 +#endif /* QETH_DBF_LIKE_HELL */
3810 +
3811  #define QETH_DBF_SETUP_NAME "qeth_setup"
3812  #define QETH_DBF_SETUP_LEN 8
3813  #define QETH_DBF_SETUP_INDEX 3
3814 @@ -662,6 +683,14 @@
3815  #define PROBLEM_MACHINE_CHECK 11
3816  #define PROBLEM_TX_TIMEOUT 12
3817  
3818 +#define CARD_RDEV(card) card->gdev->cdev[0]
3819 +#define CARD_WDEV(card) card->gdev->cdev[1]
3820 +#define CARD_DDEV(card) card->gdev->cdev[2]
3821 +#define CARD_BUS_ID(card) card->gdev->dev.bus_id
3822 +#define CARD_RDEV_ID(card) card->gdev->cdev[0]->dev.bus_id
3823 +#define CARD_WDEV_ID(card) card->gdev->cdev[1]->dev.bus_id
3824 +#define CARD_DDEV_ID(card) card->gdev->cdev[2]->dev.bus_id
3825 +
3826  #define SENSE_COMMAND_REJECT_BYTE 0
3827  #define SENSE_COMMAND_REJECT_FLAG 0x80
3828  #define SENSE_RESETTING_EVENT_BYTE 1
3829 @@ -926,9 +955,6 @@
3830  
3831         /* device and I/O data */
3832         struct ccwgroup_device *gdev;
3833 -       struct ccw_device *rdev;
3834 -       struct ccw_device *wdev;
3835 -       struct ccw_device *ddev;
3836         unsigned short unit_addr2;
3837         unsigned short cula;
3838         unsigned short chpid;
This page took 1.334171 seconds and 3 git commands to generate.