wimax/i2400m: implement passive mode as a module option
authorInaky Perez-Gonzalez <inaky@linux.intel.com>
Mon, 19 Oct 2009 14:11:26 +0000 (23:11 +0900)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Tue, 3 Nov 2009 20:49:34 +0000 (12:49 -0800)
Some versions of the user space Intel WiMAX daemon need to have full
control over the device initialization sequence. By setting the module
option i2400.passive_mode to 1, the driver defers all device
configuration and initialization to user space.

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
drivers/net/wimax/i2400m/control.c

index 8fe70e75d030f414cfdf690b63cff6f9453d9395..b69fd8834c78470edeb1b7986579a71f59ef422c 100644 (file)
 #define D_SUBMODULE control
 #include "debug-levels.h"
 
+int i2400m_passive_mode;       /* 0 (passive mode disabled) by default */
+module_param_named(passive_mode, i2400m_passive_mode, int, 0644);
+MODULE_PARM_DESC(passive_mode,
+                "If true, the driver will not do any device setup "
+                "and leave it up to user space, who must be properly "
+                "setup.");
+
 
 /*
  * Return if a TLV is of a give type and size
@@ -1335,6 +1342,8 @@ int i2400m_dev_initialize(struct i2400m *i2400m)
        unsigned argc = 0;
 
        d_fnstart(3, dev, "(i2400m %p)\n", i2400m);
+       if (i2400m_passive_mode)
+               goto out_passive;
        /* Disable idle mode? (enabled by default) */
        if (i2400m_idle_mode_disabled) {
                if (i2400m_le_v1_3(i2400m)) {
@@ -1377,6 +1386,7 @@ int i2400m_dev_initialize(struct i2400m *i2400m)
        result = i2400m_set_init_config(i2400m, args, argc);
        if (result < 0)
                goto error;
+out_passive:
        /*
         * Update state: Here it just calls a get state; parsing the
         * result (System State TLV and RF Status TLV [done in the rx