diff options
Diffstat (limited to 'net/mac80211/wme.c')
-rw-r--r-- | net/mac80211/wme.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/mac80211/wme.c b/net/mac80211/wme.c index fd52e695c071..43327115b490 100644 --- a/net/mac80211/wme.c +++ b/net/mac80211/wme.c | |||
@@ -83,7 +83,7 @@ u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata, | |||
83 | break; | 83 | break; |
84 | #ifdef CONFIG_MAC80211_MESH | 84 | #ifdef CONFIG_MAC80211_MESH |
85 | case NL80211_IFTYPE_MESH_POINT: | 85 | case NL80211_IFTYPE_MESH_POINT: |
86 | ra = skb->data; | 86 | qos = true; |
87 | break; | 87 | break; |
88 | #endif | 88 | #endif |
89 | case NL80211_IFTYPE_STATION: | 89 | case NL80211_IFTYPE_STATION: |
@@ -143,11 +143,15 @@ void ieee80211_set_qos_hdr(struct ieee80211_sub_if_data *sdata, | |||
143 | /* Fill in the QoS header if there is one. */ | 143 | /* Fill in the QoS header if there is one. */ |
144 | if (ieee80211_is_data_qos(hdr->frame_control)) { | 144 | if (ieee80211_is_data_qos(hdr->frame_control)) { |
145 | u8 *p = ieee80211_get_qos_ctl(hdr); | 145 | u8 *p = ieee80211_get_qos_ctl(hdr); |
146 | u8 ack_policy = 0, tid; | 146 | u8 ack_policy, tid; |
147 | 147 | ||
148 | tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK; | 148 | tid = skb->priority & IEEE80211_QOS_CTL_TAG1D_MASK; |
149 | 149 | ||
150 | if (unlikely(sdata->local->wifi_wme_noack_test)) | 150 | /* preserve EOSP bit */ |
151 | ack_policy = *p & IEEE80211_QOS_CTL_EOSP; | ||
152 | |||
153 | if (unlikely(sdata->local->wifi_wme_noack_test) || | ||
154 | is_multicast_ether_addr(hdr->addr1)) | ||
151 | ack_policy |= IEEE80211_QOS_CTL_ACK_POLICY_NOACK; | 155 | ack_policy |= IEEE80211_QOS_CTL_ACK_POLICY_NOACK; |
152 | /* qos header is 2 bytes */ | 156 | /* qos header is 2 bytes */ |
153 | *p++ = ack_policy | tid; | 157 | *p++ = ack_policy | tid; |