blob: 9bc37e1985cba4bb8d6252015f4fc455374692d1 [file] [log] [blame]
developerd0c89452024-10-11 16:53:27 +08001From c179e8dd87acac5c2a7d04bb7e58722da862fc95 Mon Sep 17 00:00:00 2001
developer05f3b2b2024-08-19 19:17:34 +08002From: Peter Chiu <chui-hao.chiu@mediatek.com>
3Date: Wed, 5 Jun 2024 10:11:13 +0800
developerd0c89452024-10-11 16:53:27 +08004Subject: [PATCH 136/223] mtk: mt76: mt7996: set unused band to UNSPECIFIED in
developer05f3b2b2024-08-19 19:17:34 +08005 band_to_link
6
developerd0c89452024-10-11 16:53:27 +08007Change-Id: I21190c5952a9c2f2a7f5f619f8d1fb23dd127c6f
developer05f3b2b2024-08-19 19:17:34 +08008Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
9---
10 mt7996/main.c | 4 ++++
11 mt7996/mcu.c | 3 +++
12 mt7996/mt7996.h | 3 +++
13 3 files changed, 10 insertions(+)
14
15diff --git a/mt7996/main.c b/mt7996/main.c
developerd0c89452024-10-11 16:53:27 +080016index 915a9f4f..9ad4a9d6 100644
developer05f3b2b2024-08-19 19:17:34 +080017--- a/mt7996/main.c
18+++ b/mt7996/main.c
19@@ -482,6 +482,8 @@ static int mt7996_add_interface(struct ieee80211_hw *hw,
20 mvif->sta.vif = mvif;
21 /* TODO: temporaily set this to prevent some crashes */
22 mvif->deflink.phy = phy;
23+ memset(mvif->band_to_link, IEEE80211_LINK_UNSPECIFIED,
24+ sizeof(mvif->band_to_link));
25
26 if (vif->type == NL80211_IFTYPE_STATION)
27 ret = mt7996_add_bss_conf(phy, vif, &vif->bss_conf);
28@@ -1054,6 +1056,8 @@ mt7996_channel_switch_beacon(struct ieee80211_hw *hw,
29
30 mutex_lock(&dev->mt76.mutex);
31 link_id = mvif->band_to_link[phy->mt76->band_idx];
32+ if (link_id == IEEE80211_LINK_UNSPECIFIED)
33+ goto out;
34
35 if (!mvif->cs_ready_links)
36 mvif->cs_link_id = link_id;
37diff --git a/mt7996/mcu.c b/mt7996/mcu.c
developerd0c89452024-10-11 16:53:27 +080038index a6f2c157..a62b5f9e 100644
developer05f3b2b2024-08-19 19:17:34 +080039--- a/mt7996/mcu.c
40+++ b/mt7996/mcu.c
developerd0c89452024-10-11 16:53:27 +080041@@ -379,6 +379,9 @@ mt7996_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
developer05f3b2b2024-08-19 19:17:34 +080042 int link_id, band_idx = mphy->band_idx;
43
44 link_id = mvif->band_to_link[band_idx];
45+ if (link_id == IEEE80211_LINK_UNSPECIFIED)
46+ return;
47+
48 link_conf = rcu_dereference(vif->link_conf[link_id]);
49
50 if (!link_conf || !link_conf->csa_active || vif->type == NL80211_IFTYPE_STATION)
51diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h
developerd0c89452024-10-11 16:53:27 +080052index 7bb17126..3ff9cb68 100644
developer05f3b2b2024-08-19 19:17:34 +080053--- a/mt7996/mt7996.h
54+++ b/mt7996/mt7996.h
developerd0c89452024-10-11 16:53:27 +080055@@ -966,6 +966,9 @@ mt7996_get_link_wcid(struct mt7996_dev *dev, u16 idx, u8 band_idx)
developer05f3b2b2024-08-19 19:17:34 +080056
57 mlink = wcid_to_mlink(wcid);
58 link_id = mlink->sta->vif->band_to_link[band_idx];
59+ if (link_id == IEEE80211_LINK_UNSPECIFIED)
60+ return wcid;
61+
62 mlink = rcu_dereference(mlink->sta->link[link_id]);
63 if (!mlink)
64 return wcid;
65--
developerd0c89452024-10-11 16:53:27 +0800662.45.2
developer05f3b2b2024-08-19 19:17:34 +080067