diff options
author | David Woodhouse <dwmw2@infradead.org> | 2007-12-17 23:48:31 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2008-01-28 18:07:49 -0500 |
commit | 3fbe104cecdb8c812976fdb0cc41be65491b85ee (patch) | |
tree | 768ab4fb16f26289f0ad5dc6d413fc5a0cf1eaf5 /drivers/net/wireless/libertas/cmd.c | |
parent | 6e5cc4fb35c45a8f8478d25c4e89e8d9c543056e (diff) |
libertas: convert SLEEP_PARAMS to a direct command
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/libertas/cmd.c')
-rw-r--r-- | drivers/net/wireless/libertas/cmd.c | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/drivers/net/wireless/libertas/cmd.c b/drivers/net/wireless/libertas/cmd.c index 57d17077a6d8..3d9ad0ec9542 100644 --- a/drivers/net/wireless/libertas/cmd.c +++ b/drivers/net/wireless/libertas/cmd.c | |||
@@ -198,33 +198,45 @@ int lbs_cmd_802_11_inactivity_timeout(struct lbs_private *priv, | |||
198 | return 0; | 198 | return 0; |
199 | } | 199 | } |
200 | 200 | ||
201 | static int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, | 201 | int lbs_cmd_802_11_sleep_params(struct lbs_private *priv, uint16_t cmd_action, |
202 | struct cmd_ds_command *cmd, | 202 | struct sleep_params *sp) |
203 | u16 cmd_action) | ||
204 | { | 203 | { |
205 | struct cmd_ds_802_11_sleep_params *sp = &cmd->params.sleep_params; | 204 | struct cmd_ds_802_11_sleep_params cmd; |
205 | int ret; | ||
206 | 206 | ||
207 | lbs_deb_enter(LBS_DEB_CMD); | 207 | lbs_deb_enter(LBS_DEB_CMD); |
208 | 208 | ||
209 | cmd->size = cpu_to_le16((sizeof(struct cmd_ds_802_11_sleep_params)) + | ||
210 | S_DS_GEN); | ||
211 | cmd->command = cpu_to_le16(CMD_802_11_SLEEP_PARAMS); | ||
212 | |||
213 | if (cmd_action == CMD_ACT_GET) { | 209 | if (cmd_action == CMD_ACT_GET) { |
214 | memset(&priv->sp, 0, sizeof(struct sleep_params)); | 210 | memset(&cmd, 0, sizeof(cmd)); |
215 | memset(sp, 0, sizeof(struct cmd_ds_802_11_sleep_params)); | 211 | } else { |
216 | sp->action = cpu_to_le16(cmd_action); | 212 | cmd.error = cpu_to_le16(sp->sp_error); |
217 | } else if (cmd_action == CMD_ACT_SET) { | 213 | cmd.offset = cpu_to_le16(sp->sp_offset); |
218 | sp->action = cpu_to_le16(cmd_action); | 214 | cmd.stabletime = cpu_to_le16(sp->sp_stabletime); |
219 | sp->error = cpu_to_le16(priv->sp.sp_error); | 215 | cmd.calcontrol = sp->sp_calcontrol; |
220 | sp->offset = cpu_to_le16(priv->sp.sp_offset); | 216 | cmd.externalsleepclk = sp->sp_extsleepclk; |
221 | sp->stabletime = cpu_to_le16(priv->sp.sp_stabletime); | 217 | cmd.reserved = cpu_to_le16(sp->sp_reserved); |
222 | sp->calcontrol = (u8) priv->sp.sp_calcontrol; | ||
223 | sp->externalsleepclk = (u8) priv->sp.sp_extsleepclk; | ||
224 | sp->reserved = cpu_to_le16(priv->sp.sp_reserved); | ||
225 | } | 218 | } |
219 | cmd.hdr.size = cpu_to_le16(sizeof(cmd)); | ||
220 | cmd.action = cpu_to_le16(cmd_action); | ||
226 | 221 | ||
227 | lbs_deb_leave(LBS_DEB_CMD); | 222 | ret = lbs_cmd_with_response(priv, CMD_802_11_SLEEP_PARAMS, &cmd); |
223 | |||
224 | if (!ret) { | ||
225 | lbs_deb_cmd("error 0x%x, offset 0x%x, stabletime 0x%x, " | ||
226 | "calcontrol 0x%x extsleepclk 0x%x\n", | ||
227 | le16_to_cpu(cmd.error), le16_to_cpu(cmd.offset), | ||
228 | le16_to_cpu(cmd.stabletime), cmd.calcontrol, | ||
229 | cmd.externalsleepclk); | ||
230 | |||
231 | sp->sp_error = le16_to_cpu(cmd.error); | ||
232 | sp->sp_offset = le16_to_cpu(cmd.offset); | ||
233 | sp->sp_stabletime = le16_to_cpu(cmd.stabletime); | ||
234 | sp->sp_calcontrol = cmd.calcontrol; | ||
235 | sp->sp_extsleepclk = cmd.externalsleepclk; | ||
236 | sp->sp_reserved = le16_to_cpu(cmd.reserved); | ||
237 | } | ||
238 | |||
239 | lbs_deb_leave_args(LBS_DEB_CMD, "ret %d", ret); | ||
228 | return 0; | 240 | return 0; |
229 | } | 241 | } |
230 | 242 | ||
@@ -1520,10 +1532,6 @@ int lbs_prepare_and_send_command(struct lbs_private *priv, | |||
1520 | cmd_no, cmd_action); | 1532 | cmd_no, cmd_action); |
1521 | break; | 1533 | break; |
1522 | 1534 | ||
1523 | case CMD_802_11_SLEEP_PARAMS: | ||
1524 | ret = lbs_cmd_802_11_sleep_params(priv, cmdptr, cmd_action); | ||
1525 | break; | ||
1526 | |||
1527 | case CMD_802_11_TPC_CFG: | 1535 | case CMD_802_11_TPC_CFG: |
1528 | cmdptr->command = cpu_to_le16(CMD_802_11_TPC_CFG); | 1536 | cmdptr->command = cpu_to_le16(CMD_802_11_TPC_CFG); |
1529 | cmdptr->size = | 1537 | cmdptr->size = |