From 22614a04b646398e654626123ceced29db938122 Mon Sep 17 00:00:00 2001 From: "Padma, Santhosh Kumar" Date: Thu, 9 Nov 2017 19:05:14 +0530 Subject: [PATCH] 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 --- core/hdd/src/wlan_hdd_assoc.c | 141 +++++++++++++++++----------------- 1 file changed, 72 insertions(+), 69 deletions(-) diff --git a/core/hdd/src/wlan_hdd_assoc.c b/core/hdd/src/wlan_hdd_assoc.c index 9f6de4ba7e96..2692d80fb673 100644 --- a/core/hdd/src/wlan_hdd_assoc.c +++ b/core/hdd/src/wlan_hdd_assoc.c @@ -2792,64 +2792,78 @@ hdd_association_completion_handler(struct hdd_adapter *adapter, hdd_ctx->wiphy, bss); } + + /* 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) { + /* + * 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; + } + + 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) { - - /* 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; - } 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) { - /* - * 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; - } - 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,