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