qcacld-3.0: fix bug on 2x2 DBS utility function
Fix the macros in wma_is_hw_dbs_2x2_capable to return the HW capability correctly for DBS mode. Change-Id: I592ccef901866aba54bda6c4a6f07215f1c437f7 CRs-Fixed: 1068000
Cette révision appartient à :

révisé par
qcabuildsw

Parent
dee5d4341d
révision
db55e2c365
@@ -3871,12 +3871,11 @@ bool wma_is_p2p_lo_capable(void)
|
||||
bool wma_is_hw_dbs_2x2_capable(void)
|
||||
{
|
||||
tp_wma_handle wma;
|
||||
int i, j = 0, max_mac;
|
||||
uint32_t ht_2g, ht_5g;
|
||||
struct extended_caps *phy_caps;
|
||||
WMI_MAC_PHY_CAPABILITIES *mac_cap;
|
||||
uint32_t tx_chain, rx_chain, final_min_rf_chains = 2;
|
||||
uint32_t min_rf_chains, min_2g_rf_chains, min_5g_rf_chains;
|
||||
int i, param;
|
||||
uint32_t dbs, tx_chain0, rx_chain0, tx_chain1, rx_chain1;
|
||||
uint32_t final_min_rf_chains = 2;
|
||||
uint32_t min_rf_chains, min_mac0_rf_chains, min_mac1_rf_chains;
|
||||
bool is_dbs_found = false;
|
||||
|
||||
wma = cds_get_context(QDF_MODULE_ID_WMA);
|
||||
if (!wma) {
|
||||
@@ -3884,35 +3883,28 @@ bool wma_is_hw_dbs_2x2_capable(void)
|
||||
return false;
|
||||
}
|
||||
|
||||
phy_caps = &wma->phy_caps;
|
||||
for (i = 0; i < phy_caps->num_hw_modes.num_hw_modes; i++) {
|
||||
if (phy_caps->each_hw_mode_cap[i].phy_id_map == PHY1_PHY2)
|
||||
max_mac = j + 2;
|
||||
else
|
||||
max_mac = j + 1;
|
||||
for ( ; j < max_mac; j++) {
|
||||
mac_cap = &phy_caps->each_phy_cap_per_hwmode[j];
|
||||
ht_2g = mac_cap->ht_cap_info_2G;
|
||||
ht_5g = mac_cap->ht_cap_info_5G;
|
||||
if (ht_5g && ht_2g) {
|
||||
tx_chain = mac_cap->tx_chain_mask_2G;
|
||||
rx_chain = mac_cap->rx_chain_mask_2G;
|
||||
min_2g_rf_chains = QDF_MIN(
|
||||
wma_get_num_of_setbits_from_bitmask(tx_chain),
|
||||
wma_get_num_of_setbits_from_bitmask(rx_chain));
|
||||
tx_chain = mac_cap->tx_chain_mask_5G;
|
||||
rx_chain = mac_cap->rx_chain_mask_5G;
|
||||
min_5g_rf_chains = QDF_MIN(
|
||||
wma_get_num_of_setbits_from_bitmask(tx_chain),
|
||||
wma_get_num_of_setbits_from_bitmask(rx_chain));
|
||||
min_rf_chains = QDF_MIN(min_2g_rf_chains,
|
||||
min_5g_rf_chains);
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
final_min_rf_chains = QDF_MIN(final_min_rf_chains,
|
||||
min_rf_chains);
|
||||
for (i = 0; i < wma->num_dbs_hw_modes; i++) {
|
||||
param = wma->hw_mode.hw_mode_list[i];
|
||||
tx_chain0 = WMA_HW_MODE_MAC0_TX_STREAMS_GET(param);
|
||||
rx_chain0 = WMA_HW_MODE_MAC0_RX_STREAMS_GET(param);
|
||||
dbs = WMA_HW_MODE_DBS_MODE_GET(param);
|
||||
tx_chain1 = WMA_HW_MODE_MAC1_TX_STREAMS_GET(param);
|
||||
rx_chain1 = WMA_HW_MODE_MAC1_RX_STREAMS_GET(param);
|
||||
|
||||
if (dbs) {
|
||||
min_mac0_rf_chains = QDF_MIN(tx_chain0, rx_chain0);
|
||||
min_mac1_rf_chains = QDF_MIN(tx_chain1, rx_chain1);
|
||||
min_rf_chains = QDF_MIN(min_mac0_rf_chains,
|
||||
min_mac1_rf_chains);
|
||||
is_dbs_found = true;
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
final_min_rf_chains = QDF_MIN(final_min_rf_chains,
|
||||
min_rf_chains);
|
||||
}
|
||||
if (false == is_dbs_found)
|
||||
final_min_rf_chains = 0;
|
||||
|
||||
return (final_min_rf_chains == 2) ? true : false;
|
||||
}
|
||||
|
Référencer dans un nouveau ticket
Bloquer un utilisateur