]> git.pld-linux.org Git - packages/kernel.git/blame - 2.6.0-t6-s390-lkml.patch
- obsolete
[packages/kernel.git] / 2.6.0-t6-s390-lkml.patch
CommitLineData
fa2cad73 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
6diffstat:
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
15diff -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
46diff -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
58diff -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+
75diff -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 */
96diff -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);
108diff -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
140diffstat:
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
149diff -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
182diff -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 */
220diff -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
330diff -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 /*
362diff -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
387diff -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
412diffstat:
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
420diff -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,
540diff -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 }
989diff -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 }
1167diff -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);
1199diff -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);
1220diffstat:
1221 drivers/s390/net/ctctty.c | 7 +++----
1222 1 files changed, 3 insertions(+), 4 deletions(-)
1223
1224diff -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
1257diffstat:
1258 drivers/s390/net/iucv.c | 12 +++++++++---
1259 1 files changed, 9 insertions(+), 3 deletions(-)
1260
1261diff -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
1312diffstat:
1313 drivers/s390/net/qeth.c | 870 +++++++++++++++++++-----------------------------
1314 drivers/s390/net/qeth.h | 34 +
1315 2 files changed, 375 insertions(+), 529 deletions(-)
1316
1317diff -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
3767diff -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 0.529104 seconds and 4 git commands to generate.