Browse Source

qcacld-3.0: get correct hw mode type for eMLSR mode

For eMLSR mode, the lower 27 bits of hw_mode_config_type
are HW mode and higher 5 bits are MLO Cap flag.

To update MAC frequency info correctly, get hw mode type
for eMLSR by macro WMI_BECAP_PHY_GET_HW_MODE_CFG().

Change-Id: I18a0afb26985b6ccda091fa1564713af0260353f
CRs-Fixed: 3314401
Yu Wang 2 years ago
parent
commit
b642d39013

+ 7 - 6
components/cmn_services/policy_mgr/src/wlan_policy_mgr_get_set_utils.c

@@ -1527,7 +1527,6 @@ QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
 		/* Update for MAC0 */
 		tmp = &info->mac_phy_cap[j++];
 		policy_mgr_get_hw_mode_params(tmp, &mac0_ss_bw_info);
-		hw_config_type = tmp->hw_mode_config_type;
 		dbs_mode = HW_MODE_DBS_NONE;
 		sbs_mode = HW_MODE_SBS_NONE;
 		emlsr_mode = HW_MODE_EMLSR_NONE;
@@ -1535,6 +1534,11 @@ QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
 		mac1_ss_bw_info.mac_rx_stream = 0;
 		mac1_ss_bw_info.mac_bw = 0;
 
+		hw_config_type = tmp->hw_mode_config_type;
+		if (WMI_BECAP_PHY_GET_HW_MODE_CFG(hw_config_type) ==
+		    WMI_HW_MODE_EMLSR)
+			hw_config_type = WMI_HW_MODE_EMLSR;
+
 		policy_mgr_update_mac_freq_info(psoc, pm_ctx,
 						hw_config_type,
 						tmp->phy_id, tmp);
@@ -1558,11 +1562,8 @@ QDF_STATUS policy_mgr_update_hw_mode_list(struct wlan_objmgr_psoc *psoc,
 			    (hw_config_type == WMI_HW_MODE_SBS) ||
 			    (hw_config_type == WMI_HW_MODE_DBS_OR_SBS)))
 				sbs_mode = HW_MODE_SBS;
-		}
-		/* eMLSR mode */
-		if (WMI_BECAP_PHY_GET_HW_MODE_CFG(hw_config_type) ==
-				WMI_HW_MODE_EMLSR) {
-			hw_config_type = WMI_HW_MODE_EMLSR;
+		} else if (hw_config_type == WMI_HW_MODE_EMLSR) {
+			/* eMLSR mode */
 			tmp = &info->mac_phy_cap[j++];
 			cap = &info->mac_phy_caps_ext2[i];
 			wlan_mlme_set_eml_params(psoc, cap);