Browse Source

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
Abhishek Ambure 4 years ago
parent
commit
8fb2d79749

+ 1 - 1
core/hdd/src/wlan_hdd_cfg80211.c

@@ -6197,7 +6197,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,

+ 0 - 1
core/sme/inc/csr_internal.h

@@ -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

+ 4 - 4
core/sme/inc/sme_api.h

@@ -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,

+ 0 - 6
core/sme/src/common/sme_api.c

@@ -10793,7 +10793,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.
@@ -10801,7 +10800,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);
@@ -10810,12 +10808,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;

+ 3 - 5
core/sme/src/csr/csr_api_roam.c

@@ -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 =
@@ -20608,7 +20606,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 =

+ 0 - 1
core/sme/src/csr/csr_inside_api.h

@@ -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
 /*