Search Linux Wireless

Re: [PATCH 2/9] ath9k_hw: do not override SIFS time for half/quarter channels

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

 



Felix,

This whole patch series throws the NICs out of spec compliance. For
instance, page 626 of the 802.11-2007 standard (Table 17-15) says that
aSIFStime is 32 us in 10 MHz mode and 64 us in 5 MHz mode.

This might be okay to do for certain implementations (as, apparently,
AR9280/AR9380), but will break compatibility with any device obeying
the standard instead.

(I wonder that, if this code below still works, then it seems that you
might not be properly downclocking the chips' reference clock...)

Are you aware there's a standard for this? Why violate it?

Dan

On Sun, Apr 15, 2012 at 3:15 AM, Felix Fietkau <nbd@xxxxxxxxxxx> wrote:
> Significantly improves performance on AR9280/AR9380
>
> Signed-off-by: Felix Fietkau <nbd@xxxxxxxxxxx>
> ---
>  drivers/net/wireless/ath/ath9k/hw.c |   11 +++++------
>  1 files changed, 5 insertions(+), 6 deletions(-)
>
> diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c
> index c7faf10..e408aaf 100644
> --- a/drivers/net/wireless/ath/ath9k/hw.c
> +++ b/drivers/net/wireless/ath/ath9k/hw.c
> @@ -1000,7 +1000,6 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
>                    tx_lat += 11;
>
>                slottime = 13;
> -               sifstime = 32;
>        } else if (IS_CHAN_QUARTER_RATE(chan)) {
>                eifs = 340;
>                rx_lat = 20;
> @@ -1009,7 +1008,6 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
>                    tx_lat += 22;
>
>                slottime = 21;
> -               sifstime = 64;
>        } else {
>                if (AR_SREV_9287(ah) && AR_SREV_9287_13_OR_LATER(ah)) {
>                        eifs = AR_D_GBL_IFS_EIFS_ASYNC_FIFO;
> @@ -1023,12 +1021,13 @@ void ath9k_hw_init_global_settings(struct ath_hw *ah)
>                tx_lat = MS(reg, AR_USEC_TX_LAT);
>
>                slottime = ah->slottime;
> -               if (IS_CHAN_5GHZ(chan))
> -                       sifstime = 16;
> -               else
> -                       sifstime = 10;
>        }
>
> +       if (IS_CHAN_5GHZ(chan))
> +               sifstime = 16;
> +       else
> +               sifstime = 10;
> +
>        /* As defined by IEEE 802.11-2007 17.3.8.6 */
>        acktimeout = slottime + sifstime + 3 * ah->coverage_class;
>        ctstimeout = acktimeout;
> --
> 1.7.3.2
>
> --
> 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
--
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 Wireless Personal Area Network]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux