Commit 6d18b668 authored by Allan Wang's avatar Allan Wang Committed by Felix Fietkau
Browse files

wifi: mt76: introduce mt792x_config_mac_addr_list routine



Add mt792x_config_mac_addr_list routine in order to set
the mac address list supported by the driver. Initialize
wiphy->addresses/n_addresses for mt792x driver

Signed-off-by: default avatarHao Zhang <hao.zhang@mediatek.com>
Signed-off-by: default avatarLeon Yen <Leon.Yen@mediatek.com>
Signed-off-by: default avatarAllan Wang <allan.wang@mediatek.com>
Link: https://patch.msgid.link/20241016101017.19598-1-allan.wang@mediatek.com


Signed-off-by: default avatarFelix Fietkau <nbd@nbd.name>
parent 57af267d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -227,6 +227,7 @@ static void mt7921_init_work(struct work_struct *work)

	mt76_set_stream_caps(&dev->mphy, true);
	mt7921_set_stream_he_caps(&dev->phy);
	mt792x_config_mac_addr_list(dev);

	ret = mt76_register_device(&dev->mt76, true, mt76_rates,
				   ARRAY_SIZE(mt76_rates));
+1 −0
Original line number Diff line number Diff line
@@ -178,6 +178,7 @@ static void mt7925_init_work(struct work_struct *work)

	mt76_set_stream_caps(&dev->mphy, true);
	mt7925_set_stream_he_eht_caps(&dev->phy);
	mt792x_config_mac_addr_list(dev);

	ret = mt7925_init_mlo_caps(&dev->phy);
	if (ret) {
+3 −0
Original line number Diff line number Diff line
@@ -206,6 +206,8 @@ struct mt792x_dev {
		struct mt76_phy mphy;
	};

	struct mac_address macaddr_list[8];

	const struct mt76_bus_ops *bus_ops;
	struct mt792x_phy phy;

@@ -414,6 +416,7 @@ int mt792x_mcu_fw_pmctrl(struct mt792x_dev *dev);
void mt792x_mac_link_bss_remove(struct mt792x_dev *dev,
				struct mt792x_bss_conf *mconf,
				struct mt792x_link_sta *mlink);
void mt792x_config_mac_addr_list(struct mt792x_dev *dev);

static inline char *mt792x_ram_name(struct mt792x_dev *dev)
{
+22 −0
Original line number Diff line number Diff line
@@ -916,6 +916,28 @@ int mt792x_load_firmware(struct mt792x_dev *dev)
}
EXPORT_SYMBOL_GPL(mt792x_load_firmware);

void mt792x_config_mac_addr_list(struct mt792x_dev *dev)
{
	struct ieee80211_hw *hw = mt76_hw(dev);
	struct wiphy *wiphy = hw->wiphy;
	int i;

	for (i = 0; i < ARRAY_SIZE(dev->macaddr_list); i++) {
		u8 *addr = dev->macaddr_list[i].addr;

		memcpy(addr, dev->mphy.macaddr, ETH_ALEN);

		if (!i)
			continue;

		addr[0] |= BIT(1);
		addr[0] ^= ((i - 1) << 2);
	}
	wiphy->addresses = dev->macaddr_list;
	wiphy->n_addresses = ARRAY_SIZE(dev->macaddr_list);
}
EXPORT_SYMBOL_GPL(mt792x_config_mac_addr_list);

MODULE_DESCRIPTION("MediaTek MT792x core driver");
MODULE_LICENSE("Dual BSD/GPL");
MODULE_AUTHOR("Lorenzo Bianconi <lorenzo@kernel.org>");