From 5e1f7ea5d69e5e763b456fffea7c52da371ff0b8 Mon Sep 17 00:00:00 2001 From: Abhishek Ambure Date: Mon, 22 Jun 2020 20:27:10 +0530 Subject: [PATCH] qcacld-3.0: Update self RSN caps to FW in RSO update/start cmd Present source of self RSN capability to copy in RSO command i.e csr_roam_session's rsn_cap is zero, A new capability OCVC (Operating Channel Validation Capable) bit is in RSN capabilities. FW enables OCV feature only if STA and AP both supports it. Hence update self RSN capability to FW in RSO start/update command. Change-Id: I1db500142560ec64a24ffab0c414c0c2b733e454 CRs-Fixed: 2721095 --- core/sme/inc/csr_internal.h | 1 - core/sme/src/csr/csr_api_roam.c | 24 +++++++++++++++++++++--- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/core/sme/inc/csr_internal.h b/core/sme/inc/csr_internal.h index 86aa5948f726..539e3d7104ad 100644 --- a/core/sme/inc/csr_internal.h +++ b/core/sme/inc/csr_internal.h @@ -516,7 +516,6 @@ struct csr_roam_session { struct qdf_mac_addr self_mac_addr; eCsrConnectState connectState; - struct rsn_caps rsn_caps; tCsrRoamConnectedProfile connectedProfile; struct csr_roam_connectedinfo connectedInfo; struct csr_roam_connectedinfo prev_assoc_ap_info; diff --git a/core/sme/src/csr/csr_api_roam.c b/core/sme/src/csr/csr_api_roam.c index d3bf95e38ee9..d02f25c76ab9 100644 --- a/core/sme/src/csr/csr_api_roam.c +++ b/core/sme/src/csr/csr_api_roam.c @@ -17257,6 +17257,23 @@ csr_add_ch_lst_from_roam_scan_list(struct mac_context *mac_ctx, return QDF_STATUS_SUCCESS; } +static void +csr_rso_command_fill_rsn_caps(struct mac_context *mac_ctx, uint8_t vdev_id, + uint16_t *rsn_caps) +{ + struct wlan_objmgr_vdev *vdev; + + vdev = wlan_objmgr_get_vdev_by_id_from_psoc(mac_ctx->psoc, vdev_id, + WLAN_LEGACY_SME_ID); + if (!vdev) { + sme_err("Invalid vdev"); + return; + } + + *rsn_caps = wlan_crypto_get_param(vdev, WLAN_CRYPTO_PARAM_RSN_CAP); + wlan_objmgr_vdev_release_ref(vdev, WLAN_LEGACY_SME_ID); +} + #ifdef WLAN_FEATURE_11W /** * csr_rso_command_fill_11w_params() - Fill the 11w related parameters @@ -17283,7 +17300,7 @@ csr_rso_command_fill_11w_params(struct mac_context *mac_ctx, session_id, WLAN_LEGACY_SME_ID); if (!vdev) { - pe_err("Invalid vdev"); + sme_err("Invalid vdev"); return; } @@ -17473,9 +17490,10 @@ csr_create_roam_scan_offload_request(struct mac_context *mac_ctx, req_buf->ConnectedNetwork.mcencryption = mac_ctx->roam.roamSession[session_id]. connectedProfile.mcEncryptionType; - /* Copy the RSN capabilities in roam offload request from session*/ - req_buf->rsn_caps = session->rsn_caps; + /* Copy the self RSN capabilities in roam offload request */ + csr_rso_command_fill_rsn_caps(mac_ctx, session_id, + (uint16_t *)&req_buf->rsn_caps); csr_rso_command_fill_11w_params(mac_ctx, session_id, req_buf); req_buf->delay_before_vdev_stop =