public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
* [PATCH] Add boot command line parsing for the e100 driver
@ 2003-05-19 16:09 Corey Minyard
  2003-05-19 16:17 ` Christoph Hellwig
  0 siblings, 1 reply; 9+ messages in thread
From: Corey Minyard @ 2003-05-19 16:09 UTC (permalink / raw)
  To: linux.nics; +Cc: LKML

[-- Attachment #1: Type: text/plain, Size: 277 bytes --]

Annoyed by the fact that I could set configuration parameters for a
compiled-in e100 driver, I've added boot-line parameter parsing.  The
patch is attached.  It would be very helpful if this could be applied. 
This is relative to 2.5.68, but should be pretty portable.

-Corey

[-- Attachment #2: e100-bootparm.diff --]
[-- Type: text/plain, Size: 3508 bytes --]

--- linux.orig/drivers/net/e100/e100_main.c	Mon Apr 21 11:20:11 2003
+++ linux/drivers/net/e100/e100_main.c	Mon May 19 10:57:33 2003
@@ -174,7 +174,7 @@
  * over and over (plus this helps to avoid typo bugs).
  */
 #define E100_PARAM(X, S)                                        \
-        static const int X[E100_MAX_NIC + 1] = E100_PARAM_INIT; \
+        static int X[E100_MAX_NIC + 1] = E100_PARAM_INIT; \
         MODULE_PARM(X, "1-" __MODULE_STRING(E100_MAX_NIC) "i"); \
         MODULE_PARM_DESC(X, S);
 
@@ -375,6 +375,77 @@
 E100_PARAM(BundleSmallFr, "Disable or enable interrupt bundling of small frames");
 E100_PARAM(BundleMax, "Maximum number for CPU saver's packet bundling");
 E100_PARAM(IFS, "Disable or enable the adaptive IFS algorithm");
+
+#if !defined(MODULE)
+static int next_e100_setup = 0;
+
+#define E100_BOOT_PARAM(parm, strparm) \
+	if (strcmp(strparm, name) == 0) {				\
+		int val;						\
+		char *end;						\
+		val = simple_strtoul(strval, &end, 0);			\
+		if (*end != '\0') {					\
+			printk("Invalid value for parm num %d, name"	\
+			       " %s, parm ignored\n", count, name);	\
+			continue;					\
+		}							\
+		printk("  Setting %s to %d\n", strparm, val);		\
+		parm[i] = val;						\
+		continue;						\
+	}
+		
+static int __init
+e100_boot_setup(char *str)
+{
+	int i = next_e100_setup;
+	int count = -1;
+	char *p;
+	char *name;
+	char *strval;
+
+	if (i >= E100_MAX_NIC) {
+		printk("Attempted to configure too many e100 devices\n");
+		return -ENODEV;
+	}
+
+	printk("e100 boot setup for device %d\n", i);
+
+	next_e100_setup++;
+
+	for (p=strsep(&str, ":,"); p; p=strsep(&str, ":,")) {
+		count++;
+		name = p;
+		name = strsep(&p, "=");
+		if (!name) {
+			printk("  error: Empty parm %d, ignored\n", count);
+			continue;
+		}
+		strval = strsep(&p, "");
+		if (!strval) {
+			printk("  error: No value for parm %d, ignored\n",
+			       count);
+			continue;
+		}
+		
+		E100_BOOT_PARAM(TxDescriptors, "TxDescriptors");
+		E100_BOOT_PARAM(RxDescriptors, "RxDescriptors");
+		E100_BOOT_PARAM(XsumRX, "XsumRX");
+		E100_BOOT_PARAM(e100_speed_duplex, "e100_speed_duplex");
+		E100_BOOT_PARAM(ucode, "ucode");
+		E100_BOOT_PARAM(ber, "ber");
+		E100_BOOT_PARAM(flow_control, "flow_control");
+		E100_BOOT_PARAM(IntDelay, "IntDelay");
+		E100_BOOT_PARAM(BundleSmallFr, "BundleSmallFr");
+		E100_BOOT_PARAM(BundleMax, "BundleMax");
+		E100_BOOT_PARAM(IFS, "IFS");
+		printk("  Invalid parameter name %s, ignored\n", name);
+	}
+
+	return 0;
+}
+
+__setup("e100=", e100_boot_setup);
+#endif
 
 /**
  * e100_exec_cmd - issue a comand
--- linux.orig/Documentation/networking/e100.txt	Wed Mar 26 08:00:53 2003
+++ linux/Documentation/networking/e100.txt	Mon May 19 10:50:47 2003
@@ -110,6 +110,17 @@
 resources for the second adapter. This configuration favors the second 
 adapter. The driver supports up to 16 network adapters concurrently.
 
+If the driver is compiled into the kernel, you may also specify these
+on the boot command line for linux using the 'e100' parameter,
+followed by the "option=val" separated by commas or colons.  You may
+put the e100 parameter on the command line multiple times, each one
+configures the next device.  For instance, you can say:
+
+    e100=ucode=0 e100=ucode=1,IntDelay=700
+
+to turn of the microcode download on the first device, and turn on the
+microcode download and set the delay to 700 on the second device.
+
 The default value for each parameter is generally the recommended setting,
 unless otherwise noted.
 

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2003-05-20  1:17 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-05-19 16:09 [PATCH] Add boot command line parsing for the e100 driver Corey Minyard
2003-05-19 16:17 ` Christoph Hellwig
2003-05-19 16:30   ` Jeff Garzik
2003-05-19 16:33     ` Christoph Hellwig
2003-05-19 16:40       ` Jeff Garzik
2003-05-19 17:04         ` Corey Minyard
2003-05-20  0:16           ` Bartlomiej Zolnierkiewicz
2003-05-20  0:44             ` Bartlomiej Zolnierkiewicz
2003-05-20  1:30               ` Corey Minyard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox