mt7996_mac_write_txwi_80211() sets MT_TXD5_FL for an MLD interface only on multicast, EAPOL and 4-address null frames. A unicast management frame to an MLD peer goes out on a link that the hardware picks among the links of the peer, not on the link of its TXD. ML reconfiguration depends on that link: mac80211 removes a link before it sends the Link Reconfiguration Request, so that the request leaves on a remaining link, and the AP MLD sends the Response on the link where the request was received. With hardware link selection, the request leaves on the removed link, or the AP sends the Response there. The station then drops the Response, and the link removal ends with a disconnection. Set MT_TXD5_FL for unicast management frames to a station of an MLD interface, so that they keep the link that mac80211 or the driver selected. Fixes: f0b0b239b8f3 ("wifi: mt76: mt7996: rework mt7996_mac_write_txwi() for MLO support") Signed-off-by: Felix Fietkau --- drivers/net/wireless/mediatek/mt76/mt7996/mac.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c index a92536180dbe..03670293a78f 100644 --- a/drivers/net/wireless/mediatek/mt76/mt7996/mac.c +++ b/drivers/net/wireless/mediatek/mt76/mt7996/mac.c @@ -851,7 +851,8 @@ mt7996_mac_write_txwi_80211(struct mt7996_dev *dev, __le32 *txwi, } if (vif && ieee80211_vif_is_mld(vif) && - (multicast || unlikely(skb->protocol == cpu_to_be16(ETH_P_PAE)))) + (multicast || unlikely(skb->protocol == cpu_to_be16(ETH_P_PAE)) || + (ieee80211_is_mgmt(fc) && wcid->sta))) txwi[5] |= cpu_to_le32(MT_TXD5_FL); if (ieee80211_is_nullfunc(fc) && ieee80211_has_a4(fc) && -- 2.47.3