瀏覽代碼

qcacld-3.0: Always send assoc req/rsp

Currently driver sends rsn ie request and response as part
of connect results update. Instead, send assoc request and
assoc response always which will anyways have rsn ie request
and response. Supplicant needs assoc response to proceed
for OWE based connection.

Change-Id: I7f022248a6ad2ad835826c94ccdfaccd5d6090bc
CRs-Fixed: 2141429
Padma, Santhosh Kumar 7 年之前
父節點
當前提交
22614a04b6
共有 1 個文件被更改,包括 69 次插入66 次删除
  1. 69 66
      core/hdd/src/wlan_hdd_assoc.c

+ 69 - 66
core/hdd/src/wlan_hdd_assoc.c

@@ -2792,64 +2792,78 @@ hdd_association_completion_handler(struct hdd_adapter *adapter,
 					hdd_ctx->wiphy,
 					bss);
 			}
-			if (roam_info->u.pConnectedProfile->AuthType ==
-			    eCSR_AUTH_TYPE_FT_RSN
-			    || roam_info->u.pConnectedProfile->AuthType ==
-			    eCSR_AUTH_TYPE_FT_RSN_PSK) {
 
-				/* Association Response */
-				pFTAssocRsp =
-					(u8 *) (roam_info->pbFrames +
-						roam_info->nBeaconLength +
-						roam_info->nAssocReqLength);
-				if (pFTAssocRsp != NULL) {
+			/* Association Response */
+			pFTAssocRsp =
+				(u8 *) (roam_info->pbFrames +
+					roam_info->nBeaconLength +
+					roam_info->nAssocReqLength);
+			if (pFTAssocRsp != NULL) {
+				/*
+				 * pFTAssocRsp needs to point to the IEs
+				 */
+				pFTAssocRsp += FT_ASSOC_RSP_IES_OFFSET;
+				hdd_debug("AssocRsp is now at %02x%02x",
+					 (unsigned int)pFTAssocRsp[0],
+					 (unsigned int)pFTAssocRsp[1]);
+				assocRsplen =
+					roam_info->nAssocRspLength -
+					FT_ASSOC_RSP_IES_OFFSET;
+
+				hdd_debug("assocRsplen %d", assocRsplen);
+				hdd_debug("Assoc Rsp IE dump");
+				QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_HDD,
+						   QDF_TRACE_LEVEL_DEBUG,
+						   pFTAssocRsp,
+						   assocRsplen);
+			} else {
+				hdd_debug("AssocRsp is NULL");
+				assocRsplen = 0;
+			}
+
+			/* Association Request */
+			pFTAssocReq = (u8 *) (roam_info->pbFrames +
+					      roam_info->nBeaconLength);
+			if (pFTAssocReq != NULL) {
+				if (!ft_carrier_on) {
 					/*
-					 * pFTAssocRsp needs to point to the IEs
+					 * pFTAssocReq needs to point to
+					 * the IEs
 					 */
-					pFTAssocRsp += FT_ASSOC_RSP_IES_OFFSET;
-					hdd_debug("AssocRsp is now at %02x%02x",
-						 (unsigned int)pFTAssocRsp[0],
-						 (unsigned int)pFTAssocRsp[1]);
-					assocRsplen =
-						roam_info->nAssocRspLength -
-						FT_ASSOC_RSP_IES_OFFSET;
+					pFTAssocReq +=
+						FT_ASSOC_REQ_IES_OFFSET;
+					hdd_debug("pFTAssocReq is now at %02x%02x",
+						 (unsigned int)
+						 pFTAssocReq[0],
+						 (unsigned int)
+						 pFTAssocReq[1]);
+					assocReqlen =
+					    roam_info->nAssocReqLength -
+						FT_ASSOC_REQ_IES_OFFSET;
 				} else {
-					hdd_debug("AssocRsp is NULL");
-					assocRsplen = 0;
+					/*
+					 * This should contain only the
+					 * FTIEs
+					 */
+					assocReqlen =
+					    roam_info->nAssocReqLength;
 				}
 
-				/* Association Request */
-				pFTAssocReq = (u8 *) (roam_info->pbFrames +
-						      roam_info->nBeaconLength);
-				if (pFTAssocReq != NULL) {
-					if (!ft_carrier_on) {
-						/*
-						 * pFTAssocReq needs to point to
-						 * the IEs
-						 */
-						pFTAssocReq +=
-							FT_ASSOC_REQ_IES_OFFSET;
-						hdd_debug("pFTAssocReq is now at %02x%02x",
-							 (unsigned int)
-							 pFTAssocReq[0],
-							 (unsigned int)
-							 pFTAssocReq[1]);
-						assocReqlen =
-						    roam_info->nAssocReqLength -
-							FT_ASSOC_REQ_IES_OFFSET;
-					} else {
-						/*
-						 * This should contain only the
-						 * FTIEs
-						 */
-						assocReqlen =
-						    roam_info->nAssocReqLength;
-					}
-				} else {
-					hdd_debug("AssocReq is NULL");
-					assocReqlen = 0;
-				}
+				hdd_debug("assocReqlen %d", assocReqlen);
+				hdd_debug("Assoc/Reassoc Req IE dump");
+				QDF_TRACE_HEX_DUMP(QDF_MODULE_ID_HDD,
+						   QDF_TRACE_LEVEL_DEBUG,
+						   pFTAssocReq,
+						   assocReqlen);
+			} else {
+				hdd_debug("AssocReq is NULL");
+				assocReqlen = 0;
+			}
 
+			if (roam_info->u.pConnectedProfile->AuthType ==
+			    eCSR_AUTH_TYPE_FT_RSN
+			    || roam_info->u.pConnectedProfile->AuthType ==
+			    eCSR_AUTH_TYPE_FT_RSN_PSK) {
 				if (ft_carrier_on) {
 					if (!hddDisconInProgress &&
 						roam_info->pBssDesc) {
@@ -2880,18 +2894,7 @@ hdd_association_completion_handler(struct hdd_adapter *adapter,
 								(adapter->wdev.wiphy,
 								(int)roam_info->pBssDesc->
 								channelId);
-						hdd_debug(
-							"assocReqlen %d assocRsplen %d",
-							assocReqlen,
-							assocRsplen);
 
-						hdd_debug(
-							"Reassoc Req IE dump");
-						QDF_TRACE_HEX_DUMP(
-							QDF_MODULE_ID_HDD,
-							QDF_TRACE_LEVEL_DEBUG,
-							pFTAssocReq,
-							assocReqlen);
 						roam_bss =
 							hdd_cfg80211_get_bss(
 							adapter->wdev.wiphy,
@@ -2995,10 +2998,10 @@ hdd_association_completion_handler(struct hdd_adapter *adapter,
 								   roam_info->
 								   bssid.bytes,
 								   roam_info,
-								   reqRsnIe,
-								   reqRsnLength,
-								   rspRsnIe,
-								   rspRsnLength,
+								   pFTAssocReq,
+								   assocReqlen,
+								   pFTAssocRsp,
+								   assocRsplen,
 								   WLAN_STATUS_SUCCESS,
 								   GFP_KERNEL,
 								   false,