2011-04-10 00:11:06 +03:00
|
|
|
--- a/drivers/net/wireless/ath/ath5k/ath5k.h
|
|
|
|
+++ b/drivers/net/wireless/ath/ath5k/ath5k.h
|
|
|
|
@@ -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];
|
|
|
|
--- a/drivers/net/wireless/ath/ath5k/mac80211-ops.c
|
|
|
|
+++ b/drivers/net/wireless/ath/ath5k/mac80211-ops.c
|
2011-04-15 19:54:52 +03:00
|
|
|
@@ -277,6 +277,15 @@ ath5k_bss_info_changed(struct ieee80211_
|
2011-04-10 00:11:06 +03:00
|
|
|
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)
|
|
|
|
--- a/drivers/net/wireless/ath/ath5k/pcu.c
|
|
|
|
+++ b/drivers/net/wireless/ath/ath5k/pcu.c
|
|
|
|
@@ -151,9 +151,9 @@ unsigned int ath5k_hw_get_default_slotti
|
|
|
|
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;
|
|
|
|
}
|