diff options
author | Johannes Berg <johannes.berg@intel.com> | 2010-12-22 10:15:30 +0100 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2010-12-22 15:44:22 -0500 |
commit | 172128468f61e16e1427238278b9ad775584aa89 (patch) | |
tree | 2089bf1afd912c0b3ee0d486ed4be3a94517ca41 | |
parent | db7ec38d8e99f449856c11ffaef363a8eb5af90f (diff) | |
download | kernel_samsung_tuna-172128468f61e16e1427238278b9ad775584aa89.zip kernel_samsung_tuna-172128468f61e16e1427238278b9ad775584aa89.tar.gz kernel_samsung_tuna-172128468f61e16e1427238278b9ad775584aa89.tar.bz2 |
mac80211: cleanup select_queue
There's a redundant rcu_read_lock/unlock pair, a
redundant variable, and a few redundant accesses
to the 1d_to_ac array. Fix this to make the code
neater and easier to follow.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
-rw-r--r-- | net/mac80211/wme.c | 20 |
1 files changed, 6 insertions, 14 deletions
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c index 58e75bb..28bc084 100644 --- a/net/mac80211/wme.c +++ b/net/mac80211/wme.c @@ -59,26 +59,22 @@ u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata, { struct ieee80211_local *local = sdata->local; struct sta_info *sta = NULL; - u32 sta_flags = 0; const u8 *ra = NULL; bool qos = false; if (local->hw.queues < 4 || skb->len < 6) { skb->priority = 0; /* required for correct WPA/11i MIC */ - return min_t(u16, local->hw.queues - 1, - ieee802_1d_to_ac[skb->priority]); + return min_t(u16, local->hw.queues - 1, IEEE80211_AC_BE); } rcu_read_lock(); switch (sdata->vif.type) { case NL80211_IFTYPE_AP_VLAN: - rcu_read_lock(); sta = rcu_dereference(sdata->u.vlan.sta); - if (sta) - sta_flags = get_sta_flags(sta); - rcu_read_unlock(); - if (sta) + if (sta) { + qos = get_sta_flags(sta) & WLAN_STA_WME; break; + } case NL80211_IFTYPE_AP: ra = skb->data; break; @@ -107,17 +103,13 @@ u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata, if (!sta && ra && !is_multicast_ether_addr(ra)) { sta = sta_info_get(sdata, ra); if (sta) - sta_flags = get_sta_flags(sta); + qos = get_sta_flags(sta) & WLAN_STA_WME; } - - if (sta_flags & WLAN_STA_WME) - qos = true; - rcu_read_unlock(); if (!qos) { skb->priority = 0; /* required for correct WPA/11i MIC */ - return ieee802_1d_to_ac[skb->priority]; + return IEEE80211_AC_BE; } /* use the data classifier to determine what 802.1d tag the |