mac80211: use rate index in TX control
This patch modifies struct ieee80211_tx_control to give band info and the rate index (instead of rate pointers) to drivers. This mostly serves to reduce the TX control structure size to make it fit into skb->cb so that the fragmentation code can put it there and we can think about passing it to drivers that way in the future. The rt2x00 driver update was done by Ivo, thanks. Signed-off-by: Ivo van Doorn <IvDoorn@gmail.com> Signed-off-by: Johannes Berg <johannes@sipsolutions.net> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
committed by
John W. Linville
parent
36d6825b91
commit
2e92e6f2c5
@@ -176,20 +176,24 @@ void rate_control_get_rate(struct net_device *dev,
|
||||
rcu_read_lock();
|
||||
sta = sta_info_get(local, hdr->addr1);
|
||||
|
||||
memset(sel, 0, sizeof(struct rate_selection));
|
||||
sel->rate_idx = -1;
|
||||
sel->nonerp_idx = -1;
|
||||
sel->probe_idx = -1;
|
||||
|
||||
ref->ops->get_rate(ref->priv, dev, sband, skb, sel);
|
||||
|
||||
BUG_ON(sel->rate_idx < 0);
|
||||
|
||||
/* Select a non-ERP backup rate. */
|
||||
if (!sel->nonerp) {
|
||||
if (sel->nonerp_idx < 0) {
|
||||
for (i = 0; i < sband->n_bitrates; i++) {
|
||||
struct ieee80211_rate *rate = &sband->bitrates[i];
|
||||
if (sel->rate->bitrate < rate->bitrate)
|
||||
if (sband->bitrates[sel->rate_idx].bitrate < rate->bitrate)
|
||||
break;
|
||||
|
||||
if (rate_supported(sta, sband->band, i) &&
|
||||
!(rate->flags & IEEE80211_RATE_ERP_G))
|
||||
sel->nonerp = rate;
|
||||
sel->nonerp_idx = i;
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user