Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+3 −4
Original line number Diff line number Diff line
@@ -1698,12 +1698,11 @@ static void ath9k_hw_reset_opmode(struct ath_hw *ah,

	ENABLE_REGWRITE_BUFFER(ah);

	REG_WRITE(ah, AR_STA_ID0, get_unaligned_le32(common->macaddr));
	REG_WRITE(ah, AR_STA_ID1, get_unaligned_le16(common->macaddr + 4)
		  | macStaId1
	REG_RMW(ah, AR_STA_ID1, macStaId1
		  | AR_STA_ID1_RTS_USE_DEF
		  | (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);
	REG_WRITE(ah, AR_DEF_ANTENNA, saveDefAntenna);
	ath9k_hw_write_associd(ah);
+0 −3
Original line number Diff line number Diff line
@@ -1493,9 +1493,6 @@ enum {
#define AR9271_RADIO_RF_RST			0x20
#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_ADHOC           0x00020000
#define AR_STA_ID1_PWR_SAV         0x00040000
+6 −0
Original line number Diff line number Diff line
@@ -118,6 +118,12 @@
void ath_hw_setbssidmask(struct ath_common *common)
{
	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_BSSMSKU, get_unaligned_le16(common->bssidmask + 4));
+4 −0
Original line number Diff line number Diff line
@@ -23,6 +23,10 @@
#define AR_MIBC_CMC		0x00000004
#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()
 * for detailed documentation about these registers.