wlan: Decrement pending mgmt packet count properly.
The management packet might not be posted to the LIM,
due to various reasons, in this case the
pMac->sys.gSysBbtPendingMgmtCount is not decremented.
Thus pMac->sys.gSysBbtPendingMgmtCount keeps on increasing and
result into dropping of management packets.
To resolve decrement pMac->sys.gSysBbtPendingMgmtCount if the
packet is not posted to the LIM.
CRs-Fixed: 806697
Change-Id: Ib7b05a489b738393bdc675264c975a7deae45ae4
diff --git a/CORE/MAC/src/pe/lim/limApi.c b/CORE/MAC/src/pe/lim/limApi.c
index 29f6e47..2f52019 100644
--- a/CORE/MAC/src/pe/lim/limApi.c
+++ b/CORE/MAC/src/pe/lim/limApi.c
@@ -1450,6 +1450,11 @@
mHdr->fc.subType ))
{
vos_pkt_return_packet(pVosPkt);
+
+ /* Decrement gSysBbtPendingMgmtCount if packet
+ * is dropped before posting to LIM
+ */
+ limDecrementPendingMgmtCount(pMac);
limLog( pMac, LOGW,
FL ( "sysBbtProcessMessageCore failed to process SIR_BB_XPORT_MGMT_MSG" ));
return VOS_STATUS_E_FAILURE;
diff --git a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
index a8e67e0..a140f95 100644
--- a/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
+++ b/CORE/MAC/src/pe/lim/limProcessMessageQueue.c
@@ -1260,17 +1260,6 @@
return match;
}
-void limDecrementPendingMgmtCount (tpAniSirGlobal pMac)
-{
- if( pMac->sys.gSysBbtPendingMgmtCount )
- {
- vos_spin_lock_acquire( &pMac->sys.lock );
- pMac->sys.gSysBbtPendingMgmtCount--;
- vos_spin_lock_release( &pMac->sys.lock );
- }
- else
- limLog(pMac, LOGW, FL("Pending Management count going negative"));
-}
/**
* limProcessMessages
*
diff --git a/CORE/MAC/src/pe/lim/limUtils.c b/CORE/MAC/src/pe/lim/limUtils.c
index b712a91..a10d23a 100644
--- a/CORE/MAC/src/pe/lim/limUtils.c
+++ b/CORE/MAC/src/pe/lim/limUtils.c
@@ -8422,3 +8422,15 @@
limSysProcessMmhMsgApi(pMac, &msg, ePROT);
return;
}
+
+void limDecrementPendingMgmtCount (tpAniSirGlobal pMac)
+{
+ if( pMac->sys.gSysBbtPendingMgmtCount )
+ {
+ vos_spin_lock_acquire( &pMac->sys.lock );
+ pMac->sys.gSysBbtPendingMgmtCount--;
+ vos_spin_lock_release( &pMac->sys.lock );
+ }
+ else
+ limLog(pMac, LOGW, FL("Pending Management count going negative"));
+}
diff --git a/CORE/MAC/src/pe/lim/limUtils.h b/CORE/MAC/src/pe/lim/limUtils.h
index 9d2eff2..e550ba5 100644
--- a/CORE/MAC/src/pe/lim/limUtils.h
+++ b/CORE/MAC/src/pe/lim/limUtils.h
@@ -566,4 +566,6 @@
extern tANI_U32 limGetMaxRateFlags(tpDphHashNode pStaDs,
tpPESession psessionEntry);
+
+void limDecrementPendingMgmtCount (tpAniSirGlobal pMac);
#endif /* __LIM_UTILS_H */