提交 1845bd3a 编写于 作者: A Amitkumar Karwar 提交者: John W. Linville

mwifiex: scan command preparation failure handling

When scan request is received, scan commands are prepared and
queued into scan pending queue. There is a corner case when
command nodes are full. So we stop queueing further scan
commands and return an error. This patch makes sure that
currently queued commands in scan pending queue are also freed
in this case.
Signed-off-by: NAmitkumar Karwar <akarwar@marvell.com>
Signed-off-by: NBing Zhao <bzhao@marvell.com>
Signed-off-by: NJohn W. Linville <linville@tuxdriver.com>
上级 9d2ffb81
...@@ -591,10 +591,12 @@ mwifiex_scan_channel_list(struct mwifiex_private *priv, ...@@ -591,10 +591,12 @@ mwifiex_scan_channel_list(struct mwifiex_private *priv,
*chan_tlv_out, *chan_tlv_out,
struct mwifiex_chan_scan_param_set *scan_chan_list) struct mwifiex_chan_scan_param_set *scan_chan_list)
{ {
struct mwifiex_adapter *adapter = priv->adapter;
int ret = 0; int ret = 0;
struct mwifiex_chan_scan_param_set *tmp_chan_list; struct mwifiex_chan_scan_param_set *tmp_chan_list;
struct mwifiex_chan_scan_param_set *start_chan; struct mwifiex_chan_scan_param_set *start_chan;
struct cmd_ctrl_node *cmd_node, *tmp_node;
unsigned long flags;
u32 tlv_idx, rates_size, cmd_no; u32 tlv_idx, rates_size, cmd_no;
u32 total_scan_time; u32 total_scan_time;
u32 done_early; u32 done_early;
...@@ -748,8 +750,19 @@ mwifiex_scan_channel_list(struct mwifiex_private *priv, ...@@ -748,8 +750,19 @@ mwifiex_scan_channel_list(struct mwifiex_private *priv,
scan_cfg_out->tlv_buf_len -= scan_cfg_out->tlv_buf_len -=
sizeof(struct mwifiex_ie_types_header) + rates_size; sizeof(struct mwifiex_ie_types_header) + rates_size;
if (ret) if (ret) {
spin_lock_irqsave(&adapter->scan_pending_q_lock, flags);
list_for_each_entry_safe(cmd_node, tmp_node,
&adapter->scan_pending_q,
list) {
list_del(&cmd_node->list);
cmd_node->wait_q_enabled = false;
mwifiex_insert_cmd_to_free_q(adapter, cmd_node);
}
spin_unlock_irqrestore(&adapter->scan_pending_q_lock,
flags);
break; break;
}
} }
if (ret) if (ret)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册