[DTV00857290][[DTV][Coverity Scanned Code Defect] 15367: Out-of-bounds write]
[Description]
Fix coverity defects under mgmt/
i. Fix "Dereference null return value" issues.
ii. Remove do-while loop style.
[Related CIDs]
CID2222649, CID2222648, CID2222647, CID2222646, CID2222645,
CID361510, CID15464
Conflicts:
mgmt/p2p_role_fsm.c
Change-Id: I1d7f2d86cee69d2afef60c8ad585d77b59603214
CR-Id: DTV00857290
Signed-off-by: Awk Jiang <awk.jiang@mediatek.com>
Feature: misc
(cherry picked from commit b907cd87c9bba8d4a0541bb79cf6b5203f0da6bc)
diff --git a/mgmt/cnm.c b/mgmt/cnm.c
index d2efcb4..774babc 100644
--- a/mgmt/cnm.c
+++ b/mgmt/cnm.c
@@ -424,6 +424,11 @@
prP2pRddDetMsg = (P_MSG_P2P_RADAR_DETECT_T) cnmMemAlloc(prAdapter,
RAM_TYPE_MSG, sizeof(*prP2pRddDetMsg));
+ if (!prP2pRddDetMsg) {
+ DBGLOG(CNM, ERROR, "cnmMemAlloc for prP2pRddDetMsg failed!\n");
+ return;
+ }
+
prP2pRddDetMsg->rMsgHdr.eMsgId = MID_CNM_P2P_RADAR_DETECT;
for (ucBssIndex = 0; ucBssIndex < BSS_INFO_NUM; ucBssIndex++) {
@@ -471,6 +476,11 @@
prP2pCsaDoneMsg = (P_MSG_P2P_CSA_DONE_T) cnmMemAlloc(prAdapter,
RAM_TYPE_MSG, sizeof(*prP2pCsaDoneMsg));
+ if (!prP2pCsaDoneMsg) {
+ DBGLOG(CNM, ERROR, "cnmMemAlloc for prP2pCsaDoneMsg failed!\n");
+ return;
+ }
+
prAdapter->rWifiVar.fgCsaInProgress = FALSE;
prP2pCsaDoneMsg->rMsgHdr.eMsgId = MID_CNM_P2P_CSA_DONE;
diff --git a/mgmt/p2p_func.c b/mgmt/p2p_func.c
index 5e5be73..a1e013d 100644
--- a/mgmt/p2p_func.c
+++ b/mgmt/p2p_func.c
@@ -1030,52 +1030,51 @@
DEBUGFUNC("p2pFuncStartRdd()");
- do {
- ASSERT_BREAK((prAdapter != NULL));
- prP2pRoleFsmInfo = P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter,
- prAdapter->aprBssInfo[ucBssIdx]->u4PrivateData);
+ prP2pRoleFsmInfo = P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter,
+ prAdapter->aprBssInfo[ucBssIdx]->u4PrivateData);
- ucReqChnlNum = prP2pRoleFsmInfo->rChnlReqInfo.ucReqChnlNum;
+ ucReqChnlNum = prP2pRoleFsmInfo->rChnlReqInfo.ucReqChnlNum;
- prCmdRddOnOffCtrl = (P_CMD_RDD_ON_OFF_CTRL_T) cnmMemAlloc(prAdapter, RAM_TYPE_MSG,
- sizeof(*prCmdRddOnOffCtrl));
+ prCmdRddOnOffCtrl = (P_CMD_RDD_ON_OFF_CTRL_T) cnmMemAlloc(prAdapter, RAM_TYPE_MSG,
+ sizeof(*prCmdRddOnOffCtrl));
- ASSERT_BREAK((prCmdRddOnOffCtrl != NULL));
+ if (!prCmdRddOnOffCtrl) {
+ DBGLOG(P2P, ERROR, "cnmMemAlloc for prCmdRddOnOffCtrl failed!\n");
+ return;
+ }
- prCmdRddOnOffCtrl->ucDfsCtrl = RDD_START;
+ prCmdRddOnOffCtrl->ucDfsCtrl = RDD_START;
- prCmdRddOnOffCtrl->ucRddIdx = prAdapter->aprBssInfo[ucBssIdx]->eDBDCBand;
+ prCmdRddOnOffCtrl->ucRddIdx = prAdapter->aprBssInfo[ucBssIdx]->eDBDCBand;
- if (rlmDomainGetDfsRegion() == NL80211_DFS_JP) {
- if (ucReqChnlNum >= 52 && ucReqChnlNum <= 64)
- prCmdRddOnOffCtrl->ucRegDomain = REG_JP_53;
- else if (ucReqChnlNum >= 100 && ucReqChnlNum <= 140)
- prCmdRddOnOffCtrl->ucRegDomain = REG_JP_56;
- } else {
- prCmdRddOnOffCtrl->ucRegDomain = REG_DEFAULT;
- }
+ if (rlmDomainGetDfsRegion() == NL80211_DFS_JP) {
+ if (ucReqChnlNum >= 52 && ucReqChnlNum <= 64)
+ prCmdRddOnOffCtrl->ucRegDomain = REG_JP_53;
+ else if (ucReqChnlNum >= 100 && ucReqChnlNum <= 140)
+ prCmdRddOnOffCtrl->ucRegDomain = REG_JP_56;
+ } else {
+ prCmdRddOnOffCtrl->ucRegDomain = REG_DEFAULT;
+ }
- if (prCmdRddOnOffCtrl->ucRddIdx)
- prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_1;
- else
- prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_0;
+ if (prCmdRddOnOffCtrl->ucRddIdx)
+ prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_1;
+ else
+ prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_0;
- DBGLOG(P2P, INFO, "p2pFuncStartRdd: Start Radar detection - DFS ctrl: %d, RDD index: %d\n",
- prCmdRddOnOffCtrl->ucDfsCtrl, prCmdRddOnOffCtrl->ucRddIdx);
+ DBGLOG(P2P, INFO, "p2pFuncStartRdd: Start Radar detection - DFS ctrl: %d, RDD index: %d\n",
+ prCmdRddOnOffCtrl->ucDfsCtrl, prCmdRddOnOffCtrl->ucRddIdx);
- wlanSendSetQueryCmd(prAdapter,
- CMD_ID_RDD_ON_OFF_CTRL,
- TRUE,
- FALSE,
- FALSE,
- NULL,
- NULL,
- sizeof(*prCmdRddOnOffCtrl), (PUINT_8) prCmdRddOnOffCtrl, NULL, 0);
+ wlanSendSetQueryCmd(prAdapter,
+ CMD_ID_RDD_ON_OFF_CTRL,
+ TRUE,
+ FALSE,
+ FALSE,
+ NULL,
+ NULL,
+ sizeof(*prCmdRddOnOffCtrl), (PUINT_8) prCmdRddOnOffCtrl, NULL, 0);
- cnmMemFree(prAdapter, prCmdRddOnOffCtrl);
-
- } while (FALSE);
+ cnmMemFree(prAdapter, prCmdRddOnOffCtrl);
} /* p2pFuncStartRdd */
VOID p2pFuncStopRdd(IN P_ADAPTER_T prAdapter, IN UINT_8 ucBssIdx)
@@ -1084,38 +1083,37 @@
DEBUGFUNC("p2pFuncStopRdd()");
- do {
- ASSERT_BREAK((prAdapter != NULL));
+ prCmdRddOnOffCtrl = (P_CMD_RDD_ON_OFF_CTRL_T) cnmMemAlloc(prAdapter, RAM_TYPE_MSG,
+ sizeof(*prCmdRddOnOffCtrl));
- prCmdRddOnOffCtrl = (P_CMD_RDD_ON_OFF_CTRL_T) cnmMemAlloc(prAdapter, RAM_TYPE_MSG,
- sizeof(*prCmdRddOnOffCtrl));
+ if (!prCmdRddOnOffCtrl) {
+ DBGLOG(P2P, ERROR, "cnmMemAlloc for prCmdRddOnOffCtrl failed!\n");
+ return;
+ }
- ASSERT_BREAK((prCmdRddOnOffCtrl != NULL));
+ prCmdRddOnOffCtrl->ucDfsCtrl = RDD_STOP;
- prCmdRddOnOffCtrl->ucDfsCtrl = RDD_STOP;
+ prCmdRddOnOffCtrl->ucRddIdx = prAdapter->aprBssInfo[ucBssIdx]->eDBDCBand;
- prCmdRddOnOffCtrl->ucRddIdx = prAdapter->aprBssInfo[ucBssIdx]->eDBDCBand;
+ if (prCmdRddOnOffCtrl->ucRddIdx)
+ prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_1;
+ else
+ prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_0;
- if (prCmdRddOnOffCtrl->ucRddIdx)
- prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_1;
- else
- prCmdRddOnOffCtrl->ucRddInSel = RDD_IN_SEL_0;
+ DBGLOG(P2P, INFO, "p2pFuncStopRdd: Stop Radar detection - DFS ctrl: %d, RDD index: %d\n",
+ prCmdRddOnOffCtrl->ucDfsCtrl, prCmdRddOnOffCtrl->ucRddIdx);
- DBGLOG(P2P, INFO, "p2pFuncStopRdd: Stop Radar detection - DFS ctrl: %d, RDD index: %d\n",
- prCmdRddOnOffCtrl->ucDfsCtrl, prCmdRddOnOffCtrl->ucRddIdx);
+ wlanSendSetQueryCmd(prAdapter,
+ CMD_ID_RDD_ON_OFF_CTRL,
+ TRUE,
+ FALSE,
+ FALSE,
+ NULL,
+ NULL,
+ sizeof(*prCmdRddOnOffCtrl), (PUINT_8) prCmdRddOnOffCtrl, NULL, 0);
- wlanSendSetQueryCmd(prAdapter,
- CMD_ID_RDD_ON_OFF_CTRL,
- TRUE,
- FALSE,
- FALSE,
- NULL,
- NULL,
- sizeof(*prCmdRddOnOffCtrl), (PUINT_8) prCmdRddOnOffCtrl, NULL, 0);
+ cnmMemFree(prAdapter, prCmdRddOnOffCtrl);
- cnmMemFree(prAdapter, prCmdRddOnOffCtrl);
-
- } while (FALSE);
} /* p2pFuncStopRdd */
VOID p2pFuncDfsSwitchCh(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prBssInfo, IN P2P_CHNL_REQ_INFO_T rP2pChnlReqInfo)
@@ -1127,65 +1125,68 @@
DEBUGFUNC("p2pFuncDfsSwitchCh()");
- do {
- ASSERT_BREAK((prAdapter != NULL) && (prBssInfo != NULL));
+ if (!prBssInfo) {
+ DBGLOG(P2P, ERROR, "prBssInfo shouldn't be NULL!\n");
+ return;
+ }
- /* Setup Channel, Band */
- prBssInfo->ucPrimaryChannel = rP2pChnlReqInfo.ucReqChnlNum;
- prBssInfo->eBand = rP2pChnlReqInfo.eBand;
- prBssInfo->eBssSCO = rP2pChnlReqInfo.eChnlSco;
+ /* Setup Channel, Band */
+ prBssInfo->ucPrimaryChannel = rP2pChnlReqInfo.ucReqChnlNum;
+ prBssInfo->eBand = rP2pChnlReqInfo.eBand;
+ prBssInfo->eBssSCO = rP2pChnlReqInfo.eChnlSco;
- /* Setup channel and bandwidth */
- rlmBssInitForAPandIbss(prAdapter, prBssInfo);
+ /* Setup channel and bandwidth */
+ rlmBssInitForAPandIbss(prAdapter, prBssInfo);
- /* Update Beacon again for network phy type confirmed. */
- bssUpdateBeaconContent(prAdapter, prBssInfo->ucBssIndex);
+ /* Update Beacon again for network phy type confirmed. */
+ bssUpdateBeaconContent(prAdapter, prBssInfo->ucBssIndex);
- /* Reset HW TSF Update Mode and Beacon Mode */
- nicUpdateBss(prAdapter, prBssInfo->ucBssIndex);
+ /* Reset HW TSF Update Mode and Beacon Mode */
+ nicUpdateBss(prAdapter, prBssInfo->ucBssIndex);
- prCmdRddOnOffCtrl = (P_CMD_RDD_ON_OFF_CTRL_T) cnmMemAlloc(prAdapter, RAM_TYPE_MSG,
- sizeof(*prCmdRddOnOffCtrl));
+ prCmdRddOnOffCtrl = (P_CMD_RDD_ON_OFF_CTRL_T) cnmMemAlloc(prAdapter, RAM_TYPE_MSG,
+ sizeof(*prCmdRddOnOffCtrl));
- ASSERT_BREAK((prCmdRddOnOffCtrl != NULL));
+ if (!prCmdRddOnOffCtrl) {
+ DBGLOG(P2P, ERROR, "cnmMemAlloc for prCmdRddOnOffCtrl failed!\n");
+ return;
+ }
- prCmdRddOnOffCtrl->ucDfsCtrl = RDD_START_TXQ;
+ prCmdRddOnOffCtrl->ucDfsCtrl = RDD_START_TXQ;
- DBGLOG(P2P, INFO, "p2pFuncDfsSwitchCh: Start TXQ - DFS ctrl: %.d\n", prCmdRddOnOffCtrl->ucDfsCtrl);
+ DBGLOG(P2P, INFO, "p2pFuncDfsSwitchCh: Start TXQ - DFS ctrl: %.d\n", prCmdRddOnOffCtrl->ucDfsCtrl);
- wlanSendSetQueryCmd(prAdapter,
- CMD_ID_RDD_ON_OFF_CTRL,
- TRUE,
- FALSE,
- FALSE,
- NULL,
- NULL,
- sizeof(*prCmdRddOnOffCtrl), (PUINT_8) prCmdRddOnOffCtrl, NULL, 0);
+ wlanSendSetQueryCmd(prAdapter,
+ CMD_ID_RDD_ON_OFF_CTRL,
+ TRUE,
+ FALSE,
+ FALSE,
+ NULL,
+ NULL,
+ sizeof(*prCmdRddOnOffCtrl), (PUINT_8) prCmdRddOnOffCtrl, NULL, 0);
- cnmMemFree(prAdapter, prCmdRddOnOffCtrl);
+ cnmMemFree(prAdapter, prCmdRddOnOffCtrl);
- prP2pRoleFsmInfo = P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter, prBssInfo->u4PrivateData);
+ prP2pRoleFsmInfo = P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter, prBssInfo->u4PrivateData);
- prGlueInfo = prAdapter->prGlueInfo;
+ prGlueInfo = prAdapter->prGlueInfo;
- DBGLOG(P2P, INFO, "p2pFuncDfsSwitchCh: Update to OS\n");
- cfg80211_ch_switch_notify(prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->prDevHandler,
- prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef);
- DBGLOG(P2P, INFO, "p2pFuncDfsSwitchCh: Update to OS Done\n");
+ DBGLOG(P2P, INFO, "p2pFuncDfsSwitchCh: Update to OS\n");
+ cfg80211_ch_switch_notify(prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->prDevHandler,
+ prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef);
+ DBGLOG(P2P, INFO, "p2pFuncDfsSwitchCh: Update to OS Done\n");
- if (prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef->chan)
- cnmMemFree(prGlueInfo->prAdapter,
- prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef->chan);
+ if (prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef->chan)
+ cnmMemFree(prGlueInfo->prAdapter,
+ prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef->chan);
- prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef->chan = NULL;
+ prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef->chan = NULL;
- if (prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef)
- cnmMemFree(prGlueInfo->prAdapter,
- prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef);
+ if (prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef)
+ cnmMemFree(prGlueInfo->prAdapter,
+ prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef);
- prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef = NULL;
-
- } while (FALSE);
+ prGlueInfo->prP2PInfo[prP2pRoleFsmInfo->ucRoleIndex]->chandef = NULL;
} /* p2pFuncDfsSwitchCh */
BOOLEAN p2pFuncCheckWeatherRadarBand(IN P_P2P_CHNL_REQ_INFO_T prChnlReqInfo)
@@ -3642,31 +3643,30 @@
{
P_STA_RECORD_T prStaRec = (P_STA_RECORD_T) NULL;
- do {
- ASSERT_BREAK((prAdapter != NULL) && (prMsduInfo != NULL));
- prStaRec = cnmGetStaRecByIndex(prAdapter, prMsduInfo->ucStaRecIndex);
+ prStaRec = cnmGetStaRecByIndex(prAdapter, prMsduInfo->ucStaRecIndex);
- if (IS_STA_IN_P2P(prStaRec)) {
- DBGLOG(P2P, TRACE, "Generate NULL P2P IE for Assoc Rsp.\n");
+ if (!prStaRec) {
+ DBGLOG(P2P, ERROR, "prStaRec of ucStaRecIndex %d is NULL!\n",
+ prMsduInfo->ucStaRecIndex);
+ return;
+ }
- p2pFuncGenerateP2P_IE(prAdapter,
- prMsduInfo->ucBssIndex,
- TRUE,
- &prMsduInfo->u2FrameLength,
- prMsduInfo->prPacket,
- 1500,
- txAssocRspAttributesTable,
- sizeof(txAssocRspAttributesTable) / sizeof(APPEND_VAR_ATTRI_ENTRY_T));
- } else {
+ if (IS_STA_IN_P2P(prStaRec)) {
+ DBGLOG(P2P, TRACE, "Generate NULL P2P IE for Assoc Rsp.\n");
- DBGLOG(P2P, TRACE, "Legacy device, no P2P IE.\n");
- }
+ p2pFuncGenerateP2P_IE(prAdapter,
+ prMsduInfo->ucBssIndex,
+ TRUE,
+ &prMsduInfo->u2FrameLength,
+ prMsduInfo->prPacket,
+ 1500,
+ txAssocRspAttributesTable,
+ sizeof(txAssocRspAttributesTable) / sizeof(APPEND_VAR_ATTRI_ENTRY_T));
+ } else {
- } while (FALSE);
-
- return;
-
+ DBGLOG(P2P, TRACE, "Legacy device, no P2P IE.\n");
+ }
} /* p2pFuncGenerateP2p_IEForAssocRsp */
UINT_32
diff --git a/mgmt/p2p_role_fsm.c b/mgmt/p2p_role_fsm.c
index 70535eb..72bd3d3 100644
--- a/mgmt/p2p_role_fsm.c
+++ b/mgmt/p2p_role_fsm.c
@@ -703,109 +703,113 @@
UINT_16 u2ReasonCode = 0;
BOOLEAN fgSendDeauth = FALSE; /* flag to send deauth when rx sta disassc/deauth */
- do {
- ASSERT_BREAK((prAdapter != NULL) && (prSwRfb != NULL));
- if (prStaRec == NULL)
- prStaRec = cnmGetStaRecByIndex(prAdapter, prSwRfb->ucStaRecIdx);
+ if (prStaRec == NULL)
+ prStaRec = cnmGetStaRecByIndex(prAdapter, prSwRfb->ucStaRecIdx);
- prP2pBssInfo = prAdapter->aprBssInfo[prStaRec->ucBssIndex];
+ if (!prStaRec) {
+ DBGLOG(P2P, ERROR, "prStaRec of prSwRfb->ucStaRecIdx %d is NULL!\n",
+ prSwRfb->ucStaRecIdx);
+ return;
+ }
- if (prStaRec->ucStaState == STA_STATE_1)
- break;
+ prP2pBssInfo = prAdapter->aprBssInfo[prStaRec->ucBssIndex];
- DBGLOG(P2P, TRACE, "RX Disassoc\n");
+ if (prStaRec->ucStaState == STA_STATE_1)
+ return;
- switch (prP2pBssInfo->eCurrentOPMode) {
- case OP_MODE_INFRASTRUCTURE:
- if (assocProcessRxDisassocFrame(prAdapter,
- prSwRfb,
- prStaRec->aucMacAddr,
- &prStaRec->u2ReasonCode) == WLAN_STATUS_SUCCESS) {
- P_WLAN_DISASSOC_FRAME_T prDisassocFrame = (P_WLAN_DISASSOC_FRAME_T) prSwRfb->pvHeader;
- UINT_16 u2IELength = 0;
+ DBGLOG(P2P, TRACE, "RX Disassoc\n");
- ASSERT(prP2pBssInfo->prStaRecOfAP == prStaRec);
+ switch (prP2pBssInfo->eCurrentOPMode) {
+ case OP_MODE_INFRASTRUCTURE:
+ if (assocProcessRxDisassocFrame(prAdapter,
+ prSwRfb,
+ prStaRec->aucMacAddr,
+ &prStaRec->u2ReasonCode) == WLAN_STATUS_SUCCESS) {
+ P_WLAN_DISASSOC_FRAME_T prDisassocFrame = (P_WLAN_DISASSOC_FRAME_T) prSwRfb->pvHeader;
+ UINT_16 u2IELength = 0;
- if (prP2pBssInfo->prStaRecOfAP != prStaRec)
- break;
+ ASSERT(prP2pBssInfo->prStaRecOfAP == prStaRec);
- u2IELength = prSwRfb->u2PacketLen - (WLAN_MAC_HEADER_LEN + REASON_CODE_FIELD_LEN);
+ if (prP2pBssInfo->prStaRecOfAP != prStaRec)
+ break;
+
+ u2IELength = prSwRfb->u2PacketLen - (WLAN_MAC_HEADER_LEN + REASON_CODE_FIELD_LEN);
#if CFG_WPS_DISCONNECT || (KERNEL_VERSION(4, 4, 0) <= CFG80211_VERSION_CODE)
- /* Indicate disconnect to Host. */
- kalP2PGCIndicateConnectionStatus(prAdapter->prGlueInfo,
- (UINT_8) prP2pBssInfo->u4PrivateData, NULL,
- prDisassocFrame->aucInfoElem,
- u2IELength, prStaRec->u2ReasonCode,
- WLAN_STATUS_MEDIA_DISCONNECT);
+ /* Indicate disconnect to Host. */
+ kalP2PGCIndicateConnectionStatus(prAdapter->prGlueInfo,
+ (UINT_8) prP2pBssInfo->u4PrivateData, NULL,
+ prDisassocFrame->aucInfoElem,
+ u2IELength, prStaRec->u2ReasonCode,
+ WLAN_STATUS_MEDIA_DISCONNECT);
#else
- /* Indicate disconnect to Host. */
- kalP2PGCIndicateConnectionStatus(prAdapter->prGlueInfo,
- (UINT_8) prP2pBssInfo->u4PrivateData, NULL,
- prDisassocFrame->aucInfoElem,
- u2IELength, prStaRec->u2ReasonCode);
+ /* Indicate disconnect to Host. */
+ kalP2PGCIndicateConnectionStatus(prAdapter->prGlueInfo,
+ (UINT_8) prP2pBssInfo->u4PrivateData, NULL,
+ prDisassocFrame->aucInfoElem,
+ u2IELength, prStaRec->u2ReasonCode);
#endif
- prP2pBssInfo->prStaRecOfAP = NULL;
+ prP2pBssInfo->prStaRecOfAP = NULL;
- p2pFuncDisconnect(prAdapter, prP2pBssInfo, prStaRec, FALSE, prStaRec->u2ReasonCode);
+ p2pFuncDisconnect(prAdapter, prP2pBssInfo, prStaRec, FALSE, prStaRec->u2ReasonCode);
- p2pFuncStopComplete(prAdapter, prP2pBssInfo);
+ p2pFuncStopComplete(prAdapter, prP2pBssInfo);
- SET_NET_PWR_STATE_IDLE(prAdapter, prP2pBssInfo->ucBssIndex);
+ SET_NET_PWR_STATE_IDLE(prAdapter, prP2pBssInfo->ucBssIndex);
- p2pRoleFsmStateTransition(prAdapter,
- P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter,
- prP2pBssInfo->u4PrivateData),
- P2P_ROLE_STATE_IDLE);
- }
- break;
- case OP_MODE_ACCESS_POINT:
- /* Delete client from client list. */
- if (assocProcessRxDisassocFrame(prAdapter,
- prSwRfb,
- prP2pBssInfo->aucBSSID, &u2ReasonCode) == WLAN_STATUS_SUCCESS) {
+ p2pRoleFsmStateTransition(prAdapter,
+ P2P_ROLE_INDEX_2_ROLE_FSM_INFO(prAdapter,
+ prP2pBssInfo->u4PrivateData),
+ P2P_ROLE_STATE_IDLE);
+ }
+ break;
+ case OP_MODE_ACCESS_POINT:
+ /* Delete client from client list. */
+ if (assocProcessRxDisassocFrame(prAdapter,
+ prSwRfb,
+ prP2pBssInfo->aucBSSID, &u2ReasonCode) == WLAN_STATUS_SUCCESS) {
#if CFG_SUPPORT_802_11W
- /* AP PMF */
- if (rsnCheckBipKeyInstalled(prAdapter, prStaRec)) {
- if (HAL_RX_STATUS_IS_CIPHER_MISMATCH(prSwRfb->prRxStatus) ||
- HAL_RX_STATUS_IS_CLM_ERROR(prSwRfb->prRxStatus)) {
- /* if cipher mismatch, or incorrect encrypt, just drop */
- DBGLOG(P2P, ERROR, "Rx disassoc CM/CLM=1\n");
- return;
- }
-
- /* 4.3.3.1 send unprotected deauth reason 6/7 */
- DBGLOG(P2P, INFO, "deauth reason=6\n");
- fgSendDeauth = TRUE;
- u2ReasonCode = REASON_CODE_CLASS_2_ERR;
- prStaRec->rPmfCfg.fgRxDeauthResp = TRUE;
+ /* AP PMF */
+ if (rsnCheckBipKeyInstalled(prAdapter, prStaRec)) {
+ if (HAL_RX_STATUS_IS_CIPHER_MISMATCH(prSwRfb->prRxStatus) ||
+ HAL_RX_STATUS_IS_CLM_ERROR(prSwRfb->prRxStatus)) {
+ /* if cipher mismatch, or incorrect encrypt, just drop */
+ DBGLOG(P2P, ERROR, "Rx disassoc CM/CLM=1\n");
+ return;
}
+
+ /* 4.3.3.1 send unprotected deauth reason 6/7 */
+ DBGLOG(P2P, INFO, "deauth reason=6\n");
+ fgSendDeauth = TRUE;
+ u2ReasonCode = REASON_CODE_CLASS_2_ERR;
+ prStaRec->rPmfCfg.fgRxDeauthResp = TRUE;
+ }
#endif
- if (bssRemoveClient(prAdapter, prP2pBssInfo, prStaRec)) {
- /* Indicate disconnect to Host. */
- p2pFuncDisconnect(prAdapter, prP2pBssInfo, prStaRec, fgSendDeauth,
- u2ReasonCode);
- /* Deactive BSS if PWR is IDLE and no peer */
- if (IS_NET_PWR_STATE_IDLE(prAdapter, prP2pBssInfo->ucBssIndex) &&
- (bssGetClientCount(prAdapter, prP2pBssInfo) == 0)) {
- /* All Peer disconnected !! Stop BSS now!! */
- p2pFuncStopComplete(prAdapter, prP2pBssInfo);
- }
+ if (bssRemoveClient(prAdapter, prP2pBssInfo, prStaRec)) {
+ /* Indicate disconnect to Host. */
+ p2pFuncDisconnect(prAdapter, prP2pBssInfo, prStaRec, fgSendDeauth,
+ u2ReasonCode);
+ /* Deactive BSS if PWR is IDLE and no peer */
+ if (IS_NET_PWR_STATE_IDLE(prAdapter, prP2pBssInfo->ucBssIndex) &&
+ (bssGetClientCount(prAdapter, prP2pBssInfo) == 0)) {
+ /* All Peer disconnected !! Stop BSS now!! */
+ p2pFuncStopComplete(prAdapter, prP2pBssInfo);
}
- }
- break;
- case OP_MODE_P2P_DEVICE:
- default:
- ASSERT(FALSE);
- break;
- }
- } while (FALSE);
+ }
+ }
+ break;
+ case OP_MODE_P2P_DEVICE:
+ default:
+ ASSERT(FALSE);
+ break;
+ }
+
} /* p2pRoleFsmRunEventRxDisassociation */
VOID p2pRoleFsmRunEventBeaconTimeout(IN P_ADAPTER_T prAdapter, IN P_BSS_INFO_T prP2pBssInfo)