Skip to content

Commit e96826b

Browse files
LorenzoBianconiKalle Valo
authored andcommitted
mt7601u: move mt7601u_set_macaddr in mac related code
Remove static qualifier from mt7601u_set_macaddr routine and move it in mac related code in order to be used to properly support vif with different mac address respect to the default one Signed-off-by: Lorenzo Bianconi <[email protected]> Signed-off-by: Kalle Valo <[email protected]>
1 parent 09e93f2 commit e96826b

File tree

3 files changed

+19
-22
lines changed

3 files changed

+19
-22
lines changed

drivers/net/wireless/mediatek/mt7601u/eeprom.c

Lines changed: 2 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
#include <asm/unaligned.h>
2020
#include "mt7601u.h"
2121
#include "eeprom.h"
22+
#include "mac.h"
2223

2324
static bool
2425
field_valid(u8 val)
@@ -134,27 +135,6 @@ mt7601u_set_chip_cap(struct mt7601u_dev *dev, u8 *eeprom)
134135
"Error: device has more than 1 RX/TX stream!\n");
135136
}
136137

137-
static int
138-
mt7601u_set_macaddr(struct mt7601u_dev *dev, const u8 *eeprom)
139-
{
140-
const void *src = eeprom + MT_EE_MAC_ADDR;
141-
142-
ether_addr_copy(dev->macaddr, src);
143-
144-
if (!is_valid_ether_addr(dev->macaddr)) {
145-
eth_random_addr(dev->macaddr);
146-
dev_info(dev->dev,
147-
"Invalid MAC address, using random address %pM\n",
148-
dev->macaddr);
149-
}
150-
151-
mt76_wr(dev, MT_MAC_ADDR_DW0, get_unaligned_le32(dev->macaddr));
152-
mt76_wr(dev, MT_MAC_ADDR_DW1, get_unaligned_le16(dev->macaddr + 4) |
153-
FIELD_PREP(MT_MAC_ADDR_DW1_U2ME_MASK, 0xff));
154-
155-
return 0;
156-
}
157-
158138
static void mt7601u_set_channel_target_power(struct mt7601u_dev *dev,
159139
u8 *eeprom, u8 max_pwr)
160140
{
@@ -400,7 +380,7 @@ mt7601u_eeprom_init(struct mt7601u_dev *dev)
400380
dev_info(dev->dev, "EEPROM ver:%02hhx fae:%02hhx\n",
401381
eeprom[MT_EE_VERSION_EE], eeprom[MT_EE_VERSION_FAE]);
402382

403-
mt7601u_set_macaddr(dev, eeprom);
383+
mt7601u_set_macaddr(dev, eeprom + MT_EE_MAC_ADDR);
404384
mt7601u_set_chip_cap(dev, eeprom);
405385
mt7601u_set_channel_power(dev, eeprom);
406386
mt7601u_set_country_reg(dev, eeprom);

drivers/net/wireless/mediatek/mt7601u/mac.c

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,22 @@
1616
#include "trace.h"
1717
#include <linux/etherdevice.h>
1818

19+
void mt7601u_set_macaddr(struct mt7601u_dev *dev, const u8 *addr)
20+
{
21+
ether_addr_copy(dev->macaddr, addr);
22+
23+
if (!is_valid_ether_addr(dev->macaddr)) {
24+
eth_random_addr(dev->macaddr);
25+
dev_info(dev->dev,
26+
"Invalid MAC address, using random address %pM\n",
27+
dev->macaddr);
28+
}
29+
30+
mt76_wr(dev, MT_MAC_ADDR_DW0, get_unaligned_le32(dev->macaddr));
31+
mt76_wr(dev, MT_MAC_ADDR_DW1, get_unaligned_le16(dev->macaddr + 4) |
32+
FIELD_PREP(MT_MAC_ADDR_DW1_U2ME_MASK, 0xff));
33+
}
34+
1935
static void
2036
mt76_mac_process_tx_rate(struct ieee80211_tx_rate *txrate, u16 rate)
2137
{

drivers/net/wireless/mediatek/mt7601u/mac.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -174,5 +174,6 @@ u16 mt76_mac_tx_rate_val(struct mt7601u_dev *dev,
174174
struct mt76_tx_status
175175
mt7601u_mac_fetch_tx_status(struct mt7601u_dev *dev);
176176
void mt76_send_tx_status(struct mt7601u_dev *dev, struct mt76_tx_status *stat);
177+
void mt7601u_set_macaddr(struct mt7601u_dev *dev, const u8 *addr);
177178

178179
#endif

0 commit comments

Comments
 (0)