Search Linux Wireless

Re: [PATCH v3 00/12] ath9k_hw: complete support for AR9271

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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)
--
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

[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]
  Powered by Linux