]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h
mt76: mt7615: move mt7615_mcu_set_rates to mac.c
[linux.git] / drivers / net / wireless / mediatek / mt76 / mt7615 / mt7615.h
index f02ffcffe63761389e4471a9b5e7a46d4b0d22a1..1135023507b1ee9327843f29d8ce313709f8ff71 100644 (file)
@@ -68,6 +68,15 @@ struct mt7615_dev {
        u32 vif_mask;
        u32 omac_mask;
 
+       struct {
+               u8 n_pulses;
+               u32 period;
+               u16 width;
+               s16 power;
+       } radar_pattern;
+       u32 hw_pattern;
+       int dfs_state;
+
        spinlock_t token_lock;
        struct idr token;
 };
@@ -97,6 +106,30 @@ enum {
        EXT_BSSID_END
 };
 
+enum {
+       MT_HW_RDD0,
+       MT_HW_RDD1,
+};
+
+enum {
+       MT_RX_SEL0,
+       MT_RX_SEL1,
+};
+
+enum mt7615_rdd_cmd {
+       RDD_STOP,
+       RDD_START,
+       RDD_DET_MODE,
+       RDD_DET_STOP,
+       RDD_CAC_START,
+       RDD_CAC_END,
+       RDD_NORMAL_START,
+       RDD_DISABLE_DFS_CAL,
+       RDD_PULSE_DBG,
+       RDD_READ_PULSE,
+       RDD_RESUME_BF,
+};
+
 extern const struct ieee80211_ops mt7615_ops;
 extern struct pci_driver mt7615_pci_driver;
 
@@ -118,7 +151,7 @@ int mt7615_mcu_set_bss_info(struct mt7615_dev *dev, struct ieee80211_vif *vif,
 int mt7615_mcu_set_wtbl_key(struct mt7615_dev *dev, int wcid,
                            struct ieee80211_key_conf *key,
                            enum set_key_cmd cmd);
-void mt7615_mcu_set_rates(struct mt7615_dev *dev, struct mt7615_sta *sta,
+void mt7615_mac_set_rates(struct mt7615_dev *dev, struct mt7615_sta *sta,
                          struct ieee80211_tx_rate *probe_rate,
                          struct ieee80211_tx_rate *rates);
 int mt7615_mcu_wtbl_bmc(struct mt7615_dev *dev, struct ieee80211_vif *vif,
@@ -144,6 +177,24 @@ int mt7615_mcu_set_rx_ba(struct mt7615_dev *dev,
                         bool add);
 int mt7615_mcu_set_ht_cap(struct mt7615_dev *dev, struct ieee80211_vif *vif,
                          struct ieee80211_sta *sta);
+void mt7615_mcu_rx_event(struct mt7615_dev *dev, struct sk_buff *skb);
+int mt7615_mcu_rdd_cmd(struct mt7615_dev *dev,
+                      enum mt7615_rdd_cmd cmd, u8 index,
+                      u8 rx_sel, u8 val);
+int mt7615_dfs_start_radar_detector(struct mt7615_dev *dev);
+int mt7615_dfs_stop_radar_detector(struct mt7615_dev *dev);
+int mt7615_mcu_rdd_send_pattern(struct mt7615_dev *dev);
+
+static inline void mt7615_dfs_check_channel(struct mt7615_dev *dev)
+{
+       enum nl80211_chan_width width = dev->mt76.chandef.width;
+       u32 freq = dev->mt76.chandef.chan->center_freq;
+       struct ieee80211_hw *hw = mt76_hw(dev);
+
+       if (hw->conf.chandef.chan->center_freq != freq ||
+           hw->conf.chandef.width != width)
+               dev->dfs_state = -1;
+}
 
 static inline void mt7615_irq_enable(struct mt7615_dev *dev, u32 mask)
 {
@@ -155,9 +206,6 @@ static inline void mt7615_irq_disable(struct mt7615_dev *dev, u32 mask)
        mt76_set_irq_mask(&dev->mt76, MT_INT_MASK_CSR, mask, 0);
 }
 
-u16 mt7615_mac_tx_rate_val(struct mt7615_dev *dev,
-                          const struct ieee80211_tx_rate *rate,
-                          bool stbc, u8 *bw);
 int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi,
                          struct sk_buff *skb, struct mt76_wcid *wcid,
                          struct ieee80211_sta *sta, int pid,
@@ -193,5 +241,9 @@ void mt7615_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif,
 void mt7615_mac_work(struct work_struct *work);
 void mt7615_txp_skb_unmap(struct mt76_dev *dev,
                          struct mt76_txwi_cache *txwi);
+int mt76_dfs_start_rdd(struct mt7615_dev *dev, bool force);
+int mt7615_dfs_init_radar_detector(struct mt7615_dev *dev);
+
+int mt7615_init_debugfs(struct mt7615_dev *dev);
 
 #endif