diff --git a/mt7603_main.c b/mt7603_main.c index cdaf71b8..d18d1bea 100644 --- a/mt7603_main.c +++ b/mt7603_main.c @@ -198,12 +198,20 @@ mt7603_configure_filter(struct ieee80211_hw *hw, unsigned int changed_flags, static void mt7603_bss_info_changed(struct ieee80211_hw *hw, struct ieee80211_vif *vif, - struct ieee80211_bss_conf *info, u32 changed) + struct ieee80211_bss_conf *info, u32 changed) { struct mt7603_dev *dev = hw->priv; + struct mt7603_vif *mvif = (struct mt7603_vif *) vif->drv_priv; mutex_lock(&dev->mutex); + if (changed & BSS_CHANGED_ASSOC) { + mt76_wr(dev, MT_BSSID0(mvif->idx), + get_unaligned_le32(info->bssid)); + mt76_wr(dev, MT_BSSID1(mvif->idx), + get_unaligned_le16(info->bssid + 4)); + } + if (changed & BSS_CHANGED_ERP_SLOT) { dev->slottime = info->use_short_slot ? 9 : 20; mt7603_mac_set_timing(dev); diff --git a/mt7603_regs.h b/mt7603_regs.h index e3a19a48..c94b6032 100644 --- a/mt7603_regs.h +++ b/mt7603_regs.h @@ -254,10 +254,13 @@ #define MT_WF_RFCR_DROP_NDPA BIT(20) #define MT_WF_RFCR_DROP_UNWANTED_CTL BIT(21) -#define MT_MAC_ADDR0(idx) MT_WF_RMAC(0x24 + idx * 8) -#define MT_MAC_ADDR1(idx) MT_WF_RMAC(0x28 + idx * 8) -#define MT_MAC_ADDR1_ADDR GENMASK(15, 0) -#define MT_MAC_ADDR1_VALID BIT(16) +#define MT_BSSID0(idx) MT_WF_RMAC(0x04 + idx * 8) +#define MT_BSSID1(idx) MT_WF_RMAC(0x08 + idx * 8) + +#define MT_MAC_ADDR0(idx) MT_WF_RMAC(0x24 + idx * 8) +#define MT_MAC_ADDR1(idx) MT_WF_RMAC(0x28 + idx * 8) +#define MT_MAC_ADDR1_ADDR GENMASK(15, 0) +#define MT_MAC_ADDR1_VALID BIT(16) #define MT_WF_RMACDR MT_WF_RMAC(0x078) #define MT_WF_RMACDR_TSF_PROBERSP_DIS BIT(0)