[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)