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

Reply via email to