mirror of
https://github.com/outbackdingo/mt76.git
synced 2026-10-24 13:26:48 +00:00
mt76: mt7615: fix CSA notification for DBDC
Add CSA notification for second phy. Signed-off-by: Ryder Lee <[email protected]> Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
+19
-5
@@ -372,6 +372,22 @@ mt7615_mcu_csa_finish(void *priv, u8 *mac, struct ieee80211_vif *vif)
|
||||
ieee80211_csa_finish(vif);
|
||||
}
|
||||
|
||||
static void
|
||||
mt7615_mcu_rx_csa_notify(struct mt7615_dev *dev, struct sk_buff *skb)
|
||||
{
|
||||
struct mt76_phy *mphy = &dev->mt76.phy;
|
||||
struct mt7615_mcu_csa_notify *c;
|
||||
|
||||
c = (struct mt7615_mcu_csa_notify *)skb->data;
|
||||
|
||||
if (c->band_idx && dev->mt76.phy2)
|
||||
mphy = dev->mt76.phy2;
|
||||
|
||||
ieee80211_iterate_active_interfaces_atomic(mphy->hw,
|
||||
IEEE80211_IFACE_ITER_RESUME_ALL,
|
||||
mt7615_mcu_csa_finish, mphy->hw);
|
||||
}
|
||||
|
||||
static void
|
||||
mt7615_mcu_rx_radar_detected(struct mt7615_dev *dev, struct sk_buff *skb)
|
||||
{
|
||||
@@ -380,7 +396,7 @@ mt7615_mcu_rx_radar_detected(struct mt7615_dev *dev, struct sk_buff *skb)
|
||||
|
||||
r = (struct mt7615_mcu_rdd_report *)skb->data;
|
||||
|
||||
if (r->idx && dev->mt76.phy2)
|
||||
if (r->band_idx && dev->mt76.phy2)
|
||||
mphy = dev->mt76.phy2;
|
||||
|
||||
ieee80211_radar_detected(mphy->hw);
|
||||
@@ -419,9 +435,7 @@ mt7615_mcu_rx_ext_event(struct mt7615_dev *dev, struct sk_buff *skb)
|
||||
mt7615_mcu_rx_radar_detected(dev, skb);
|
||||
break;
|
||||
case MCU_EXT_EVENT_CSA_NOTIFY:
|
||||
ieee80211_iterate_active_interfaces_atomic(dev->mt76.hw,
|
||||
IEEE80211_IFACE_ITER_RESUME_ALL,
|
||||
mt7615_mcu_csa_finish, dev);
|
||||
mt7615_mcu_rx_csa_notify(dev, skb);
|
||||
break;
|
||||
case MCU_EXT_EVENT_FW_LOG_2_HOST:
|
||||
mt7615_mcu_rx_log_message(dev, skb);
|
||||
@@ -2235,7 +2249,7 @@ int mt7615_mcu_set_chan_info(struct mt7615_phy *phy, int cmd)
|
||||
.center_chan2 = ieee80211_frequency_to_channel(freq2),
|
||||
};
|
||||
|
||||
if (dev->mt76.hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)
|
||||
if (phy->mt76->hw->conf.flags & IEEE80211_CONF_OFFCHANNEL)
|
||||
req.switch_reason = CH_SWITCH_SCAN_BYPASS_DPD;
|
||||
else if ((chandef->chan->flags & IEEE80211_CHAN_RADAR) &&
|
||||
chandef->chan->dfs_state != NL80211_DFS_AVAILABLE)
|
||||
|
||||
+10
-1
@@ -176,10 +176,19 @@ struct mt7615_mcu_rxd {
|
||||
u8 s2d_index;
|
||||
};
|
||||
|
||||
struct mt7615_mcu_csa_notify {
|
||||
struct mt7615_mcu_rxd rxd;
|
||||
|
||||
u8 omac_idx;
|
||||
u8 csa_count;
|
||||
u8 band_idx;
|
||||
u8 rsv;
|
||||
} __packed;
|
||||
|
||||
struct mt7615_mcu_rdd_report {
|
||||
struct mt7615_mcu_rxd rxd;
|
||||
|
||||
u8 idx;
|
||||
u8 band_idx;
|
||||
u8 long_detected;
|
||||
u8 constant_prf_detected;
|
||||
u8 staggered_prf_detected;
|
||||
|
||||
Reference in New Issue
Block a user