wifi: mac80211: allow link address A2 in TXQ dequeue
authorJohannes Berg <johannes.berg@intel.com>
Wed, 24 Aug 2022 10:37:32 +0000 (12:37 +0200)
committerJohannes Berg <johannes.berg@intel.com>
Thu, 25 Aug 2022 08:41:34 +0000 (10:41 +0200)
In ieee80211_tx_dequeue() we currently allow a control port
frame to be transmitted on a non-authorized port only if the
A2 matches the local interface address, but if that's an MLD
and the peer is a legacy peer, we need to allow link address
here. Fix that.

Signed-off-by: Johannes Berg <johannes.berg@intel.com>
net/mac80211/tx.c

index 1c2658e4976fe7e8a2ae942243f33da815833746..51d564c8742bab8dd2ee02fdc4b0b84729a98d64 100644 (file)
@@ -3772,8 +3772,8 @@ begin:
                             !test_sta_flag(tx.sta, WLAN_STA_AUTHORIZED) &&
                             (!(info->control.flags &
                                IEEE80211_TX_CTRL_PORT_CTRL_PROTO) ||
-                             !ether_addr_equal(tx.sdata->vif.addr,
-                                               hdr->addr2)))) {
+                             !ieee80211_is_our_addr(tx.sdata, hdr->addr2,
+                                                    NULL)))) {
                        I802_DEBUG_INC(local->tx_handlers_drop_unauth_port);
                        ieee80211_free_txskb(&local->hw, skb);
                        goto begin;