diff --git a/[refs] b/[refs] index 11729550065f..3ed60619b3b1 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 5d4ecd9370da6e32588f218a5495806635154352 +refs/heads/master: c29b9b9b0235d56e5602f61ed38702dd376aae20 diff --git a/trunk/net/mac80211/tx.c b/trunk/net/mac80211/tx.c index 9e952e37b7df..0820f127da2b 100644 --- a/trunk/net/mac80211/tx.c +++ b/trunk/net/mac80211/tx.c @@ -1487,7 +1487,20 @@ int ieee80211_subif_start_xmit(struct sk_buff *skb, nh_pos += encaps_len; h_pos += encaps_len; } - memcpy(skb_push(skb, hdrlen), &hdr, hdrlen); + + if (fc & IEEE80211_STYPE_QOS_DATA) { + __le16 *qos_control; + + qos_control = (__le16*) skb_push(skb, 2); + memcpy(skb_push(skb, hdrlen - 2), &hdr, hdrlen - 2); + /* + * Maybe we could actually set some fields here, for now just + * initialise to zero to indicate no special operation. + */ + *qos_control = 0; + } else + memcpy(skb_push(skb, hdrlen), &hdr, hdrlen); + nh_pos += hdrlen; h_pos += hdrlen;