From 5fda0e46fb9bff1131a0f312b2cb517cc7e3391f Mon Sep 17 00:00:00 2001 From: Deepak Dhamdhere Date: Fri, 24 Jun 2016 18:30:02 +0530 Subject: [PATCH] Revert "qcacld-3.0: Allow Re-assoc to same AP only in open security mode" Change-Id I35d802f564e41ee0b30386ee7b74d2b44eb80ecf Revert this change to allow re-association to same AP which is required for HS certification. Change-Id: I75114b5e36b4ce6def602b9054481845ac09c56a CRs-Fixed: 936342 --- core/hdd/src/wlan_hdd_ioctl.c | 31 ++++++++++++++++--------------- core/hdd/src/wlan_hdd_wext.c | 24 +++++++++++++----------- 2 files changed, 29 insertions(+), 26 deletions(-) diff --git a/core/hdd/src/wlan_hdd_ioctl.c b/core/hdd/src/wlan_hdd_ioctl.c index 78318563f79f..5ca71152c474 100644 --- a/core/hdd/src/wlan_hdd_ioctl.c +++ b/core/hdd/src/wlan_hdd_ioctl.c @@ -4428,6 +4428,13 @@ static int drv_cmd_fast_reassoc(hdd_adapter_t *adapter, goto exit; } + /* Check channel number is a valid channel number */ + if (QDF_STATUS_SUCCESS != + wlan_hdd_validate_operation_channel(adapter, channel)) { + hdd_err("Invalid Channel [%d]", channel); + return -EINVAL; + } + /* * if the target bssid is same as currently associated AP, * issue reassoc to same AP @@ -4435,26 +4442,20 @@ static int drv_cmd_fast_reassoc(hdd_adapter_t *adapter, if (true != qdf_mem_cmp(targetApBssid, pHddStaCtx->conn_info.bssId.bytes, QDF_MAC_ADDR_SIZE)) { - /* Reassoc to same AP, only supported for Open Security*/ - if ((pHddStaCtx->conn_info.ucEncryptionType || - pHddStaCtx->conn_info.mcEncryptionType)) { - hdd_err("Reassoc to same AP, only supported for Open Security"); - return -ENOTSUPP; - } hdd_info("Reassoc BSSID is same as currently associated AP bssid"); - sme_get_modify_profile_fields(hdd_ctx->hHal, adapter->sessionId, + if (roaming_offload_enabled(hdd_ctx)) { + hdd_wma_send_fastreassoc_cmd((int)adapter->sessionId, + targetApBssid, (int)channel); + } else { + sme_get_modify_profile_fields(hdd_ctx->hHal, + adapter->sessionId, &modProfileFields); - sme_roam_reassoc(hdd_ctx->hHal, adapter->sessionId, - NULL, modProfileFields, &roamId, 1); + sme_roam_reassoc(hdd_ctx->hHal, adapter->sessionId, + NULL, modProfileFields, &roamId, 1); + } return 0; } - /* Check channel number is a valid channel number */ - if (QDF_STATUS_SUCCESS != - wlan_hdd_validate_operation_channel(adapter, channel)) { - hdd_err("Invalid Channel [%d]", channel); - return -EINVAL; - } if (roaming_offload_enabled(hdd_ctx)) { hdd_wma_send_fastreassoc_cmd((int)adapter->sessionId, targetApBssid, (int)channel); diff --git a/core/hdd/src/wlan_hdd_wext.c b/core/hdd/src/wlan_hdd_wext.c index 9023070a1895..3bc1b1555d19 100644 --- a/core/hdd/src/wlan_hdd_wext.c +++ b/core/hdd/src/wlan_hdd_wext.c @@ -7567,22 +7567,24 @@ static int __iw_setnone_getnone(struct net_device *dev, { hdd_adapter_t *adapter = WLAN_HDD_GET_PRIV_PTR(dev); tHalHandle hHal = WLAN_HDD_GET_HAL_CTX(adapter); + tSirMacAddr bssid; uint32_t roamId = 0; + uint8_t operating_ch = + adapter->sessionCtx.station.conn_info.operationChannel; tCsrRoamModifyProfileFields modProfileFields; - hdd_station_ctx_t *hdd_sta_ctx = - WLAN_HDD_GET_STATION_CTX_PTR(adapter); - - /* Reassoc to same AP, only supported for Open Security*/ - if ((hdd_sta_ctx->conn_info.ucEncryptionType || - hdd_sta_ctx->conn_info.mcEncryptionType)) { - hdd_err("Reassoc to same AP, only supported for Open Security"); - return -ENOTSUPP; - } sme_get_modify_profile_fields(hHal, adapter->sessionId, &modProfileFields); - sme_roam_reassoc(hHal, adapter->sessionId, - NULL, modProfileFields, &roamId, 1); + if (roaming_offload_enabled(hdd_ctx)) { + qdf_mem_copy(bssid, + &adapter->sessionCtx.station.conn_info.bssId, + sizeof(bssid)); + hdd_wma_send_fastreassoc_cmd((int)adapter->sessionId, + bssid, operating_ch); + } else { + sme_roam_reassoc(hdd_ctx->hHal, adapter->sessionId, + NULL, modProfileFields, &roamId, 1); + } return 0; }