Browse Source

qcacld-3.0: Don't remove pending cmd when NB disconnect complete

In case eCsrForcedDeauthSta from NB is completed, eWNI_SME_DEAUTH_RSP
will remove all pending eSmeCommandWmStatusChange type commands from
serialization, this will cause other peers which deauth request is
from SB are not deleted from LIM and remain in deleting progress.

Fix is to don't remove pending eSmeCommandWmStatusChange type
commands when NB disconnect complete from eWNI_SME_DEAUTH_RSP.

Change-Id: I8e2248463fb7fd97343d411d46b1cae08dc4cb25
CRs-Fixed: 2652486
hqu 5 năm trước cách đây
mục cha
commit
d7b5479bb5

+ 1 - 5
core/sme/src/csr/csr_api_roam.c

@@ -10643,13 +10643,9 @@ void csr_roaming_state_msg_processor(struct mac_context *mac, void *msg_buf)
 		break;
 		break;
 	case eWNI_SME_DEAUTH_RSP:
 	case eWNI_SME_DEAUTH_RSP:
 		/* or the Deauthentication response message... */
 		/* or the Deauthentication response message... */
-		if (CSR_IS_ROAM_SUBSTATE_DEAUTH_REQ(mac, pSmeRsp->vdev_id)) {
-			csr_remove_nonscan_cmd_from_pending_list(mac,
-					pSmeRsp->vdev_id,
-					eSmeCommandWmStatusChange);
+		if (CSR_IS_ROAM_SUBSTATE_DEAUTH_REQ(mac, pSmeRsp->vdev_id))
 			csr_roam_roaming_state_deauth_rsp_processor(mac,
 			csr_roam_roaming_state_deauth_rsp_processor(mac,
 						(struct deauth_rsp *) pSmeRsp);
 						(struct deauth_rsp *) pSmeRsp);
-		}
 		break;
 		break;
 	case eWNI_SME_START_BSS_RSP:
 	case eWNI_SME_START_BSS_RSP:
 		/* or the Start BSS response message... */
 		/* or the Start BSS response message... */

+ 0 - 47
core/sme/src/csr/csr_api_scan.c

@@ -1686,53 +1686,6 @@ QDF_STATUS csr_scan_abort_mac_scan(struct mac_context *mac_ctx,
 
 
 	return status;
 	return status;
 }
 }
-QDF_STATUS csr_remove_nonscan_cmd_from_pending_list(struct mac_context *mac,
-						    uint8_t vdev_id,
-						    eSmeCommandType commandType)
-{
-	tDblLinkList localList;
-	tListElem *pEntry;
-	tSmeCmd *pCommand;
-	tListElem *pEntryToRemove;
-	QDF_STATUS status = QDF_STATUS_E_FAILURE;
-
-	qdf_mem_zero(&localList, sizeof(tDblLinkList));
-	if (!QDF_IS_STATUS_SUCCESS(csr_ll_open(&localList))) {
-		sme_err("failed to open list");
-		return status;
-	}
-
-	pEntry = csr_nonscan_pending_ll_peek_head(mac, LL_ACCESS_NOLOCK);
-
-	/*
-	 * Have to make sure we don't loop back to the head of the list,
-	 * which will happen if the entry is NOT on the list
-	 */
-	while (pEntry) {
-		pEntryToRemove = pEntry;
-		pEntry = csr_nonscan_pending_ll_next(mac,
-					pEntry, LL_ACCESS_NOLOCK);
-		pCommand = GET_BASE_ADDR(pEntryToRemove, tSmeCmd, Link);
-
-		if ((pCommand->command == commandType) &&
-		    (pCommand->vdev_id == vdev_id)) {
-			/* Insert to localList and remove later */
-			csr_ll_insert_tail(&localList, pEntryToRemove,
-					   LL_ACCESS_NOLOCK);
-			status = QDF_STATUS_SUCCESS;
-		}
-	}
-
-
-	while ((pEntry = csr_ll_remove_head(&localList, LL_ACCESS_NOLOCK))) {
-		pCommand = GET_BASE_ADDR(pEntry, tSmeCmd, Link);
-		sme_debug("Sending abort for command ID %d", vdev_id);
-		csr_release_command(mac, pCommand);
-	}
-
-	csr_ll_close(&localList);
-	return status;
-}
 
 
 bool csr_roam_is_valid_channel(struct mac_context *mac, uint32_t ch_freq)
 bool csr_roam_is_valid_channel(struct mac_context *mac, uint32_t ch_freq)
 {
 {

+ 0 - 2
core/sme/src/csr/csr_inside_api.h

@@ -166,8 +166,6 @@ QDF_STATUS csr_scan_for_ssid(struct mac_context *mac, uint32_t sessionId,
  */
  */
 QDF_STATUS csr_scan_abort_mac_scan(struct mac_context *mac, uint32_t vdev_id,
 QDF_STATUS csr_scan_abort_mac_scan(struct mac_context *mac, uint32_t vdev_id,
 				   uint32_t scan_id);
 				   uint32_t scan_id);
-QDF_STATUS csr_remove_nonscan_cmd_from_pending_list(struct mac_context *mac,
-			uint8_t sessionId, eSmeCommandType commandType);
 
 
 /* If fForce is true we will save the new String that is learn't. */
 /* If fForce is true we will save the new String that is learn't. */
 /* Typically it will be true in case of Join or user initiated ioctl */
 /* Typically it will be true in case of Join or user initiated ioctl */