Search Linux Wireless

Re: [PATCH 0/5] mac80211, iwlwifi, ath9k: Fix rate scaling for IEEE80211_TX_CTL_NO_ACK packets

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

 



Did this get lost? I can't see it in wireless-testing.

2009/4/23 Gábor Stefanik <netrolller.3d@xxxxxxxxx>:
> Handling of multicast/NO_ACK packets by mac80211 rate scaling is a
> mess. Basically, the rule of thumb is that any packet with
> IEEE80211_TX_CTL_NO_ACK (including multicasts and broadcasts, which
> always have this flag set) should be sent at lowest rate (unless
> overridden by radiotap - this is not covered in this patchset), with
> no retries.
>
> So, the right thing to do in any rate scaling algorithm:
>  * Check for IEEE80211_TX_CTL_NO_ACK. No need to check
> is_multicast_ether_addr, as multicasts always have NO_ACK set.
>  * If it is set, select the lowest available rate (unless overridden
> by radiotap), with a retry count of 0 (total try count of 1).
>
> However, the actual rate scaling algorithms get this wrong in various ways:
>  * Minstrel checks for both is_multicast_ether_addr and
> IEEE80211_TX_CTL_NO_ACK (redundant, since the former implies the
> latter), and sets the rate to the lowest (correct), and the retry
> count to the max (wrong).
>  * PID only checks is_multicast_ether_addr (completely leaving out
> unicasts with IEEE80211_TX_CTL_NO_ACK set by e.g. Radiotap), setting
> the rate to the lowest (correct). However, the same logic is used for
> determining retry count of multicasts as for unicasts (wrong).
>  * Iwlwifi's rate scaling algorithms behave like PID. In addition,
> they appear to not care about retry count at all, which is handled in
> the drivers themselves I guess.
>  * Ath5k's algorithm correctly sets both the rate and the retry count
> - but incorrectly bases its checks on is_multicast_ether_addr instead
> of IEEE80211_TX_CTL_NO_ACK, again missing unicasts with this flag set.
>
> Most PHYs can gracefully handle this error (with the help of a no-ACK
> knob in the PHY TX header that disables retries), but those that have
> no such knob, and instead depend on getting a correct retry count of 0
> (total try count of 1), such as RTL818x, end up always transmitting
> multicast/NO_ACK frames multiple times, as (incorrectly) requested by
> the RC algorithm.
>
> Signed-off-by: Gábor Stefanik <netrolller.3d@xxxxxxxxx>
> Cc: Felix Fietkau <nbd@xxxxxxxxxxx>
> Cc: Johannes Berg <johannes@xxxxxxxxxxxxxxxx>
> Cc: Zhu Yi <yi.zhu@xxxxxxxxx>
> Cc: Tomas Winkler <tomas.winkler@xxxxxxxxx>
> Cc: Nick Kossifidis <mickflemm@xxxxxxxxx>
> Cc: Louis R. Rodriguez <mcgrof@xxxxxxxxx>
>
> Gábor Stefanik (5):
>  mac80211: Fix handling of retry count of NO_ACK frames in minstrel
>  mac80211: Fix handling of retry count of NO_ACK frames in PID
>  iwlwifi: Fix handling of retry count of NO_ACK frames for iwl-{3945|agn}-rs
>  ath5k: Fix handling of retry count of NO_ACK frames
>  mac80211: Warn if the rate controller requests retries for a NO_ACK frame
>
>  drivers/net/wireless/ath/ath9k/rc.c        |    6 +++---
>  drivers/net/wireless/iwlwifi/iwl-3945-rs.c |    7 ++++---
>  drivers/net/wireless/iwlwifi/iwl-agn-rs.c  |   14 +++++++-------
>  net/mac80211/rc80211_minstrel.c            |    8 +++++---
>  net/mac80211/rc80211_pid_algo.c            |    8 +++++---
>  net/mac80211/tx.c                          |    4 ++++
>  6 files changed, 28 insertions(+), 19 deletions(-)
>



-- 
Vista: [V]iruses, [I]ntruders, [S]pyware, [T]rojans and [A]dware. :-)
--
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