diff options
author | Johannes Berg <johannes@sipsolutions.net> | 2008-10-21 06:40:02 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2008-10-31 19:00:23 -0400 |
commit | e6a9854b05c1a6af1308fe2b8c68f35abf28a3ee (patch) | |
tree | 241f611f8194586ccabf61bacb060508773b9d05 /drivers/net/wireless/rt2x00/rt2x00mac.c | |
parent | cb121bad67a32cde37adc2729b7e18aa4fd3063e (diff) |
mac80211/drivers: rewrite the rate control API
So after the previous changes we were still unhappy with how
convoluted the API is and decided to make things simpler for
everybody. This completely changes the rate control API, now
taking into account 802.11n with MCS rates and more control,
most drivers don't support that though.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: Johannes Berg <johannes@sipsolutions.net>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/rt2x00/rt2x00mac.c')
-rw-r--r-- | drivers/net/wireless/rt2x00/rt2x00mac.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/net/wireless/rt2x00/rt2x00mac.c b/drivers/net/wireless/rt2x00/rt2x00mac.c index 931183369f07..b32d59eafaa3 100644 --- a/drivers/net/wireless/rt2x00/rt2x00mac.c +++ b/drivers/net/wireless/rt2x00/rt2x00mac.c | |||
@@ -39,7 +39,7 @@ static int rt2x00mac_tx_rts_cts(struct rt2x00_dev *rt2x00dev, | |||
39 | unsigned int data_length; | 39 | unsigned int data_length; |
40 | int retval = 0; | 40 | int retval = 0; |
41 | 41 | ||
42 | if (tx_info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT) | 42 | if (tx_info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) |
43 | data_length = sizeof(struct ieee80211_cts); | 43 | data_length = sizeof(struct ieee80211_cts); |
44 | else | 44 | else |
45 | data_length = sizeof(struct ieee80211_rts); | 45 | data_length = sizeof(struct ieee80211_rts); |
@@ -64,11 +64,11 @@ static int rt2x00mac_tx_rts_cts(struct rt2x00_dev *rt2x00dev, | |||
64 | */ | 64 | */ |
65 | memcpy(skb->cb, frag_skb->cb, sizeof(skb->cb)); | 65 | memcpy(skb->cb, frag_skb->cb, sizeof(skb->cb)); |
66 | rts_info = IEEE80211_SKB_CB(skb); | 66 | rts_info = IEEE80211_SKB_CB(skb); |
67 | rts_info->flags &= ~IEEE80211_TX_CTL_USE_RTS_CTS; | 67 | rts_info->control.rates[0].flags &= ~IEEE80211_TX_RC_USE_RTS_CTS; |
68 | rts_info->flags &= ~IEEE80211_TX_CTL_USE_CTS_PROTECT; | 68 | rts_info->control.rates[0].flags &= ~IEEE80211_TX_RC_USE_CTS_PROTECT; |
69 | rts_info->flags &= ~IEEE80211_TX_CTL_REQ_TX_STATUS; | 69 | rts_info->flags &= ~IEEE80211_TX_CTL_REQ_TX_STATUS; |
70 | 70 | ||
71 | if (tx_info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT) | 71 | if (tx_info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) |
72 | rts_info->flags |= IEEE80211_TX_CTL_NO_ACK; | 72 | rts_info->flags |= IEEE80211_TX_CTL_NO_ACK; |
73 | else | 73 | else |
74 | rts_info->flags &= ~IEEE80211_TX_CTL_NO_ACK; | 74 | rts_info->flags &= ~IEEE80211_TX_CTL_NO_ACK; |
@@ -84,7 +84,7 @@ static int rt2x00mac_tx_rts_cts(struct rt2x00_dev *rt2x00dev, | |||
84 | data_length += rt2x00crypto_tx_overhead(tx_info); | 84 | data_length += rt2x00crypto_tx_overhead(tx_info); |
85 | #endif /* CONFIG_RT2X00_LIB_CRYPTO */ | 85 | #endif /* CONFIG_RT2X00_LIB_CRYPTO */ |
86 | 86 | ||
87 | if (tx_info->flags & IEEE80211_TX_CTL_USE_CTS_PROTECT) | 87 | if (tx_info->control.rates[0].flags & IEEE80211_TX_RC_USE_CTS_PROTECT) |
88 | ieee80211_ctstoself_get(rt2x00dev->hw, tx_info->control.vif, | 88 | ieee80211_ctstoself_get(rt2x00dev->hw, tx_info->control.vif, |
89 | frag_skb->data, data_length, tx_info, | 89 | frag_skb->data, data_length, tx_info, |
90 | (struct ieee80211_cts *)(skb->data)); | 90 | (struct ieee80211_cts *)(skb->data)); |
@@ -146,8 +146,8 @@ int rt2x00mac_tx(struct ieee80211_hw *hw, struct sk_buff *skb) | |||
146 | * inside the hardware. | 146 | * inside the hardware. |
147 | */ | 147 | */ |
148 | frame_control = le16_to_cpu(ieee80211hdr->frame_control); | 148 | frame_control = le16_to_cpu(ieee80211hdr->frame_control); |
149 | if ((tx_info->flags & (IEEE80211_TX_CTL_USE_RTS_CTS | | 149 | if ((tx_info->control.rates[0].flags & (IEEE80211_TX_RC_USE_RTS_CTS | |
150 | IEEE80211_TX_CTL_USE_CTS_PROTECT)) && | 150 | IEEE80211_TX_RC_USE_CTS_PROTECT)) && |
151 | !rt2x00dev->ops->hw->set_rts_threshold) { | 151 | !rt2x00dev->ops->hw->set_rts_threshold) { |
152 | if (rt2x00queue_available(queue) <= 1) | 152 | if (rt2x00queue_available(queue) <= 1) |
153 | goto exit_fail; | 153 | goto exit_fail; |