Send DELBA frame with proper reason code.
When BTC event received, Send DELBA with reason code 39
(Requested from peer STA due to timeout) to disable the
aggregation.
Change-Id: Ife7030805d09a8411592e1b95981ba4fa474eb1b
CRs-Fixed: 687791
diff --git a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
index f590573..9fe17d5 100644
--- a/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
+++ b/CORE/MAC/src/pe/lim/limProcessSmeReqMessages.c
@@ -2330,7 +2330,8 @@
* is lost upon disassociation and reassociation.
*/
- limDeleteBASessions(pMac, psessionEntry, BA_BOTH_DIRECTIONS);
+ limDeleteBASessions(pMac, psessionEntry, BA_BOTH_DIRECTIONS,
+ eSIR_MAC_UNSPEC_FAILURE_REASON);
pMlmReassocReq->listenInterval = (tANI_U16) val;
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index 05f28a2..2e2b0e7 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -5618,7 +5618,7 @@
void
limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry,
- tANI_U32 baDirection)
+ tANI_U32 baDirection, tSirMacReasonCodes baReasonCode)
{
tANI_U32 i;
tANI_U8 tid;
@@ -5646,14 +5646,14 @@
(baDirection & BA_INITIATOR))
{
limPostMlmDelBAReq(pMac, pSta, eBA_INITIATOR, tid,
- eSIR_MAC_UNSPEC_FAILURE_REASON,
+ baReasonCode,
pSessionEntry);
}
if ((eBA_ENABLE == pSta->tcCfg[tid].fUseBARx) &&
(baDirection & BA_RECIPIENT))
{
limPostMlmDelBAReq(pMac, pSta, eBA_RECIPIENT, tid,
- eSIR_MAC_UNSPEC_FAILURE_REASON,
+ baReasonCode,
pSessionEntry);
}
}
@@ -5671,14 +5671,14 @@
(baDirection & BA_INITIATOR))
{
limPostMlmDelBAReq(pMac, pSta, eBA_INITIATOR, tid,
- eSIR_MAC_UNSPEC_FAILURE_REASON,
+ baReasonCode,
pSessionEntry);
}
if ((eBA_ENABLE == pSta->tcCfg[tid].fUseBARx) &&
(baDirection & BA_RECIPIENT))
{
limPostMlmDelBAReq(pMac, pSta, eBA_RECIPIENT, tid,
- eSIR_MAC_UNSPEC_FAILURE_REASON,
+ baReasonCode,
pSessionEntry);
}
}
@@ -5704,7 +5704,8 @@
pSessionEntry = peFindSessionBySessionId(pMac, i);
if (pSessionEntry)
{
- limDeleteBASessions(pMac, pSessionEntry, BA_BOTH_DIRECTIONS);
+ limDeleteBASessions(pMac, pSessionEntry, BA_BOTH_DIRECTIONS,
+ eSIR_MAC_UNSPEC_FAILURE_REASON);
}
}
}
@@ -5727,7 +5728,8 @@
{
PELOGW(limLog(pMac, LOGW,
"Deleting the BA for session %d as host got BTC event", sessionId);)
- limDeleteBASessions(pMac, pSessionEntry, BA_RECIPIENT);
+ limDeleteBASessions(pMac, pSessionEntry, BA_RECIPIENT,
+ eSIR_MAC_PEER_TIMEDOUT_REASON);
}
}
diff --git a/CORE/MAC/src/pe/lim/limUtils.h b/CORE/MAC/src/pe/lim/limUtils.h
index f2c95cc..7b9912a 100644
--- a/CORE/MAC/src/pe/lim/limUtils.h
+++ b/CORE/MAC/src/pe/lim/limUtils.h
@@ -350,7 +350,8 @@
void limDeleteStaContext(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
void limProcessAddBaInd(tpAniSirGlobal pMac, tpSirMsgQ limMsg);
-void limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry, tANI_U32 baDirection);
+void limDeleteBASessions(tpAniSirGlobal pMac, tpPESession pSessionEntry,
+ tANI_U32 baDirection, tSirMacReasonCodes baReasonCode);
void limDelPerBssBASessionsBtc(tpAniSirGlobal pMac);
void limDelAllBASessions(tpAniSirGlobal pMac);
void limDeleteDialogueTokenList(tpAniSirGlobal pMac);