Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 90484
b: refs/heads/master
c: f539f2e
h: refs/heads/master
v: v3
  • Loading branch information
Holger Schurig authored and John W. Linville committed Apr 1, 2008
1 parent 34972a6 commit f40cea9
Show file tree
Hide file tree
Showing 6 changed files with 33 additions and 49 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7460f5a69055357bf97f1890db547aba0c4bf2fa
refs/heads/master: f539f2efe9fdf9e7db2022a757190858576d34fd
32 changes: 10 additions & 22 deletions trunk/drivers/net/wireless/libertas/cmd.c
Original file line number Diff line number Diff line change
Expand Up @@ -1802,38 +1802,27 @@ void lbs_send_iwevcustom_event(struct lbs_private *priv, s8 *str)
lbs_deb_leave(LBS_DEB_WEXT);
}

static int sendconfirmsleep(struct lbs_private *priv, u8 *cmdptr, u16 size)
static void lbs_send_confirmsleep(struct lbs_private *priv)
{
unsigned long flags;
int ret = 0;
int ret;

lbs_deb_enter(LBS_DEB_HOST);
lbs_deb_hex(LBS_DEB_HOST, "sleep confirm command", cmdptr, size);

ret = priv->hw_host_to_card(priv, MVMS_CMD, cmdptr, size);
lbs_deb_hex(LBS_DEB_HOST, "sleep confirm", (u8 *) &confirm_sleep,
sizeof(confirm_sleep));

spin_lock_irqsave(&priv->driver_lock, flags);
if (priv->intcounter || priv->currenttxskb)
lbs_deb_host("SEND_SLEEPC_CMD: intcounter %d, currenttxskb %p\n",
priv->intcounter, priv->currenttxskb);
spin_unlock_irqrestore(&priv->driver_lock, flags);
ret = priv->hw_host_to_card(priv, MVMS_CMD, (u8 *) &confirm_sleep,
sizeof(confirm_sleep));

if (ret) {
lbs_pr_alert(
"SEND_SLEEPC_CMD: Host to Card failed for Confirm Sleep\n");
lbs_pr_alert("confirm_sleep failed\n");
} else {
spin_lock_irqsave(&priv->driver_lock, flags);
if (!priv->intcounter) {
if (!priv->intcounter)
priv->psstate = PS_STATE_SLEEP;
} else {
lbs_deb_host("SEND_SLEEPC_CMD: after sent, intcounter %d\n",
priv->intcounter);
}
spin_unlock_irqrestore(&priv->driver_lock, flags);
}

lbs_deb_leave_args(LBS_DEB_HOST, "ret %d", ret);
return ret;
lbs_deb_leave(LBS_DEB_HOST);
}

void lbs_ps_sleep(struct lbs_private *priv, int wait_option)
Expand Down Expand Up @@ -1906,8 +1895,7 @@ void lbs_ps_confirm_sleep(struct lbs_private *priv)

if (allowed) {
lbs_deb_host("sending lbs_ps_confirm_sleep\n");
sendconfirmsleep(priv, (u8 *) & priv->lbs_ps_confirm_sleep,
sizeof(struct PS_CMD_ConfirmSleep));
lbs_send_confirmsleep(priv);
} else {
lbs_deb_host("sleep confirm has been delayed\n");
}
Expand Down
17 changes: 8 additions & 9 deletions trunk/drivers/net/wireless/libertas/cmdresp.c
Original file line number Diff line number Diff line change
Expand Up @@ -548,21 +548,20 @@ int lbs_process_rx_command(struct lbs_private *priv)

static int lbs_send_confirmwake(struct lbs_private *priv)
{
struct cmd_header *cmd = &priv->lbs_ps_confirm_wake;
struct cmd_header cmd;
int ret = 0;

lbs_deb_enter(LBS_DEB_HOST);

cmd->command = cpu_to_le16(CMD_802_11_WAKEUP_CONFIRM);
cmd->size = cpu_to_le16(sizeof(*cmd));
cmd->seqnum = cpu_to_le16(++priv->seqnum);
cmd->result = 0;
cmd.command = cpu_to_le16(CMD_802_11_WAKEUP_CONFIRM);
cmd.size = cpu_to_le16(sizeof(cmd));
cmd.seqnum = cpu_to_le16(++priv->seqnum);
cmd.result = 0;

lbs_deb_host("SEND_WAKEC_CMD: before download\n");
lbs_deb_hex(LBS_DEB_HOST, "wake confirm", (u8 *) &cmd,
sizeof(cmd));

lbs_deb_hex(LBS_DEB_HOST, "wake confirm command", (void *)cmd, sizeof(*cmd));

ret = priv->hw_host_to_card(priv, MVMS_CMD, (void *)cmd, sizeof(*cmd));
ret = priv->hw_host_to_card(priv, MVMS_CMD, (u8 *) &cmd, sizeof(cmd));
if (ret)
lbs_pr_alert("SEND_WAKEC_CMD: Host to Card failed for Confirm Wake\n");

Expand Down
5 changes: 2 additions & 3 deletions trunk/drivers/net/wireless/libertas/dev.h
Original file line number Diff line number Diff line change
Expand Up @@ -267,9 +267,6 @@ struct lbs_private {
char ps_supported;
u8 needtowakeup;

struct PS_CMD_ConfirmSleep lbs_ps_confirm_sleep;
struct cmd_header lbs_ps_confirm_wake;

struct assoc_request * pending_assoc_req;
struct assoc_request * in_progress_assoc_req;

Expand Down Expand Up @@ -326,6 +323,8 @@ struct lbs_private {
u8 fw_ready;
};

extern struct cmd_confirm_sleep confirm_sleep;

/** Association request
*
* Encapsulates all the options that describe a specific assocation request
Expand Down
9 changes: 3 additions & 6 deletions trunk/drivers/net/wireless/libertas/hostcmd.h
Original file line number Diff line number Diff line change
Expand Up @@ -480,14 +480,11 @@ struct cmd_ds_802_11_ps_mode {
__le16 locallisteninterval;
};

struct PS_CMD_ConfirmSleep {
__le16 command;
__le16 size;
__le16 seqnum;
__le16 result;
struct cmd_confirm_sleep {
struct cmd_header hdr;

__le16 action;
__le16 reserved1;
__le16 nullpktinterval;
__le16 multipledtim;
__le16 reserved;
__le16 locallisteninterval;
Expand Down
17 changes: 9 additions & 8 deletions trunk/drivers/net/wireless/libertas/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,11 @@ EXPORT_SYMBOL_GPL(lbs_debug);
module_param_named(libertas_debug, lbs_debug, int, 0644);


/* This global structure is used to send the confirm_sleep command as
* fast as possible down to the firmware. */
struct cmd_confirm_sleep confirm_sleep;


#define LBS_TX_PWR_DEFAULT 20 /*100mW */
#define LBS_TX_PWR_US_DEFAULT 20 /*100mW */
#define LBS_TX_PWR_JP_DEFAULT 16 /*50mW */
Expand Down Expand Up @@ -1013,14 +1018,6 @@ static int lbs_init_adapter(struct lbs_private *priv)
&priv->network_free_list);
}

priv->lbs_ps_confirm_sleep.seqnum = cpu_to_le16(++priv->seqnum);
priv->lbs_ps_confirm_sleep.command =
cpu_to_le16(CMD_802_11_PS_MODE);
priv->lbs_ps_confirm_sleep.size =
cpu_to_le16(sizeof(struct PS_CMD_ConfirmSleep));
priv->lbs_ps_confirm_sleep.action =
cpu_to_le16(CMD_SUBCMD_SLEEP_CONFIRMED);

memset(priv->current_addr, 0xff, ETH_ALEN);

priv->connect_status = LBS_DISCONNECTED;
Expand Down Expand Up @@ -1462,6 +1459,10 @@ EXPORT_SYMBOL_GPL(lbs_interrupt);
static int __init lbs_init_module(void)
{
lbs_deb_enter(LBS_DEB_MAIN);
memset(&confirm_sleep, 0, sizeof(confirm_sleep));
confirm_sleep.hdr.command = cpu_to_le16(CMD_802_11_PS_MODE);
confirm_sleep.hdr.size = cpu_to_le16(sizeof(confirm_sleep));
confirm_sleep.action = cpu_to_le16(CMD_SUBCMD_SLEEP_CONFIRMED);
lbs_debugfs_init();
lbs_deb_leave(LBS_DEB_MAIN);
return 0;
Expand Down

0 comments on commit f40cea9

Please sign in to comment.