|
@@ -351,6 +351,7 @@ mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta,
|
|
|
new_node->init_win = seq_num;
|
|
|
new_node->flags = 0;
|
|
|
|
|
|
+ spin_lock_irqsave(&priv->sta_list_spinlock, flags);
|
|
|
if (mwifiex_queuing_ra_based(priv)) {
|
|
|
dev_dbg(priv->adapter->dev,
|
|
|
"info: AP/ADHOC:last_seq=%d start_win=%d\n",
|
|
@@ -367,6 +368,7 @@ mwifiex_11n_create_rx_reorder_tbl(struct mwifiex_private *priv, u8 *ta,
|
|
|
else
|
|
|
last_seq = priv->rx_seq[tid];
|
|
|
}
|
|
|
+ spin_unlock_irqrestore(&priv->sta_list_spinlock, flags);
|
|
|
|
|
|
if (last_seq != MWIFIEX_DEF_11N_RX_SEQ_NUM &&
|
|
|
last_seq >= new_node->start_win) {
|
|
@@ -455,22 +457,26 @@ int mwifiex_cmd_11n_addba_rsp_gen(struct mwifiex_private *priv,
|
|
|
u32 rx_win_size = priv->add_ba_param.rx_win_size;
|
|
|
u8 tid;
|
|
|
int win_size;
|
|
|
+ unsigned long flags;
|
|
|
uint16_t block_ack_param_set;
|
|
|
|
|
|
if ((GET_BSS_ROLE(priv) == MWIFIEX_BSS_ROLE_STA) &&
|
|
|
ISSUPP_TDLS_ENABLED(priv->adapter->fw_cap_info) &&
|
|
|
priv->adapter->is_hw_11ac_capable &&
|
|
|
memcmp(priv->cfg_bssid, cmd_addba_req->peer_mac_addr, ETH_ALEN)) {
|
|
|
+ spin_lock_irqsave(&priv->sta_list_spinlock, flags);
|
|
|
sta_ptr = mwifiex_get_sta_entry(priv,
|
|
|
cmd_addba_req->peer_mac_addr);
|
|
|
if (!sta_ptr) {
|
|
|
dev_warn(priv->adapter->dev,
|
|
|
"BA setup with unknown TDLS peer %pM!\n",
|
|
|
cmd_addba_req->peer_mac_addr);
|
|
|
+ spin_unlock_irqrestore(&priv->sta_list_spinlock, flags);
|
|
|
return -1;
|
|
|
}
|
|
|
if (sta_ptr->is_11ac_enabled)
|
|
|
rx_win_size = MWIFIEX_11AC_STA_AMPDU_DEF_RXWINSIZE;
|
|
|
+ spin_unlock_irqrestore(&priv->sta_list_spinlock, flags);
|
|
|
}
|
|
|
|
|
|
cmd->command = cpu_to_le16(HostCmd_CMD_11N_ADDBA_RSP);
|