wifi: mt76: mt7996: add sanity checks for background radar trigger
authorStanleyYP Wang <StanleyYP.Wang@mediatek.com>
Wed, 20 Mar 2024 11:09:16 +0000 (19:09 +0800)
committerFelix Fietkau <nbd@nbd.name>
Thu, 2 May 2024 10:44:51 +0000 (12:44 +0200)
Check if background radar is enabled or not before manually triggering it,
and also add more checks in radar detected event.

Signed-off-by: StanleyYP Wang <StanleyYP.Wang@mediatek.com>
Signed-off-by: Shayne Chen <shayne.chen@mediatek.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/debugfs.c
drivers/net/wireless/mediatek/mt76/mt7996/mcu.c

index 9bd953586b04114b9e956cc32491d577f83fdc93..62c03d088925ce655de04f87b106f4b1f7c32553 100644 (file)
@@ -225,6 +225,11 @@ mt7996_radar_trigger(void *data, u64 val)
        if (val > MT_RX_SEL2)
                return -EINVAL;
 
+       if (val == MT_RX_SEL2 && !dev->rdd2_phy) {
+               dev_err(dev->mt76.dev, "Background radar is not enabled\n");
+               return -EINVAL;
+       }
+
        return mt7996_mcu_rdd_cmd(dev, RDD_RADAR_EMULATE,
                                  val, 0, 0);
 }
index 3041bbc1986984fb95633239e6ae38237bd0847c..4f8e656b2cae5656fe6f28e3a02d6943de80a0ca 100644 (file)
@@ -355,7 +355,10 @@ mt7996_mcu_rx_radar_detected(struct mt7996_dev *dev, struct sk_buff *skb)
        if (r->band_idx >= ARRAY_SIZE(dev->mt76.phys))
                return;
 
-       if (dev->rdd2_phy && r->band_idx == MT_RX_SEL2)
+       if (r->band_idx == MT_RX_SEL2 && !dev->rdd2_phy)
+               return;
+
+       if (r->band_idx == MT_RX_SEL2)
                mphy = dev->rdd2_phy->mt76;
        else
                mphy = dev->mt76.phys[r->band_idx];