diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2009-11-17 12:18:36 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2009-11-18 17:09:24 -0500 |
commit | af65cd96dd4ea8ea5adc6ee850e61a407cd1067a (patch) | |
tree | fcdd50d2b9121bc26110329cb0fbefdeace99858 /include/net | |
parent | c95cf3d09adc9afe7816a13a920b6df36062a3fe (diff) |
mac80211: make software rate control optional
Some devices implement the entire rate control in
firmware in some way, like wl1271 or like iwlwifi
which does some things in software but not a lot.
Therefore generic software rate control is rather
useless for them and just adds avoidable overhead
to the transmit path.
It's fairly simple to let drivers indicate that
they do not need rate control, but they need to
fulfil a number of conditions that we encode in
WARN_ONs.
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/mac80211.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index 4af0ffb98aaf..f34f4ca7016c 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -855,6 +855,19 @@ enum ieee80211_tkip_key_type { | |||
855 | * any particular flags. There are some exceptions to this rule, | 855 | * any particular flags. There are some exceptions to this rule, |
856 | * however, so you are advised to review these flags carefully. | 856 | * however, so you are advised to review these flags carefully. |
857 | * | 857 | * |
858 | * @IEEE80211_HW_HAS_RATE_CONTROL: | ||
859 | * The hardware or firmware includes rate control, and cannot be | ||
860 | * controlled by the stack. As such, no rate control algorithm | ||
861 | * should be instantiated, and the TX rate reported to userspace | ||
862 | * will be taken from the TX status instead of the rate control | ||
863 | * algorithm. | ||
864 | * Note that this requires that the driver implement a number of | ||
865 | * callbacks so it has the correct information, it needs to have | ||
866 | * the @set_rts_threshold callback and must look at the BSS config | ||
867 | * @use_cts_prot for G/N protection, @use_short_slot for slot | ||
868 | * timing in 2.4 GHz and @use_short_preamble for preambles for | ||
869 | * CCK frames. | ||
870 | * | ||
858 | * @IEEE80211_HW_RX_INCLUDES_FCS: | 871 | * @IEEE80211_HW_RX_INCLUDES_FCS: |
859 | * Indicates that received frames passed to the stack include | 872 | * Indicates that received frames passed to the stack include |
860 | * the FCS at the end. | 873 | * the FCS at the end. |
@@ -913,6 +926,7 @@ enum ieee80211_tkip_key_type { | |||
913 | * avoid waking up cpu. | 926 | * avoid waking up cpu. |
914 | */ | 927 | */ |
915 | enum ieee80211_hw_flags { | 928 | enum ieee80211_hw_flags { |
929 | IEEE80211_HW_HAS_RATE_CONTROL = 1<<0, | ||
916 | IEEE80211_HW_RX_INCLUDES_FCS = 1<<1, | 930 | IEEE80211_HW_RX_INCLUDES_FCS = 1<<1, |
917 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2, | 931 | IEEE80211_HW_HOST_BROADCAST_PS_BUFFERING = 1<<2, |
918 | IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3, | 932 | IEEE80211_HW_2GHZ_SHORT_SLOT_INCAPABLE = 1<<3, |