瀏覽代碼

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 年之前
父節點
當前提交
d7b5479bb5
共有 3 個文件被更改,包括 1 次插入54 次删除
  1. 1 5
      core/sme/src/csr/csr_api_roam.c
  2. 0 47
      core/sme/src/csr/csr_api_scan.c
  3. 0 2
      core/sme/src/csr/csr_inside_api.h

+ 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;
 	case eWNI_SME_DEAUTH_RSP:
 		/* 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,
 						(struct deauth_rsp *) pSmeRsp);
-		}
 		break;
 	case eWNI_SME_START_BSS_RSP:
 		/* 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;
 }
-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)
 {

+ 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,
 				   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. */
 /* Typically it will be true in case of Join or user initiated ioctl */