Prechádzať zdrojové kódy

qcacld-3.0: Reject TDLS management frames during nss switch

qcacld-2.0 to qcacld-3.0 propagation

When TDLS antenna switch is in progress, only TDLS teardown frame
is allowed to go to firmware and all other TDLS management frames
need to be blocked to avoid unpredictable behavior in the system.
This change allow TDLS teardown frame and reject all
other management frames.

Change-Id: I5775776af376db0d4502df631ccb92e802354c11
CRs-Fixed: 968225
Archana Ramachandran 9 rokov pred
rodič
commit
7ba24ffc9e

+ 6 - 0
core/hdd/src/wlan_hdd_assoc.c

@@ -3367,6 +3367,12 @@ hdd_roam_tdls_status_update_handler(hdd_adapter_t *pAdapter,
 			break;
 			break;
 		}
 		}
 
 
+		if (pHddCtx->tdls_nss_switch_in_progress) {
+			hdd_err("TDLS antenna switch is in progress, ignore SHOULD_DISCOVER");
+			status = QDF_STATUS_SUCCESS;
+			break;
+		}
+
 		curr_peer =
 		curr_peer =
 			wlan_hdd_tdls_get_peer(pAdapter,
 			wlan_hdd_tdls_get_peer(pAdapter,
 					       pRoamInfo->peerMac.bytes,
 					       pRoamInfo->peerMac.bytes,

+ 4 - 0
core/hdd/src/wlan_hdd_tdls.c

@@ -3955,6 +3955,10 @@ static int __wlan_hdd_cfg80211_tdls_mgmt(struct wiphy *wiphy,
 				  " TDLS mode is disabled. action %d declined.",
 				  " TDLS mode is disabled. action %d declined.",
 				  __func__, MAC_ADDR_ARRAY(peer), action_code);
 				  __func__, MAC_ADDR_ARRAY(peer), action_code);
 			return -ENOTSUPP;
 			return -ENOTSUPP;
+		} else if (pHddCtx->tdls_nss_switch_in_progress) {
+			hdd_err("TDLS antenna switch in progress, action %d declined for "
+				MAC_ADDRESS_STR, action_code, MAC_ADDR_ARRAY(peer));
+			return -EAGAIN;
 		}
 		}
 	}
 	}