From 24ec040a9792f3b886d28323ffa088b3291fcae6 Mon Sep 17 00:00:00 2001 From: Felix Fietkau Date: Sun, 30 Dec 2018 16:41:15 +0100 Subject: [PATCH] mt7603: fix BSSID configuration in AP mode Fixes BSSID value in self-generated frames, such as CF-End Signed-off-by: Felix Fietkau --- mt7603/main.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mt7603/main.c b/mt7603/main.c index b1e6a6f2..10c45503 100644 --- a/mt7603/main.c +++ b/mt7603/main.c @@ -92,6 +92,14 @@ mt7603_add_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) (get_unaligned_le16(vif->addr + 4) | MT_MAC_ADDR1_VALID)); + if (vif->type == NL80211_IFTYPE_AP) { + mt76_wr(dev, MT_BSSID0(mvif->idx), + get_unaligned_le32(vif->addr)); + mt76_wr(dev, MT_BSSID1(mvif->idx), + (get_unaligned_le16(vif->addr + 4) | + MT_BSSID1_VALID)); + } + idx = MT7603_WTBL_RESERVED - 1 - mvif->idx; dev->vif_mask |= BIT(mvif->idx); mvif->sta.wcid.idx = idx; @@ -116,6 +124,10 @@ mt7603_remove_interface(struct ieee80211_hw *hw, struct ieee80211_vif *vif) struct mt7603_dev *dev = hw->priv; int idx = mvif->sta.wcid.idx; + mt76_wr(dev, MT_MAC_ADDR0(mvif->idx), 0); + mt76_wr(dev, MT_MAC_ADDR1(mvif->idx), 0); + mt76_wr(dev, MT_BSSID0(mvif->idx), 0); + mt76_wr(dev, MT_BSSID1(mvif->idx), 0); mt7603_beacon_set_timer(dev, mvif->idx, 0); rcu_assign_pointer(dev->mt76.wcid[idx], NULL);