summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaochang Duan <xduan@qca.qualcomm.com>2014-01-17 11:05:46 -0800
committerPrakash Dhavali <pdhavali@qca.qualcomm.com>2014-02-04 00:02:44 -0800
commit69f1cdc9fe123bf79a78bae2cdff0dad1de32e48 (patch)
tree6620bfe2aef8625372631380eb627ebac29833ee
parent0696af09d561e11c9dd36390d35b27f8575d0aab (diff)
wlan: fix "invalid STA id" when ROME IBSS reaches peer number capacity
In IBSS mode on Rome, occasionally "invalid STA id" error was seen when the number of connected peers gets close to the maximum supported peer number. The error was caused by invalid assoc ID generated out of the valid boundary and was fixed here. Also when a peer leaves IBSS, DEL_STA_RSP was sent to LIM, while it did not expects the response. In fact LIM clearly indicates this in the DEL_STA request sent to WMA. This is fixed by adding condition check to prevent the unnecessary response transmission from happening. Change-Id: Ic5cb1592e48f6ffbc656575bcb5e551c0a2d4ced CRs-Fixed: 598420
-rw-r--r--CORE/MAC/src/pe/lim/limAIDmgmt.c8
-rw-r--r--CORE/SERVICES/WMA/wma.c8
2 files changed, 13 insertions, 3 deletions
diff --git a/CORE/MAC/src/pe/lim/limAIDmgmt.c b/CORE/MAC/src/pe/lim/limAIDmgmt.c
index aa1e55e05e83..814df1dee01e 100644
--- a/CORE/MAC/src/pe/lim/limAIDmgmt.c
+++ b/CORE/MAC/src/pe/lim/limAIDmgmt.c
@@ -86,6 +86,14 @@ limInitPeerIdxpool(tpAniSirGlobal pMac,tpPESession pSessionEntry)
}
else
#endif
+#ifdef QCA_IBSS_SUPPORT
+ if (pSessionEntry->limSystemRole == eLIM_STA_IN_IBSS_ROLE)
+ {
+ pSessionEntry->freePeerIdxHead=LIM_START_PEER_IDX;
+ maxAssocSta = pMac->lim.gLimIbssStaLimit;
+ }
+ else
+#endif
{
pSessionEntry->freePeerIdxHead=LIM_START_PEER_IDX;
}
diff --git a/CORE/SERVICES/WMA/wma.c b/CORE/SERVICES/WMA/wma.c
index 8566540fc311..7e3fc61298b5 100644
--- a/CORE/SERVICES/WMA/wma.c
+++ b/CORE/SERVICES/WMA/wma.c
@@ -8969,9 +8969,11 @@ static void wma_delete_sta_req_ap_mode(tp_wma_handle wma,
del_sta->status = VOS_STATUS_SUCCESS;
send_del_rsp:
- WMA_LOGD("%s: Sending del rsp to umac (status: %d)\n",
- __func__, del_sta->status);
- wma_send_msg(wma, WDA_DELETE_STA_RSP, (void *)del_sta, 0);
+ if (del_sta->respReqd) {
+ WMA_LOGD("%s: Sending del rsp to umac (status: %d)\n",
+ __func__, del_sta->status);
+ wma_send_msg(wma, WDA_DELETE_STA_RSP, (void *)del_sta, 0);
+ }
}
#ifdef FEATURE_WLAN_TDLS