qcacld-3.0: Update correct value of RoamKeyMgmtOffloadEnabled

Presently RoamKeyMgmtOffloadEnabled flag in roam req_buf gets set from
csr session, which gets set only if user sends vendor command to set key
management i.e. QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_SET_KEY.
Thus if user doesn't send QCA_NL80211_VENDOR_SUBCMD_KEY_MGMT_SET_KEY
vendor command, then host fails to sets ROAM_OFFLOAD_OKC_ENABLED &
PMK_CACHE_ENABLED flags in RSO command. This leads to failure of single
PMK cache roaming. Hence update correct value of RoamKeyMgmtOffloadEnabled
from mlme object.

Change-Id: I34099b4651ca179bb86ca24581526e161d2bf503
CRs-Fixed: 2802124
This commit is contained in:
Abhishek Ambure 2020-10-28 22:42:27 +05:30 • committed by snandini
commit 2af71e59bd
6 changed files with 8 additions and 18 deletions

View file

@ -6193,7 +6193,7 @@ static int __wlan_hdd_cfg80211_keymgmt_set_key(struct wiphy *wiphy,
mac_handle = hdd_ctx->mac_handle;
sme_update_roam_key_mgmt_offload_enabled(mac_handle,
hdd_adapter->vdev_id,
true, &pmkid_modes);
&pmkid_modes);
qdf_mem_zero(&local_pmk, SIR_ROAM_SCAN_PSK_SIZE);
qdf_mem_copy(local_pmk, data, data_len);
sme_roam_set_psk_pmk(mac_handle, hdd_adapter->vdev_id,

View file

@ -602,7 +602,6 @@ struct csr_roam_session {
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
uint8_t psk_pmk[SIR_ROAM_SCAN_PSK_SIZE];
size_t pmk_len;
uint8_t RoamKeyMgmtOffloadEnabled;
struct roam_offload_synch_ind *roam_synch_data;
struct pmkid_mode_bits pmkid_modes;
#endif

View file

@ -1708,10 +1708,10 @@ sme_reset_link_layer_stats_ind_cb(mac_handle_t mac_handle)
QDF_STATUS sme_set_wisa_params(mac_handle_t mac_handle,
struct sir_wisa_params *wisa_params);
#ifdef WLAN_FEATURE_ROAM_OFFLOAD
QDF_STATUS sme_update_roam_key_mgmt_offload_enabled(mac_handle_t mac_handle,
uint8_t session_id,
bool key_mgmt_offload_enabled,
struct pmkid_mode_bits *pmkid_modes);
QDF_STATUS
sme_update_roam_key_mgmt_offload_enabled(mac_handle_t mac_handle,
uint8_t session_id,
struct pmkid_mode_bits *pmkid_modes);
#endif
QDF_STATUS sme_get_link_status(mac_handle_t mac_handle,
csr_link_status_callback callback,

View file

@ -10780,7 +10780,6 @@ QDF_STATUS sme_beacon_debug_stats_req(
* This is a synchronous call
* @mac_handle: The handle returned by mac_open.
* @session_id: Session Identifier
* @key_mgmt_offload_enabled: key mgmt enable/disable flag
* @pmkid_modes: PMKID modes of PMKSA caching and OKC
* Return: QDF_STATUS_SUCCESS - SME updated config successfully.
* Other status means SME is failed to update.
@ -10788,7 +10787,6 @@ QDF_STATUS sme_beacon_debug_stats_req(
QDF_STATUS sme_update_roam_key_mgmt_offload_enabled(mac_handle_t mac_handle,
uint8_t session_id,
bool key_mgmt_offload_enabled,
struct pmkid_mode_bits *pmkid_modes)
{
struct mac_context *mac_ctx = MAC_CONTEXT(mac_handle);
@ -10797,12 +10795,8 @@ QDF_STATUS sme_update_roam_key_mgmt_offload_enabled(mac_handle_t mac_handle,
status = sme_acquire_global_lock(&mac_ctx->sme);
if (QDF_IS_STATUS_SUCCESS(status)) {
if (CSR_IS_SESSION_VALID(mac_ctx, session_id)) {
QDF_TRACE(QDF_MODULE_ID_SME, QDF_TRACE_LEVEL_DEBUG,
"%s: LFR3: key_mgmt_offload_enabled changed to %d",
__func__, key_mgmt_offload_enabled);
status = csr_roam_set_key_mgmt_offload(mac_ctx,
session_id,
key_mgmt_offload_enabled,
pmkid_modes);
} else
status = QDF_STATUS_E_INVAL;

View file

@ -16838,7 +16838,6 @@ QDF_STATUS csr_get_snr(struct mac_context *mac,
* csr_roam_set_key_mgmt_offload() - enable/disable key mgmt offload
* @mac_ctx: mac context.
* @session_id: Session Identifier
* @roam_key_mgmt_offload_enabled: key mgmt enable/disable flag
* @pmkid_modes: PMKID modes of PMKSA caching and OKC
*
* Return: QDF_STATUS_SUCCESS - CSR updated config successfully.
@ -16847,7 +16846,6 @@ QDF_STATUS csr_get_snr(struct mac_context *mac,
QDF_STATUS csr_roam_set_key_mgmt_offload(struct mac_context *mac_ctx,
uint32_t session_id,
bool roam_key_mgmt_offload_enabled,
struct pmkid_mode_bits *pmkid_modes)
{
struct csr_roam_session *session = CSR_GET_SESSION(mac_ctx, session_id);
@ -16856,7 +16854,6 @@ QDF_STATUS csr_roam_set_key_mgmt_offload(struct mac_context *mac_ctx,
sme_err("session %d not found", session_id);
return QDF_STATUS_E_FAILURE;
}
session->RoamKeyMgmtOffloadEnabled = roam_key_mgmt_offload_enabled;
session->pmkid_modes.fw_okc = pmkid_modes->fw_okc;
session->pmkid_modes.fw_pmksa_cache = pmkid_modes->fw_pmksa_cache;
return QDF_STATUS_SUCCESS;
@ -17012,7 +17009,8 @@ csr_update_roam_scan_offload_request(struct mac_context *mac_ctx,
wlan_cm_get_roam_scan_scheme_bitmap(mac_ctx->psoc,
session->vdev_id);
req_buf->RoamKeyMgmtOffloadEnabled = session->RoamKeyMgmtOffloadEnabled;
req_buf->RoamKeyMgmtOffloadEnabled =
mac_ctx->mlme_cfg->lfr.lfr3_roaming_offload;
req_buf->pmkid_modes.fw_okc =
(pmkid_modes & CFG_PMKID_MODES_OKC) ? 1 : 0;
req_buf->pmkid_modes.fw_pmksa_cache =
@ -20602,7 +20600,7 @@ static QDF_STATUS csr_cm_roam_scan_offload_fill_lfr3_config(
/* Update 11i TLV related Fields */
rso_config->rso_11i_info.roam_key_mgmt_offload_enabled =
session->RoamKeyMgmtOffloadEnabled;
mac->mlme_cfg->lfr.lfr3_roaming_offload;
rso_config->rso_11i_info.fw_okc =
(pmkid_modes & CFG_PMKID_MODES_OKC) ? 1 : 0;
rso_config->rso_11i_info.fw_pmksa_cache =

View file

@ -734,7 +734,6 @@ QDF_STATUS csr_roam_set_psk_pmk(struct mac_context *mac, uint32_t sessionId,
QDF_STATUS csr_roam_set_key_mgmt_offload(struct mac_context *mac_ctx,
uint32_t session_id,
bool roam_key_mgmt_offload_enabled,
struct pmkid_mode_bits *pmkid_modes);
#endif
/*