summaryrefslogtreecommitdiff
path: root/net/mac80211/rx.c
diff options
context:
space:
mode:
authorHelmut Schaa <helmut.schaa@googlemail.com>2011-12-21 09:11:35 +0100
committerJohn W. Linville <linville@tuxdriver.com>2011-12-21 15:07:52 -0500
commitaef6c928a92481f75fbd548eb8c1e840912444b8 (patch)
tree69211e517ad04d83c4dad31ef2009b28010c009a /net/mac80211/rx.c
parent3aebee028aa8eb8ed49b7dbd52dfb841f6dc8dff (diff)
downloadlinux-3.10-aef6c928a92481f75fbd548eb8c1e840912444b8.tar.gz
linux-3.10-aef6c928a92481f75fbd548eb8c1e840912444b8.tar.bz2
linux-3.10-aef6c928a92481f75fbd548eb8c1e840912444b8.zip
mac80211: Keep skb->piority for relayed frames in AP mode
When mac80211 relays a frame from STA1 to STA2 in AP mode it will get re-classified in the tx path. Unfortunately the frame protocol field is always set to ETH_P_8023 while the classification only kicks in for ETH_P_IP. Hence, a high priority frame from STA1 will be send to STA2 as best effort. Instead of running classification on the frame just use the same priority as STA1 did. Do this by adding 256 to the skb->priority to allow cfg80211_classify8021d to shortcut frame classification. Signed-off-by: Helmut Schaa <helmut.schaa@googlemail.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'net/mac80211/rx.c')
-rw-r--r--net/mac80211/rx.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/net/mac80211/rx.c b/net/mac80211/rx.c
index 57832eb44f3..59f124c5833 100644
--- a/net/mac80211/rx.c
+++ b/net/mac80211/rx.c
@@ -1827,7 +1827,12 @@ ieee80211_deliver_skb(struct ieee80211_rx_data *rx)
}
if (xmit_skb) {
- /* send to wireless media */
+ /*
+ * Send to wireless media and increase priority by 256 to
+ * keep the received priority instead of reclassifying
+ * the frame (see cfg80211_classify8021d).
+ */
+ xmit_skb->priority += 256;
xmit_skb->protocol = htons(ETH_P_802_3);
skb_reset_network_header(xmit_skb);
skb_reset_mac_header(xmit_skb);