mac80211: mark patches accepted upstream
[openwrt/staging/dedeckeh.git] / package / kernel / mac80211 / patches / subsys / 314-v6.3-wifi-mac80211-remove-mesh-forwarding-congestion-chec.patch
diff --git a/package/kernel/mac80211/patches/subsys/314-v6.3-wifi-mac80211-remove-mesh-forwarding-congestion-chec.patch b/package/kernel/mac80211/patches/subsys/314-v6.3-wifi-mac80211-remove-mesh-forwarding-congestion-chec.patch
new file mode 100644 (file)
index 0000000..515176f
--- /dev/null
@@ -0,0 +1,54 @@
+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) {