On Mon, Mar 15, 2010 at 4:49 PM, Luis R. Rodriguez <lrodriguez@xxxxxxxxxxx> wrote: > On Mon, Mar 15, 2010 at 04:25:14PM -0700, Luis R. Rodriguez wrote: >> On Mon, Mar 15, 2010 at 2:43 PM, Luis R. Rodriguez >> <lrodriguez@xxxxxxxxxxx> wrote: >> > On Fri, Mar 12, 2010 at 09:46:44PM -0800, Luis R. Rodriguez wrote: >> >> * I spotted a check added to bail out for tweaking the ACK/CTS >> >> time out values -- this check should no longer be required >> >> since Felix sent a proper fix for this recenlty. I removed that >> >> hunk: >> >> >> >> @@ -1210,6 +1195,9 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah) >> >> REG_WRITE(ah, AR_PCU_MISC, >> >> REG_READ(ah, AR_PCU_MISC) | ah->misc_mode); >> >> >> >> + if (AR_SREV_9271(ah)) >> >> + return; >> >> + >> >> if (conf->channel && conf->channel->band == IEEE80211_BAND_5GHZ) >> >> sifstime = 16; >> >> else >> >> -- >> > >> > Turns out this hunk is required... but the rf changes are not (patch 4/12) >> > so I'll just respin and send a new series out. >> > >> > We should look for a better way to address this issue instead of the above hunk >> > otherwise we will be skipping all changes to the slot time from mac80211. >> > Right now ath9k_htc does not support this (BSS_CHANGED_ERP_SLOT) or a >> > set_coverage_class() callback. >> >> We'll need to support at least BSS_CHANGED_ERP_SLOT in case the AP >> switches to compatibility mode. > > How about something like this: > > diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c > index 3b4c636..387eef9 100644 > --- a/drivers/net/wireless/ath/ath9k/htc_drv_main.c > +++ b/drivers/net/wireless/ath/ath9k/htc_drv_main.c > @@ -1438,6 +1438,14 @@ static void ath9k_htc_bss_info_changed(struct ieee80211_hw *hw, > ath9k_htc_beacon_config(priv, vif, bss_conf); > } > > + if (changed & BSS_CHANGED_ERP_SLOT) { > + if (bss_conf->use_short_slot) > + ah->slottime = 9; > + else > + ah->slottime = 20; > + ath9k_hw_init_global_settings(ah); > + } > + > if (changed & BSS_CHANGED_BEACON) > ath9k_htc_beacon_update(priv, vif); > > diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c > index 00570fb..867cfaf 100644 > --- a/drivers/net/wireless/ath/ath9k/hw.c > +++ b/drivers/net/wireless/ath/ath9k/hw.c > @@ -784,9 +784,6 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah) > REG_WRITE(ah, AR_PCU_MISC, > REG_READ(ah, AR_PCU_MISC) | ah->misc_mode); > > - if (AR_SREV_9271(ah)) > - return; > - > if (conf->channel && conf->channel->band == IEEE80211_BAND_5GHZ) > sifstime = 16; > else > @@ -807,6 +804,10 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah) > acktimeout += 64 - sifstime - ah->slottime; > > ath9k_hw_setslottime(ah, slottime); > + > + if (AR_SREV_9271(ah)) > + return; > + > ath9k_hw_set_ack_timeout(ah, acktimeout); > ath9k_hw_set_cts_timeout(ah, acktimeout); > if (ah->globaltxtimeout != (u32) -1) Works for me with ar9271, will send with this new change for the hardware changes, please review and consider integration on the ath9k_htc driver side of things. Luis -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html