 57db2280a2
			
		
	
	57db2280a2
	
	
	
		
			
			fix forwarding received mesh a-msdu packets add fast xmit support for mesh to improve performance Signed-off-by: Felix Fietkau <nbd@nbd.name>
		
			
				
	
	
		
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From: Felix Fietkau <nbd@nbd.name>
 | |
| Date: Wed, 15 Feb 2023 15:11:54 +0100
 | |
| Subject: [PATCH] wifi: mac80211: fix qos on mesh interfaces
 | |
| 
 | |
| When ieee80211_select_queue is called for mesh, the sta pointer is usually
 | |
| NULL, since the nexthop is looked up much later in the tx path.
 | |
| Explicitly check for unicast address in that case in order to make qos work
 | |
| again.
 | |
| 
 | |
| Fixes: 50e2ab392919 ("wifi: mac80211: fix queue selection for mesh/OCB interfaces")
 | |
| Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | |
| ---
 | |
| 
 | |
| --- a/net/mac80211/wme.c
 | |
| +++ b/net/mac80211/wme.c
 | |
| @@ -147,6 +147,7 @@ u16 ieee80211_select_queue_80211(struct
 | |
|  u16 ieee80211_select_queue(struct ieee80211_sub_if_data *sdata,
 | |
|  			   struct sta_info *sta, struct sk_buff *skb)
 | |
|  {
 | |
| +	const struct ethhdr *eth = (void *)skb->data;
 | |
|  	struct mac80211_qos_map *qos_map;
 | |
|  	bool qos;
 | |
|  
 | |
| @@ -154,8 +155,9 @@ u16 ieee80211_select_queue(struct ieee80
 | |
|  	skb_get_hash(skb);
 | |
|  
 | |
|  	/* all mesh/ocb stations are required to support WME */
 | |
| -	if (sta && (sdata->vif.type == NL80211_IFTYPE_MESH_POINT ||
 | |
| -		    sdata->vif.type == NL80211_IFTYPE_OCB))
 | |
| +	if ((sdata->vif.type == NL80211_IFTYPE_MESH_POINT &&
 | |
| +	    !is_multicast_ether_addr(eth->h_dest)) ||
 | |
| +	    (sdata->vif.type == NL80211_IFTYPE_OCB && sta))
 | |
|  		qos = true;
 | |
|  	else if (sta)
 | |
|  		qos = sta->sta.wme;
 |