mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-03 14:34:27 -05:00 
			
		
		
		
	The standard defines the A-MSDU header length field differently for mesh compared to other modes. Deal with this accordingly and work around broken implementations (e.g. ath10k, ath11k). Signed-off-by: Felix Fietkau <nbd@nbd.name>
		
			
				
	
	
		
			55 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
From: Felix Fietkau <nbd@nbd.name>
 | 
						|
Date: Fri, 2 Dec 2022 17:01:46 +0100
 | 
						|
Subject: [PATCH] wifi: mac80211: remove mesh forwarding congestion check
 | 
						|
 | 
						|
Now that all drivers use iTXQ, it does not make sense to check to drop
 | 
						|
tx forwarding packets when the driver has stopped the queues.
 | 
						|
fq_codel will take care of dropping packets when the queues fill up
 | 
						|
 | 
						|
Signed-off-by: Felix Fietkau <nbd@nbd.name>
 | 
						|
---
 | 
						|
 | 
						|
--- a/net/mac80211/debugfs_netdev.c
 | 
						|
+++ b/net/mac80211/debugfs_netdev.c
 | 
						|
@@ -603,8 +603,6 @@ IEEE80211_IF_FILE(fwded_mcast, u.mesh.ms
 | 
						|
 IEEE80211_IF_FILE(fwded_unicast, u.mesh.mshstats.fwded_unicast, DEC);
 | 
						|
 IEEE80211_IF_FILE(fwded_frames, u.mesh.mshstats.fwded_frames, DEC);
 | 
						|
 IEEE80211_IF_FILE(dropped_frames_ttl, u.mesh.mshstats.dropped_frames_ttl, DEC);
 | 
						|
-IEEE80211_IF_FILE(dropped_frames_congestion,
 | 
						|
-		  u.mesh.mshstats.dropped_frames_congestion, DEC);
 | 
						|
 IEEE80211_IF_FILE(dropped_frames_no_route,
 | 
						|
 		  u.mesh.mshstats.dropped_frames_no_route, DEC);
 | 
						|
 
 | 
						|
@@ -740,7 +738,6 @@ static void add_mesh_stats(struct ieee80
 | 
						|
 	MESHSTATS_ADD(fwded_frames);
 | 
						|
 	MESHSTATS_ADD(dropped_frames_ttl);
 | 
						|
 	MESHSTATS_ADD(dropped_frames_no_route);
 | 
						|
-	MESHSTATS_ADD(dropped_frames_congestion);
 | 
						|
 #undef MESHSTATS_ADD
 | 
						|
 }
 | 
						|
 
 | 
						|
--- a/net/mac80211/ieee80211_i.h
 | 
						|
+++ b/net/mac80211/ieee80211_i.h
 | 
						|
@@ -329,7 +329,6 @@ struct mesh_stats {
 | 
						|
 	__u32 fwded_frames;		/* Mesh total forwarded frames */
 | 
						|
 	__u32 dropped_frames_ttl;	/* Not transmitted since mesh_ttl == 0*/
 | 
						|
 	__u32 dropped_frames_no_route;	/* Not transmitted, no route found */
 | 
						|
-	__u32 dropped_frames_congestion;/* Not forwarded due to congestion */
 | 
						|
 };
 | 
						|
 
 | 
						|
 #define PREQ_Q_F_START		0x1
 | 
						|
--- a/net/mac80211/rx.c
 | 
						|
+++ b/net/mac80211/rx.c
 | 
						|
@@ -2926,11 +2926,6 @@ ieee80211_rx_h_mesh_fwding(struct ieee80
 | 
						|
 		return RX_CONTINUE;
 | 
						|
 
 | 
						|
 	ac = ieee802_1d_to_ac[skb->priority];
 | 
						|
-	q = sdata->vif.hw_queue[ac];
 | 
						|
-	if (ieee80211_queue_stopped(&local->hw, q)) {
 | 
						|
-		IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_congestion);
 | 
						|
-		return RX_DROP_MONITOR;
 | 
						|
-	}
 | 
						|
 	skb_set_queue_mapping(skb, ac);
 | 
						|
 
 | 
						|
 	if (!--mesh_hdr->ttl) {
 |