| .. | .. |
|---|
| 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; |
|---|