[openwrt/openwrt] mac80211: fix rekey failure in drivers with 802.3 decap offload

LEDE Commits lede-commits at lists.infradead.org
Sat Feb 12 14:04:23 PST 2022


nbd pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/2fd208e2724e330ee9f42acb1c76be8942f968b2

commit 2fd208e2724e330ee9f42acb1c76be8942f968b2
Author: Felix Fietkau <nbd at nbd.name>
AuthorDate: Sat Feb 12 23:03:33 2022 +0100

    mac80211: fix rekey failure in drivers with 802.3 decap offload
    
    Signed-off-by: Felix Fietkau <nbd at nbd.name>
---
 ...211-fix-EAPoL-rekey-fail-in-802.3-rx-path.patch | 43 ++++++++++++++++++++++
 1 file changed, 43 insertions(+)

diff --git a/package/kernel/mac80211/patches/subsys/321-mac80211-fix-EAPoL-rekey-fail-in-802.3-rx-path.patch b/package/kernel/mac80211/patches/subsys/321-mac80211-fix-EAPoL-rekey-fail-in-802.3-rx-path.patch
new file mode 100644
index 0000000000..932403d653
--- /dev/null
+++ b/package/kernel/mac80211/patches/subsys/321-mac80211-fix-EAPoL-rekey-fail-in-802.3-rx-path.patch
@@ -0,0 +1,43 @@
+From: Deren Wu <deren.wu at mediatek.com>
+Date: Sun, 13 Feb 2022 00:20:15 +0800
+Subject: [PATCH] mac80211: fix EAPoL rekey fail in 802.3 rx path
+
+mac80211 set capability NL80211_EXT_FEATURE_CONTROL_PORT_OVER_NL80211
+to upper layer by default. That means we should pass EAPoL packets through
+nl80211 path only, and should not send the EAPoL skb to netdevice diretly.
+At the meanwhile, wpa_supplicant would not regist sock to listen EAPoL skb
+on the netdevice.
+
+However, there is no contorl_port_protocol handler in mac80211 for 802.3 RX
+packets, mac80211 driver would pass up the EAPoL rekey frame to netdevice
+and wpa_supplicant would be never interactive with this kind of packets,
+if SUPPORTS_RX_DECAP_OFFLOAD is enabled. This causes STA always rekey fail
+if EAPoL frame go through 802.3 path.
+
+To avoid this problem, align the same process as 802.11 type to handle
+this frame before put it into network stack.
+
+Fixes: 80a915ec4427 ("mac80211: add rx decapsulation offload support")
+Signed-off-by: Deren Wu <deren.wu at mediatek.com>
+---
+
+--- a/net/mac80211/rx.c
++++ b/net/mac80211/rx.c
+@@ -4523,16 +4523,7 @@ static void ieee80211_rx_8023(struct iee
+ 
+ 	/* deliver to local stack */
+ 	skb->protocol = eth_type_trans(skb, fast_rx->dev);
+-	memset(skb->cb, 0, sizeof(skb->cb));
+-	if (rx->list)
+-#if LINUX_VERSION_IS_GEQ(4,19,0)
+-		list_add_tail(&skb->list, rx->list);
+-#else
+-		__skb_queue_tail(rx->list, skb);
+-#endif
+-	else
+-		netif_receive_skb(skb);
+-
++	ieee80211_deliver_skb_to_local_stack(skb, rx);
+ }
+ 
+ static bool ieee80211_invoke_fast_rx(struct ieee80211_rx_data *rx,



More information about the lede-commits mailing list