summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbhinav Kumar <abhikuma@codeaurora.org>2021-01-28 00:44:27 +0530
committerVictor Hsu <hsuvictor@google.com>2021-02-05 08:44:16 +0000
commit5089f08868523cc7dd97df5a1fbbbcabfd819168 (patch)
tree27370ba1ba8085531b37b8b1b417801dd98eb6c0
parentbbe03e5de1b439a30cef7271cf20b24fb1026ea1 (diff)
downloadqcacld-5089f08868523cc7dd97df5a1fbbbcabfd819168.tar.gz
qcacld-3.0: Don't disable btm offload for open mode connection
Currently driver disables btm offload to firmware if connected AP supports MBO-OCE and the connection is not PMF enabled. But the pmf will always be disabled for open mode connection, so BTM offload is disabled with open mode MBO-OCE enabled AP always. Check if the connection is open mode connection and allow BTM offload config Bug: 169528463 Change-Id: I8fe9b43c07700dca02cf7bb874e1c5c509b120f7 CRs-Fixed: 2831463 Signed-off-by: Victor Hsu <hsuvictor@google.com>
-rw-r--r--core/sme/src/csr/csr_api_roam.c26
1 files changed, 22 insertions, 4 deletions
diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c
index af72d7e8e2..9b60209d63 100644
--- a/core/sme/src/csr/csr_api_roam.c
+++ b/core/sme/src/csr/csr_api_roam.c
@@ -19081,7 +19081,9 @@ static void csr_update_btm_offload_config(struct mac_context *mac_ctx,
struct csr_roam_session *session)
{
struct wlan_objmgr_peer *peer;
- bool is_pmf_enabled;
+ struct wlan_objmgr_vdev *vdev;
+ bool is_pmf_enabled, is_open_connection = false;
+ int32_t cipher;
req_buf->btm_offload_config =
mac_ctx->mlme_cfg->btm.btm_offload_config;
@@ -19113,15 +19115,31 @@ static void csr_update_btm_offload_config(struct mac_context *mac_ctx,
is_pmf_enabled = mlme_get_peer_pmf_status(peer);
wlan_objmgr_peer_release_ref(peer, WLAN_LEGACY_SME_ID);
- sme_debug("get is_pmf_enabled %d for %pM", is_pmf_enabled,
- session->pConnectBssDesc->bssId);
+
+ vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc,
+ session->vdev_id,
+ WLAN_LEGACY_SME_ID);
+ if (!vdev) {
+ sme_err("vdev:%d is NULL", session->vdev_id);
+ return;
+ }
+
+ cipher = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_UCAST_CIPHER);
+ if (!cipher || (cipher & (1 << WLAN_CRYPTO_CIPHER_NONE)))
+ is_open_connection = true;
+
+ wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID);
/* If peer does not support PMF in case of OCE/MBO
* Connection, Disable BTM offload to firmware.
*/
if (session->pConnectBssDesc->mbo_oce_enabled_ap &&
- !is_pmf_enabled)
+ (!is_pmf_enabled && !is_open_connection))
req_buf->btm_offload_config = 0;
+
+ sme_debug("is_open:%d is_pmf_enabled:%d btm_offload_cfg:%d for %pM",
+ is_open_connection, is_pmf_enabled,
+ req_buf->btm_offload_config, session->pConnectBssDesc->bssId);
}
/**