diff options
author | John W. Linville <linville@tuxdriver.com> | 2011-05-16 14:55:42 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2011-05-16 19:32:19 -0400 |
commit | e00cf3b9eb7839b952e434a75bff6b99e47337ac (patch) | |
tree | ef583ab8ac09bf703026650d4bc7777e6a3864d3 /drivers/net/wireless/mwifiex/cmdevt.c | |
parent | 1a8218e96271790a07dd7065a2ef173e0f67e328 (diff) | |
parent | 3b8ab88acaceb505aa06ef3bbf3a73b92470ae78 (diff) |
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-next-2.6 into for-davem
Conflicts:
drivers/net/wireless/iwlwifi/iwl-agn-tx.c
net/mac80211/sta_info.h
Diffstat (limited to 'drivers/net/wireless/mwifiex/cmdevt.c')
-rw-r--r-- | drivers/net/wireless/mwifiex/cmdevt.c | 51 |
1 files changed, 25 insertions, 26 deletions
diff --git a/drivers/net/wireless/mwifiex/cmdevt.c b/drivers/net/wireless/mwifiex/cmdevt.c index 776146a104e..cd89fed206a 100644 --- a/drivers/net/wireless/mwifiex/cmdevt.c +++ b/drivers/net/wireless/mwifiex/cmdevt.c | |||
@@ -91,7 +91,7 @@ mwifiex_clean_cmd_node(struct mwifiex_adapter *adapter, | |||
91 | cmd_node->wait_q_enabled = false; | 91 | cmd_node->wait_q_enabled = false; |
92 | 92 | ||
93 | if (cmd_node->resp_skb) { | 93 | if (cmd_node->resp_skb) { |
94 | mwifiex_recv_complete(adapter, cmd_node->resp_skb, 0); | 94 | dev_kfree_skb_any(cmd_node->resp_skb); |
95 | cmd_node->resp_skb = NULL; | 95 | cmd_node->resp_skb = NULL; |
96 | } | 96 | } |
97 | } | 97 | } |
@@ -128,7 +128,7 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv, | |||
128 | { | 128 | { |
129 | 129 | ||
130 | struct mwifiex_adapter *adapter = priv->adapter; | 130 | struct mwifiex_adapter *adapter = priv->adapter; |
131 | int ret = 0; | 131 | int ret; |
132 | struct host_cmd_ds_command *host_cmd; | 132 | struct host_cmd_ds_command *host_cmd; |
133 | uint16_t cmd_code; | 133 | uint16_t cmd_code; |
134 | uint16_t cmd_size; | 134 | uint16_t cmd_size; |
@@ -222,25 +222,24 @@ static int mwifiex_dnld_cmd_to_fw(struct mwifiex_private *priv, | |||
222 | */ | 222 | */ |
223 | static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter) | 223 | static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter) |
224 | { | 224 | { |
225 | int ret = 0; | 225 | int ret; |
226 | u16 cmd_len = 0; | ||
227 | struct mwifiex_private *priv; | 226 | struct mwifiex_private *priv; |
228 | struct mwifiex_opt_sleep_confirm_buffer *sleep_cfm_buf = | 227 | struct mwifiex_opt_sleep_confirm *sleep_cfm_buf = |
229 | (struct mwifiex_opt_sleep_confirm_buffer *) | 228 | (struct mwifiex_opt_sleep_confirm *) |
230 | adapter->sleep_cfm->data; | 229 | adapter->sleep_cfm->data; |
231 | cmd_len = sizeof(struct mwifiex_opt_sleep_confirm); | ||
232 | priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); | 230 | priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); |
233 | 231 | ||
234 | sleep_cfm_buf->ps_cfm_sleep.seq_num = | 232 | sleep_cfm_buf->seq_num = |
235 | cpu_to_le16((HostCmd_SET_SEQ_NO_BSS_INFO | 233 | cpu_to_le16((HostCmd_SET_SEQ_NO_BSS_INFO |
236 | (adapter->seq_num, priv->bss_num, | 234 | (adapter->seq_num, priv->bss_num, |
237 | priv->bss_type))); | 235 | priv->bss_type))); |
238 | adapter->seq_num++; | 236 | adapter->seq_num++; |
239 | 237 | ||
238 | skb_push(adapter->sleep_cfm, INTF_HEADER_LEN); | ||
240 | ret = adapter->if_ops.host_to_card(adapter, MWIFIEX_TYPE_CMD, | 239 | ret = adapter->if_ops.host_to_card(adapter, MWIFIEX_TYPE_CMD, |
241 | adapter->sleep_cfm->data, | 240 | adapter->sleep_cfm->data, |
242 | adapter->sleep_cfm->len + | 241 | adapter->sleep_cfm->len, NULL); |
243 | INTF_HEADER_LEN, NULL); | 242 | skb_pull(adapter->sleep_cfm, INTF_HEADER_LEN); |
244 | 243 | ||
245 | if (ret == -1) { | 244 | if (ret == -1) { |
246 | dev_err(adapter->dev, "SLEEP_CFM: failed\n"); | 245 | dev_err(adapter->dev, "SLEEP_CFM: failed\n"); |
@@ -249,14 +248,14 @@ static int mwifiex_dnld_sleep_confirm_cmd(struct mwifiex_adapter *adapter) | |||
249 | } | 248 | } |
250 | if (GET_BSS_ROLE(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY)) | 249 | if (GET_BSS_ROLE(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY)) |
251 | == MWIFIEX_BSS_ROLE_STA) { | 250 | == MWIFIEX_BSS_ROLE_STA) { |
252 | if (!sleep_cfm_buf->ps_cfm_sleep.resp_ctrl) | 251 | if (!sleep_cfm_buf->resp_ctrl) |
253 | /* Response is not needed for sleep | 252 | /* Response is not needed for sleep |
254 | confirm command */ | 253 | confirm command */ |
255 | adapter->ps_state = PS_STATE_SLEEP; | 254 | adapter->ps_state = PS_STATE_SLEEP; |
256 | else | 255 | else |
257 | adapter->ps_state = PS_STATE_SLEEP_CFM; | 256 | adapter->ps_state = PS_STATE_SLEEP_CFM; |
258 | 257 | ||
259 | if (!sleep_cfm_buf->ps_cfm_sleep.resp_ctrl | 258 | if (!sleep_cfm_buf->resp_ctrl |
260 | && (adapter->is_hs_configured | 259 | && (adapter->is_hs_configured |
261 | && !adapter->sleep_period.period)) { | 260 | && !adapter->sleep_period.period)) { |
262 | adapter->pm_wakeup_card_req = true; | 261 | adapter->pm_wakeup_card_req = true; |
@@ -292,7 +291,7 @@ int mwifiex_alloc_cmd_buffer(struct mwifiex_adapter *adapter) | |||
292 | if (!cmd_array) { | 291 | if (!cmd_array) { |
293 | dev_err(adapter->dev, "%s: failed to alloc cmd_array\n", | 292 | dev_err(adapter->dev, "%s: failed to alloc cmd_array\n", |
294 | __func__); | 293 | __func__); |
295 | return -1; | 294 | return -ENOMEM; |
296 | } | 295 | } |
297 | 296 | ||
298 | adapter->cmd_pool = cmd_array; | 297 | adapter->cmd_pool = cmd_array; |
@@ -340,7 +339,7 @@ int mwifiex_free_cmd_buffer(struct mwifiex_adapter *adapter) | |||
340 | } | 339 | } |
341 | if (!cmd_array[i].resp_skb) | 340 | if (!cmd_array[i].resp_skb) |
342 | continue; | 341 | continue; |
343 | mwifiex_recv_complete(adapter, cmd_array[i].resp_skb, 0); | 342 | dev_kfree_skb_any(cmd_array[i].resp_skb); |
344 | } | 343 | } |
345 | /* Release struct cmd_ctrl_node */ | 344 | /* Release struct cmd_ctrl_node */ |
346 | if (adapter->cmd_pool) { | 345 | if (adapter->cmd_pool) { |
@@ -364,13 +363,13 @@ int mwifiex_free_cmd_buffer(struct mwifiex_adapter *adapter) | |||
364 | */ | 363 | */ |
365 | int mwifiex_process_event(struct mwifiex_adapter *adapter) | 364 | int mwifiex_process_event(struct mwifiex_adapter *adapter) |
366 | { | 365 | { |
367 | int ret = 0; | 366 | int ret; |
368 | struct mwifiex_private *priv = | 367 | struct mwifiex_private *priv = |
369 | mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); | 368 | mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); |
370 | struct sk_buff *skb = adapter->event_skb; | 369 | struct sk_buff *skb = adapter->event_skb; |
371 | u32 eventcause = adapter->event_cause; | 370 | u32 eventcause = adapter->event_cause; |
372 | struct timeval tstamp; | 371 | struct timeval tstamp; |
373 | struct mwifiex_rxinfo *rx_info = NULL; | 372 | struct mwifiex_rxinfo *rx_info; |
374 | 373 | ||
375 | /* Save the last event to debug log */ | 374 | /* Save the last event to debug log */ |
376 | adapter->dbg.last_event_index = | 375 | adapter->dbg.last_event_index = |
@@ -403,7 +402,7 @@ int mwifiex_process_event(struct mwifiex_adapter *adapter) | |||
403 | adapter->event_cause = 0; | 402 | adapter->event_cause = 0; |
404 | adapter->event_skb = NULL; | 403 | adapter->event_skb = NULL; |
405 | 404 | ||
406 | mwifiex_recv_complete(adapter, skb, 0); | 405 | dev_kfree_skb_any(skb); |
407 | 406 | ||
408 | return ret; | 407 | return ret; |
409 | } | 408 | } |
@@ -446,10 +445,10 @@ int mwifiex_send_cmd_sync(struct mwifiex_private *priv, uint16_t cmd_no, | |||
446 | int mwifiex_send_cmd_async(struct mwifiex_private *priv, uint16_t cmd_no, | 445 | int mwifiex_send_cmd_async(struct mwifiex_private *priv, uint16_t cmd_no, |
447 | u16 cmd_action, u32 cmd_oid, void *data_buf) | 446 | u16 cmd_action, u32 cmd_oid, void *data_buf) |
448 | { | 447 | { |
449 | int ret = 0; | 448 | int ret; |
450 | struct mwifiex_adapter *adapter = priv->adapter; | 449 | struct mwifiex_adapter *adapter = priv->adapter; |
451 | struct cmd_ctrl_node *cmd_node = NULL; | 450 | struct cmd_ctrl_node *cmd_node; |
452 | struct host_cmd_ds_command *cmd_ptr = NULL; | 451 | struct host_cmd_ds_command *cmd_ptr; |
453 | 452 | ||
454 | if (!adapter) { | 453 | if (!adapter) { |
455 | pr_err("PREP_CMD: adapter is NULL\n"); | 454 | pr_err("PREP_CMD: adapter is NULL\n"); |
@@ -605,8 +604,8 @@ mwifiex_insert_cmd_to_pending_q(struct mwifiex_adapter *adapter, | |||
605 | */ | 604 | */ |
606 | int mwifiex_exec_next_cmd(struct mwifiex_adapter *adapter) | 605 | int mwifiex_exec_next_cmd(struct mwifiex_adapter *adapter) |
607 | { | 606 | { |
608 | struct mwifiex_private *priv = NULL; | 607 | struct mwifiex_private *priv; |
609 | struct cmd_ctrl_node *cmd_node = NULL; | 608 | struct cmd_ctrl_node *cmd_node; |
610 | int ret = 0; | 609 | int ret = 0; |
611 | struct host_cmd_ds_command *host_cmd; | 610 | struct host_cmd_ds_command *host_cmd; |
612 | unsigned long cmd_flags; | 611 | unsigned long cmd_flags; |
@@ -673,7 +672,7 @@ int mwifiex_exec_next_cmd(struct mwifiex_adapter *adapter) | |||
673 | */ | 672 | */ |
674 | int mwifiex_process_cmdresp(struct mwifiex_adapter *adapter) | 673 | int mwifiex_process_cmdresp(struct mwifiex_adapter *adapter) |
675 | { | 674 | { |
676 | struct host_cmd_ds_command *resp = NULL; | 675 | struct host_cmd_ds_command *resp; |
677 | struct mwifiex_private *priv = | 676 | struct mwifiex_private *priv = |
678 | mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); | 677 | mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); |
679 | int ret = 0; | 678 | int ret = 0; |
@@ -805,7 +804,7 @@ mwifiex_cmd_timeout_func(unsigned long function_context) | |||
805 | { | 804 | { |
806 | struct mwifiex_adapter *adapter = | 805 | struct mwifiex_adapter *adapter = |
807 | (struct mwifiex_adapter *) function_context; | 806 | (struct mwifiex_adapter *) function_context; |
808 | struct cmd_ctrl_node *cmd_node = NULL; | 807 | struct cmd_ctrl_node *cmd_node; |
809 | struct timeval tstamp; | 808 | struct timeval tstamp; |
810 | 809 | ||
811 | adapter->num_cmd_timeout++; | 810 | adapter->num_cmd_timeout++; |
@@ -877,7 +876,7 @@ mwifiex_cmd_timeout_func(unsigned long function_context) | |||
877 | void | 876 | void |
878 | mwifiex_cancel_all_pending_cmd(struct mwifiex_adapter *adapter) | 877 | mwifiex_cancel_all_pending_cmd(struct mwifiex_adapter *adapter) |
879 | { | 878 | { |
880 | struct cmd_ctrl_node *cmd_node = NULL, *tmp_node = NULL; | 879 | struct cmd_ctrl_node *cmd_node = NULL, *tmp_node; |
881 | unsigned long flags; | 880 | unsigned long flags; |
882 | 881 | ||
883 | /* Cancel current cmd */ | 882 | /* Cancel current cmd */ |
@@ -1160,7 +1159,7 @@ int mwifiex_cmd_enh_power_mode(struct mwifiex_private *priv, | |||
1160 | { | 1159 | { |
1161 | struct host_cmd_ds_802_11_ps_mode_enh *psmode_enh = | 1160 | struct host_cmd_ds_802_11_ps_mode_enh *psmode_enh = |
1162 | &cmd->params.psmode_enh; | 1161 | &cmd->params.psmode_enh; |
1163 | u8 *tlv = NULL; | 1162 | u8 *tlv; |
1164 | u16 cmd_size = 0; | 1163 | u16 cmd_size = 0; |
1165 | 1164 | ||
1166 | cmd->command = cpu_to_le16(HostCmd_CMD_802_11_PS_MODE_ENH); | 1165 | cmd->command = cpu_to_le16(HostCmd_CMD_802_11_PS_MODE_ENH); |