mt76: introduce mt76_connac common module
Subsystems (2)
Lorenzo Bianconi
maintainercover mt76: introduce mt76_connac common module
Introduce mt76_connac common module for code sharing between mt7615 and mt7921 drivers.
Lorenzo Bianconi (6):
mt76: introduce mt76_vif data structure
mt76: mt76_connac: create mcu library
mt76: mt76_connac: move hw_scan and sched_scan routine in
mt76_connac_mcu module
mt76: mt76_connac: move WoW and suspend code in mt76_connac_mcu module
mt76: mt76_connac: move pm data struct in mt76_connac.h
mt76: mt76_connac: move pm utility routines in mt76_connac_lib module
drivers/net/wireless/mediatek/mt76/Kconfig | 4 + drivers/net/wireless/mediatek/mt76/Makefile | 3 + drivers/net/wireless/mediatek/mt76/mt76.h | 8 + .../net/wireless/mediatek/mt76/mt7615/Kconfig | 2 +- .../net/wireless/mediatek/mt76/mt7615/init.c | 15 +- .../net/wireless/mediatek/mt76/mt7615/mac.c | 91 +- .../net/wireless/mediatek/mt76/mt7615/main.c | 159 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 1624 ++--------------- .../net/wireless/mediatek/mt76/mt7615/mcu.h | 682 +------ .../wireless/mediatek/mt76/mt7615/mt7615.h | 97 +- .../net/wireless/mediatek/mt76/mt7615/pci.c | 9 +- .../wireless/mediatek/mt76/mt7615/pci_mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7615/sdio.c | 5 +- .../net/wireless/mediatek/mt76/mt7615/usb.c | 4 +- .../net/wireless/mediatek/mt76/mt76_connac.h | 91 + .../wireless/mediatek/mt76/mt76_connac_mac.c | 119 ++ .../wireless/mediatek/mt76/mt76_connac_mcu.c | 1490 +++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 954 ++++++++++ 18 files changed, 2930 insertions(+), 2429 deletions(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac.h create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
Signature · 1 line
2.29.2
Lorenzo Bianconi
maintainerPATCH 1/6 mt76: introduce mt76_vif data structure
Introduce mt76_vif data structure to share common fields between mt7615_vif and mt7921_vif and create a mcu common library
--- drivers/net/wireless/mediatek/mt76/mt76.h | 8 ++ .../net/wireless/mediatek/mt76/mt7615/mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7615/main.c | 38 +++--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 109 +++++++++--------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 7 +- .../wireless/mediatek/mt76/mt7615/pci_mac.c | 2 +- 6 files changed, 85 insertions(+), 81 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76.h +8 -0
@@ -561,6 +561,14 @@ struct mt76_testmode_data { } rx_stats; }; +struct mt76_vif { +u8 idx; +u8 omac_idx; +u8 band_idx; +u8 wmm_idx; +u8 scan_seq_num; +}; +struct mt76_phy {struct ieee80211_hw *hw;struct mt76_dev *dev;
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +1 -1
@@ -544,7 +544,7 @@ int mt7615_mac_write_txwi(struct mt7615_dev *dev, __le32 *txwi,u16 seqno =0 ;if (vif) { -struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv; +struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv; omac_idx = mvif->omac_idx; wmm_idx = mvif->wmm_idx;
drivers/net/wireless/mediatek/mt76/mt7615/main.c +19 -19
@@ -187,8 +187,8 @@ static int mt7615_add_interface(struct ieee80211_hw *hw, is_zero_ether_addr(vif->addr)) phy->monitor_vif = vif; - mvif->idx =ffs (~dev->mt76.vif_mask) -1 ; -if (mvif->idx >=MT7615_MAX_INTERFACES ) { + mvif->common.idx =ffs (~dev->mt76.vif_mask) -1 ; +if (mvif->common.idx >=MT7615_MAX_INTERFACES ) { ret = -ENOSPC ; goto out; }
@@ -198,26 +198,26 @@ static int mt7615_add_interface(struct ieee80211_hw *hw, ret = -ENOSPC ; goto out; } - mvif->omac_idx = idx; + mvif->common.omac_idx = idx; - mvif->band_idx = ext_phy; + mvif->common.band_idx = ext_phy;if (mt7615_ext_phy (dev)) - mvif->wmm_idx = ext_phy * (MT7615_MAX_WMM_SETS /2 ) + - mvif->idx % (MT7615_MAX_WMM_SETS /2 ); + mvif->common.wmm_idx = ext_phy * (MT7615_MAX_WMM_SETS /2 ) + + mvif->common.idx % (MT7615_MAX_WMM_SETS /2 );else - mvif->wmm_idx = mvif->idx %MT7615_MAX_WMM_SETS ; + mvif->common.wmm_idx = mvif->common.idx %MT7615_MAX_WMM_SETS ; - dev->mt76.vif_mask |=BIT (mvif->idx); - dev->omac_mask |=BIT_ULL (mvif->omac_idx); - phy->omac_mask |=BIT_ULL (mvif->omac_idx); + dev->mt76.vif_mask |=BIT (mvif->common.idx); + dev->omac_mask |=BIT_ULL (mvif->common.omac_idx); + phy->omac_mask |=BIT_ULL (mvif->common.omac_idx);mt7615_mcu_set_dbdc (dev); - idx =MT7615_WTBL_RESERVED - mvif->idx; + idx =MT7615_WTBL_RESERVED - mvif->common.idx;INIT_LIST_HEAD (&mvif->sta.poll_list); mvif->sta.wcid.idx = idx; - mvif->sta.wcid.ext_phy = mvif->band_idx; + mvif->sta.wcid.ext_phy = mvif->common.band_idx; mvif->sta.wcid.hw_key_idx =-1 ;mt7615_mac_wtbl_update (dev, idx,MT_WTBL_UPDATE_ADM_COUNT_CLEAR );
@@ -263,9 +263,9 @@ static void mt7615_remove_interface(struct ieee80211_hw *hw,rcu_assign_pointer (dev->mt76.wcid[idx],NULL ); - dev->mt76.vif_mask &= ~BIT (mvif->idx); - dev->omac_mask &= ~BIT_ULL (mvif->omac_idx); - phy->omac_mask &= ~BIT_ULL (mvif->omac_idx); + dev->mt76.vif_mask &= ~BIT (mvif->common.idx); + dev->omac_mask &= ~BIT_ULL (mvif->common.omac_idx); + phy->omac_mask &= ~BIT_ULL (mvif->common.omac_idx);mt7615_mutex_release (dev);
@@ -445,7 +445,7 @@ static int mt7615_conf_tx(struct ieee80211_hw *hw, struct ieee80211_vif *vif, u16 queue, const struct ieee80211_tx_queue_params *params) { - struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv; + struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv;struct mt7615_dev *dev =mt7615_hw_dev (hw);int err;
@@ -589,7 +589,7 @@ int mt7615_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif, msta->vif = mvif; msta->wcid.sta =1 ; msta->wcid.idx = idx; - msta->wcid.ext_phy = mvif->band_idx; + msta->wcid.ext_phy = mvif->common.band_idx; err =mt7615_pm_wake (dev);if (err)
@@ -598,7 +598,7 @@ int mt7615_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,if (vif->type ==NL80211_IFTYPE_STATION && !sta->tdls) {struct mt7615_phy *phy; - phy = mvif->band_idx ?mt7615_ext_phy (dev) : &dev->phy; + phy = mvif->common.band_idx ?mt7615_ext_phy (dev) : &dev->phy;mt7615_mcu_add_bss_info (phy, vif, sta, true); } mt7615_mac_wtbl_update(dev, idx,
@@ -627,7 +627,7 @@ void mt7615_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif,struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv;struct mt7615_phy *phy; - phy = mvif->band_idx ?mt7615_ext_phy (dev) : &dev->phy; + phy = mvif->common.band_idx ?mt7615_ext_phy (dev) : &dev->phy;mt7615_mcu_add_bss_info (phy, vif, sta, false); }
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +55 -54
363 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +1 -6
@@ -133,12 +133,7 @@ struct mt7615_sta { };struct mt7615_vif { -u8 idx; -u8 omac_idx; -u8 band_idx; -u8 wmm_idx; -u8 scan_seq_num; - +struct mt76_vif common;/* must be first */ struct mt7615_sta sta; };
drivers/net/wireless/mediatek/mt76/mt7615/pci_mac.c +1 -1
@@ -118,7 +118,7 @@ mt7615_write_fw_txp(struct mt7615_dev *dev, struct mt76_tx_info *tx_info, txp->flags |=cpu_to_le16 (MT_CT_INFO_MGMT_FRAME );if (vif) { -struct mt7615_vif *mvif = (struct mt7615_vif *)vif->drv_priv; +struct mt76_vif *mvif = (struct mt76_vif *)vif->drv_priv; txp->bss_idx = mvif->idx; }
Signature · 1 line
2.29.2
Lorenzo Bianconi
maintainerPATCH 4/6 mt76: mt76_connac: move WoW and suspend code in mt76_connac_mcu module
In reply to Lorenzo BianconiMove WoW and suspend code in mt76_connac_mcu module in order to be reused in mt7615 and mt7921 drivers
--- .../net/wireless/mediatek/mt76/mt7615/main.c | 16 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 310 +----------------- .../net/wireless/mediatek/mt76/mt7615/mcu.h | 114 ------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 6 - .../net/wireless/mediatek/mt76/mt7615/pci.c | 6 +- .../net/wireless/mediatek/mt76/mt7615/sdio.c | 4 +- .../net/wireless/mediatek/mt76/mt7615/usb.c | 4 +- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 307 +++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 124 ++++++- 9 files changed, 449 insertions(+), 442 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/main.c +9 -7
@@ -1115,8 +1115,8 @@ static int mt7615_cancel_remain_on_channel(struct ieee80211_hw *hw,static int mt7615_suspend (struct ieee80211_hw *hw,struct cfg80211_wowlan *wowlan) { -struct mt7615_dev *dev =mt7615_hw_dev (hw);struct mt7615_phy *phy =mt7615_hw_phy (hw); +struct mt7615_dev *dev =mt7615_hw_dev (hw);int err =0 ;cancel_delayed_work_sync (&dev->pm.ps_work);
@@ -1131,10 +1131,11 @@ static int mt7615_suspend(struct ieee80211_hw *hw,set_bit (MT76_STATE_SUSPEND , &phy->mt76->state);ieee80211_iterate_active_interfaces (hw,IEEE80211_IFACE_ITER_RESUME_ALL , - mt7615_mcu_set_suspend_iter, phy); + mt76_connac_mcu_set_suspend_iter, + phy->mt76);if (!mt7615_dev_running (dev)) - err =mt7615_mcu_set_hif_suspend (dev, true); + err =mt76_connac_mcu_set_hif_suspend (&dev->mt76, true);mt7615_mutex_release (dev);
@@ -1143,8 +1144,8 @@ static int mt7615_suspend(struct ieee80211_hw *hw,static int mt7615_resume (struct ieee80211_hw *hw) { -struct mt7615_dev *dev =mt7615_hw_dev (hw);struct mt7615_phy *phy =mt7615_hw_phy (hw); +struct mt7615_dev *dev =mt7615_hw_dev (hw);bool running;mt7615_mutex_acquire (dev);
@@ -1155,7 +1156,7 @@ static int mt7615_resume(struct ieee80211_hw *hw)if (!running) {int err; - err =mt7615_mcu_set_hif_suspend (dev, false); + err =mt76_connac_mcu_set_hif_suspend (&dev->mt76, false);if (err <0 ) {mt7615_mutex_release (dev);return err;
@@ -1165,7 +1166,8 @@ static int mt7615_resume(struct ieee80211_hw *hw)clear_bit (MT76_STATE_SUSPEND , &phy->mt76->state);ieee80211_iterate_active_interfaces (hw,IEEE80211_IFACE_ITER_RESUME_ALL , - mt7615_mcu_set_suspend_iter, phy); + mt76_connac_mcu_set_suspend_iter, + phy->mt76);ieee80211_queue_delayed_work (hw, &phy->mt76->mac_work,MT7615_WATCHDOG_TIME );
@@ -1190,7 +1192,7 @@ static void mt7615_set_rekey_data(struct ieee80211_hw *hw,struct mt7615_dev *dev =mt7615_hw_dev (hw);mt7615_mutex_acquire (dev); -mt7615_mcu_update_gtk_rekey (hw, vif, data); +mt76_connac_mcu_update_gtk_rekey (hw, vif, data); mt7615_mutex_release(dev); }#endif /* CONFIG_PM */
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +3 -307
340 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mcu.h +0 -114
126 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +0 -6
@@ -574,12 +574,6 @@ int mt7615_mac_set_beacon_filter(struct mt7615_phy *phy, bool enable);int mt7615_mcu_set_bss_pm (struct mt7615_dev *dev,struct ieee80211_vif *vif,bool enable); -int mt7615_mcu_set_hif_suspend (struct mt7615_dev *dev,bool suspend); -void mt7615_mcu_set_suspend_iter (void *priv,u8 *mac, -struct ieee80211_vif *vif); -int mt7615_mcu_update_gtk_rekey (struct ieee80211_hw *hw, -struct ieee80211_vif *vif, -struct cfg80211_gtk_rekey_data *key);int mt7615_mcu_update_arp_filter (struct ieee80211_hw *hw,struct ieee80211_vif *vif,struct ieee80211_bss_conf *info);
drivers/net/wireless/mediatek/mt76/mt7615/pci.c +3 -3
@@ -83,7 +83,7 @@ static int mt7615_pci_suspend(struct pci_dev *pdev, pm_message_t state) hif_suspend = !test_bit (MT76_STATE_SUSPEND , &dev->mphy.state) &&mt7615_firmware_offload (dev);if (hif_suspend) { - err =mt7615_mcu_set_hif_suspend (dev, true); + err =mt76_connac_mcu_set_hif_suspend (mdev, true);if (err)return err; }
@@ -131,7 +131,7 @@ static int mt7615_pci_suspend(struct pci_dev *pdev, pm_message_t state) }napi_enable (&mdev->tx_napi);if (hif_suspend) -mt7615_mcu_set_hif_suspend (dev, false); +mt76_connac_mcu_set_hif_suspend (mdev, false);return err; }
@@ -173,7 +173,7 @@ static int mt7615_pci_resume(struct pci_dev *pdev)if (!test_bit (MT76_STATE_SUSPEND , &dev->mphy.state) &&mt7615_firmware_offload (dev)) - err =mt7615_mcu_set_hif_suspend (dev, false); + err =mt76_connac_mcu_set_hif_suspend (mdev, false);return err; }
drivers/net/wireless/mediatek/mt76/mt7615/sdio.c +2 -2
@@ -414,7 +414,7 @@ static int mt7663s_suspend(struct device *dev) mt7615_firmware_offload(mdev)) {int err; - err =mt7615_mcu_set_hif_suspend (mdev, true); + err =mt76_connac_mcu_set_hif_suspend (&mdev->mt76, true);if (err <0 )return err; }
@@ -453,7 +453,7 @@ static int mt7663s_resume(struct device *dev)if (!test_bit (MT76_STATE_SUSPEND , &mdev->mphy.state) &&mt7615_firmware_offload (mdev)) - err =mt7615_mcu_set_hif_suspend (mdev, false); + err =mt76_connac_mcu_set_hif_suspend (&mdev->mt76, false);return err; }
drivers/net/wireless/mediatek/mt76/mt7615/usb.c +2 -2
@@ -169,7 +169,7 @@ static int mt7663u_suspend(struct usb_interface *intf, pm_message_t state) mt7615_firmware_offload(dev)) {int err; - err =mt7615_mcu_set_hif_suspend (dev, true); + err =mt76_connac_mcu_set_hif_suspend (&dev->mt76, true);if (err <0 )return err; }
@@ -197,7 +197,7 @@ static int mt7663u_resume(struct usb_interface *intf)if (!test_bit (MT76_STATE_SUSPEND , &dev->mphy.state) &&mt7615_firmware_offload (dev)) - err =mt7615_mcu_set_hif_suspend (dev, false); + err =mt76_connac_mcu_set_hif_suspend (&dev->mt76, false);return err; }
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +307 -0
312 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +123 -1
140 lines not on this page · raw message
Signature · 1 line
2.29.2
Lorenzo Bianconi
maintainerPATCH 5/6 mt76: mt76_connac: move pm data struct in mt76_connac.h
In reply to Lorenzo BianconiMove runtime-pm mt7663 data structure in mt76_connac.h introducing mt76_connac_pm data struct. This is a preliminary patch to share pm code between mt7663 and mt7921
--- .../net/wireless/mediatek/mt76/mt7615/mac.c | 8 +-- .../net/wireless/mediatek/mt76/mt7615/main.c | 4 +- .../wireless/mediatek/mt76/mt7615/mt7615.h | 19 +----- .../net/wireless/mediatek/mt76/mt76_connac.h | 62 +++++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 38 +----------- 5 files changed, 70 insertions(+), 61 deletions(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac.h
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +3 -5
@@ -1875,16 +1875,14 @@ void mt7615_pm_wake_work(struct work_struct *work)spin_lock_bh (&dev->pm.txq_lock);for (i =0 ; i <IEEE80211_NUM_ACS ; i++) { -struct mt7615_sta *msta = dev->pm.tx_q[i].msta; +struct mt76_wcid *wcid = dev->pm.tx_q[i].wcid;struct ieee80211_sta *sta =NULL ; -struct mt76_wcid *wcid;if (!dev->pm.tx_q[i].skb)continue ; - wcid = msta ? &msta->wcid : &dev->mt76.global_wcid; -if (msta && wcid->sta) - sta = container_of((void *)msta, struct ieee80211_sta, +if (wcid && wcid->sta) + sta = container_of((void *)wcid, struct ieee80211_sta, drv_priv);mt76_tx (mphy, sta, wcid, dev->pm.tx_q[i].skb);
drivers/net/wireless/mediatek/mt76/mt7615/main.c +2 -2
@@ -31,7 +31,7 @@ static void mt7615_free_pending_tx_skbs(struct mt7615_dev *dev,spin_lock_bh (&dev->pm.txq_lock);for (i =0 ; i <IEEE80211_NUM_ACS ; i++) { -if (msta && dev->pm.tx_q[i].msta != msta) +if (msta && dev->pm.tx_q[i].wcid != &msta->wcid)continue ;dev_kfree_skb (dev->pm.tx_q[i].skb);
@@ -726,7 +726,7 @@ static void mt7615_tx(struct ieee80211_hw *hw,spin_lock_bh (&dev->pm.txq_lock);if (!dev->pm.tx_q[qid].skb) {ieee80211_stop_queues (hw); - dev->pm.tx_q[qid].msta = msta; + dev->pm.tx_q[qid].wcid = wcid; dev->pm.tx_q[qid].skb = skb;queue_work (dev->mt76.wq, &dev->pm.wake_work); }else {
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +2 -17
@@ -8,7 +8,7 @@#include <linux/interrupt.h> #include <linux/ktime.h> #include <linux/regmap.h> -#include "../mt76.h" +#include "../mt76_connac.h" #include "regs.h" #define MT7615_MAX_INTERFACES 16
@@ -276,22 +276,7 @@ struct mt7615_dev {u32 muar_mask; -struct { -bool enable; - -spinlock_t txq_lock; -struct { -struct mt7615_sta *msta; -struct sk_buff *skb; - } tx_q[IEEE80211_NUM_ACS ]; - -struct work_struct wake_work; -struct completion wake_cmpl; - -struct delayed_work ps_work; -unsigned long last_activity; -unsigned long idle_timeout; - } pm; +struct mt76_connac_pm pm; };enum tx_pkt_queue_idx {
drivers/net/wireless/mediatek/mt76/mt76_connac.h new file +62 -0
62 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -37
@@ -4,41 +4,7 @@ #ifndef __MT76_CONNAC_MCU_H #define __MT76_CONNAC_MCU_H -#include "mt76.h" - -#define MT76_CONNAC_SCAN_IE_LEN 600 -#define MT76_CONNAC_MAX_SCHED_SCAN_INTERVAL 10 -#define MT76_CONNAC_MAX_SCHED_SCAN_SSID 10 -#define MT76_CONNAC_MAX_SCAN_MATCH 16 - -enum { - CMD_CBW_20MHZ = IEEE80211_STA_RX_BW_20, - CMD_CBW_40MHZ = IEEE80211_STA_RX_BW_40, - CMD_CBW_80MHZ = IEEE80211_STA_RX_BW_80, - CMD_CBW_160MHZ = IEEE80211_STA_RX_BW_160, - CMD_CBW_10MHZ, - CMD_CBW_5MHZ, - CMD_CBW_8080MHZ, - - CMD_HE_MCS_BW80 = 0, - CMD_HE_MCS_BW160, - CMD_HE_MCS_BW8080, - CMD_HE_MCS_BW_NUM -}; - -enum { - HW_BSSID_0 = 0x0, - HW_BSSID_1, - HW_BSSID_2, - HW_BSSID_3, - HW_BSSID_MAX = HW_BSSID_3, - EXT_BSSID_START = 0x10, - EXT_BSSID_1, - EXT_BSSID_15 = 0x1f, - EXT_BSSID_MAX = EXT_BSSID_15, - REPEATER_BSSID_START = 0x20, - REPEATER_BSSID_MAX = 0x3f, -}; +#include "mt76_connac.h" struct tlv { __le16 tag;
@@ -905,8 +871,6 @@ struct mt76_connac_suspend_tlv {u8 pad[5 ]; } __packed; -extern const struct wiphy_wowlan_support mt76_connac_wowlan_support; -struct sk_buff *mt76_connac_mcu_alloc_sta_req (struct mt76_dev *dev,struct mt76_vif *mvif,struct mt76_wcid *wcid);
Signature · 1 line
2.29.2
Lorenzo Bianconi
maintainerPATCH 6/6 mt76: mt76_connac: move pm utility routines in mt76_connac_lib module
In reply to Lorenzo BianconiMove power_save common code shared between mt7663 and mt7921 in mt76_connac module
--- drivers/net/wireless/mediatek/mt76/Makefile | 2 +- .../net/wireless/mediatek/mt76/mt7615/mac.c | 87 +------------ .../net/wireless/mediatek/mt76/mt7615/main.c | 62 +++------ .../wireless/mediatek/mt76/mt7615/mt7615.h | 19 +-- .../net/wireless/mediatek/mt76/mt7615/pci.c | 2 +- .../net/wireless/mediatek/mt76/mt76_connac.h | 29 +++++ .../wireless/mediatek/mt76/mt76_connac_mac.c | 119 ++++++++++++++++++ 7 files changed, 177 insertions(+), 143 deletions(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c
drivers/net/wireless/mediatek/mt76/Makefile +1 -1
@@ -27,7 +27,7 @@ mt76x02-lib-y := mt76x02_util.o mt76x02_mac.o mt76x02_mcu.o \ mt76x02-usb-y := mt76x02_usb_mcu.o mt76x02_usb_core.o -mt76-connac-lib-y := mt76_connac_mcu.o +mt76-connac-lib-y := mt76_connac_mcu.o mt76_connac_mac.o obj-$(CONFIG_MT76x0_COMMON) += mt76x0/ obj-$(CONFIG_MT76x2_COMMON) += mt76x2/
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +6 -81
119 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/main.c +17 -45
130 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +4 -15
@@ -382,8 +382,6 @@ void mt7615_mac_set_rates(struct mt7615_phy *phy, struct mt7615_sta *sta,struct ieee80211_tx_rate *probe_rate, struct ieee80211_tx_rate *rates);void mt7615_pm_wake_work (struct work_struct *work); -int mt7615_pm_wake (struct mt7615_dev *dev); -void mt7615_pm_power_save_sched (struct mt7615_dev *dev);void mt7615_pm_power_save_work (struct work_struct *work);int mt7615_mcu_del_wtbl_all (struct mt7615_dev *dev);int mt7615_mcu_set_chan_info (struct mt7615_phy *phy,int cmd);
@@ -439,19 +437,10 @@ static inline u16 mt7615_wtbl_size(struct mt7615_dev *dev)return MT7615_WTBL_SIZE ; } -static inline void mt7615_mutex_acquire (struct mt7615_dev *dev) - __acquires(&dev->mt76.mutex) -{ -mutex_lock (&dev->mt76.mutex); -mt7615_pm_wake (dev); -} - -static inline void mt7615_mutex_release (struct mt7615_dev *dev) - __releases(&dev->mt76.mutex) -{ -mt7615_pm_power_save_sched (dev); -mutex_unlock (&dev->mt76.mutex); -} +#define mt7615_mutex_acquire (dev) \ + mt76_connac_mutex_acquire(&(dev)->mt76, &(dev)->pm) +#define mt7615_mutex_release (dev) \ + mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm)static inline u8 mt7615_lmac_mapping (struct mt7615_dev *dev,u8 ac) {
drivers/net/wireless/mediatek/mt76/mt7615/pci.c +1 -1
@@ -76,7 +76,7 @@ static int mt7615_pci_suspend(struct pci_dev *pdev, pm_message_t state)bool hif_suspend;int i, err; - err =mt7615_pm_wake (dev); + err =mt76_connac_pm_wake (&dev->mphy, &dev->pm);if (err <0 )return err;
drivers/net/wireless/mediatek/mt76/mt76_connac.h +29 -0
@@ -59,4 +59,33 @@ struct mt76_connac_pm {extern const struct wiphy_wowlan_support mt76_connac_wowlan_support; +int mt76_connac_pm_wake (struct mt76_phy *phy,struct mt76_connac_pm *pm); +void mt76_connac_power_save_sched (struct mt76_phy *phy, +struct mt76_connac_pm *pm); +void mt76_connac_free_pending_tx_skbs (struct mt76_connac_pm *pm, +struct mt76_wcid *wcid); + +static inline void +mt76_connac_mutex_acquire (struct mt76_dev *dev,struct mt76_connac_pm *pm) + __acquires(&dev->mutex) +{ +mutex_lock (&dev->mutex); +mt76_connac_pm_wake (&dev->phy, pm); +} + +static inline void +mt76_connac_mutex_release (struct mt76_dev *dev,struct mt76_connac_pm *pm) + __releases(&dev->mutex) +{ +mt76_connac_power_save_sched (&dev->phy, pm); +mutex_unlock (&dev->mutex); +} + +void mt76_connac_pm_queue_skb (struct ieee80211_hw *hw, +struct mt76_connac_pm *pm, +struct mt76_wcid *wcid, +struct sk_buff *skb); +void mt76_connac_pm_dequeue_skbs (struct mt76_phy *phy, +struct mt76_connac_pm *pm); +#endif /* __MT76_CONNAC_H */
drivers/net/wireless/mediatek/mt76/mt76_connac_mac.c new file +119 -0
119 lines not on this page · raw message
Signature · 1 line
2.29.2
Lorenzo Bianconi
maintainerPATCH 2/6 mt76: mt76_connac: create mcu library
In reply to Lorenzo BianconiIntroduce mt76_connac common mcu library for code sharing between mt7615 and mt7921 devices
--- drivers/net/wireless/mediatek/mt76/Kconfig | 4 + drivers/net/wireless/mediatek/mt76/Makefile | 3 + .../net/wireless/mediatek/mt76/mt7615/Kconfig | 2 +- .../net/wireless/mediatek/mt76/mt7615/init.c | 6 +- .../net/wireless/mediatek/mt76/mt7615/main.c | 27 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 1048 ++--------------- .../net/wireless/mediatek/mt76/mt7615/mcu.h | 446 +------ .../wireless/mediatek/mt76/mt7615/mt7615.h | 31 +- .../net/wireless/mediatek/mt76/mt7615/pci.c | 1 + .../net/wireless/mediatek/mt76/mt7615/sdio.c | 1 + .../wireless/mediatek/mt76/mt76_connac_mcu.c | 986 ++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 729 ++++++++++++ 12 files changed, 1864 insertions(+), 1420 deletions(-) create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c create mode 100644 drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h
drivers/net/wireless/mediatek/mt76/Kconfig +4 -0
@@ -24,6 +24,10 @@ config MT76x02_USB tristate select MT76_USB +config MT76_CONNAC_LIB + tristate + select MT76_CORE + source "drivers/net/wireless/mediatek/mt76/mt76x0/Kconfig" source "drivers/net/wireless/mediatek/mt76/mt76x2/Kconfig" source "drivers/net/wireless/mediatek/mt76/mt7603/Kconfig"
drivers/net/wireless/mediatek/mt76/Makefile +3 -0
@@ -4,6 +4,7 @@ obj-$(CONFIG_MT76_USB) += mt76-usb.o obj-$(CONFIG_MT76_SDIO) += mt76-sdio.o obj-$(CONFIG_MT76x02_LIB) += mt76x02-lib.o obj-$(CONFIG_MT76x02_USB) += mt76x02-usb.o +obj-$(CONFIG_MT76_CONNAC_LIB) += mt76-connac-lib.o mt76-y := \ mmio.o util.o trace.o dma.o mac80211.o debugfs.o eeprom.o \
@@ -26,6 +27,8 @@ mt76x02-lib-y := mt76x02_util.o mt76x02_mac.o mt76x02_mcu.o \ mt76x02-usb-y := mt76x02_usb_mcu.o mt76x02_usb_core.o +mt76-connac-lib-y := mt76_connac_mcu.o + obj-$(CONFIG_MT76x0_COMMON) += mt76x0/ obj-$(CONFIG_MT76x2_COMMON) += mt76x2/ obj-$(CONFIG_MT7603E) += mt7603/
drivers/net/wireless/mediatek/mt76/mt7615/Kconfig +1 -1
@@ -2,7 +2,7 @@ config MT7615_COMMON tristate - select MT76_CORE + select MT76_CONNAC_LIB config MT7615E tristate "MediaTek MT7615E and MT7663E (PCIe) support"
drivers/net/wireless/mediatek/mt76/mt7615/init.c +4 -2
@@ -10,6 +10,7 @@#include <linux/etherdevice.h> #include "mt7615.h" #include "mac.h" +#include "mcu.h" #include "eeprom.h" static void
@@ -96,7 +97,7 @@ mt7615_mac_init(struct mt7615_dev *dev)MT_TMAC_CTCR0_INS_DDLMT_VHT_SMPDU_EN | MT_TMAC_CTCR0_INS_DDLMT_EN); -mt7615_mcu_set_rts_thresh (&dev->phy,0x92b ); +mt76_connac_mcu_set_rts_thresh (&dev->mt76,0x92b ,0 );mt7615_mac_set_scs (&dev->phy, true); mt76_rmw(dev, MT_AGG_SCR, MT_AGG_SCR_NLNAV_MID_PTEC_DIS,
@@ -313,7 +314,8 @@ mt7615_regd_notifier(struct wiphy *wiphy,if (chandef->chan->flags &IEEE80211_CHAN_RADAR )mt7615_dfs_init_radar_detector (phy); -mt7615_mcu_set_channel_domain (phy); +if (mt7615_firmware_offload (phy->dev)) +mt76_connac_mcu_set_channel_domain (mphy);mt7615_mutex_release (dev); }
drivers/net/wireless/mediatek/mt76/mt7615/main.c +15 -12
@@ -55,17 +55,19 @@ static int mt7615_start(struct ieee80211_hw *hw)if (!running) {mt7615_mcu_set_pm (dev,0 ,0 ); -mt7615_mcu_set_mac_enable (dev,0 , true); +mt76_connac_mcu_set_mac_enable (&dev->mt76,0 , true, false);mt7615_mac_enable_nf (dev,0 ); }if (phy != &dev->phy) {mt7615_mcu_set_pm (dev,1 ,0 ); -mt7615_mcu_set_mac_enable (dev,1 , true); +mt76_connac_mcu_set_mac_enable (&dev->mt76,1 , true, false);mt7615_mac_enable_nf (dev,1 ); } -mt7615_mcu_set_channel_domain (phy); +if (mt7615_firmware_offload (dev)) +mt76_connac_mcu_set_channel_domain (phy->mt76); +mt7615_mcu_set_chan_info (phy,MCU_EXT_CMD_SET_RX_PATH );set_bit (MT76_STATE_RUNNING , &phy->mt76->state);
@@ -104,12 +106,12 @@ static void mt7615_stop(struct ieee80211_hw *hw)if (phy != &dev->phy) {mt7615_mcu_set_pm (dev,1 ,1 ); -mt7615_mcu_set_mac_enable (dev,1 , false); +mt76_connac_mcu_set_mac_enable (&dev->mt76,1 , false, false); }if (!mt7615_dev_running (dev)) {mt7615_mcu_set_pm (dev,0 ,1 ); -mt7615_mcu_set_mac_enable (dev,0 , false); +mt76_connac_mcu_set_mac_enable (&dev->mt76,0 , false, false); }mt7615_mutex_release (dev);
@@ -228,7 +230,7 @@ static int mt7615_add_interface(struct ieee80211_hw *hw, mtxq->wcid = &mvif->sta.wcid; } - ret =mt7615_mcu_add_dev_info (dev, vif, true); + ret =mt7615_mcu_add_dev_info (phy, vif, true);if (ret) goto out;
@@ -259,7 +261,7 @@ static void mt7615_remove_interface(struct ieee80211_hw *hw,mt7615_free_pending_tx_skbs (dev, msta);mt7615_mac_set_beacon_filter (phy, vif, false); -mt7615_mcu_add_dev_info (dev, vif, false); +mt7615_mcu_add_dev_info (phy, vif, false);rcu_assign_pointer (dev->mt76.wcid[idx],NULL );
@@ -542,7 +544,7 @@ static void mt7615_bss_info_changed(struct ieee80211_hw *hw,if (changed &BSS_CHANGED_BEACON_ENABLED ) {mt7615_mcu_add_bss_info (phy, vif,NULL , info->enable_beacon); -mt7615_mcu_sta_add (dev, vif,NULL , info->enable_beacon); +mt7615_mcu_sta_add (phy, vif,NULL , info->enable_beacon);if (vif->p2p && info->enable_beacon)mt7615_mcu_set_p2p_oppps (hw, vif);
@@ -553,7 +555,7 @@ static void mt7615_bss_info_changed(struct ieee80211_hw *hw,mt7615_mcu_add_beacon (dev, hw, vif, info->enable_beacon);if (changed &BSS_CHANGED_PS ) -mt7615_mcu_set_vif_ps (dev, vif); +mt76_connac_mcu_set_vif_ps (&dev->mt76, vif);if (changed &BSS_CHANGED_ARP_FILTER )mt7615_mcu_update_arp_filter (hw, vif, info);
@@ -603,7 +605,7 @@ int mt7615_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif, }mt7615_mac_wtbl_update (dev, idx,MT_WTBL_UPDATE_ADM_COUNT_CLEAR ); -mt7615_mcu_sta_add (dev, vif, sta, true); +mt7615_mcu_sta_add (&dev->phy, vif, sta, true);mt7615_pm_power_save_sched (dev);
@@ -620,7 +622,7 @@ void mt7615_mac_sta_remove(struct mt76_dev *mdev, struct ieee80211_vif *vif,mt7615_free_pending_tx_skbs (dev, msta);mt7615_pm_wake (dev); -mt7615_mcu_sta_add (dev, vif, sta, false); +mt7615_mcu_sta_add (&dev->phy, vif, sta, false);mt7615_mac_wtbl_update (dev, msta->wcid.idx,MT_WTBL_UPDATE_ADM_COUNT_CLEAR );if (vif->type ==NL80211_IFTYPE_STATION && !sta->tdls) {
@@ -737,9 +739,10 @@ static int mt7615_set_rts_threshold(struct ieee80211_hw *hw, u32 val) {struct mt7615_dev *dev =mt7615_hw_dev (hw);struct mt7615_phy *phy =mt7615_hw_phy (hw); +int band = phy != &dev->phy;mt7615_mutex_acquire (dev); -mt7615_mcu_set_rts_thresh (phy, val); +mt76_connac_mcu_set_rts_thresh (&dev->mt76, val, band);mt7615_mutex_release (dev);return 0 ;
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +112 -936
1,342 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mcu.h +2 -444
506 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +6 -25
@@ -200,9 +200,9 @@ struct mt7615_phy {#define mt7615_mcu_add_tx_ba (dev, ...) (dev)->mcu_ops->add_tx_ba((dev), __VA_ARGS__)#define mt7615_mcu_add_rx_ba (dev, ...) (dev)->mcu_ops->add_rx_ba((dev), __VA_ARGS__) -#define mt7615_mcu_sta_add (dev, ...) (dev)->mcu_ops->sta_add((dev), __VA_ARGS__) -#define mt7615_mcu_add_dev_info (dev, ...) (dev)->mcu_ops->add_dev_info((dev), __VA_ARGS__) -#define mt7615_mcu_add_bss_info (phy, ...) (phy->dev)->mcu_ops->add_bss_info((phy), __VA_ARGS__) +#define mt7615_mcu_sta_add (phy, ...) ((phy)->dev)->mcu_ops->sta_add((phy), __VA_ARGS__) +#define mt7615_mcu_add_dev_info (phy, ...) ((phy)->dev)->mcu_ops->add_dev_info((phy), __VA_ARGS__) +#define mt7615_mcu_add_bss_info (phy, ...) ((phy)->dev)->mcu_ops->add_bss_info((phy), __VA_ARGS__)#define mt7615_mcu_add_beacon (dev, ...) (dev)->mcu_ops->add_beacon_offload((dev), __VA_ARGS__)#define mt7615_mcu_set_pm (dev, ...) (dev)->mcu_ops->set_pm_state((dev), __VA_ARGS__)#define mt7615_mcu_set_drv_ctrl (dev) (dev)->mcu_ops->set_drv_ctrl((dev))
@@ -214,11 +214,10 @@ struct mt7615_mcu_ops {int (*add_rx_ba)(struct mt7615_dev *dev,struct ieee80211_ampdu_params *params,bool enable); -int (*sta_add)(struct mt7615_dev *dev, -struct ieee80211_vif *vif, +int (*sta_add)(struct mt7615_phy *phy,struct ieee80211_vif *vif,struct ieee80211_sta *sta,bool enable); -int (*add_dev_info)(struct mt7615_dev *dev, -struct ieee80211_vif *vif,bool enable); +int (*add_dev_info)(struct mt7615_phy *phy,struct ieee80211_vif *vif, +bool enable);int (*add_bss_info)(struct mt7615_phy *phy,struct ieee80211_vif *vif,struct ieee80211_sta *sta,bool enable); int (*add_beacon_offload)(struct mt7615_dev *dev,
@@ -315,20 +314,6 @@ enum tx_pkt_queue_idx { MT_LMAC_PSMP1, }; -enum { -HW_BSSID_0 =0x0 , -HW_BSSID_1 , -HW_BSSID_2 , -HW_BSSID_3 , -HW_BSSID_MAX =HW_BSSID_3 , -EXT_BSSID_START =0x10 , -EXT_BSSID_1 , -EXT_BSSID_15 =0x1f , -EXT_BSSID_MAX =EXT_BSSID_15 , -REPEATER_BSSID_START =0x20 , -REPEATER_BSSID_MAX =0x3f , -}; -enum {MT_RX_SEL0 ,MT_RX_SEL1 ,
@@ -546,14 +531,11 @@ u32 mt7615_rf_rr(struct mt7615_dev *dev, u32 wf, u32 reg);int mt7615_rf_wr (struct mt7615_dev *dev,u32 wf,u32 reg,u32 val);int mt7615_mcu_set_dbdc (struct mt7615_dev *dev);int mt7615_mcu_set_eeprom (struct mt7615_dev *dev); -int mt7615_mcu_set_mac_enable (struct mt7615_dev *dev,int band,bool enable); -int mt7615_mcu_set_rts_thresh (struct mt7615_phy *phy,u32 val);int mt7615_mcu_get_temperature (struct mt7615_dev *dev,int index);int mt7615_mcu_set_tx_power (struct mt7615_phy *phy);void mt7615_mcu_exit (struct mt7615_dev *dev);void mt7615_mcu_fill_msg (struct mt7615_dev *dev,struct sk_buff *skb,int cmd,int *wait_seq); -int mt7615_mcu_set_channel_domain (struct mt7615_phy *phy);int mt7615_mcu_hw_scan (struct mt7615_phy *phy,struct ieee80211_vif *vif,struct ieee80211_scan_request *scan_req); int mt7615_mcu_cancel_hw_scan(struct mt7615_phy *phy,
@@ -592,7 +574,6 @@ int mt7615_mcu_set_test_param(struct mt7615_dev *dev, u8 param, bool test_mode,int mt7615_mcu_set_sku_en (struct mt7615_phy *phy,bool enable);int mt7615_mcu_apply_rx_dcoc (struct mt7615_phy *phy);int mt7615_mcu_apply_tx_dpd (struct mt7615_phy *phy); -int mt7615_mcu_set_vif_ps (struct mt7615_dev *dev,struct ieee80211_vif *vif);int mt7615_dfs_init_radar_detector (struct mt7615_phy *phy); int mt7615_mcu_set_p2p_oppps(struct ieee80211_hw *hw,
drivers/net/wireless/mediatek/mt76/mt7615/pci.c +1 -0
@@ -10,6 +10,7 @@#include <linux/pci.h> #include "mt7615.h" +#include "mcu.h" static const struct pci_device_id mt7615_pci_device_table[] = { {PCI_DEVICE (0x14c3 ,0x7615 ) },
drivers/net/wireless/mediatek/mt76/mt7615/sdio.c +1 -0
@@ -17,6 +17,7 @@#include "mt7615.h" #include "sdio.h" #include "mac.h" +#include "mcu.h" static const struct sdio_device_id mt7663s_table[] = { {SDIO_DEVICE (SDIO_VENDOR_ID_MEDIATEK ,0x7603 ) },
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c new file +986 -0
919 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h new file +729 -0
729 lines not on this page · raw message
The rest of this diff is not shown. View the raw message.
Signature · 1 line
2.29.2
Part of the diff is not shown here. View the raw message.
Lorenzo Bianconi
maintainerPATCH 3/6 mt76: mt76_connac: move hw_scan and sched_scan routine in mt76_connac_mcu module
In reply to Lorenzo BianconiMove hw_scan/sched_scan in mt76_connac_mcu module in order to be reused in mt7615 and mt7921 drivers
--- .../net/wireless/mediatek/mt76/mt7615/init.c | 9 +- .../net/wireless/mediatek/mt76/mt7615/main.c | 20 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 213 +----------------- .../net/wireless/mediatek/mt76/mt7615/mcu.h | 122 ---------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 15 -- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 197 ++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 139 ++++++++++++ 7 files changed, 359 insertions(+), 356 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/init.c +5 -4
@@ -345,11 +345,12 @@ mt7615_init_wiphy(struct ieee80211_hw *hw) } wiphy->reg_notifier = mt7615_regd_notifier; - wiphy->max_sched_scan_plan_interval =MT7615_MAX_SCHED_SCAN_INTERVAL ; + wiphy->max_sched_scan_plan_interval = +MT76_CONNAC_MAX_SCHED_SCAN_INTERVAL ; wiphy->max_sched_scan_ie_len =IEEE80211_MAX_DATA_LEN ; - wiphy->max_scan_ie_len =MT7615_SCAN_IE_LEN ; - wiphy->max_sched_scan_ssids =MT7615_MAX_SCHED_SCAN_SSID ; - wiphy->max_match_sets =MT7615_MAX_SCAN_MATCH ; + wiphy->max_scan_ie_len =MT76_CONNAC_SCAN_IE_LEN ; + wiphy->max_sched_scan_ssids =MT76_CONNAC_MAX_SCHED_SCAN_SSID ; + wiphy->max_match_sets =MT76_CONNAC_MAX_SCAN_MATCH ; wiphy->max_sched_scan_reqs =1 ; wiphy->max_scan_ssids =4 ;
drivers/net/wireless/mediatek/mt76/mt7615/main.c +15 -5
@@ -997,8 +997,12 @@ mt7615_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,struct mt76_phy *mphy = hw->priv;int err; +/* fall-back to sw-scan */ +if (!mt7615_firmware_offload (dev)) +return 1 ; +mt7615_mutex_acquire (dev); - err =mt7615_mcu_hw_scan (mphy->priv, vif, req); + err =mt76_connac_mcu_hw_scan (mphy, vif, req);mt7615_mutex_release (dev);return err;
@@ -1011,7 +1015,7 @@ mt7615_cancel_hw_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif)struct mt76_phy *mphy = hw->priv;mt7615_mutex_acquire (dev); -mt7615_mcu_cancel_hw_scan (mphy->priv, vif); +mt76_connac_mcu_cancel_hw_scan (mphy, vif);mt7615_mutex_release (dev); }
@@ -1024,13 +1028,16 @@ mt7615_start_sched_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif,struct mt76_phy *mphy = hw->priv;int err; +if (!mt7615_firmware_offload (dev)) +return -EOPNOTSUPP ; +mt7615_mutex_acquire (dev); - err =mt7615_mcu_sched_scan_req (mphy->priv, vif, req); + err =mt76_connac_mcu_sched_scan_req (mphy, vif, req);if (err <0 ) goto out; - err =mt7615_mcu_sched_scan_enable (mphy->priv, vif, true); + err =mt76_connac_mcu_sched_scan_enable (mphy, vif, true); out:mt7615_mutex_release (dev);
@@ -1044,8 +1051,11 @@ mt7615_stop_sched_scan(struct ieee80211_hw *hw, struct ieee80211_vif *vif)struct mt76_phy *mphy = hw->priv;int err; +if (!mt7615_firmware_offload (dev)) +return -EOPNOTSUPP ; +mt7615_mutex_acquire (dev); - err =mt7615_mcu_sched_scan_enable (mphy->priv, vif, false); + err =mt76_connac_mcu_sched_scan_enable (mphy, vif, false);mt7615_mutex_release (dev);return err;
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +3 -210
226 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mcu.h +0 -122
128 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +0 -15
@@ -65,11 +65,6 @@#define MT7615_CFEND_RATE_DEFAULT 0x49/* OFDM 24M */ #define MT7615_CFEND_RATE_11B 0x03/* 11B LP, 11M */ -#define MT7615_SCAN_IE_LEN 600 -#define MT7615_MAX_SCHED_SCAN_INTERVAL 10 -#define MT7615_MAX_SCHED_SCAN_SSID 10 -#define MT7615_MAX_SCAN_MATCH 16 -struct mt7615_vif ;struct mt7615_sta ;struct mt7615_dfs_pulse ;
@@ -536,16 +531,6 @@ int mt7615_mcu_set_tx_power(struct mt7615_phy *phy);void mt7615_mcu_exit (struct mt7615_dev *dev);void mt7615_mcu_fill_msg (struct mt7615_dev *dev,struct sk_buff *skb,int cmd,int *wait_seq); -int mt7615_mcu_hw_scan (struct mt7615_phy *phy,struct ieee80211_vif *vif, -struct ieee80211_scan_request *scan_req); -int mt7615_mcu_cancel_hw_scan (struct mt7615_phy *phy, -struct ieee80211_vif *vif); -int mt7615_mcu_sched_scan_req (struct mt7615_phy *phy, -struct ieee80211_vif *vif, -struct cfg80211_sched_scan_request *sreq); -int mt7615_mcu_sched_scan_enable (struct mt7615_phy *phy, -struct ieee80211_vif *vif, -bool enable); int mt7615_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, enum mt76_txq_id qid, struct mt76_wcid *wcid,
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +197 -0
202 lines not on this page · raw message
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +139 -0
155 lines not on this page · raw message
Signature · 1 line
2.29.2