oh i see, setting ack/cts to use high bit rates means the highest in the control basic rates group. Thanks.
Duy On Tue, Mar 30, 2010 at 6:08 PM, Bruno Randolf <b...@einfach.org> wrote: > On Wednesday 31 March 2010 01:25:51 Duy Nguyen wrote: >> Hi, I am still a bit confused. Hope you can help me clarify a bit. >> Shouldn't ACK/CTS always be sent at the low bit rate, in this case >> 6MB, for reliability according to the spec? > > control frames have to be sent at one of the lower bitrates - one of the > "basic rates". in G mode these are 1, 2, 5.5, 11, 6, 12, 24Mbps. > > this is from the 802.11g spec: > "a STA responding to a received frame shall transmit its Control Response > (either CTS or ACK) frames at the highest rate in the BSSBasicRateSet that is > less than or equal to the rate of the immediately previous frame in the frame > exchange sequence (as defined in 9.7)" > > basically we have to make a tradeoff here: using lower rates for ACK/CTS will > improve reliability, but lower performance. for example i could get only > 10Mbps truput with ACK/CTS at the lowest bitrates and RTS/CTS enabled > (iwconfig wlan0 rts 250) and i can get more than 20Mbps with higher bitrates. > so i think it's worth to use high bitrates. actually also this should be > tuneable for the user, too... > > bruno > >> Duy >> >> On Tue, Mar 30, 2010 at 3:59 AM, Bruno Randolf <b...@einfach.org> wrote: >> > There was a confusion in the usage of the bits AR5K_STA_ID1_ACKCTS_6MB >> > and AR5K_STA_ID1_BASE_RATE_11B. If they are set (1), we will get lower >> > bitrates for ACK and CTS. Therefore ath5k_hw_set_ack_bitrate_high(ah, >> > false) actually resulted in high bitrates, which i think is what we want >> > anyways. Cleared the confusion and added some documentation. >> > >> > Signed-off-by: Bruno Randolf <b...@einfach.org> >> > --- >> > drivers/net/wireless/ath/ath5k/base.c | 3 +-- >> > drivers/net/wireless/ath/ath5k/pcu.c | 4 ++-- >> > drivers/net/wireless/ath/ath5k/reg.h | 4 ++-- >> > 3 files changed, 5 insertions(+), 6 deletions(-) >> > >> > diff --git a/drivers/net/wireless/ath/ath5k/base.c >> > b/drivers/net/wireless/ath/ath5k/base.c index c085a06..7f579e0 100644 >> > --- a/drivers/net/wireless/ath/ath5k/base.c >> > +++ b/drivers/net/wireless/ath/ath5k/base.c >> > @@ -2548,8 +2548,7 @@ ath5k_init(struct ath5k_softc *sc) >> > for (i = 0; i < AR5K_KEYTABLE_SIZE; i++) >> > ath5k_hw_reset_key(ah, i); >> > >> > - /* Set ack to be sent at low bit-rates */ >> > - ath5k_hw_set_ack_bitrate_high(ah, false); >> > + ath5k_hw_set_ack_bitrate_high(ah, true); >> > ret = 0; >> > done: >> > mmiowb(); >> > diff --git a/drivers/net/wireless/ath/ath5k/pcu.c >> > b/drivers/net/wireless/ath/ath5k/pcu.c index 710870e..174412f 100644 >> > --- a/drivers/net/wireless/ath/ath5k/pcu.c >> > +++ b/drivers/net/wireless/ath/ath5k/pcu.c >> > @@ -154,9 +154,9 @@ void ath5k_hw_set_ack_bitrate_high(struct ath5k_hw >> > *ah, bool high) else { >> > u32 val = AR5K_STA_ID1_BASE_RATE_11B | >> > AR5K_STA_ID1_ACKCTS_6MB; if (high) >> > - AR5K_REG_ENABLE_BITS(ah, AR5K_STA_ID1, val); >> > - else >> > AR5K_REG_DISABLE_BITS(ah, AR5K_STA_ID1, val); >> > + else >> > + AR5K_REG_ENABLE_BITS(ah, AR5K_STA_ID1, val); >> > } >> > } >> > >> > diff --git a/drivers/net/wireless/ath/ath5k/reg.h >> > b/drivers/net/wireless/ath/ath5k/reg.h index 45d62e9..55b4ac6 100644 >> > --- a/drivers/net/wireless/ath/ath5k/reg.h >> > +++ b/drivers/net/wireless/ath/ath5k/reg.h >> > @@ -1139,8 +1139,8 @@ >> > #define AR5K_STA_ID1_DEFAULT_ANTENNA 0x00200000 /* Use default >> > antenna */ #define AR5K_STA_ID1_DESC_ANTENNA 0x00400000 /* >> > Update antenna from descriptor */ #define AR5K_STA_ID1_RTS_DEF_ANTENNA >> > 0x00800000 /* Use default antenna for RTS */ -#define >> > AR5K_STA_ID1_ACKCTS_6MB 0x01000000 /* Use 6Mbit/s >> > for ACK/CTS */ -#define AR5K_STA_ID1_BASE_RATE_11B 0x02000000 >> > /* Use 11b base rate for ACK/CTS [5211+] */ +#define >> > AR5K_STA_ID1_ACKCTS_6MB 0x01000000 /* Rate to use >> > for ACK/CTS. 0: highest mandatory rate <= RX rate; 1: 1Mbps in B mode */ >> > +#define AR5K_STA_ID1_BASE_RATE_11B 0x02000000 /* 802.11b base >> > rate. 0: 1, 2, 5.5 and 11Mbps; 1: 1 and 2Mbps. [5211+] */ #define >> > AR5K_STA_ID1_SELFGEN_DEF_ANT 0x04000000 /* Use def. antenna for >> > self generated frames */ #define AR5K_STA_ID1_CRYPT_MIC_EN >> > 0x08000000 /* Enable MIC */ #define AR5K_STA_ID1_KEYSRCH_MODE >> > 0x10000000 /* Look up key when key id != 0 */ >> > >> > _______________________________________________ >> > ath5k-devel mailing list >> > ath5k-devel@lists.ath5k.org >> > https://lists.ath5k.org/mailman/listinfo/ath5k-devel > _______________________________________________ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel