diff options
author | Felix Fietkau <nbd@openwrt.org> | 2013-04-16 06:51:56 -0400 |
---|---|---|
committer | John W. Linville <linville@tuxdriver.com> | 2013-04-22 15:20:15 -0400 |
commit | ecbbed32e7c2ad7d9a6305b02e11502b51f2605c (patch) | |
tree | 0645e1b463290d14376580cec10631879527998c /drivers/net/wireless/ath | |
parent | 703a4e5521dcd6624a8740c5be597c4fc8e4b9bb (diff) |
ath: update hardware mac address with bssid mask
Preparation for updating common->macaddr along with virtual interface
MAC address changes.
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
Signed-off-by: John W. Linville <linville@tuxdriver.com>
Diffstat (limited to 'drivers/net/wireless/ath')
-rw-r--r-- | drivers/net/wireless/ath/ath9k/hw.c | 7 | ||||
-rw-r--r-- | drivers/net/wireless/ath/ath9k/reg.h | 3 | ||||
-rw-r--r-- | drivers/net/wireless/ath/hw.c | 6 | ||||
-rw-r--r-- | drivers/net/wireless/ath/reg.h | 4 |
4 files changed, 13 insertions, 7 deletions
diff --git a/drivers/net/wireless/ath/ath9k/hw.c b/drivers/net/wireless/ath/ath9k/hw.c index 8a980a4bf4ec..10eb6bae12d9 100644 --- a/drivers/net/wireless/ath/ath9k/hw.c +++ b/drivers/net/wireless/ath/ath9k/hw.c | |||
@@ -1698,12 +1698,11 @@ static void ath9k_hw_reset_opmode(struct ath_hw *ah, | |||
1698 | 1698 | ||
1699 | ENABLE_REGWRITE_BUFFER(ah); | 1699 | ENABLE_REGWRITE_BUFFER(ah); |
1700 | 1700 | ||
1701 | REG_WRITE(ah, AR_STA_ID0, get_unaligned_le32(common->macaddr)); | 1701 | REG_RMW(ah, AR_STA_ID1, macStaId1 |
1702 | REG_WRITE(ah, AR_STA_ID1, get_unaligned_le16(common->macaddr + 4) | ||
1703 | | macStaId1 | ||
1704 | | AR_STA_ID1_RTS_USE_DEF | 1702 | | AR_STA_ID1_RTS_USE_DEF |
1705 | | (ah->config.ack_6mb ? AR_STA_ID1_ACKCTS_6MB : 0) | 1703 | | (ah->config.ack_6mb ? AR_STA_ID1_ACKCTS_6MB : 0) |
1706 | | ah->sta_id1_defaults); | 1704 | | ah->sta_id1_defaults, |
1705 | ~AR_STA_ID1_SADH_MASK); | ||
1707 | ath_hw_setbssidmask(common); | 1706 | ath_hw_setbssidmask(common); |
1708 | REG_WRITE(ah, AR_DEF_ANTENNA, saveDefAntenna); | 1707 | REG_WRITE(ah, AR_DEF_ANTENNA, saveDefAntenna); |
1709 | ath9k_hw_write_associd(ah); | 1708 | ath9k_hw_write_associd(ah); |
diff --git a/drivers/net/wireless/ath/ath9k/reg.h b/drivers/net/wireless/ath/ath9k/reg.h index 5929850649f0..5c4ab5026dca 100644 --- a/drivers/net/wireless/ath/ath9k/reg.h +++ b/drivers/net/wireless/ath/ath9k/reg.h | |||
@@ -1493,9 +1493,6 @@ enum { | |||
1493 | #define AR9271_RADIO_RF_RST 0x20 | 1493 | #define AR9271_RADIO_RF_RST 0x20 |
1494 | #define AR9271_GATE_MAC_CTL 0x4000 | 1494 | #define AR9271_GATE_MAC_CTL 0x4000 |
1495 | 1495 | ||
1496 | #define AR_STA_ID0 0x8000 | ||
1497 | #define AR_STA_ID1 0x8004 | ||
1498 | #define AR_STA_ID1_SADH_MASK 0x0000FFFF | ||
1499 | #define AR_STA_ID1_STA_AP 0x00010000 | 1496 | #define AR_STA_ID1_STA_AP 0x00010000 |
1500 | #define AR_STA_ID1_ADHOC 0x00020000 | 1497 | #define AR_STA_ID1_ADHOC 0x00020000 |
1501 | #define AR_STA_ID1_PWR_SAV 0x00040000 | 1498 | #define AR_STA_ID1_PWR_SAV 0x00040000 |
diff --git a/drivers/net/wireless/ath/hw.c b/drivers/net/wireless/ath/hw.c index 39e8a590d7fc..eae9abf540a7 100644 --- a/drivers/net/wireless/ath/hw.c +++ b/drivers/net/wireless/ath/hw.c | |||
@@ -118,6 +118,12 @@ | |||
118 | void ath_hw_setbssidmask(struct ath_common *common) | 118 | void ath_hw_setbssidmask(struct ath_common *common) |
119 | { | 119 | { |
120 | void *ah = common->ah; | 120 | void *ah = common->ah; |
121 | u32 id1; | ||
122 | |||
123 | REG_WRITE(ah, AR_STA_ID0, get_unaligned_le32(common->macaddr)); | ||
124 | id1 = REG_READ(ah, AR_STA_ID1) & ~AR_STA_ID1_SADH_MASK; | ||
125 | id1 |= get_unaligned_le16(common->macaddr + 4); | ||
126 | REG_WRITE(ah, AR_STA_ID1, id1); | ||
121 | 127 | ||
122 | REG_WRITE(ah, AR_BSSMSKL, get_unaligned_le32(common->bssidmask)); | 128 | REG_WRITE(ah, AR_BSSMSKL, get_unaligned_le32(common->bssidmask)); |
123 | REG_WRITE(ah, AR_BSSMSKU, get_unaligned_le16(common->bssidmask + 4)); | 129 | REG_WRITE(ah, AR_BSSMSKU, get_unaligned_le16(common->bssidmask + 4)); |
diff --git a/drivers/net/wireless/ath/reg.h b/drivers/net/wireless/ath/reg.h index 298e53f3fa48..3ad4c774bd22 100644 --- a/drivers/net/wireless/ath/reg.h +++ b/drivers/net/wireless/ath/reg.h | |||
@@ -23,6 +23,10 @@ | |||
23 | #define AR_MIBC_CMC 0x00000004 | 23 | #define AR_MIBC_CMC 0x00000004 |
24 | #define AR_MIBC_MCS 0x00000008 | 24 | #define AR_MIBC_MCS 0x00000008 |
25 | 25 | ||
26 | #define AR_STA_ID0 0x8000 | ||
27 | #define AR_STA_ID1 0x8004 | ||
28 | #define AR_STA_ID1_SADH_MASK 0x0000ffff | ||
29 | |||
26 | /* | 30 | /* |
27 | * BSSID mask registers. See ath_hw_set_bssid_mask() | 31 | * BSSID mask registers. See ath_hw_set_bssid_mask() |
28 | * for detailed documentation about these registers. | 32 | * for detailed documentation about these registers. |