blob: 1e80e00cbb6c3b9a1ade7fde055e977189ddb6c8 [file] [log] [blame]
developer05f3b2b2024-08-19 19:17:34 +08001From 946c2a0cd923e411009c541184978747947ebb5a Mon Sep 17 00:00:00 2001
2From: Peter Chiu <chui-hao.chiu@mediatek.com>
3Date: Wed, 5 Jun 2024 10:11:13 +0800
4Subject: [PATCH 148/199] mtk: mt76: mt7996: set unused band to UNSPECIFIED in
5 band_to_link
6
7Signed-off-by: Peter Chiu <chui-hao.chiu@mediatek.com>
8---
9 mt7996/main.c | 4 ++++
10 mt7996/mcu.c | 3 +++
11 mt7996/mt7996.h | 3 +++
12 3 files changed, 10 insertions(+)
13
14diff --git a/mt7996/main.c b/mt7996/main.c
15index a85fa935..b6231dff 100644
16--- a/mt7996/main.c
17+++ b/mt7996/main.c
18@@ -482,6 +482,8 @@ static int mt7996_add_interface(struct ieee80211_hw *hw,
19 mvif->sta.vif = mvif;
20 /* TODO: temporaily set this to prevent some crashes */
21 mvif->deflink.phy = phy;
22+ memset(mvif->band_to_link, IEEE80211_LINK_UNSPECIFIED,
23+ sizeof(mvif->band_to_link));
24
25 if (vif->type == NL80211_IFTYPE_STATION)
26 ret = mt7996_add_bss_conf(phy, vif, &vif->bss_conf);
27@@ -1054,6 +1056,8 @@ mt7996_channel_switch_beacon(struct ieee80211_hw *hw,
28
29 mutex_lock(&dev->mt76.mutex);
30 link_id = mvif->band_to_link[phy->mt76->band_idx];
31+ if (link_id == IEEE80211_LINK_UNSPECIFIED)
32+ goto out;
33
34 if (!mvif->cs_ready_links)
35 mvif->cs_link_id = link_id;
36diff --git a/mt7996/mcu.c b/mt7996/mcu.c
37index 3a950a90..40ba5b43 100644
38--- a/mt7996/mcu.c
39+++ b/mt7996/mcu.c
40@@ -374,6 +374,9 @@ mt7996_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
41 int link_id, band_idx = mphy->band_idx;
42
43 link_id = mvif->band_to_link[band_idx];
44+ if (link_id == IEEE80211_LINK_UNSPECIFIED)
45+ return;
46+
47 link_conf = rcu_dereference(vif->link_conf[link_id]);
48
49 if (!link_conf || !link_conf->csa_active || vif->type == NL80211_IFTYPE_STATION)
50diff --git a/mt7996/mt7996.h b/mt7996/mt7996.h
51index cb6a5753..dc0209de 100644
52--- a/mt7996/mt7996.h
53+++ b/mt7996/mt7996.h
54@@ -962,6 +962,9 @@ mt7996_get_link_wcid(struct mt7996_dev *dev, u16 idx, u8 band_idx)
55
56 mlink = wcid_to_mlink(wcid);
57 link_id = mlink->sta->vif->band_to_link[band_idx];
58+ if (link_id == IEEE80211_LINK_UNSPECIFIED)
59+ return wcid;
60+
61 mlink = rcu_dereference(mlink->sta->link[link_id]);
62 if (!mlink)
63 return wcid;
64--
652.18.0
66