diff options
author | Jouni Malinen <jouni.malinen@atheros.com> | 2009-12-29 05:59:19 -0500 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-01-12 13:50:09 -0500 |
commit | e00cfce0cb2a397859607bf515c6de9ce064b64a (patch) | |
tree | 038d87e7d90a5bcdd8f689a563221eab883b0546 /include/net/mac80211.h | |
parent | 3dc1de0bf23816ed557ac8addf680cd5ee57e805 (diff) |
mac80211: Select lowest rate based on basic rate set in AP mode
If the basic rate set is configured to not include the lowest rate
(e.g., basic rate set = 6, 12, 24 Mbps in IEEE 802.11g mode), the AP
should not send out broadcast frames at 1 Mbps. This type of
configuration can be used to optimize channel usage in cases where
there is no need for backwards compatibility with IEEE 802.11b-only
devices.
In AP mode, mac80211 was unconditionally using the lowest rate for
Beacon frames and similarly, with all rate control algorithms that use
rate_control_send_low(), the lowest rate ended up being used for all
broadcast frames (and all unicast frames that are sent before
association). Change this to take into account the basic rate
configuration in AP mode, i.e., use the lowest rate in the basic rate
set instead of the lowest supported rate when selecting the rate.
Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'include/net/mac80211.h')
-rw-r--r-- | include/net/mac80211.h | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/include/net/mac80211.h b/include/net/mac80211.h index ad4b70034e77..39c516c352be 100644 --- a/include/net/mac80211.h +++ b/include/net/mac80211.h | |||
@@ -2299,6 +2299,7 @@ enum rate_control_changed { | |||
2299 | * @max_rate_idx: user-requested maximum rate (not MCS for now) | 2299 | * @max_rate_idx: user-requested maximum rate (not MCS for now) |
2300 | * @skb: the skb that will be transmitted, the control information in it needs | 2300 | * @skb: the skb that will be transmitted, the control information in it needs |
2301 | * to be filled in | 2301 | * to be filled in |
2302 | * @ap: whether this frame is sent out in AP mode | ||
2302 | */ | 2303 | */ |
2303 | struct ieee80211_tx_rate_control { | 2304 | struct ieee80211_tx_rate_control { |
2304 | struct ieee80211_hw *hw; | 2305 | struct ieee80211_hw *hw; |
@@ -2308,6 +2309,7 @@ struct ieee80211_tx_rate_control { | |||
2308 | struct ieee80211_tx_rate reported_rate; | 2309 | struct ieee80211_tx_rate reported_rate; |
2309 | bool rts, short_preamble; | 2310 | bool rts, short_preamble; |
2310 | u8 max_rate_idx; | 2311 | u8 max_rate_idx; |
2312 | bool ap; | ||
2311 | }; | 2313 | }; |
2312 | 2314 | ||
2313 | struct rate_control_ops { | 2315 | struct rate_control_ops { |