aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless
diff options
context:
space:
mode:
authorDavid Woodhouse <dwmw2@infradead.org>2007-12-17 14:41:13 -0500
committerDavid S. Miller <davem@davemloft.net>2008-01-28 18:07:42 -0500
commitb2c57eee66592e22327bf39b42c4e3dc24708213 (patch)
treed521906845ae41d7277f78be1ee28ab5fb7f33fd /drivers/net/wireless
parentb47ef2438dea2ddad4561152aa8007a2d95e8157 (diff)
libertas: allow for PS mode to be disabled when firmware doesn't support it
Otherwise, we go into an endless busy loop trying to enable PS mode when the command queue is empty, dealing with the error response, and then trying to enable PS mode again because the command queue is empty.... it doesn't really save much power. Signed-off-by: David Woodhouse <dwmw2@infradead.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless')
-rw-r--r--drivers/net/wireless/libertas/dev.h1
-rw-r--r--drivers/net/wireless/libertas/host.h5
-rw-r--r--drivers/net/wireless/libertas/wext.c7
3 files changed, 13 insertions, 0 deletions
diff --git a/drivers/net/wireless/libertas/dev.h b/drivers/net/wireless/libertas/dev.h
index fe5045757356..1c6ec4d61988 100644
--- a/drivers/net/wireless/libertas/dev.h
+++ b/drivers/net/wireless/libertas/dev.h
@@ -260,6 +260,7 @@ struct lbs_private {
260 u16 psmode; /* Wlan802_11PowermodeCAM=disable 260 u16 psmode; /* Wlan802_11PowermodeCAM=disable
261 Wlan802_11PowermodeMAX_PSP=enable */ 261 Wlan802_11PowermodeMAX_PSP=enable */
262 u32 psstate; 262 u32 psstate;
263 char ps_supported;
263 u8 needtowakeup; 264 u8 needtowakeup;
264 265
265 struct PS_CMD_ConfirmSleep lbs_ps_confirm_sleep; 266 struct PS_CMD_ConfirmSleep lbs_ps_confirm_sleep;
diff --git a/drivers/net/wireless/libertas/host.h b/drivers/net/wireless/libertas/host.h
index 4c03e12fd6a3..1aa04076b1ac 100644
--- a/drivers/net/wireless/libertas/host.h
+++ b/drivers/net/wireless/libertas/host.h
@@ -209,6 +209,11 @@
209#define CMD_TYPE_MAX_PSP 0x0001 209#define CMD_TYPE_MAX_PSP 0x0001
210#define CMD_TYPE_FAST_PSP 0x0002 210#define CMD_TYPE_FAST_PSP 0x0002
211 211
212/* Options for CMD_802_11_FW_WAKE_METHOD */
213#define CMD_WAKE_METHOD_UNCHANGED 0x0000
214#define CMD_WAKE_METHOD_COMMAND_INT 0x0001
215#define CMD_WAKE_METHOD_GPIO 0x0002
216
212/* Define action or option for CMD_BT_ACCESS */ 217/* Define action or option for CMD_BT_ACCESS */
213enum cmd_bt_access_opts { 218enum cmd_bt_access_opts {
214 /* The bt commands start at 5 instead of 1 because the old dft commands 219 /* The bt commands start at 5 instead of 1 because the old dft commands
diff --git a/drivers/net/wireless/libertas/wext.c b/drivers/net/wireless/libertas/wext.c
index b1e24723f2f9..3e8d555ba3a9 100644
--- a/drivers/net/wireless/libertas/wext.c
+++ b/drivers/net/wireless/libertas/wext.c
@@ -734,6 +734,13 @@ static int lbs_set_power(struct net_device *dev, struct iw_request_info *info,
734 734
735 lbs_deb_enter(LBS_DEB_WEXT); 735 lbs_deb_enter(LBS_DEB_WEXT);
736 736
737 if (!priv->ps_supported) {
738 if (vwrq->disabled)
739 return 0;
740 else
741 return -EINVAL;
742 }
743
737 /* PS is currently supported only in Infrastructure mode 744 /* PS is currently supported only in Infrastructure mode
738 * Remove this check if it is to be supported in IBSS mode also 745 * Remove this check if it is to be supported in IBSS mode also
739 */ 746 */