iwlwifi: mvm: enable RX chain diversity if needed
In some situations (see comment) it makes sense to enable both chains (if available) to get better throughput by having chain diversity available. Signed-off-by: Johannes Berg <johannes.berg@intel.com> Signed-off-by: Emmanuel Grumbach <emmanuel.grumbach@intel.com>
This commit is contained in:
parent
d6aeb354f9
commit
1a095d30d1
1 changed files with 13 additions and 0 deletions
|
@ -156,6 +156,19 @@ static void iwl_mvm_phy_ctxt_cmd_data(struct iwl_mvm *mvm,
|
||||||
idle_cnt = chains_static;
|
idle_cnt = chains_static;
|
||||||
active_cnt = chains_dynamic;
|
active_cnt = chains_dynamic;
|
||||||
|
|
||||||
|
/* In scenarios where we only ever use a single-stream rates,
|
||||||
|
* i.e. legacy 11b/g/a associations, single-stream APs or even
|
||||||
|
* static SMPS, enable both chains to get diversity, improving
|
||||||
|
* the case where we're far enough from the AP that attenuation
|
||||||
|
* between the two antennas is sufficiently different to impact
|
||||||
|
* performance.
|
||||||
|
*/
|
||||||
|
if (active_cnt == 1 && num_of_ant(mvm->fw->valid_rx_ant) > 1 &&
|
||||||
|
!mvm->cfg->rx_with_siso_diversity) {
|
||||||
|
idle_cnt = 2;
|
||||||
|
active_cnt = 2;
|
||||||
|
}
|
||||||
|
|
||||||
cmd->rxchain_info = cpu_to_le32(mvm->fw->valid_rx_ant <<
|
cmd->rxchain_info = cpu_to_le32(mvm->fw->valid_rx_ant <<
|
||||||
PHY_RX_CHAIN_VALID_POS);
|
PHY_RX_CHAIN_VALID_POS);
|
||||||
cmd->rxchain_info |= cpu_to_le32(idle_cnt << PHY_RX_CHAIN_CNT_POS);
|
cmd->rxchain_info |= cpu_to_le32(idle_cnt << PHY_RX_CHAIN_CNT_POS);
|
||||||
|
|
Loading…
Add table
Reference in a new issue