developer | 7e2761e | 2023-10-12 08:11:13 +0800 | [diff] [blame] | 1 | From 1b0bafc1cfb554b6150eb2ea3e1a5100ef1b0a24 Mon Sep 17 00:00:00 2001 |
developer | c2cfe0f | 2023-09-22 04:11:09 +0800 | [diff] [blame] | 2 | From: Shayne Chen <shayne.chen@mediatek.com> |
| 3 | Date: Thu, 24 Aug 2023 18:38:11 +0800 |
developer | 7e2761e | 2023-10-12 08:11:13 +0800 | [diff] [blame] | 4 | Subject: [PATCH 22/98] wifi: mt76: connac: use peer address for station BMC |
developer | c2cfe0f | 2023-09-22 04:11:09 +0800 | [diff] [blame] | 5 | entry |
| 6 | |
| 7 | Set peer address and aid for the BMC wtbl of station interface. For some |
| 8 | functions such as parsing MU_EDCA parameters from beacon, firmware will |
| 9 | need peer address to do the correct mapping. |
| 10 | |
| 11 | Change-Id: I0e812312fe730f69f8e431215b8e591c5faec06a |
| 12 | Reported-by: Howard Hsu <howard-yh.hsu@mediatek.com> |
| 13 | Signed-off-by: Shayne Chen <shayne.chen@mediatek.com> |
| 14 | --- |
| 15 | mt76_connac_mcu.c | 9 ++++++++- |
| 16 | mt7996/main.c | 3 +++ |
| 17 | 2 files changed, 11 insertions(+), 1 deletion(-) |
| 18 | |
| 19 | diff --git a/mt76_connac_mcu.c b/mt76_connac_mcu.c |
developer | 7e2761e | 2023-10-12 08:11:13 +0800 | [diff] [blame] | 20 | index 68de525..bb570f2 100644 |
developer | c2cfe0f | 2023-09-22 04:11:09 +0800 | [diff] [blame] | 21 | --- a/mt76_connac_mcu.c |
| 22 | +++ b/mt76_connac_mcu.c |
| 23 | @@ -391,7 +391,14 @@ void mt76_connac_mcu_sta_basic_tlv(struct mt76_dev *dev, struct sk_buff *skb, |
| 24 | |
| 25 | if (!sta) { |
| 26 | basic->conn_type = cpu_to_le32(CONNECTION_INFRA_BC); |
| 27 | - eth_broadcast_addr(basic->peer_addr); |
| 28 | + |
| 29 | + if (vif->type == NL80211_IFTYPE_STATION && |
| 30 | + !is_zero_ether_addr(vif->bss_conf.bssid)) { |
| 31 | + memcpy(basic->peer_addr, vif->bss_conf.bssid, ETH_ALEN); |
| 32 | + basic->aid = cpu_to_le16(vif->cfg.aid); |
| 33 | + } else { |
| 34 | + eth_broadcast_addr(basic->peer_addr); |
| 35 | + } |
| 36 | return; |
| 37 | } |
| 38 | |
| 39 | diff --git a/mt7996/main.c b/mt7996/main.c |
developer | 7e2761e | 2023-10-12 08:11:13 +0800 | [diff] [blame] | 40 | index 832b861..0e51fe0 100644 |
developer | c2cfe0f | 2023-09-22 04:11:09 +0800 | [diff] [blame] | 41 | --- a/mt7996/main.c |
| 42 | +++ b/mt7996/main.c |
| 43 | @@ -582,6 +582,9 @@ static void mt7996_bss_info_changed(struct ieee80211_hw *hw, |
| 44 | if ((changed & BSS_CHANGED_BSSID && !is_zero_ether_addr(info->bssid)) || |
| 45 | (changed & BSS_CHANGED_ASSOC && vif->cfg.assoc) || |
| 46 | (changed & BSS_CHANGED_BEACON_ENABLED && info->enable_beacon)) { |
| 47 | + /* reset bmc wtbl once BSSID changed */ |
| 48 | + if (changed & BSS_CHANGED_BSSID) |
| 49 | + mt7996_mcu_add_sta(dev, vif, NULL, false); |
| 50 | mt7996_mcu_add_bss_info(phy, vif, true); |
| 51 | mt7996_mcu_add_sta(dev, vif, NULL, true); |
| 52 | } |
| 53 | -- |
developer | 7e2761e | 2023-10-12 08:11:13 +0800 | [diff] [blame] | 54 | 2.18.0 |
developer | c2cfe0f | 2023-09-22 04:11:09 +0800 | [diff] [blame] | 55 | |