aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorMichael Holzheu <holzheu@de.ibm.com>2005-06-25 17:55:33 -0400
committerLinus Torvalds <torvalds@ppc970.osdl.org>2005-06-25 19:24:37 -0400
commit66a464dbc8e0345b6f972b92bf1118e043d7c987 (patch)
tree4c8f83ce6b1879556025fe77b97629a8380aa4dd /drivers
parent6b979de395c7e1b7e59f74a870e1d1911853eccb (diff)
[PATCH] s390: debug feature changes
This patch changes the memory allocation method for the s390 debug feature. Trace buffers had been allocated using the get_free_pages() function before. Therefore it was not possible to get big memory areas in a running system due to memory fragmentation. Now the trace buffers are subdivided into several subbuffers with pagesize. Therefore it is now possible to allocate more memory for the trace buffers and more trace records can be written. In addition to that, dynamic specification of the size of the trace buffers is implemented. It is now possible to change the size of a trace buffer using a new debugfs file instance. When writing a number into this file, the trace buffer size is changed to 'number * pagesize'. In the past all the traces could be obtained from userspace by accessing files in the "proc" filesystem. Now with debugfs we have a new filesystem which should be used for debugging purposes. This patch moves the debug feature from procfs to debugfs. Since the interface of debug_register() changed, all device drivers, which use the debug feature had to be adjusted. Signed-off-by: Martin Schwidefsky <schwidefsky@de.ibm.com> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/s390/block/dasd.c4
-rw-r--r--drivers/s390/block/dasd_proc.c3
-rw-r--r--drivers/s390/char/tape_34xx.c6
-rw-r--r--drivers/s390/char/tape_core.c2
-rw-r--r--drivers/s390/char/tape_proc.c1
-rw-r--r--drivers/s390/char/vmcp.c2
-rw-r--r--drivers/s390/cio/cio.c8
-rw-r--r--drivers/s390/cio/qdio.c14
-rw-r--r--drivers/s390/cio/qdio.h16
-rw-r--r--drivers/s390/net/claw.c4
-rw-r--r--drivers/s390/net/ctcdbug.c10
-rw-r--r--drivers/s390/net/ctcdbug.h10
-rw-r--r--drivers/s390/net/iucv.h6
-rw-r--r--drivers/s390/net/lcs.c8
-rw-r--r--drivers/s390/net/netiucv.c12
-rw-r--r--drivers/s390/net/qeth.h14
-rw-r--r--drivers/s390/net/qeth_main.c14
17 files changed, 68 insertions, 66 deletions
diff --git a/drivers/s390/block/dasd.c b/drivers/s390/block/dasd.c
index 3e39508bd929..6527ff6f4706 100644
--- a/drivers/s390/block/dasd.c
+++ b/drivers/s390/block/dasd.c
@@ -176,7 +176,7 @@ dasd_state_known_to_basic(struct dasd_device * device)
176 return rc; 176 return rc;
177 177
178 /* register 'device' debug area, used for all DBF_DEV_XXX calls */ 178 /* register 'device' debug area, used for all DBF_DEV_XXX calls */
179 device->debug_area = debug_register(device->cdev->dev.bus_id, 0, 2, 179 device->debug_area = debug_register(device->cdev->dev.bus_id, 1, 2,
180 8 * sizeof (long)); 180 8 * sizeof (long));
181 debug_register_view(device->debug_area, &debug_sprintf_view); 181 debug_register_view(device->debug_area, &debug_sprintf_view);
182 debug_set_level(device->debug_area, DBF_EMERG); 182 debug_set_level(device->debug_area, DBF_EMERG);
@@ -1981,7 +1981,7 @@ dasd_init(void)
1981 init_waitqueue_head(&dasd_init_waitq); 1981 init_waitqueue_head(&dasd_init_waitq);
1982 1982
1983 /* register 'common' DASD debug area, used for all DBF_XXX calls */ 1983 /* register 'common' DASD debug area, used for all DBF_XXX calls */
1984 dasd_debug_area = debug_register("dasd", 0, 2, 8 * sizeof (long)); 1984 dasd_debug_area = debug_register("dasd", 1, 2, 8 * sizeof (long));
1985 if (dasd_debug_area == NULL) { 1985 if (dasd_debug_area == NULL) {
1986 rc = -ENOMEM; 1986 rc = -ENOMEM;
1987 goto failed; 1987 goto failed;
diff --git a/drivers/s390/block/dasd_proc.c b/drivers/s390/block/dasd_proc.c
index d7f19745911f..43c34f8c5e68 100644
--- a/drivers/s390/block/dasd_proc.c
+++ b/drivers/s390/block/dasd_proc.c
@@ -9,13 +9,14 @@
9 * 9 *
10 * /proc interface for the dasd driver. 10 * /proc interface for the dasd driver.
11 * 11 *
12 * $Revision: 1.31 $ 12 * $Revision: 1.32 $
13 */ 13 */
14 14
15#include <linux/config.h> 15#include <linux/config.h>
16#include <linux/ctype.h> 16#include <linux/ctype.h>
17#include <linux/seq_file.h> 17#include <linux/seq_file.h>
18#include <linux/vmalloc.h> 18#include <linux/vmalloc.h>
19#include <linux/proc_fs.h>
19 20
20#include <asm/debug.h> 21#include <asm/debug.h>
21#include <asm/uaccess.h> 22#include <asm/uaccess.h>
diff --git a/drivers/s390/char/tape_34xx.c b/drivers/s390/char/tape_34xx.c
index 480ec87976fb..20be88e91fa1 100644
--- a/drivers/s390/char/tape_34xx.c
+++ b/drivers/s390/char/tape_34xx.c
@@ -1351,13 +1351,13 @@ tape_34xx_init (void)
1351{ 1351{
1352 int rc; 1352 int rc;
1353 1353
1354 TAPE_DBF_AREA = debug_register ( "tape_34xx", 1, 2, 4*sizeof(long)); 1354 TAPE_DBF_AREA = debug_register ( "tape_34xx", 2, 2, 4*sizeof(long));
1355 debug_register_view(TAPE_DBF_AREA, &debug_sprintf_view); 1355 debug_register_view(TAPE_DBF_AREA, &debug_sprintf_view);
1356#ifdef DBF_LIKE_HELL 1356#ifdef DBF_LIKE_HELL
1357 debug_set_level(TAPE_DBF_AREA, 6); 1357 debug_set_level(TAPE_DBF_AREA, 6);
1358#endif 1358#endif
1359 1359
1360 DBF_EVENT(3, "34xx init: $Revision: 1.21 $\n"); 1360 DBF_EVENT(3, "34xx init: $Revision: 1.23 $\n");
1361 /* Register driver for 3480/3490 tapes. */ 1361 /* Register driver for 3480/3490 tapes. */
1362 rc = ccw_driver_register(&tape_34xx_driver); 1362 rc = ccw_driver_register(&tape_34xx_driver);
1363 if (rc) 1363 if (rc)
@@ -1378,7 +1378,7 @@ tape_34xx_exit(void)
1378MODULE_DEVICE_TABLE(ccw, tape_34xx_ids); 1378MODULE_DEVICE_TABLE(ccw, tape_34xx_ids);
1379MODULE_AUTHOR("(C) 2001-2002 IBM Deutschland Entwicklung GmbH"); 1379MODULE_AUTHOR("(C) 2001-2002 IBM Deutschland Entwicklung GmbH");
1380MODULE_DESCRIPTION("Linux on zSeries channel attached 3480 tape " 1380MODULE_DESCRIPTION("Linux on zSeries channel attached 3480 tape "
1381 "device driver ($Revision: 1.21 $)"); 1381 "device driver ($Revision: 1.23 $)");
1382MODULE_LICENSE("GPL"); 1382MODULE_LICENSE("GPL");
1383 1383
1384module_init(tape_34xx_init); 1384module_init(tape_34xx_init);
diff --git a/drivers/s390/char/tape_core.c b/drivers/s390/char/tape_core.c
index b4df4a515b12..0597aa0e27ee 100644
--- a/drivers/s390/char/tape_core.c
+++ b/drivers/s390/char/tape_core.c
@@ -1186,7 +1186,7 @@ tape_mtop(struct tape_device *device, int mt_op, int mt_count)
1186static int 1186static int
1187tape_init (void) 1187tape_init (void)
1188{ 1188{
1189 TAPE_DBF_AREA = debug_register ( "tape", 1, 2, 4*sizeof(long)); 1189 TAPE_DBF_AREA = debug_register ( "tape", 2, 2, 4*sizeof(long));
1190 debug_register_view(TAPE_DBF_AREA, &debug_sprintf_view); 1190 debug_register_view(TAPE_DBF_AREA, &debug_sprintf_view);
1191#ifdef DBF_LIKE_HELL 1191#ifdef DBF_LIKE_HELL
1192 debug_set_level(TAPE_DBF_AREA, 6); 1192 debug_set_level(TAPE_DBF_AREA, 6);
diff --git a/drivers/s390/char/tape_proc.c b/drivers/s390/char/tape_proc.c
index 801d17cca34e..5fec0a10cc3d 100644
--- a/drivers/s390/char/tape_proc.c
+++ b/drivers/s390/char/tape_proc.c
@@ -15,6 +15,7 @@
15#include <linux/module.h> 15#include <linux/module.h>
16#include <linux/vmalloc.h> 16#include <linux/vmalloc.h>
17#include <linux/seq_file.h> 17#include <linux/seq_file.h>
18#include <linux/proc_fs.h>
18 19
19#define TAPE_DBF_AREA tape_core_dbf 20#define TAPE_DBF_AREA tape_core_dbf
20 21
diff --git a/drivers/s390/char/vmcp.c b/drivers/s390/char/vmcp.c
index dfbbf235ca2b..7f11a608a633 100644
--- a/drivers/s390/char/vmcp.c
+++ b/drivers/s390/char/vmcp.c
@@ -203,7 +203,7 @@ static int __init vmcp_init(void)
203 else 203 else
204 printk(KERN_WARNING 204 printk(KERN_WARNING
205 "z/VM CP interface not loaded. Could not register misc device.\n"); 205 "z/VM CP interface not loaded. Could not register misc device.\n");
206 vmcp_debug = debug_register("vmcp", 0, 1, 240); 206 vmcp_debug = debug_register("vmcp", 1, 1, 240);
207 debug_register_view(vmcp_debug, &debug_hex_ascii_view); 207 debug_register_view(vmcp_debug, &debug_hex_ascii_view);
208 return ret; 208 return ret;
209} 209}
diff --git a/drivers/s390/cio/cio.c b/drivers/s390/cio/cio.c
index 1d9b3f18d8de..ea813bdce1d6 100644
--- a/drivers/s390/cio/cio.c
+++ b/drivers/s390/cio/cio.c
@@ -1,7 +1,7 @@
1/* 1/*
2 * drivers/s390/cio/cio.c 2 * drivers/s390/cio/cio.c
3 * S/390 common I/O routines -- low level i/o calls 3 * S/390 common I/O routines -- low level i/o calls
4 * $Revision: 1.133 $ 4 * $Revision: 1.134 $
5 * 5 *
6 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH, 6 * Copyright (C) 1999-2002 IBM Deutschland Entwicklung GmbH,
7 * IBM Corporation 7 * IBM Corporation
@@ -63,17 +63,17 @@ __setup ("cio_msg=", cio_setup);
63static int __init 63static int __init
64cio_debug_init (void) 64cio_debug_init (void)
65{ 65{
66 cio_debug_msg_id = debug_register ("cio_msg", 4, 4, 16*sizeof (long)); 66 cio_debug_msg_id = debug_register ("cio_msg", 16, 4, 16*sizeof (long));
67 if (!cio_debug_msg_id) 67 if (!cio_debug_msg_id)
68 goto out_unregister; 68 goto out_unregister;
69 debug_register_view (cio_debug_msg_id, &debug_sprintf_view); 69 debug_register_view (cio_debug_msg_id, &debug_sprintf_view);
70 debug_set_level (cio_debug_msg_id, 2); 70 debug_set_level (cio_debug_msg_id, 2);
71 cio_debug_trace_id = debug_register ("cio_trace", 4, 4, 8); 71 cio_debug_trace_id = debug_register ("cio_trace", 16, 4, 8);
72 if (!cio_debug_trace_id) 72 if (!cio_debug_trace_id)
73 goto out_unregister; 73 goto out_unregister;
74 debug_register_view (cio_debug_trace_id, &debug_hex_ascii_view); 74 debug_register_view (cio_debug_trace_id, &debug_hex_ascii_view);
75 debug_set_level (cio_debug_trace_id, 2); 75 debug_set_level (cio_debug_trace_id, 2);
76 cio_debug_crw_id = debug_register ("cio_crw", 2, 4, 16*sizeof (long)); 76 cio_debug_crw_id = debug_register ("cio_crw", 4, 4, 16*sizeof (long));
77 if (!cio_debug_crw_id) 77 if (!cio_debug_crw_id)
78 goto out_unregister; 78 goto out_unregister;
79 debug_register_view (cio_debug_crw_id, &debug_sprintf_view); 79 debug_register_view (cio_debug_crw_id, &debug_sprintf_view);
diff --git a/drivers/s390/cio/qdio.c b/drivers/s390/cio/qdio.c
index bbe9f45d1438..82194c4eadfb 100644
--- a/drivers/s390/cio/qdio.c
+++ b/drivers/s390/cio/qdio.c
@@ -56,7 +56,7 @@
56#include "ioasm.h" 56#include "ioasm.h"
57#include "chsc.h" 57#include "chsc.h"
58 58
59#define VERSION_QDIO_C "$Revision: 1.98 $" 59#define VERSION_QDIO_C "$Revision: 1.101 $"
60 60
61/****************** MODULE PARAMETER VARIABLES ********************/ 61/****************** MODULE PARAMETER VARIABLES ********************/
62MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>"); 62MODULE_AUTHOR("Utz Bacher <utz.bacher@de.ibm.com>");
@@ -3342,7 +3342,7 @@ static int
3342qdio_register_dbf_views(void) 3342qdio_register_dbf_views(void)
3343{ 3343{
3344 qdio_dbf_setup=debug_register(QDIO_DBF_SETUP_NAME, 3344 qdio_dbf_setup=debug_register(QDIO_DBF_SETUP_NAME,
3345 QDIO_DBF_SETUP_INDEX, 3345 QDIO_DBF_SETUP_PAGES,
3346 QDIO_DBF_SETUP_NR_AREAS, 3346 QDIO_DBF_SETUP_NR_AREAS,
3347 QDIO_DBF_SETUP_LEN); 3347 QDIO_DBF_SETUP_LEN);
3348 if (!qdio_dbf_setup) 3348 if (!qdio_dbf_setup)
@@ -3351,7 +3351,7 @@ qdio_register_dbf_views(void)
3351 debug_set_level(qdio_dbf_setup,QDIO_DBF_SETUP_LEVEL); 3351 debug_set_level(qdio_dbf_setup,QDIO_DBF_SETUP_LEVEL);
3352 3352
3353 qdio_dbf_sbal=debug_register(QDIO_DBF_SBAL_NAME, 3353 qdio_dbf_sbal=debug_register(QDIO_DBF_SBAL_NAME,
3354 QDIO_DBF_SBAL_INDEX, 3354 QDIO_DBF_SBAL_PAGES,
3355 QDIO_DBF_SBAL_NR_AREAS, 3355 QDIO_DBF_SBAL_NR_AREAS,
3356 QDIO_DBF_SBAL_LEN); 3356 QDIO_DBF_SBAL_LEN);
3357 if (!qdio_dbf_sbal) 3357 if (!qdio_dbf_sbal)
@@ -3361,7 +3361,7 @@ qdio_register_dbf_views(void)
3361 debug_set_level(qdio_dbf_sbal,QDIO_DBF_SBAL_LEVEL); 3361 debug_set_level(qdio_dbf_sbal,QDIO_DBF_SBAL_LEVEL);
3362 3362
3363 qdio_dbf_sense=debug_register(QDIO_DBF_SENSE_NAME, 3363 qdio_dbf_sense=debug_register(QDIO_DBF_SENSE_NAME,
3364 QDIO_DBF_SENSE_INDEX, 3364 QDIO_DBF_SENSE_PAGES,
3365 QDIO_DBF_SENSE_NR_AREAS, 3365 QDIO_DBF_SENSE_NR_AREAS,
3366 QDIO_DBF_SENSE_LEN); 3366 QDIO_DBF_SENSE_LEN);
3367 if (!qdio_dbf_sense) 3367 if (!qdio_dbf_sense)
@@ -3371,7 +3371,7 @@ qdio_register_dbf_views(void)
3371 debug_set_level(qdio_dbf_sense,QDIO_DBF_SENSE_LEVEL); 3371 debug_set_level(qdio_dbf_sense,QDIO_DBF_SENSE_LEVEL);
3372 3372
3373 qdio_dbf_trace=debug_register(QDIO_DBF_TRACE_NAME, 3373 qdio_dbf_trace=debug_register(QDIO_DBF_TRACE_NAME,
3374 QDIO_DBF_TRACE_INDEX, 3374 QDIO_DBF_TRACE_PAGES,
3375 QDIO_DBF_TRACE_NR_AREAS, 3375 QDIO_DBF_TRACE_NR_AREAS,
3376 QDIO_DBF_TRACE_LEN); 3376 QDIO_DBF_TRACE_LEN);
3377 if (!qdio_dbf_trace) 3377 if (!qdio_dbf_trace)
@@ -3382,7 +3382,7 @@ qdio_register_dbf_views(void)
3382 3382
3383#ifdef CONFIG_QDIO_DEBUG 3383#ifdef CONFIG_QDIO_DEBUG
3384 qdio_dbf_slsb_out=debug_register(QDIO_DBF_SLSB_OUT_NAME, 3384 qdio_dbf_slsb_out=debug_register(QDIO_DBF_SLSB_OUT_NAME,
3385 QDIO_DBF_SLSB_OUT_INDEX, 3385 QDIO_DBF_SLSB_OUT_PAGES,
3386 QDIO_DBF_SLSB_OUT_NR_AREAS, 3386 QDIO_DBF_SLSB_OUT_NR_AREAS,
3387 QDIO_DBF_SLSB_OUT_LEN); 3387 QDIO_DBF_SLSB_OUT_LEN);
3388 if (!qdio_dbf_slsb_out) 3388 if (!qdio_dbf_slsb_out)
@@ -3391,7 +3391,7 @@ qdio_register_dbf_views(void)
3391 debug_set_level(qdio_dbf_slsb_out,QDIO_DBF_SLSB_OUT_LEVEL); 3391 debug_set_level(qdio_dbf_slsb_out,QDIO_DBF_SLSB_OUT_LEVEL);
3392 3392
3393 qdio_dbf_slsb_in=debug_register(QDIO_DBF_SLSB_IN_NAME, 3393 qdio_dbf_slsb_in=debug_register(QDIO_DBF_SLSB_IN_NAME,
3394 QDIO_DBF_SLSB_IN_INDEX, 3394 QDIO_DBF_SLSB_IN_PAGES,
3395 QDIO_DBF_SLSB_IN_NR_AREAS, 3395 QDIO_DBF_SLSB_IN_NR_AREAS,
3396 QDIO_DBF_SLSB_IN_LEN); 3396 QDIO_DBF_SLSB_IN_LEN);
3397 if (!qdio_dbf_slsb_in) 3397 if (!qdio_dbf_slsb_in)
diff --git a/drivers/s390/cio/qdio.h b/drivers/s390/cio/qdio.h
index b6daadac4e8b..6b8aa6a852be 100644
--- a/drivers/s390/cio/qdio.h
+++ b/drivers/s390/cio/qdio.h
@@ -3,7 +3,7 @@
3 3
4#include <asm/page.h> 4#include <asm/page.h>
5 5
6#define VERSION_CIO_QDIO_H "$Revision: 1.32 $" 6#define VERSION_CIO_QDIO_H "$Revision: 1.33 $"
7 7
8#ifdef CONFIG_QDIO_DEBUG 8#ifdef CONFIG_QDIO_DEBUG
9#define QDIO_VERBOSE_LEVEL 9 9#define QDIO_VERBOSE_LEVEL 9
@@ -132,7 +132,7 @@ enum qdio_irq_states {
132 132
133#define QDIO_DBF_SETUP_NAME "qdio_setup" 133#define QDIO_DBF_SETUP_NAME "qdio_setup"
134#define QDIO_DBF_SETUP_LEN 8 134#define QDIO_DBF_SETUP_LEN 8
135#define QDIO_DBF_SETUP_INDEX 2 135#define QDIO_DBF_SETUP_PAGES 4
136#define QDIO_DBF_SETUP_NR_AREAS 1 136#define QDIO_DBF_SETUP_NR_AREAS 1
137#ifdef CONFIG_QDIO_DEBUG 137#ifdef CONFIG_QDIO_DEBUG
138#define QDIO_DBF_SETUP_LEVEL 6 138#define QDIO_DBF_SETUP_LEVEL 6
@@ -142,7 +142,7 @@ enum qdio_irq_states {
142 142
143#define QDIO_DBF_SBAL_NAME "qdio_labs" /* sbal */ 143#define QDIO_DBF_SBAL_NAME "qdio_labs" /* sbal */
144#define QDIO_DBF_SBAL_LEN 256 144#define QDIO_DBF_SBAL_LEN 256
145#define QDIO_DBF_SBAL_INDEX 2 145#define QDIO_DBF_SBAL_PAGES 4
146#define QDIO_DBF_SBAL_NR_AREAS 2 146#define QDIO_DBF_SBAL_NR_AREAS 2
147#ifdef CONFIG_QDIO_DEBUG 147#ifdef CONFIG_QDIO_DEBUG
148#define QDIO_DBF_SBAL_LEVEL 6 148#define QDIO_DBF_SBAL_LEVEL 6
@@ -154,16 +154,16 @@ enum qdio_irq_states {
154#define QDIO_DBF_TRACE_LEN 8 154#define QDIO_DBF_TRACE_LEN 8
155#define QDIO_DBF_TRACE_NR_AREAS 2 155#define QDIO_DBF_TRACE_NR_AREAS 2
156#ifdef CONFIG_QDIO_DEBUG 156#ifdef CONFIG_QDIO_DEBUG
157#define QDIO_DBF_TRACE_INDEX 4 157#define QDIO_DBF_TRACE_PAGES 16
158#define QDIO_DBF_TRACE_LEVEL 4 /* -------- could be even more verbose here */ 158#define QDIO_DBF_TRACE_LEVEL 4 /* -------- could be even more verbose here */
159#else /* CONFIG_QDIO_DEBUG */ 159#else /* CONFIG_QDIO_DEBUG */
160#define QDIO_DBF_TRACE_INDEX 2 160#define QDIO_DBF_TRACE_PAGES 4
161#define QDIO_DBF_TRACE_LEVEL 2 161#define QDIO_DBF_TRACE_LEVEL 2
162#endif /* CONFIG_QDIO_DEBUG */ 162#endif /* CONFIG_QDIO_DEBUG */
163 163
164#define QDIO_DBF_SENSE_NAME "qdio_sense" 164#define QDIO_DBF_SENSE_NAME "qdio_sense"
165#define QDIO_DBF_SENSE_LEN 64 165#define QDIO_DBF_SENSE_LEN 64
166#define QDIO_DBF_SENSE_INDEX 1 166#define QDIO_DBF_SENSE_PAGES 2
167#define QDIO_DBF_SENSE_NR_AREAS 1 167#define QDIO_DBF_SENSE_NR_AREAS 1
168#ifdef CONFIG_QDIO_DEBUG 168#ifdef CONFIG_QDIO_DEBUG
169#define QDIO_DBF_SENSE_LEVEL 6 169#define QDIO_DBF_SENSE_LEVEL 6
@@ -176,13 +176,13 @@ enum qdio_irq_states {
176 176
177#define QDIO_DBF_SLSB_OUT_NAME "qdio_slsb_out" 177#define QDIO_DBF_SLSB_OUT_NAME "qdio_slsb_out"
178#define QDIO_DBF_SLSB_OUT_LEN QDIO_MAX_BUFFERS_PER_Q 178#define QDIO_DBF_SLSB_OUT_LEN QDIO_MAX_BUFFERS_PER_Q
179#define QDIO_DBF_SLSB_OUT_INDEX 8 179#define QDIO_DBF_SLSB_OUT_PAGES 256
180#define QDIO_DBF_SLSB_OUT_NR_AREAS 1 180#define QDIO_DBF_SLSB_OUT_NR_AREAS 1
181#define QDIO_DBF_SLSB_OUT_LEVEL 6 181#define QDIO_DBF_SLSB_OUT_LEVEL 6
182 182
183#define QDIO_DBF_SLSB_IN_NAME "qdio_slsb_in" 183#define QDIO_DBF_SLSB_IN_NAME "qdio_slsb_in"
184#define QDIO_DBF_SLSB_IN_LEN QDIO_MAX_BUFFERS_PER_Q 184#define QDIO_DBF_SLSB_IN_LEN QDIO_MAX_BUFFERS_PER_Q
185#define QDIO_DBF_SLSB_IN_INDEX 8 185#define QDIO_DBF_SLSB_IN_PAGES 256
186#define QDIO_DBF_SLSB_IN_NR_AREAS 1 186#define QDIO_DBF_SLSB_IN_NR_AREAS 1
187#define QDIO_DBF_SLSB_IN_LEVEL 6 187#define QDIO_DBF_SLSB_IN_LEVEL 6
188#endif /* CONFIG_QDIO_DEBUG */ 188#endif /* CONFIG_QDIO_DEBUG */
diff --git a/drivers/s390/net/claw.c b/drivers/s390/net/claw.c
index a99927d54ebb..60440dbe3a27 100644
--- a/drivers/s390/net/claw.c
+++ b/drivers/s390/net/claw.c
@@ -146,8 +146,8 @@ claw_unregister_debug_facility(void)
146static int 146static int
147claw_register_debug_facility(void) 147claw_register_debug_facility(void)
148{ 148{
149 claw_dbf_setup = debug_register("claw_setup", 1, 1, 8); 149 claw_dbf_setup = debug_register("claw_setup", 2, 1, 8);
150 claw_dbf_trace = debug_register("claw_trace", 1, 2, 8); 150 claw_dbf_trace = debug_register("claw_trace", 2, 2, 8);
151 if (claw_dbf_setup == NULL || claw_dbf_trace == NULL) { 151 if (claw_dbf_setup == NULL || claw_dbf_trace == NULL) {
152 printk(KERN_WARNING "Not enough memory for debug facility.\n"); 152 printk(KERN_WARNING "Not enough memory for debug facility.\n");
153 claw_unregister_debug_facility(); 153 claw_unregister_debug_facility();
diff --git a/drivers/s390/net/ctcdbug.c b/drivers/s390/net/ctcdbug.c
index 2c86bfa11b2f..0e2a8bb93032 100644
--- a/drivers/s390/net/ctcdbug.c
+++ b/drivers/s390/net/ctcdbug.c
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/ctcdbug.c ($Revision: 1.4 $) 3 * linux/drivers/s390/net/ctcdbug.c ($Revision: 1.6 $)
4 * 4 *
5 * CTC / ESCON network driver - s390 dbf exploit. 5 * CTC / ESCON network driver - s390 dbf exploit.
6 * 6 *
@@ -9,7 +9,7 @@
9 * Author(s): Original Code written by 9 * Author(s): Original Code written by
10 * Peter Tiedemann (ptiedem@de.ibm.com) 10 * Peter Tiedemann (ptiedem@de.ibm.com)
11 * 11 *
12 * $Revision: 1.4 $ $Date: 2004/08/04 10:11:59 $ 12 * $Revision: 1.6 $ $Date: 2005/05/11 08:10:17 $
13 * 13 *
14 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
@@ -51,15 +51,15 @@ int
51ctc_register_dbf_views(void) 51ctc_register_dbf_views(void)
52{ 52{
53 ctc_dbf_setup = debug_register(CTC_DBF_SETUP_NAME, 53 ctc_dbf_setup = debug_register(CTC_DBF_SETUP_NAME,
54 CTC_DBF_SETUP_INDEX, 54 CTC_DBF_SETUP_PAGES,
55 CTC_DBF_SETUP_NR_AREAS, 55 CTC_DBF_SETUP_NR_AREAS,
56 CTC_DBF_SETUP_LEN); 56 CTC_DBF_SETUP_LEN);
57 ctc_dbf_data = debug_register(CTC_DBF_DATA_NAME, 57 ctc_dbf_data = debug_register(CTC_DBF_DATA_NAME,
58 CTC_DBF_DATA_INDEX, 58 CTC_DBF_DATA_PAGES,
59 CTC_DBF_DATA_NR_AREAS, 59 CTC_DBF_DATA_NR_AREAS,
60 CTC_DBF_DATA_LEN); 60 CTC_DBF_DATA_LEN);
61 ctc_dbf_trace = debug_register(CTC_DBF_TRACE_NAME, 61 ctc_dbf_trace = debug_register(CTC_DBF_TRACE_NAME,
62 CTC_DBF_TRACE_INDEX, 62 CTC_DBF_TRACE_PAGES,
63 CTC_DBF_TRACE_NR_AREAS, 63 CTC_DBF_TRACE_NR_AREAS,
64 CTC_DBF_TRACE_LEN); 64 CTC_DBF_TRACE_LEN);
65 65
diff --git a/drivers/s390/net/ctcdbug.h b/drivers/s390/net/ctcdbug.h
index 7fe2ebd1792d..7d6afa1627c3 100644
--- a/drivers/s390/net/ctcdbug.h
+++ b/drivers/s390/net/ctcdbug.h
@@ -1,6 +1,6 @@
1/* 1/*
2 * 2 *
3 * linux/drivers/s390/net/ctcdbug.h ($Revision: 1.5 $) 3 * linux/drivers/s390/net/ctcdbug.h ($Revision: 1.6 $)
4 * 4 *
5 * CTC / ESCON network driver - s390 dbf exploit. 5 * CTC / ESCON network driver - s390 dbf exploit.
6 * 6 *
@@ -9,7 +9,7 @@
9 * Author(s): Original Code written by 9 * Author(s): Original Code written by
10 * Peter Tiedemann (ptiedem@de.ibm.com) 10 * Peter Tiedemann (ptiedem@de.ibm.com)
11 * 11 *
12 * $Revision: 1.5 $ $Date: 2005/02/27 19:46:44 $ 12 * $Revision: 1.6 $ $Date: 2005/05/11 08:10:17 $
13 * 13 *
14 * This program is free software; you can redistribute it and/or modify 14 * This program is free software; you can redistribute it and/or modify
15 * it under the terms of the GNU General Public License as published by 15 * it under the terms of the GNU General Public License as published by
@@ -35,19 +35,19 @@
35 */ 35 */
36#define CTC_DBF_SETUP_NAME "ctc_setup" 36#define CTC_DBF_SETUP_NAME "ctc_setup"
37#define CTC_DBF_SETUP_LEN 16 37#define CTC_DBF_SETUP_LEN 16
38#define CTC_DBF_SETUP_INDEX 3 38#define CTC_DBF_SETUP_PAGES 8
39#define CTC_DBF_SETUP_NR_AREAS 1 39#define CTC_DBF_SETUP_NR_AREAS 1
40#define CTC_DBF_SETUP_LEVEL 3 40#define CTC_DBF_SETUP_LEVEL 3
41 41
42#define CTC_DBF_DATA_NAME "ctc_data" 42#define CTC_DBF_DATA_NAME "ctc_data"
43#define CTC_DBF_DATA_LEN 128 43#define CTC_DBF_DATA_LEN 128
44#define CTC_DBF_DATA_INDEX 3 44#define CTC_DBF_DATA_PAGES 8
45#define CTC_DBF_DATA_NR_AREAS 1 45#define CTC_DBF_DATA_NR_AREAS 1
46#define CTC_DBF_DATA_LEVEL 3 46#define CTC_DBF_DATA_LEVEL 3
47 47
48#define CTC_DBF_TRACE_NAME "ctc_trace" 48#define CTC_DBF_TRACE_NAME "ctc_trace"
49#define CTC_DBF_TRACE_LEN 16 49#define CTC_DBF_TRACE_LEN 16
50#define CTC_DBF_TRACE_INDEX 2 50#define CTC_DBF_TRACE_PAGES 4
51#define CTC_DBF_TRACE_NR_AREAS 2 51#define CTC_DBF_TRACE_NR_AREAS 2
52#define CTC_DBF_TRACE_LEVEL 3 52#define CTC_DBF_TRACE_LEVEL 3
53 53
diff --git a/drivers/s390/net/iucv.h b/drivers/s390/net/iucv.h
index 198330217eff..0c4644d3d2f3 100644
--- a/drivers/s390/net/iucv.h
+++ b/drivers/s390/net/iucv.h
@@ -37,19 +37,19 @@
37 */ 37 */
38#define IUCV_DBF_SETUP_NAME "iucv_setup" 38#define IUCV_DBF_SETUP_NAME "iucv_setup"
39#define IUCV_DBF_SETUP_LEN 32 39#define IUCV_DBF_SETUP_LEN 32
40#define IUCV_DBF_SETUP_INDEX 1 40#define IUCV_DBF_SETUP_PAGES 2
41#define IUCV_DBF_SETUP_NR_AREAS 1 41#define IUCV_DBF_SETUP_NR_AREAS 1
42#define IUCV_DBF_SETUP_LEVEL 3 42#define IUCV_DBF_SETUP_LEVEL 3
43 43
44#define IUCV_DBF_DATA_NAME "iucv_data" 44#define IUCV_DBF_DATA_NAME "iucv_data"
45#define IUCV_DBF_DATA_LEN 128 45#define IUCV_DBF_DATA_LEN 128
46#define IUCV_DBF_DATA_INDEX 1 46#define IUCV_DBF_DATA_PAGES 2
47#define IUCV_DBF_DATA_NR_AREAS 1 47#define IUCV_DBF_DATA_NR_AREAS 1
48#define IUCV_DBF_DATA_LEVEL 2 48#define IUCV_DBF_DATA_LEVEL 2
49 49
50#define IUCV_DBF_TRACE_NAME "iucv_trace" 50#define IUCV_DBF_TRACE_NAME "iucv_trace"
51#define IUCV_DBF_TRACE_LEN 16 51#define IUCV_DBF_TRACE_LEN 16
52#define IUCV_DBF_TRACE_INDEX 2 52#define IUCV_DBF_TRACE_PAGES 4
53#define IUCV_DBF_TRACE_NR_AREAS 1 53#define IUCV_DBF_TRACE_NR_AREAS 1
54#define IUCV_DBF_TRACE_LEVEL 3 54#define IUCV_DBF_TRACE_LEVEL 3
55 55
diff --git a/drivers/s390/net/lcs.c b/drivers/s390/net/lcs.c
index ab086242d305..46f34ba93ac5 100644
--- a/drivers/s390/net/lcs.c
+++ b/drivers/s390/net/lcs.c
@@ -11,7 +11,7 @@
11 * Frank Pavlic (pavlic@de.ibm.com) and 11 * Frank Pavlic (pavlic@de.ibm.com) and
12 * Martin Schwidefsky <schwidefsky@de.ibm.com> 12 * Martin Schwidefsky <schwidefsky@de.ibm.com>
13 * 13 *
14 * $Revision: 1.98 $ $Date: 2005/04/18 13:41:29 $ 14 * $Revision: 1.99 $ $Date: 2005/05/11 08:10:17 $
15 * 15 *
16 * This program is free software; you can redistribute it and/or modify 16 * This program is free software; you can redistribute it and/or modify
17 * it under the terms of the GNU General Public License as published by 17 * it under the terms of the GNU General Public License as published by
@@ -59,7 +59,7 @@
59/** 59/**
60 * initialization string for output 60 * initialization string for output
61 */ 61 */
62#define VERSION_LCS_C "$Revision: 1.98 $" 62#define VERSION_LCS_C "$Revision: 1.99 $"
63 63
64static char version[] __initdata = "LCS driver ("VERSION_LCS_C "/" VERSION_LCS_H ")"; 64static char version[] __initdata = "LCS driver ("VERSION_LCS_C "/" VERSION_LCS_H ")";
65static char debug_buffer[255]; 65static char debug_buffer[255];
@@ -93,8 +93,8 @@ lcs_unregister_debug_facility(void)
93static int 93static int
94lcs_register_debug_facility(void) 94lcs_register_debug_facility(void)
95{ 95{
96 lcs_dbf_setup = debug_register("lcs_setup", 1, 1, 8); 96 lcs_dbf_setup = debug_register("lcs_setup", 2, 1, 8);
97 lcs_dbf_trace = debug_register("lcs_trace", 1, 2, 8); 97 lcs_dbf_trace = debug_register("lcs_trace", 2, 2, 8);
98 if (lcs_dbf_setup == NULL || lcs_dbf_trace == NULL) { 98 if (lcs_dbf_setup == NULL || lcs_dbf_trace == NULL) {
99 PRINT_ERR("Not enough memory for debug facility.\n"); 99 PRINT_ERR("Not enough memory for debug facility.\n");
100 lcs_unregister_debug_facility(); 100 lcs_unregister_debug_facility();
diff --git a/drivers/s390/net/netiucv.c b/drivers/s390/net/netiucv.c
index 3fd4fb754b2d..69425a7a6e98 100644
--- a/drivers/s390/net/netiucv.c
+++ b/drivers/s390/net/netiucv.c
@@ -1,5 +1,5 @@
1/* 1/*
2 * $Id: netiucv.c,v 1.63 2004/07/27 13:36:05 mschwide Exp $ 2 * $Id: netiucv.c,v 1.66 2005/05/11 08:10:17 holzheu Exp $
3 * 3 *
4 * IUCV network driver 4 * IUCV network driver
5 * 5 *
@@ -30,7 +30,7 @@
30 * along with this program; if not, write to the Free Software 30 * along with this program; if not, write to the Free Software
31 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 31 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
32 * 32 *
33 * RELEASE-TAG: IUCV network driver $Revision: 1.63 $ 33 * RELEASE-TAG: IUCV network driver $Revision: 1.66 $
34 * 34 *
35 */ 35 */
36 36
@@ -391,15 +391,15 @@ static int
391iucv_register_dbf_views(void) 391iucv_register_dbf_views(void)
392{ 392{
393 iucv_dbf_setup = debug_register(IUCV_DBF_SETUP_NAME, 393 iucv_dbf_setup = debug_register(IUCV_DBF_SETUP_NAME,
394 IUCV_DBF_SETUP_INDEX, 394 IUCV_DBF_SETUP_PAGES,
395 IUCV_DBF_SETUP_NR_AREAS, 395 IUCV_DBF_SETUP_NR_AREAS,
396 IUCV_DBF_SETUP_LEN); 396 IUCV_DBF_SETUP_LEN);
397 iucv_dbf_data = debug_register(IUCV_DBF_DATA_NAME, 397 iucv_dbf_data = debug_register(IUCV_DBF_DATA_NAME,
398 IUCV_DBF_DATA_INDEX, 398 IUCV_DBF_DATA_PAGES,
399 IUCV_DBF_DATA_NR_AREAS, 399 IUCV_DBF_DATA_NR_AREAS,
400 IUCV_DBF_DATA_LEN); 400 IUCV_DBF_DATA_LEN);
401 iucv_dbf_trace = debug_register(IUCV_DBF_TRACE_NAME, 401 iucv_dbf_trace = debug_register(IUCV_DBF_TRACE_NAME,
402 IUCV_DBF_TRACE_INDEX, 402 IUCV_DBF_TRACE_PAGES,
403 IUCV_DBF_TRACE_NR_AREAS, 403 IUCV_DBF_TRACE_NR_AREAS,
404 IUCV_DBF_TRACE_LEN); 404 IUCV_DBF_TRACE_LEN);
405 405
@@ -2076,7 +2076,7 @@ DRIVER_ATTR(remove, 0200, NULL, remove_write);
2076static void 2076static void
2077netiucv_banner(void) 2077netiucv_banner(void)
2078{ 2078{
2079 char vbuf[] = "$Revision: 1.63 $"; 2079 char vbuf[] = "$Revision: 1.66 $";
2080 char *version = vbuf; 2080 char *version = vbuf;
2081 2081
2082 if ((version = strchr(version, ':'))) { 2082 if ((version = strchr(version, ':'))) {
diff --git a/drivers/s390/net/qeth.h b/drivers/s390/net/qeth.h
index a755b57db46b..008e0a5d2eb3 100644
--- a/drivers/s390/net/qeth.h
+++ b/drivers/s390/net/qeth.h
@@ -42,44 +42,44 @@
42 */ 42 */
43#define QETH_DBF_SETUP_NAME "qeth_setup" 43#define QETH_DBF_SETUP_NAME "qeth_setup"
44#define QETH_DBF_SETUP_LEN 8 44#define QETH_DBF_SETUP_LEN 8
45#define QETH_DBF_SETUP_INDEX 3 45#define QETH_DBF_SETUP_PAGES 8
46#define QETH_DBF_SETUP_NR_AREAS 1 46#define QETH_DBF_SETUP_NR_AREAS 1
47#define QETH_DBF_SETUP_LEVEL 5 47#define QETH_DBF_SETUP_LEVEL 5
48 48
49#define QETH_DBF_MISC_NAME "qeth_misc" 49#define QETH_DBF_MISC_NAME "qeth_misc"
50#define QETH_DBF_MISC_LEN 128 50#define QETH_DBF_MISC_LEN 128
51#define QETH_DBF_MISC_INDEX 1 51#define QETH_DBF_MISC_PAGES 2
52#define QETH_DBF_MISC_NR_AREAS 1 52#define QETH_DBF_MISC_NR_AREAS 1
53#define QETH_DBF_MISC_LEVEL 2 53#define QETH_DBF_MISC_LEVEL 2
54 54
55#define QETH_DBF_DATA_NAME "qeth_data" 55#define QETH_DBF_DATA_NAME "qeth_data"
56#define QETH_DBF_DATA_LEN 96 56#define QETH_DBF_DATA_LEN 96
57#define QETH_DBF_DATA_INDEX 3 57#define QETH_DBF_DATA_PAGES 8
58#define QETH_DBF_DATA_NR_AREAS 1 58#define QETH_DBF_DATA_NR_AREAS 1
59#define QETH_DBF_DATA_LEVEL 2 59#define QETH_DBF_DATA_LEVEL 2
60 60
61#define QETH_DBF_CONTROL_NAME "qeth_control" 61#define QETH_DBF_CONTROL_NAME "qeth_control"
62#define QETH_DBF_CONTROL_LEN 256 62#define QETH_DBF_CONTROL_LEN 256
63#define QETH_DBF_CONTROL_INDEX 3 63#define QETH_DBF_CONTROL_PAGES 8
64#define QETH_DBF_CONTROL_NR_AREAS 2 64#define QETH_DBF_CONTROL_NR_AREAS 2
65#define QETH_DBF_CONTROL_LEVEL 5 65#define QETH_DBF_CONTROL_LEVEL 5
66 66
67#define QETH_DBF_TRACE_NAME "qeth_trace" 67#define QETH_DBF_TRACE_NAME "qeth_trace"
68#define QETH_DBF_TRACE_LEN 8 68#define QETH_DBF_TRACE_LEN 8
69#define QETH_DBF_TRACE_INDEX 2 69#define QETH_DBF_TRACE_PAGES 4
70#define QETH_DBF_TRACE_NR_AREAS 2 70#define QETH_DBF_TRACE_NR_AREAS 2
71#define QETH_DBF_TRACE_LEVEL 3 71#define QETH_DBF_TRACE_LEVEL 3
72extern debug_info_t *qeth_dbf_trace; 72extern debug_info_t *qeth_dbf_trace;
73 73
74#define QETH_DBF_SENSE_NAME "qeth_sense" 74#define QETH_DBF_SENSE_NAME "qeth_sense"
75#define QETH_DBF_SENSE_LEN 64 75#define QETH_DBF_SENSE_LEN 64
76#define QETH_DBF_SENSE_INDEX 1 76#define QETH_DBF_SENSE_PAGES 2
77#define QETH_DBF_SENSE_NR_AREAS 1 77#define QETH_DBF_SENSE_NR_AREAS 1
78#define QETH_DBF_SENSE_LEVEL 2 78#define QETH_DBF_SENSE_LEVEL 2
79 79
80#define QETH_DBF_QERR_NAME "qeth_qerr" 80#define QETH_DBF_QERR_NAME "qeth_qerr"
81#define QETH_DBF_QERR_LEN 8 81#define QETH_DBF_QERR_LEN 8
82#define QETH_DBF_QERR_INDEX 1 82#define QETH_DBF_QERR_PAGES 2
83#define QETH_DBF_QERR_NR_AREAS 2 83#define QETH_DBF_QERR_NR_AREAS 2
84#define QETH_DBF_QERR_LEVEL 2 84#define QETH_DBF_QERR_LEVEL 2
85 85
diff --git a/drivers/s390/net/qeth_main.c b/drivers/s390/net/qeth_main.c
index 208127a5033a..3cb88c770037 100644
--- a/drivers/s390/net/qeth_main.c
+++ b/drivers/s390/net/qeth_main.c
@@ -7639,31 +7639,31 @@ static int
7639qeth_register_dbf_views(void) 7639qeth_register_dbf_views(void)
7640{ 7640{
7641 qeth_dbf_setup = debug_register(QETH_DBF_SETUP_NAME, 7641 qeth_dbf_setup = debug_register(QETH_DBF_SETUP_NAME,
7642 QETH_DBF_SETUP_INDEX, 7642 QETH_DBF_SETUP_PAGES,
7643 QETH_DBF_SETUP_NR_AREAS, 7643 QETH_DBF_SETUP_NR_AREAS,
7644 QETH_DBF_SETUP_LEN); 7644 QETH_DBF_SETUP_LEN);
7645 qeth_dbf_misc = debug_register(QETH_DBF_MISC_NAME, 7645 qeth_dbf_misc = debug_register(QETH_DBF_MISC_NAME,
7646 QETH_DBF_MISC_INDEX, 7646 QETH_DBF_MISC_PAGES,
7647 QETH_DBF_MISC_NR_AREAS, 7647 QETH_DBF_MISC_NR_AREAS,
7648 QETH_DBF_MISC_LEN); 7648 QETH_DBF_MISC_LEN);
7649 qeth_dbf_data = debug_register(QETH_DBF_DATA_NAME, 7649 qeth_dbf_data = debug_register(QETH_DBF_DATA_NAME,
7650 QETH_DBF_DATA_INDEX, 7650 QETH_DBF_DATA_PAGES,
7651 QETH_DBF_DATA_NR_AREAS, 7651 QETH_DBF_DATA_NR_AREAS,
7652 QETH_DBF_DATA_LEN); 7652 QETH_DBF_DATA_LEN);
7653 qeth_dbf_control = debug_register(QETH_DBF_CONTROL_NAME, 7653 qeth_dbf_control = debug_register(QETH_DBF_CONTROL_NAME,
7654 QETH_DBF_CONTROL_INDEX, 7654 QETH_DBF_CONTROL_PAGES,
7655 QETH_DBF_CONTROL_NR_AREAS, 7655 QETH_DBF_CONTROL_NR_AREAS,
7656 QETH_DBF_CONTROL_LEN); 7656 QETH_DBF_CONTROL_LEN);
7657 qeth_dbf_sense = debug_register(QETH_DBF_SENSE_NAME, 7657 qeth_dbf_sense = debug_register(QETH_DBF_SENSE_NAME,
7658 QETH_DBF_SENSE_INDEX, 7658 QETH_DBF_SENSE_PAGES,
7659 QETH_DBF_SENSE_NR_AREAS, 7659 QETH_DBF_SENSE_NR_AREAS,
7660 QETH_DBF_SENSE_LEN); 7660 QETH_DBF_SENSE_LEN);
7661 qeth_dbf_qerr = debug_register(QETH_DBF_QERR_NAME, 7661 qeth_dbf_qerr = debug_register(QETH_DBF_QERR_NAME,
7662 QETH_DBF_QERR_INDEX, 7662 QETH_DBF_QERR_PAGES,
7663 QETH_DBF_QERR_NR_AREAS, 7663 QETH_DBF_QERR_NR_AREAS,
7664 QETH_DBF_QERR_LEN); 7664 QETH_DBF_QERR_LEN);
7665 qeth_dbf_trace = debug_register(QETH_DBF_TRACE_NAME, 7665 qeth_dbf_trace = debug_register(QETH_DBF_TRACE_NAME,
7666 QETH_DBF_TRACE_INDEX, 7666 QETH_DBF_TRACE_PAGES,
7667 QETH_DBF_TRACE_NR_AREAS, 7667 QETH_DBF_TRACE_NR_AREAS,
7668 QETH_DBF_TRACE_LEN); 7668 QETH_DBF_TRACE_LEN);
7669 7669