wimax/i2400m: introduce module parameter to disable entering power save
authorInaky Perez-Gonzalez <inaky@linux.intel.com>
Thu, 7 May 2009 17:27:42 +0000 (10:27 -0700)
committerInaky Perez-Gonzalez <inaky@linux.intel.com>
Thu, 11 Jun 2009 10:30:17 +0000 (03:30 -0700)
The i2400m driver waits for the device to report being ready for
entering power save before asking it to do so. This module parameter
allows control of said operation; if disabled, the driver won't ask
the device to enter power save mode.

This is useful in setups where power saving is not so important or
when the overhead imposed by network reentry after power save is not
acceptable; by combining this with parameter 'idle_mode_disabled', the
driver will always maintain both the connection and the device in
active state.

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

index bd193ae2178b636c0cbfdbdeeebf1a6868260c5a..89cdfe4e8d8930966e3b713c7d516f45d05197fe 100644 (file)
@@ -505,8 +505,15 @@ void i2400m_report_hook(struct i2400m *i2400m,
         * it. */
        case I2400M_MT_REPORT_POWERSAVE_READY:  /* zzzzz */
                if (l3l4_hdr->status == cpu_to_le16(I2400M_MS_DONE_OK)) {
-                       d_printf(1, dev, "ready for powersave, requesting\n");
-                       i2400m_cmd_enter_powersave(i2400m);
+                       if (i2400m_power_save_disabled)
+                               d_printf(1, dev, "ready for powersave, "
+                                        "not requesting (disabled by module "
+                                        "parameter)\n");
+                       else {
+                               d_printf(1, dev, "ready for powersave, "
+                                        "requesting\n");
+                               i2400m_cmd_enter_powersave(i2400m);
+                       }
                }
                break;
        };
index ef16c573bb2206c7e8a14a023cca8f185a3cddc6..86dd18a48358fa3324de25d6881abec15611ba0c 100644 (file)
@@ -82,6 +82,14 @@ module_param_named(rx_reorder_disabled, i2400m_rx_reorder_disabled, int, 0644);
 MODULE_PARM_DESC(rx_reorder_disabled,
                 "If true, RX reordering will be disabled.");
 
+int i2400m_power_save_disabled;        /* 0 (power saving enabled) by default */
+module_param_named(power_save_disabled, i2400m_power_save_disabled, int, 0644);
+MODULE_PARM_DESC(power_save_disabled,
+                "If true, the driver will not tell the device to enter "
+                "power saving mode when it reports it is ready for it. "
+                "False by default (so the device is told to do power "
+                "saving).");
+
 /**
  * i2400m_queue_work - schedule work on a i2400m's queue
  *
index 434ba310c2feb2d47cb84a33c8fb109e77203d88..8dba246e15bf1ec5da6ec40e6937d56f73fd134b 100644 (file)
@@ -709,6 +709,7 @@ static const __le32 i2400m_SBOOT_BARKER[4] = {
        cpu_to_le32(I2400M_SBOOT_BARKER)
 };
 
+extern int i2400m_power_save_disabled;
 
 /*
  * Utility functions