| From: Felix Fietkau <nbd@nbd.name> |
| Date: Sun, 26 Mar 2023 17:11:34 +0200 |
| Subject: [PATCH] wifi: mac80211: fix receiving mesh packets in forwarding=0 |
| networks |
| MIME-Version: 1.0 |
| Content-Type: text/plain; charset=UTF-8 |
| Content-Transfer-Encoding: 8bit |
| |
| When forwarding is set to 0, frames are typically sent with ttl=1. |
| Move the ttl decrement check below the check for local receive in order to |
| fix packet drops. |
| |
| Reported-by: Thomas HΓΌhn <thomas.huehn@hs-nordhausen.de> |
| Reported-by: Nick Hainke <vincent@systemli.org> |
| Fixes: 986e43b19ae9 ("wifi: mac80211: fix receiving A-MSDU frames on mesh interfaces") |
| Signed-off-by: Felix Fietkau <nbd@nbd.name> |
| --- |
| |
| --- a/net/mac80211/rx.c |
| +++ b/net/mac80211/rx.c |
| @@ -2828,14 +2828,6 @@ ieee80211_rx_mesh_data(struct ieee80211_ |
| if (sdata->crypto_tx_tailroom_needed_cnt) |
| tailroom = IEEE80211_ENCRYPT_TAILROOM; |
| |
| - if (!--mesh_hdr->ttl) { |
| - if (multicast) |
| - goto rx_accept; |
| - |
| - IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_ttl); |
| - return RX_DROP_MONITOR; |
| - } |
| - |
| if (mesh_hdr->flags & MESH_FLAGS_AE) { |
| struct mesh_path *mppath; |
| char *proxied_addr; |
| @@ -2874,6 +2866,14 @@ ieee80211_rx_mesh_data(struct ieee80211_ |
| if (ether_addr_equal(sdata->vif.addr, eth->h_dest)) |
| goto rx_accept; |
| |
| + if (!--mesh_hdr->ttl) { |
| + if (multicast) |
| + goto rx_accept; |
| + |
| + IEEE80211_IFSTA_MESH_CTR_INC(ifmsh, dropped_frames_ttl); |
| + return RX_DROP_MONITOR; |
| + } |
| + |
| if (!ifmsh->mshcfg.dot11MeshForwarding) { |
| if (is_multicast_ether_addr(eth->h_dest)) |
| goto rx_accept; |