ath5k: fix slot time handling
Set the slot time based on the mac80211 short slot vs long slot setting instead of just forcing long slot for all CCK-enabled channels. This slightly improves 802.11g mode performance in in my tests. Signed-off-by: Felix Fietkau <nbd@openwrt.org> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
Родитель
488a50176c
Коммит
b1ad1b6feb
|
@ -1057,6 +1057,7 @@ struct ath5k_hw {
|
|||
u8 ah_coverage_class;
|
||||
bool ah_ack_bitrate_high;
|
||||
u8 ah_bwmode;
|
||||
bool ah_short_slot;
|
||||
|
||||
/* Antenna Control */
|
||||
u32 ah_ant_ctl[AR5K_EEPROM_N_MODES][AR5K_ANT_MAX];
|
||||
|
|
|
@ -282,6 +282,15 @@ ath5k_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif,
|
|||
if (changes & BSS_CHANGED_BEACON_INT)
|
||||
sc->bintval = bss_conf->beacon_int;
|
||||
|
||||
if (changes & BSS_CHANGED_ERP_SLOT) {
|
||||
int slot_time;
|
||||
|
||||
ah->ah_short_slot = bss_conf->use_short_slot;
|
||||
slot_time = ath5k_hw_get_default_slottime(ah) +
|
||||
3 * ah->ah_coverage_class;
|
||||
ath5k_hw_set_ifs_intervals(ah, slot_time);
|
||||
}
|
||||
|
||||
if (changes & BSS_CHANGED_ASSOC) {
|
||||
avf->assoc = bss_conf->assoc;
|
||||
if (bss_conf->assoc)
|
||||
|
|
|
@ -151,9 +151,9 @@ unsigned int ath5k_hw_get_default_slottime(struct ath5k_hw *ah)
|
|||
slot_time = AR5K_INIT_SLOT_TIME_QUARTER_RATE;
|
||||
break;
|
||||
case AR5K_BWMODE_DEFAULT:
|
||||
slot_time = AR5K_INIT_SLOT_TIME_DEFAULT;
|
||||
default:
|
||||
if (channel->hw_value & CHANNEL_CCK)
|
||||
slot_time = AR5K_INIT_SLOT_TIME_DEFAULT;
|
||||
if ((channel->hw_value & CHANNEL_CCK) && !ah->ah_short_slot)
|
||||
slot_time = AR5K_INIT_SLOT_TIME_B;
|
||||
break;
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче