Skip to content

Commit

Permalink
libertas: remove ps_supported flag, use fwcapinfo
Browse files Browse the repository at this point in the history
Power save support depends on the firmware capabilities rather than the
card's hardware interface.  Use the FW_CAPINFO_PS bit in the firmware
capabilities mask throughout the driver in place of the redundant
ps_supported flag and don't make decisions about PS support in the
interface drivers (with the exception of a special case in the USB
driver).

V2: put the USB special case in the right place.

Signed-off-by: Andrey Yurovsky <andrey@cozybit.com>
Acked-by: Dan Williams <dcbw@redhat.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
  • Loading branch information
Andrey Yurovsky authored and John W. Linville committed Jul 10, 2009
1 parent f0f3d38 commit e0d6133
Show file tree
Hide file tree
Showing 6 changed files with 3 additions and 10 deletions.
1 change: 0 additions & 1 deletion drivers/net/wireless/libertas/dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,6 @@ struct lbs_private {
u16 psmode; /* Wlan802_11PowermodeCAM=disable
Wlan802_11PowermodeMAX_PSP=enable */
u32 psstate;
char ps_supported;
u8 needtowakeup;

struct assoc_request * pending_assoc_req;
Expand Down
3 changes: 0 additions & 3 deletions drivers/net/wireless/libertas/if_cs.c
Original file line number Diff line number Diff line change
Expand Up @@ -933,9 +933,6 @@ static int if_cs_probe(struct pcmcia_device *p_dev)
goto out3;
}

/* The firmware for the CF card supports powersave */
priv->ps_supported = 1;

ret = 0;
goto out;

Expand Down
3 changes: 0 additions & 3 deletions drivers/net/wireless/libertas/if_sdio.c
Original file line number Diff line number Diff line change
Expand Up @@ -1039,9 +1039,6 @@ static int if_sdio_probe(struct sdio_func *func,
if (ret)
goto err_activate_card;

if (priv->fwcapinfo & FW_CAPINFO_PS)
priv->ps_supported = 1;

out:
lbs_deb_leave_args(LBS_DEB_SDIO, "ret %d", ret);

Expand Down
1 change: 0 additions & 1 deletion drivers/net/wireless/libertas/if_spi.c
Original file line number Diff line number Diff line change
Expand Up @@ -1118,7 +1118,6 @@ static int __devinit if_spi_probe(struct spi_device *spi)
priv->card = card;
priv->hw_host_to_card = if_spi_host_to_card;
priv->fw_ready = 1;
priv->ps_supported = 1;

/* Initialize interrupt handling stuff. */
card->run_thread = 1;
Expand Down
3 changes: 2 additions & 1 deletion drivers/net/wireless/libertas/if_usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -181,13 +181,14 @@ static void if_usb_setup_firmware(struct lbs_private *priv)
wake_method.action = cpu_to_le16(CMD_ACT_GET);
if (lbs_cmd_with_response(priv, CMD_802_11_FW_WAKE_METHOD, &wake_method)) {
lbs_pr_info("Firmware does not seem to support PS mode\n");
priv->fwcapinfo &= ~FW_CAPINFO_PS;
} else {
if (le16_to_cpu(wake_method.method) == CMD_WAKE_METHOD_COMMAND_INT) {
lbs_deb_usb("Firmware seems to support PS with wake-via-command\n");
priv->ps_supported = 1;
} else {
/* The versions which boot up this way don't seem to
work even if we set it to the command interrupt */
priv->fwcapinfo &= ~FW_CAPINFO_PS;
lbs_pr_info("Firmware doesn't wake via command interrupt; disabling PS mode\n");
}
}
Expand Down
2 changes: 1 addition & 1 deletion drivers/net/wireless/libertas/wext.c
Original file line number Diff line number Diff line change
Expand Up @@ -712,7 +712,7 @@ static int lbs_set_power(struct net_device *dev, struct iw_request_info *info,

lbs_deb_enter(LBS_DEB_WEXT);

if (!priv->ps_supported) {
if (!(priv->fwcapinfo & FW_CAPINFO_PS)) {
if (vwrq->disabled)
return 0;
else
Expand Down

0 comments on commit e0d6133

Please sign in to comment.