|
@@ -752,18 +752,10 @@ bool policy_mgr_is_dbs_enable(struct wlan_objmgr_psoc *psoc)
|
|
|
|
|
|
bool policy_mgr_is_hw_dbs_2x2_capable(struct wlan_objmgr_psoc *psoc)
|
|
|
{
|
|
|
- uint32_t max_rf_chains, final_min_rf_chains = HW_MODE_SS_2x2;
|
|
|
struct dbs_nss nss_dbs;
|
|
|
|
|
|
- if (policy_mgr_get_hw_dbs_nss(psoc, &nss_dbs)) {
|
|
|
- max_rf_chains = QDF_MAX(nss_dbs.mac0_ss, nss_dbs.mac1_ss);
|
|
|
- final_min_rf_chains
|
|
|
- = QDF_MIN(final_min_rf_chains, max_rf_chains);
|
|
|
- } else {
|
|
|
- final_min_rf_chains = HW_MODE_SS_0x0;
|
|
|
- }
|
|
|
-
|
|
|
- return (final_min_rf_chains == HW_MODE_SS_2x2) ? true : false;
|
|
|
+ return ((policy_mgr_get_hw_dbs_nss(psoc, &nss_dbs)) >= HW_MODE_SS_2x2)
|
|
|
+ ? true : false;
|
|
|
}
|
|
|
|
|
|
uint32_t policy_mgr_get_connection_count(struct wlan_objmgr_psoc *psoc)
|
|
@@ -2479,13 +2471,13 @@ QDF_STATUS policy_mgr_is_chan_ok_for_dnbs(struct wlan_objmgr_psoc *psoc,
|
|
|
return QDF_STATUS_SUCCESS;
|
|
|
}
|
|
|
|
|
|
-bool policy_mgr_get_hw_dbs_nss(struct wlan_objmgr_psoc *psoc,
|
|
|
- struct dbs_nss *nss_dbs)
|
|
|
+uint32_t policy_mgr_get_hw_dbs_nss(struct wlan_objmgr_psoc *psoc,
|
|
|
+ struct dbs_nss *nss_dbs)
|
|
|
{
|
|
|
int i, param;
|
|
|
uint32_t dbs, tx_chain0, rx_chain0, tx_chain1, rx_chain1;
|
|
|
uint32_t min_mac0_rf_chains, min_mac1_rf_chains;
|
|
|
- bool is_dbs_found = false;
|
|
|
+ uint32_t max_rf_chains, final_max_rf_chains = HW_MODE_SS_0x0;
|
|
|
struct policy_mgr_psoc_priv_obj *pm_ctx;
|
|
|
|
|
|
pm_ctx = policy_mgr_get_context(psoc);
|
|
@@ -2510,19 +2502,26 @@ bool policy_mgr_get_hw_dbs_nss(struct wlan_objmgr_psoc *psoc,
|
|
|
min_mac0_rf_chains = QDF_MIN(tx_chain0, rx_chain0);
|
|
|
min_mac1_rf_chains = QDF_MIN(tx_chain1, rx_chain1);
|
|
|
|
|
|
- nss_dbs->mac0_ss
|
|
|
- = (min_mac0_rf_chains == 2)
|
|
|
- ? HW_MODE_SS_2x2 : HW_MODE_SS_1x1;
|
|
|
+ max_rf_chains
|
|
|
+ = QDF_MAX(min_mac0_rf_chains, min_mac1_rf_chains);
|
|
|
|
|
|
- nss_dbs->mac1_ss
|
|
|
- = (min_mac1_rf_chains == 2)
|
|
|
- ? HW_MODE_SS_2x2 : HW_MODE_SS_1x1;
|
|
|
+ if (final_max_rf_chains < max_rf_chains) {
|
|
|
+ final_max_rf_chains
|
|
|
+ = (max_rf_chains == 2)
|
|
|
+ ? HW_MODE_SS_2x2 : HW_MODE_SS_1x1;
|
|
|
|
|
|
- is_dbs_found = true;
|
|
|
+ nss_dbs->mac0_ss
|
|
|
+ = (min_mac0_rf_chains == 2)
|
|
|
+ ? HW_MODE_SS_2x2 : HW_MODE_SS_1x1;
|
|
|
+
|
|
|
+ nss_dbs->mac1_ss
|
|
|
+ = (min_mac1_rf_chains == 2)
|
|
|
+ ? HW_MODE_SS_2x2 : HW_MODE_SS_1x1;
|
|
|
+ }
|
|
|
} else {
|
|
|
continue;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- return is_dbs_found;
|
|
|
+ return final_max_rf_chains;
|
|
|
}
|