Commit ecbbed32 authored by Felix Fietkau's avatar Felix Fietkau Committed by John W. Linville

ath: update hardware mac address with bssid mask

Preparation for updating common->macaddr along with virtual interface
MAC address changes.
Signed-off-by: default avatarFelix Fietkau <nbd@openwrt.org>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 703a4e55
...@@ -1698,12 +1698,11 @@ static void ath9k_hw_reset_opmode(struct ath_hw *ah, ...@@ -1698,12 +1698,11 @@ static void ath9k_hw_reset_opmode(struct ath_hw *ah,
ENABLE_REGWRITE_BUFFER(ah); ENABLE_REGWRITE_BUFFER(ah);
REG_WRITE(ah, AR_STA_ID0, get_unaligned_le32(common->macaddr)); REG_RMW(ah, AR_STA_ID1, macStaId1
REG_WRITE(ah, AR_STA_ID1, get_unaligned_le16(common->macaddr + 4)
| macStaId1
| AR_STA_ID1_RTS_USE_DEF | AR_STA_ID1_RTS_USE_DEF
| (ah->config.ack_6mb ? AR_STA_ID1_ACKCTS_6MB : 0) | (ah->config.ack_6mb ? AR_STA_ID1_ACKCTS_6MB : 0)
| ah->sta_id1_defaults); | ah->sta_id1_defaults,
~AR_STA_ID1_SADH_MASK);
ath_hw_setbssidmask(common); ath_hw_setbssidmask(common);
REG_WRITE(ah, AR_DEF_ANTENNA, saveDefAntenna); REG_WRITE(ah, AR_DEF_ANTENNA, saveDefAntenna);
ath9k_hw_write_associd(ah); ath9k_hw_write_associd(ah);
......
...@@ -1493,9 +1493,6 @@ enum { ...@@ -1493,9 +1493,6 @@ enum {
#define AR9271_RADIO_RF_RST 0x20 #define AR9271_RADIO_RF_RST 0x20
#define AR9271_GATE_MAC_CTL 0x4000 #define AR9271_GATE_MAC_CTL 0x4000
#define AR_STA_ID0 0x8000
#define AR_STA_ID1 0x8004
#define AR_STA_ID1_SADH_MASK 0x0000FFFF
#define AR_STA_ID1_STA_AP 0x00010000 #define AR_STA_ID1_STA_AP 0x00010000
#define AR_STA_ID1_ADHOC 0x00020000 #define AR_STA_ID1_ADHOC 0x00020000
#define AR_STA_ID1_PWR_SAV 0x00040000 #define AR_STA_ID1_PWR_SAV 0x00040000
......
...@@ -118,6 +118,12 @@ ...@@ -118,6 +118,12 @@
void ath_hw_setbssidmask(struct ath_common *common) void ath_hw_setbssidmask(struct ath_common *common)
{ {
void *ah = common->ah; void *ah = common->ah;
u32 id1;
REG_WRITE(ah, AR_STA_ID0, get_unaligned_le32(common->macaddr));
id1 = REG_READ(ah, AR_STA_ID1) & ~AR_STA_ID1_SADH_MASK;
id1 |= get_unaligned_le16(common->macaddr + 4);
REG_WRITE(ah, AR_STA_ID1, id1);
REG_WRITE(ah, AR_BSSMSKL, get_unaligned_le32(common->bssidmask)); REG_WRITE(ah, AR_BSSMSKL, get_unaligned_le32(common->bssidmask));
REG_WRITE(ah, AR_BSSMSKU, get_unaligned_le16(common->bssidmask + 4)); REG_WRITE(ah, AR_BSSMSKU, get_unaligned_le16(common->bssidmask + 4));
......
...@@ -23,6 +23,10 @@ ...@@ -23,6 +23,10 @@
#define AR_MIBC_CMC 0x00000004 #define AR_MIBC_CMC 0x00000004
#define AR_MIBC_MCS 0x00000008 #define AR_MIBC_MCS 0x00000008
#define AR_STA_ID0 0x8000
#define AR_STA_ID1 0x8004
#define AR_STA_ID1_SADH_MASK 0x0000ffff
/* /*
* BSSID mask registers. See ath_hw_set_bssid_mask() * BSSID mask registers. See ath_hw_set_bssid_mask()
* for detailed documentation about these registers. * for detailed documentation about these registers.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment