diff --git a/mt76x2_init.c b/mt76x2_init.c index 38496042..cdd9f6aa 100644 --- a/mt76x2_init.c +++ b/mt76x2_init.c @@ -231,6 +231,7 @@ mt76x2_init_beacon_offsets(struct mt76x2_dev *dev) int mt76x2_mac_reset(struct mt76x2_dev *dev, bool hard) { static const u8 null_addr[ETH_ALEN] = {}; + const u8 *macaddr = dev->mt76.macaddr; u32 val; int i, k; @@ -270,11 +271,13 @@ int mt76x2_mac_reset(struct mt76x2_dev *dev, bool hard) mt76_wr(dev, MT_MCU_CLOCK_CTL, 0x1401); mt76_clear(dev, MT_FCE_L2_STUFF, MT_FCE_L2_STUFF_WR_MPDU_LEN_EN); - mt76_wr(dev, MT_MAC_ADDR_DW0, 0); - mt76_wr(dev, MT_MAC_ADDR_DW1, 0); + mt76_wr(dev, MT_MAC_ADDR_DW0, get_unaligned_le32(macaddr)); + mt76_wr(dev, MT_MAC_ADDR_DW1, get_unaligned_le16(macaddr + 4)); - mt76_wr(dev, MT_MAC_BSSID_DW0, 0); - mt76_wr(dev, MT_MAC_BSSID_DW1, 0); + mt76_wr(dev, MT_MAC_BSSID_DW0, get_unaligned_le32(macaddr)); + mt76_wr(dev, MT_MAC_BSSID_DW1, get_unaligned_le16(macaddr + 4) | + FIELD_PREP(MT_MAC_BSSID_DW1_MBSS_MODE, 3) | /* 8 beacons */ + MT_MAC_BSSID_DW1_MBSS_LOCAL_BIT); mt76_set(dev, MT_MAC_ADDR_EXT_CTL, MT_MAC_ADDR_EXT_CTL_EN); diff --git a/mt76x2_mac.c b/mt76x2_mac.c index d2ae093b..60cee4ab 100644 --- a/mt76x2_mac.c +++ b/mt76x2_mac.c @@ -27,15 +27,6 @@ void mt76x2_mac_set_bssid(struct mt76x2_dev *dev, u8 idx, const u8 *addr) if (addr) { lo = get_unaligned_le32(addr); hi = get_unaligned_le16(addr + 4); - - if (!idx) { - mt76_wr(dev, MT_MAC_BSSID_DW0, lo); - - mt76_rmw_field(dev, MT_MAC_BSSID_DW1, - MT_MAC_BSSID_DW1_ADDR, - hi); - } - hi |= MT_MAC_APC_BSSID0_H_EN; } @@ -50,11 +41,6 @@ void mt76x2_mac_set_ext_mac(struct mt76x2_dev *dev, u8 idx, const u8 *addr) if (addr) { lo = get_unaligned_le32(addr); hi = get_unaligned_le16(addr + 4); - - if (!idx) { - mt76_wr(dev, MT_MAC_ADDR_DW0, lo); - mt76_wr(dev, MT_MAC_ADDR_DW1, hi); - } } mt76_wr(dev, MT_MAC_ADDR_EXT_L(idx), lo);