diff options
author | Abhinav Kumar <abhikuma@codeaurora.org> | 2021-01-28 00:44:27 +0530 |
---|---|---|
committer | Victor Hsu <hsuvictor@google.com> | 2021-02-05 08:44:16 +0000 |
commit | 5089f08868523cc7dd97df5a1fbbbcabfd819168 (patch) | |
tree | 27370ba1ba8085531b37b8b1b417801dd98eb6c0 | |
parent | bbe03e5de1b439a30cef7271cf20b24fb1026ea1 (diff) | |
download | qcacld-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.c | 26 |
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); } /** |