On Mon, Mar 15, 2010 at 05:09:04PM -0700, Luis R. Rodriguez wrote: > On Mon, Mar 15, 2010 at 5:05 PM, Felix Fietkau <nbd@xxxxxxxxxxx> wrote: > > On 2010-03-16 12:55 AM, Luis R. Rodriguez wrote: > >> On Mon, Mar 15, 2010 at 4:52 PM, Felix Fietkau <nbd@xxxxxxxxxxx> wrote: > >>> On 2010-03-16 12:49 AM, Luis R. Rodriguez wrote: > >>>> 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 > >>>> @@ -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) > >>> > >>> Why leave out the ACK/CTS timeout setting? How does the hw handle ACK > >>> and CTS timeouts? > >> > >> Right, so that's why I originally removed this hunk completely, I was > >> under the impression you latest fix would have addressed any issues > >> but it does not, we get association time outs. I think we'll have to > >> review this further in order to support coverage class. > > Are you sure the slot time was set properly by the callback? > > Well ath9k_htc did not have it implemented, I just added the code for > it, you know what.. I did not test modifying the ACK/CTS timeout *and* > with the new slot time code I added to ath9k_htc, let me try that. Hah, yeah that fixed this work around, it works fine with the below patch, I went ahead and added the coverage class calllback while at it. John this means I don't have to resend this series out, we can just skip patch #4, that's all. I'll do one more review with our team and get back to you on a final ACK for this series. Sujith, please review and consider integration of the below changes on the ath9k_htc front. Luis diff --git a/drivers/net/wireless/ath/ath9k/htc_drv_main.c b/drivers/net/wireless/ath/ath9k/htc_drv_main.c index 3b4c636..e501599 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); @@ -1567,6 +1575,18 @@ static int ath9k_htc_set_rts_threshold(struct ieee80211_hw *hw, u32 value) return 0; } +static void ath9k_htc_set_coverage_class(struct ieee80211_hw *hw, + u8 coverage_class) +{ + struct ath9k_htc_priv *priv = hw->priv; + struct ath_hw *ah = priv->ah; + + mutex_lock(&priv->mutex); + ah->coverage_class = coverage_class; + ath9k_hw_init_global_settings(ah); + mutex_unlock(&priv->mutex); +} + struct ieee80211_ops ath9k_htc_ops = { .tx = ath9k_htc_tx, .start = ath9k_htc_start, @@ -1587,4 +1607,5 @@ struct ieee80211_ops ath9k_htc_ops = { .sw_scan_complete = ath9k_htc_sw_scan_complete, .set_rts_threshold = ath9k_htc_set_rts_threshold, .rfkill_poll = ath9k_htc_rfkill_poll_state, + .set_coverage_class = ath9k_htc_set_coverage_class, }; -- 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