diff --git a/mt7603_init.c b/mt7603_init.c index 5aacaa9b..893c5b53 100644 --- a/mt7603_init.c +++ b/mt7603_init.c @@ -191,6 +191,7 @@ mt7603_phy_init(struct mt7603_dev *dev) static void mt7603_mac_init(struct mt7603_dev *dev) { + void *dev_addr = dev->mt76.hw->wiphy->perm_addr; u8 addr[ETH_ALEN]; int i; @@ -204,6 +205,10 @@ mt7603_mac_init(struct mt7603_dev *dev) mt76_rmw_field(dev, MT_LPON_BTEIR, MT_LPON_BTEIR_MBSS_MODE, 2); mt76_rmw_field(dev, MT_WF_RMACDR, MT_WF_RMACDR_MBSSID_MASK, 2); + + mt76_wr(dev, MT_MAC_ADDR0(0), get_unaligned_le32(dev_addr)); + mt76_wr(dev, MT_MAC_ADDR1(0), + get_unaligned_le16(dev_addr + 4) | MT_MAC_ADDR1_VALID); } static int diff --git a/mt7603_regs.h b/mt7603_regs.h index cf472598..0fd7b5a7 100644 --- a/mt7603_regs.h +++ b/mt7603_regs.h @@ -208,6 +208,11 @@ #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_WF_RMACDR MT_WF_RMAC(0x078) #define MT_WF_RMACDR_TSF_PROBERSP_DIS BIT(0) #define MT_WF_RMACDR_TSF_TIM BIT(4)