.. | .. |
---|
141 | 141 | u16 __ieee80211_select_queue(struct ieee80211_sub_if_data *sdata, |
---|
142 | 142 | struct sta_info *sta, struct sk_buff *skb) |
---|
143 | 143 | { |
---|
| 144 | + const struct ethhdr *eth = (void *)skb->data; |
---|
144 | 145 | struct mac80211_qos_map *qos_map; |
---|
145 | 146 | bool qos; |
---|
146 | 147 | |
---|
147 | 148 | /* all mesh/ocb stations are required to support WME */ |
---|
148 | | - if (sta && (sdata->vif.type == NL80211_IFTYPE_MESH_POINT || |
---|
149 | | - sdata->vif.type == NL80211_IFTYPE_OCB)) |
---|
| 149 | + if ((sdata->vif.type == NL80211_IFTYPE_MESH_POINT && |
---|
| 150 | + !is_multicast_ether_addr(eth->h_dest)) || |
---|
| 151 | + (sdata->vif.type == NL80211_IFTYPE_OCB && sta)) |
---|
150 | 152 | qos = true; |
---|
151 | 153 | else if (sta) |
---|
152 | 154 | qos = sta->sta.wme; |
---|