move duplicated mt7915 code in mt76-connac
Subsystems (2)
Lorenzo Bianconi
maintainercover move duplicated mt7915 code in mt76-connac
Move some more mt7915 code in mt76-connac module.
This series is based on the following one:
https://patchwork.kernel.org/project/linux-wireless/cover/[email protected]/
Lorenzo Bianconi (10):
mt76: connac: introduce is_connac_v1 utility routine
mt76: connac: move mt76_connac_mcu_set_pm in connac module
mt76: mt7921: get rid of mt7921_mcu_get_eeprom
mt76: mt7915: rely on mt76_connac_mcu_start_firmware
mt76: connac: move mt76_connac_mcu_restart in common module
mt76: mt7915: rely on
mt76_connac_mcu_patch_sem_ctrl/mt76_connac_mcu_start_patch
mt76: mt7915: rely on mt76_connac_mcu_init_download
mt76: connac: move mt76_connac_mcu_gen_dl_mode in mt76-connac module
mt76: mt7915: rely on mt76_connac_mcu_set_rts_thresh
mt76: connac: move mt76_connac_mcu_rdd_cmd in mt76-connac module
.../net/wireless/mediatek/mt76/mt7615/mac.c | 23 +- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 81 +------ .../wireless/mediatek/mt76/mt7615/mt7615.h | 21 -- .../net/wireless/mediatek/mt76/mt76_connac.h | 23 ++ .../wireless/mediatek/mt76/mt76_connac_mcu.c | 82 +++++++- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 44 +++- .../wireless/mediatek/mt76/mt7915/debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt7915/mac.c | 23 +- .../net/wireless/mediatek/mt76/mt7915/main.c | 13 +- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 197 +----------------- .../wireless/mediatek/mt76/mt7915/mt7915.h | 4 - .../net/wireless/mediatek/mt76/mt7921/mcu.c | 76 +------ .../wireless/mediatek/mt76/mt7921/mt7921.h | 2 - .../wireless/mediatek/mt76/mt7921/pci_mcu.c | 2 +- 14 files changed, 195 insertions(+), 398 deletions(-)
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 1/10 mt76: connac: introduce is_connac_v1 utility routine
Introduce is_connac_v1 inline utility routine to check if the device is generation v1.
--- .../wireless/mediatek/mt76/mt7615/mt7615.h | 18 --------------- .../net/wireless/mediatek/mt76/mt76_connac.h | 23 +++++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.c | 11 ++++----- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 2 +- 4 files changed, 29 insertions(+), 25 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +0 -18
@@ -409,24 +409,6 @@ int mt7615_mcu_rdd_cmd(struct mt7615_dev *dev,int mt7615_mcu_rdd_send_pattern (struct mt7615_dev *dev);int mt7615_mcu_fw_log_2_host (struct mt7615_dev *dev,u8 ctrl); -static inline bool is_mt7622 (struct mt76_dev *dev) -{ -if (!IS_ENABLED (CONFIG_MT7622_WMAC )) -return false; - -return mt76_chip (dev) ==0x7622 ; -} - -static inline bool is_mt7615 (struct mt76_dev *dev) -{ -return mt76_chip (dev) ==0x7615 ||mt76_chip (dev) ==0x7611 ; -} - -static inline bool is_mt7611 (struct mt76_dev *dev) -{ -return mt76_chip (dev) ==0x7611 ; -} -static inline void mt7615_irq_enable (struct mt7615_dev *dev,u32 mask) {mt76_set_irq_mask (&dev->mt76,0 ,0 , mask);
drivers/net/wireless/mediatek/mt76/mt76_connac.h +23 -0
@@ -115,6 +115,29 @@ static inline bool is_mt7916(struct mt76_dev *dev)return mt76_chip (dev) ==0x7906 ; } +static inline bool is_mt7622 (struct mt76_dev *dev) +{ +if (!IS_ENABLED (CONFIG_MT7622_WMAC )) +return false; + +return mt76_chip (dev) ==0x7622 ; +} + +static inline bool is_mt7615 (struct mt76_dev *dev) +{ +return mt76_chip (dev) ==0x7615 ||mt76_chip (dev) ==0x7611 ; +} + +static inline bool is_mt7611 (struct mt76_dev *dev) +{ +return mt76_chip (dev) ==0x7611 ; +} + +static inline bool is_connac_v1 (struct mt76_dev *dev) +{ +return is_mt7615 (dev) ||is_mt7663 (dev) ||is_mt7622 (dev); +} +static inline u8 mt76_connac_chan_bw (struct cfg80211_chan_def *chandef) {static const u8 width_to_bw[] = {
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +5 -6
@@ -553,8 +553,7 @@ void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, generic->muar_idx = mvif->omac_idx; generic->qos = sta->wme; }else { -if ((is_mt7921 (dev) ||is_mt7915 (dev)) && - vif->type ==NL80211_IFTYPE_STATION ) +if (!is_connac_v1 (dev) && vif->type ==NL80211_IFTYPE_STATION )memcpy (generic->peer_addr, vif->bss_conf.bssid,ETH_ALEN );else
@@ -571,7 +570,7 @@ void mt76_connac_mcu_wtbl_generic_tlv(struct mt76_dev *dev, rx->rca2 =1 ; rx->rv =1 ; -if (is_mt7921 (dev) ||is_mt7915 (dev)) +if (!is_connac_v1 (dev))return ; tlv = mt76_connac_mcu_add_nested_tlv(skb, WTBL_SPE, sizeof(*spe),
@@ -937,7 +936,7 @@ void mt76_connac_mcu_wtbl_ht_tlv(struct mt76_dev *dev, struct sk_buff *skb,mt76_connac_mcu_wtbl_smps_tlv (skb, sta, sta_wtbl, wtbl_tlv); -if (!is_mt7921 (dev) && !is_mt7915 (dev) && sta->ht_cap.ht_supported) { +if (is_connac_v1 (dev) && sta->ht_cap.ht_supported) {/* sgi */ u32 msk =MT_WTBL_W5_SHORT_GI_20 |MT_WTBL_W5_SHORT_GI_40 |MT_WTBL_W5_SHORT_GI_80 |MT_WTBL_W5_SHORT_GI_160 ;
@@ -1039,7 +1038,7 @@ void mt76_connac_mcu_wtbl_ba_tlv(struct mt76_dev *dev, struct sk_buff *skb, ba->rst_ba_sb =1 ; } -if (is_mt7921 (dev) ||is_mt7915 (dev)) { +if (!is_connac_v1 (dev)) { ba->ba_winsize = enable ?cpu_to_le16 (params->buf_size) :0 ;return ; }
@@ -1218,7 +1217,7 @@ u8 mt76_connac_get_phy_mode(struct mt76_phy *phy, struct ieee80211_vif *vif,struct ieee80211_sta_ht_cap *ht_cap;u8 mode =0 ; -if (!is_mt7921 (dev) && !is_mt7915 (dev)) +if (is_connac_v1 (dev))return 0x38 ;if (sta) {
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -1
@@ -1464,7 +1464,7 @@ mt76_connac_mcu_get_wlan_idx(struct mt76_dev *dev, struct mt76_wcid *wcid, { *wlan_idx_hi =0 ; -if (is_mt7921 (dev) ||is_mt7915 (dev) ||is_mt7916 (dev)) { +if (!is_connac_v1 (dev)) { *wlan_idx_lo = wcid ?to_wcid_lo (wcid->idx) :0 ; *wlan_idx_hi = wcid ?to_wcid_hi (wcid->idx) :0 ; }else {
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 2/10 mt76: connac: move mt76_connac_mcu_set_pm in connac module
In reply to Lorenzo BianconiMove mt76_connac_mcu_set_pm utility routine in connac module since it is shared between mt7615 and mt7915 drivers.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 27 +--------------- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 32 +++++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 1 + .../net/wireless/mediatek/mt76/mt7915/main.c | 8 ++--- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 31 ------------------ .../wireless/mediatek/mt76/mt7915/mt7915.h | 1 - 6 files changed, 38 insertions(+), 62 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +1 -26
@@ -756,32 +756,7 @@ mt7615_mcu_add_beacon_offload(struct mt7615_dev *dev,static int mt7615_mcu_ctrl_pm_state (struct mt7615_dev *dev,int band,int state) { -#define ENTER_PM_STATE 1 -#define EXIT_PM_STATE 2 -struct { -u8 pm_number; -u8 pm_state; -u8 bssid[ETH_ALEN ]; -u8 dtim_period; -u8 wlan_idx; -__le16 bcn_interval; -__le32 aid; -__le32 rx_filter; -u8 band_idx; -u8 rsv[3 ]; -__le32 feature; -u8 omac_idx; -u8 wmm_idx; -u8 bcn_loss_cnt; -u8 bcn_sp_duration; - } __packed req = { - .pm_number =5 , - .pm_state = state ?ENTER_PM_STATE :EXIT_PM_STATE , - .band_idx = band, - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_EXT_CMD (PM_STATE_CTRL ), - &req,sizeof (req), true); +return mt76_connac_mcu_set_pm (&dev->mt76, band, state); } static int
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +32 -0
@@ -2718,5 +2718,37 @@ int mt76_connac_mcu_bss_basic_tlv(struct sk_buff *skb, }EXPORT_SYMBOL_GPL (mt76_connac_mcu_bss_basic_tlv); +#define ENTER_PM_STATE 1 +#define EXIT_PM_STATE 2 +int mt76_connac_mcu_set_pm (struct mt76_dev *dev,int band,int enter) +{ +struct { +u8 pm_number; +u8 pm_state; +u8 bssid[ETH_ALEN ]; +u8 dtim_period; +u8 wlan_idx_lo; +__le16 bcn_interval; +__le32 aid; +__le32 rx_filter; +u8 band_idx; +u8 wlan_idx_hi; +u8 rsv[2 ]; +__le32 feature; +u8 omac_idx; +u8 wmm_idx; +u8 bcn_loss_cnt; +u8 bcn_sp_duration; + } __packed req = { + .pm_number =5 , + .pm_state = enter ?ENTER_PM_STATE :EXIT_PM_STATE , + .band_idx = band, + }; + +return mt76_mcu_send_msg (dev,MCU_EXT_CMD (PM_STATE_CTRL ), &req, +sizeof (req), true); +} +EXPORT_SYMBOL_GPL (mt76_connac_mcu_set_pm); +MODULE_AUTHOR ("Lorenzo Bianconi <[email protected]>" );MODULE_LICENSE ("Dual BSD/GPL" );
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -0
@@ -1609,4 +1609,5 @@ void mt76_connac_mcu_sta_uapsd(struct sk_buff *skb, struct ieee80211_vif *vif,void mt76_connac_mcu_wtbl_smps_tlv (struct sk_buff *skb,struct ieee80211_sta *sta,void *sta_wtbl,void *wtbl_tlv); +int mt76_connac_mcu_set_pm (struct mt76_dev *dev,int band,int enter);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/main.c +4 -4
@@ -34,7 +34,7 @@ static int mt7915_start(struct ieee80211_hw *hw) running =mt7915_dev_running (dev);if (!running) { - ret =mt7915_mcu_set_pm (dev,0 ,0 ); + ret =mt76_connac_mcu_set_pm (&dev->mt76,0 ,0 );if (ret) goto out;
@@ -50,7 +50,7 @@ static int mt7915_start(struct ieee80211_hw *hw) }if (phy != &dev->phy) { - ret =mt7915_mcu_set_pm (dev,1 ,0 ); + ret =mt76_connac_mcu_set_pm (&dev->mt76,1 ,0 );if (ret) goto out;
@@ -106,12 +106,12 @@ static void mt7915_stop(struct ieee80211_hw *hw)clear_bit (MT76_STATE_RUNNING , &phy->mt76->state);if (phy != &dev->phy) { -mt7915_mcu_set_pm (dev,1 ,1 ); +mt76_connac_mcu_set_pm (&dev->mt76,1 ,1 );mt7915_mcu_set_mac (dev,1 , false, false); }if (!mt7915_dev_running (dev)) { -mt7915_mcu_set_pm (dev,0 ,1 ); +mt76_connac_mcu_set_pm (&dev->mt76,0 ,1 );mt7915_mcu_set_mac (dev,0 , false, false); }
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +0 -31
@@ -2651,37 +2651,6 @@ int mt7915_mcu_set_tx(struct mt7915_dev *dev, struct ieee80211_vif *vif)return mt7915_mcu_update_edca (dev, &req); } -int mt7915_mcu_set_pm (struct mt7915_dev *dev,int band,int enter) -{ -#define ENTER_PM_STATE 1 -#define EXIT_PM_STATE 2 -struct { -u8 pm_number; -u8 pm_state; -u8 bssid[ETH_ALEN ]; -u8 dtim_period; -u8 wlan_idx_lo; -__le16 bcn_interval; -__le32 aid; -__le32 rx_filter; -u8 band_idx; -u8 wlan_idx_hi; -u8 rsv[2 ]; -__le32 feature; -u8 omac_idx; -u8 wmm_idx; -u8 bcn_loss_cnt; -u8 bcn_sp_duration; - } __packed req = { - .pm_number =5 , - .pm_state = (enter) ?ENTER_PM_STATE :EXIT_PM_STATE , - .band_idx = band, - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_EXT_CMD (PM_STATE_CTRL ), &req, -sizeof (req), true); -} -int mt7915_mcu_rdd_cmd (struct mt7915_dev *dev,enum mt7915_rdd_cmd cmd,u8 index,u8 rx_sel,u8 val)
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h +0 -1
@@ -441,7 +441,6 @@ int mt7915_mcu_set_test_param(struct mt7915_dev *dev, u8 param, bool test_mode,int mt7915_mcu_set_scs (struct mt7915_dev *dev,u8 band,bool enable);int mt7915_mcu_set_ser (struct mt7915_dev *dev,u8 action,u8 set,u8 band);int mt7915_mcu_set_rts_thresh (struct mt7915_phy *phy,u32 val); -int mt7915_mcu_set_pm (struct mt7915_dev *dev,int band,int enter);int mt7915_mcu_set_sku_en (struct mt7915_phy *phy,bool enable);int mt7915_mcu_set_txpower_sku (struct mt7915_phy *phy);int mt7915_mcu_get_txpower_sku (struct mt7915_phy *phy,s8 *txpower,int len);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 3/10 mt76: mt7921: get rid of mt7921_mcu_get_eeprom
In reply to Lorenzo BianconiRemove mt7921_mcu_get_eeprom since it is no longer used.
--- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 24 ------------------- .../wireless/mediatek/mt76/mt7921/mt7921.h | 1 - 2 files changed, 25 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +0 -24
@@ -960,30 +960,6 @@ int mt7921_mcu_set_eeprom(struct mt7921_dev *dev) }EXPORT_SYMBOL_GPL (mt7921_mcu_set_eeprom); -int mt7921_mcu_get_eeprom (struct mt7921_dev *dev,u32 offset) -{ -struct mt7921_mcu_eeprom_info req = { - .addr =cpu_to_le32 (round_down (offset,16 )), - }; -struct mt7921_mcu_eeprom_info *res; -struct sk_buff *skb; -int ret; -u8 *buf; - - ret =mt76_mcu_send_and_get_msg (&dev->mt76, -MCU_EXT_QUERY (EFUSE_ACCESS ), - &req,sizeof (req), true, &skb); -if (ret) -return ret; - - res = (struct mt7921_mcu_eeprom_info *)skb->data; - buf = dev->mt76.eeprom.data +le32_to_cpu (res->addr); -memcpy (buf, res->data,16 ); -dev_kfree_skb (skb); - -return 0 ; -} -int mt7921_mcu_uni_bss_ps (struct mt7921_dev *dev,struct ieee80211_vif *vif) {struct mt7921_vif *mvif = (struct mt7921_vif *)vif->drv_priv;
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -1
@@ -297,7 +297,6 @@ int mt7921_mcu_sta_update(struct mt7921_dev *dev, struct ieee80211_sta *sta,int mt7921_mcu_set_chan_info (struct mt7921_phy *phy,int cmd);int mt7921_mcu_set_tx (struct mt7921_dev *dev,struct ieee80211_vif *vif);int mt7921_mcu_set_eeprom (struct mt7921_dev *dev); -int mt7921_mcu_get_eeprom (struct mt7921_dev *dev,u32 offset);int mt7921_mcu_get_rx_rate (struct mt7921_phy *phy,struct ieee80211_vif *vif,struct ieee80211_sta *sta,struct rate_info *rate);int mt7921_mcu_fw_log_2_host (struct mt7921_dev *dev,u8 ctrl);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 4/10 mt76: mt7915: rely on mt76_connac_mcu_start_firmware
In reply to Lorenzo BianconiRely on mt76_connac_mcu_start_firmware and remove duplicated code.
--- drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +1 -16
@@ -1941,21 +1941,6 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, MCU_EXT_CMD(BSS_INFO_UPDATE), true); } -static int mt7915_mcu_start_firmware (struct mt7915_dev *dev,u32 addr, -u32 option) -{ -struct { -__le32 option; -__le32 addr; - } req = { - .option =cpu_to_le32 (option), - .addr =cpu_to_le32 (addr), - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_CMD (FW_START_REQ ), &req, -sizeof (req), true); -} -static int mt7915_mcu_restart (struct mt76_dev *dev) {struct {
@@ -2175,7 +2160,7 @@ mt7915_mcu_send_ram_firmware(struct mt7915_dev *dev,if (is_wa) option |=FW_START_WORKING_PDA_CR4 ; -return mt7915_mcu_start_firmware (dev, override, option); +return mt76_connac_mcu_start_firmware (&dev->mt76, override, option); }static int mt7915_load_ram (struct mt7915_dev *dev)
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 5/10 mt76: connac: move mt76_connac_mcu_restart in common module
In reply to Lorenzo BianconiMove mt76_connac_mcu_restart routine in mt76-connac since it is shared between mt7921 and mt7915.
--- .../net/wireless/mediatek/mt76/mt76_connac_mcu.c | 14 ++++++++++++++ .../net/wireless/mediatek/mt76/mt76_connac_mcu.h | 1 + drivers/net/wireless/mediatek/mt76/mt7915/mcu.c | 15 +-------------- drivers/net/wireless/mediatek/mt76/mt7921/mcu.c | 14 -------------- .../net/wireless/mediatek/mt76/mt7921/mt7921.h | 1 - .../net/wireless/mediatek/mt76/mt7921/pci_mcu.c | 2 +- 6 files changed, 17 insertions(+), 30 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +14 -0
@@ -2750,5 +2750,19 @@ int mt76_connac_mcu_set_pm(struct mt76_dev *dev, int band, int enter) }EXPORT_SYMBOL_GPL (mt76_connac_mcu_set_pm); +int mt76_connac_mcu_restart (struct mt76_dev *dev) +{ +struct { +u8 power_mode; +u8 rsv[3 ]; + } req = { + .power_mode =1 , + }; + +return mt76_mcu_send_msg (dev,MCU_CMD (NIC_POWER_CTRL ), &req, +sizeof (req), false); +} +EXPORT_SYMBOL_GPL (mt76_connac_mcu_restart); +MODULE_AUTHOR ("Lorenzo Bianconi <[email protected]>" );MODULE_LICENSE ("Dual BSD/GPL" );
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +1 -0
@@ -1610,4 +1610,5 @@ void mt76_connac_mcu_wtbl_smps_tlv(struct sk_buff *skb,struct ieee80211_sta *sta, void *sta_wtbl, void *wtbl_tlv);int mt76_connac_mcu_set_pm (struct mt76_dev *dev,int band,int enter); +int mt76_connac_mcu_restart (struct mt76_dev *dev);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +1 -14
@@ -1941,19 +1941,6 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, MCU_EXT_CMD(BSS_INFO_UPDATE), true); } -static int mt7915_mcu_restart (struct mt76_dev *dev) -{ -struct { -u8 power_mode; -u8 rsv[3 ]; - } req = { - .power_mode =1 , - }; - -return mt76_mcu_send_msg (dev,MCU_CMD (NIC_POWER_CTRL ), &req, -sizeof (req), false); -} -static int mt7915_mcu_patch_sem_ctrl (struct mt7915_dev *dev,bool get) {struct {
@@ -2428,7 +2415,7 @@ int mt7915_mcu_init(struct mt7915_dev *dev) .headroom = sizeof(struct mt7915_mcu_txd), .mcu_skb_send_msg = mt7915_mcu_send_message, .mcu_parse_response = mt7915_mcu_parse_response, - .mcu_restart = mt7915_mcu_restart, + .mcu_restart = mt76_connac_mcu_restart, };int ret;
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +0 -14
@@ -444,20 +444,6 @@ int mt7921_mcu_uni_rx_ba(struct mt7921_dev *dev, enable, false); } -int mt7921_mcu_restart (struct mt76_dev *dev) -{ -struct { -u8 power_mode; -u8 rsv[3 ]; - } req = { - .power_mode =1 , - }; - -return mt76_mcu_send_msg (dev,MCU_CMD (NIC_POWER_CTRL ), &req, -sizeof (req), false); -} -EXPORT_SYMBOL_GPL (mt7921_mcu_restart); -static u32 mt7921_get_data_mode (struct mt7921_dev *dev,u32 info) {u32 mode =DL_MODE_NEED_RSP ;
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -1
@@ -433,7 +433,6 @@ int mt7921_mcu_fill_message(struct mt76_dev *mdev, struct sk_buff *skb, int cmd, int *wait_seq);int mt7921_mcu_parse_response (struct mt76_dev *mdev,int cmd,struct sk_buff *skb,int seq); -int mt7921_mcu_restart (struct mt76_dev *dev);void mt7921e_queue_rx_skb (struct mt76_dev *mdev,enum mt76_rxq_id q,struct sk_buff *skb);
drivers/net/wireless/mediatek/mt76/mt7921/pci_mcu.c +1 -1
@@ -42,7 +42,7 @@ int mt7921e_mcu_init(struct mt7921_dev *dev) .headroom = sizeof(struct mt7921_mcu_txd), .mcu_skb_send_msg = mt7921_mcu_send_message, .mcu_parse_response = mt7921_mcu_parse_response, - .mcu_restart = mt7921_mcu_restart, + .mcu_restart = mt76_connac_mcu_restart, };int err;
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 6/10 mt76: mt7915: rely on mt76_connac_mcu_patch_sem_ctrl/mt76_connac_mcu_start_patch
In reply to Lorenzo BianconiRely on mt76_connac_mcu_patch_sem_ctrl/mt76_connac_mcu_start_patch routine in mt7915 driver and remove duplicated code.
--- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 31 ++----------------- 1 file changed, 3 insertions(+), 28 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +3 -28
@@ -1941,31 +1941,6 @@ int mt7915_mcu_add_beacon(struct ieee80211_hw *hw, MCU_EXT_CMD(BSS_INFO_UPDATE), true); } -static int mt7915_mcu_patch_sem_ctrl (struct mt7915_dev *dev,bool get) -{ -struct { -__le32 op; - } req = { - .op =cpu_to_le32 (get ?PATCH_SEM_GET :PATCH_SEM_RELEASE ), - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_CMD (PATCH_SEM_CONTROL ), &req, -sizeof (req), true); -} - -static int mt7915_mcu_start_patch (struct mt7915_dev *dev) -{ -struct { -u8 check_crc; -u8 reserved[3 ]; - } req = { - .check_crc =0 , - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_CMD (PATCH_FINISH_REQ ), &req, -sizeof (req), true); -} -static int mt7915_driver_own (struct mt7915_dev *dev,u8 band) {mt76_wr (dev,MT_TOP_LPCR_HOST_BAND (band),MT_TOP_LPCR_HOST_DRV_OWN );
@@ -2011,7 +1986,7 @@ static int mt7915_load_patch(struct mt7915_dev *dev)const char *patch;int i, ret, sem; - sem =mt7915_mcu_patch_sem_ctrl (dev,1 ); + sem =mt76_connac_mcu_patch_sem_ctrl (&dev->mt76,1 );switch (sem) {case PATCH_IS_DL :return 0 ;
@@ -2070,12 +2045,12 @@ static int mt7915_load_patch(struct mt7915_dev *dev) } } - ret =mt7915_mcu_start_patch (dev); + ret =mt76_connac_mcu_start_patch (&dev->mt76);if (ret)dev_err (dev->mt76.dev,"Failed to start patch\n" ); out: - sem =mt7915_mcu_patch_sem_ctrl (dev,0 ); + sem =mt76_connac_mcu_patch_sem_ctrl (&dev->mt76,0 );switch (sem) {case PATCH_REL_SEM_SUCCESS :break ;
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 7/10 mt76: mt7915: rely on mt76_connac_mcu_init_download
In reply to Lorenzo BianconiRely on mt76_connac_mcu_init_download routine in mt7915 driver and remove duplicated code.
--- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 4 +-- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 29 +++---------------- 2 files changed, 6 insertions(+), 27 deletions(-)
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +2 -2
@@ -62,8 +62,8 @@ int mt76_connac_mcu_init_download(struct mt76_dev *dev, u32 addr, u32 len, };int cmd; -if (is_mt7921 (dev) && - (req.addr ==cpu_to_le32 (MCU_PATCH_ADDRESS ) || addr ==0x900000 )) +if ((!is_connac_v1 (dev) && addr ==MCU_PATCH_ADDRESS ) || + (is_mt7921 (dev) && addr ==0x900000 )) cmd =MCU_CMD (PATCH_START_REQ );else cmd =MCU_CMD (TARGET_ADDRESS_LEN_REQ );
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +4 -25
@@ -1957,28 +1957,6 @@ static int mt7915_driver_own(struct mt7915_dev *dev, u8 band)return 0 ; } -static int mt7915_mcu_init_download (struct mt7915_dev *dev,u32 addr, -u32 len,u32 mode) -{ -struct { -__le32 addr; -__le32 len; -__le32 mode; - } req = { - .addr =cpu_to_le32 (addr), - .len =cpu_to_le32 (len), - .mode =cpu_to_le32 (mode), - }; -int attr; - -if (req.addr ==cpu_to_le32 (MCU_PATCH_ADDRESS )) - attr =MCU_CMD (PATCH_START_REQ ); -else - attr =MCU_CMD (TARGET_ADDRESS_LEN_REQ ); - -return mt76_mcu_send_msg (&dev->mt76, attr, &req,sizeof (req), true); -} -static int mt7915_load_patch (struct mt7915_dev *dev) {const struct mt7915_patch_hdr *hdr;
@@ -2030,8 +2008,8 @@ static int mt7915_load_patch(struct mt7915_dev *dev) len =be32_to_cpu (sec->info.len); dl = fw->data +be32_to_cpu (sec->offs); - ret =mt7915_mcu_init_download (dev, addr, len, -DL_MODE_NEED_RSP ); + ret =mt76_connac_mcu_init_download (&dev->mt76, addr, len, +DL_MODE_NEED_RSP );if (ret) {dev_err (dev->mt76.dev,"Download request failed\n" ); goto out;
@@ -2100,7 +2078,8 @@ mt7915_mcu_send_ram_firmware(struct mt7915_dev *dev,if (region->feature_set &FW_FEATURE_OVERRIDE_ADDR ) override = addr; - err =mt7915_mcu_init_download (dev, addr, len, mode); + err =mt76_connac_mcu_init_download (&dev->mt76, addr, len, + mode);if (err) {dev_err (dev->mt76.dev,"Download request failed\n" );return err;
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 8/10 mt76: connac: move mt76_connac_mcu_gen_dl_mode in mt76-connac module
In reply to Lorenzo BianconiMove mt76_connac_mcu_gen_dl_mode utility routine in mt76_connac_mcu.h since it is shared by all drivers.
--- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 33 ++-------------- .../wireless/mediatek/mt76/mt76_connac_mcu.h | 38 +++++++++++++++++++ .../net/wireless/mediatek/mt76/mt7915/mcu.c | 33 +--------------- .../net/wireless/mediatek/mt76/mt7921/mcu.c | 38 +------------------ 4 files changed, 46 insertions(+), 96 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +4 -29
@@ -71,19 +71,6 @@ struct mt7663_fw_buf {#define IMG_CRC_LEN 4 -#define FW_FEATURE_SET_ENCRYPT BIT(0) -#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1) - -#define DL_MODE_ENCRYPT BIT(0) -#define DL_MODE_KEY_IDX GENMASK(2, 1) -#define DL_MODE_RESET_SEC_IV BIT(3) -#define DL_MODE_WORKING_PDA_CR4 BIT(4) -#define DL_MODE_VALID_RAM_ENTRY BIT(5) -#define DL_MODE_NEED_RSP BIT(31) - -#define FW_START_OVERRIDE BIT(0) -#define FW_START_WORKING_PDA_CR4 BIT(2) -void mt7615_mcu_fill_msg (struct mt7615_dev *dev,struct sk_buff *skb,int cmd,int *wait_seq) {
@@ -1303,20 +1290,6 @@ static int mt7615_load_patch(struct mt7615_dev *dev, u32 addr, const char *name)return ret; } -static u32 mt7615_mcu_gen_dl_mode (u8 feature_set,bool is_cr4) -{ -u32 ret =0 ; - - ret |= (feature_set &FW_FEATURE_SET_ENCRYPT ) ? - (DL_MODE_ENCRYPT |DL_MODE_RESET_SEC_IV ) :0 ; - ret |=FIELD_PREP (DL_MODE_KEY_IDX , -FIELD_GET (FW_FEATURE_SET_KEY_IDX , feature_set)); - ret |=DL_MODE_NEED_RSP ; - ret |= is_cr4 ?DL_MODE_WORKING_PDA_CR4 :0 ; - -return ret; -} - static int mt7615_mcu_send_ram_firmware(struct mt7615_dev *dev, const struct mt7615_fw_trailer *hdr,
@@ -1327,7 +1300,8 @@ mt7615_mcu_send_ram_firmware(struct mt7615_dev *dev,u32 len, addr, mode;for (i =0 ; i < n_region; i++) { - mode =mt7615_mcu_gen_dl_mode (hdr[i].feature_set, is_cr4); + mode =mt76_connac_mcu_gen_dl_mode (&dev->mt76, + hdr[i].feature_set, is_cr4); len =le32_to_cpu (hdr[i].len) +IMG_CRC_LEN ; addr =le32_to_cpu (hdr[i].addr);
@@ -1575,7 +1549,8 @@ static int mt7663_load_n9(struct mt7615_dev *dev, const char *name)dev_info (dev->mt76.dev,"Parsing tailer Region: %d\n" , i); buf = (const struct mt7663_fw_buf *)(base_addr - shift); - mode =mt7615_mcu_gen_dl_mode (buf->feature_set, false); + mode =mt76_connac_mcu_gen_dl_mode (&dev->mt76, + buf->feature_set, false); addr =le32_to_cpu (buf->img_dest_addr); len =le32_to_cpu (buf->img_size);
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +38 -0
@@ -6,6 +6,26 @@#include "mt76_connac.h" +#define FW_FEATURE_SET_ENCRYPT BIT(0) +#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1) +#define FW_FEATURE_ENCRY_MODE BIT(4) +#define FW_FEATURE_OVERRIDE_ADDR BIT(5) + +#define DL_MODE_ENCRYPT BIT(0) +#define DL_MODE_KEY_IDX GENMASK(2, 1) +#define DL_MODE_RESET_SEC_IV BIT(3) +#define DL_MODE_WORKING_PDA_CR4 BIT(4) +#define DL_MODE_VALID_RAM_ENTRY BIT(5) +#define DL_CONFIG_ENCRY_MODE_SEL BIT(6) +#define DL_MODE_NEED_RSP BIT(31) + +#define FW_START_OVERRIDE BIT(0) +#define FW_START_WORKING_PDA_CR4 BIT(2) + +#define PATCH_SEC_NOT_SUPPORT GENMASK(31, 0) +#define PATCH_SEC_TYPE_MASK GENMASK(15, 0) +#define PATCH_SEC_TYPE_INFO 0x2 +struct tlv {__le16 tag;__le16 len;
@@ -1455,6 +1475,24 @@ mt76_connac_mcu_get_cipher(int cipher) } } +static inline u32 +mt76_connac_mcu_gen_dl_mode (struct mt76_dev *dev,u8 feature_set,bool is_wa) +{ +u32 ret =0 ; + + ret |= feature_set &FW_FEATURE_SET_ENCRYPT ? +DL_MODE_ENCRYPT |DL_MODE_RESET_SEC_IV :0 ; +if (is_mt7921 (dev)) + ret |= feature_set &FW_FEATURE_ENCRY_MODE ? +DL_CONFIG_ENCRY_MODE_SEL :0 ; + ret |=FIELD_PREP (DL_MODE_KEY_IDX , +FIELD_GET (FW_FEATURE_SET_KEY_IDX , feature_set)); + ret |=DL_MODE_NEED_RSP ; + ret |= is_wa ?DL_MODE_WORKING_PDA_CR4 :0 ; + +return ret; +} +#define to_wcid_lo (id) FIELD_GET(GENMASK(7, 0), (u16)id)#define to_wcid_hi (id) FIELD_GET(GENMASK(9, 8), (u16)id)
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +2 -31
@@ -66,22 +66,6 @@ struct mt7915_fw_region {#define MCU_PATCH_ADDRESS 0x200000 -#define FW_FEATURE_SET_ENCRYPT BIT(0) -#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1) -#define FW_FEATURE_OVERRIDE_ADDR BIT(5) - -#define DL_MODE_ENCRYPT BIT(0) -#define DL_MODE_KEY_IDX GENMASK(2, 1) -#define DL_MODE_RESET_SEC_IV BIT(3) -#define DL_MODE_WORKING_PDA_CR4 BIT(4) -#define DL_MODE_NEED_RSP BIT(31) - -#define FW_START_OVERRIDE BIT(0) -#define FW_START_WORKING_PDA_CR4 BIT(2) - -#define PATCH_SEC_TYPE_MASK GENMASK(15, 0) -#define PATCH_SEC_TYPE_INFO 0x2 -#define HE_PHY (p, c) u8_get_bits(c, IEEE80211_HE_PHY_##p)#define HE_MAC (m, c) u8_get_bits(c, IEEE80211_HE_MAC_##m)
@@ -2042,20 +2026,6 @@ static int mt7915_load_patch(struct mt7915_dev *dev)return ret; } -static u32 mt7915_mcu_gen_dl_mode (u8 feature_set,bool is_wa) -{ -u32 ret =0 ; - - ret |= (feature_set &FW_FEATURE_SET_ENCRYPT ) ? - (DL_MODE_ENCRYPT |DL_MODE_RESET_SEC_IV ) :0 ; - ret |=FIELD_PREP (DL_MODE_KEY_IDX , -FIELD_GET (FW_FEATURE_SET_KEY_IDX , feature_set)); - ret |=DL_MODE_NEED_RSP ; - ret |= is_wa ?DL_MODE_WORKING_PDA_CR4 :0 ; - -return ret; -} - static int mt7915_mcu_send_ram_firmware(struct mt7915_dev *dev, const struct mt7915_fw_trailer *hdr,
@@ -2071,7 +2041,8 @@ mt7915_mcu_send_ram_firmware(struct mt7915_dev *dev, region = (const struct mt7915_fw_region *)((const u8 *)hdr - (hdr->n_region - i) *sizeof (*region)); - mode =mt7915_mcu_gen_dl_mode (region->feature_set, is_wa); + mode =mt76_connac_mcu_gen_dl_mode (&dev->mt76, + region->feature_set, is_wa); len =le32_to_cpu (region->len); addr =le32_to_cpu (region->addr);
drivers/net/wireless/mediatek/mt76/mt7921/mcu.c +2 -36
@@ -67,25 +67,6 @@ struct mt7921_fw_region {#define MT_STA_BFER BIT(0)#define MT_STA_BFEE BIT(1) -#define FW_FEATURE_SET_ENCRYPT BIT(0) -#define FW_FEATURE_SET_KEY_IDX GENMASK(2, 1) -#define FW_FEATURE_ENCRY_MODE BIT(4) -#define FW_FEATURE_OVERRIDE_ADDR BIT(5) - -#define DL_MODE_ENCRYPT BIT(0) -#define DL_MODE_KEY_IDX GENMASK(2, 1) -#define DL_MODE_RESET_SEC_IV BIT(3) -#define DL_MODE_WORKING_PDA_CR4 BIT(4) -#define DL_CONFIG_ENCRY_MODE_SEL BIT(6) -#define DL_MODE_NEED_RSP BIT(31) - -#define FW_START_OVERRIDE BIT(0) -#define FW_START_WORKING_PDA_CR4 BIT(2) - -#define PATCH_SEC_NOT_SUPPORT GENMASK(31, 0) -#define PATCH_SEC_TYPE_MASK GENMASK(15, 0) -#define PATCH_SEC_TYPE_INFO 0x2 -#define PATCH_SEC_ENC_TYPE_MASK GENMASK(31, 24)#define PATCH_SEC_ENC_TYPE_PLAIN 0x00#define PATCH_SEC_ENC_TYPE_AES 0x01
@@ -583,22 +564,6 @@ static int mt7921_load_patch(struct mt7921_dev *dev)return ret; } -static u32 mt7921_mcu_gen_dl_mode (u8 feature_set,bool is_wa) -{ -u32 ret =0 ; - - ret |= (feature_set &FW_FEATURE_SET_ENCRYPT ) ? - (DL_MODE_ENCRYPT |DL_MODE_RESET_SEC_IV ) :0 ; - ret |= (feature_set &FW_FEATURE_ENCRY_MODE ) ? -DL_CONFIG_ENCRY_MODE_SEL :0 ; - ret |=FIELD_PREP (DL_MODE_KEY_IDX , -FIELD_GET (FW_FEATURE_SET_KEY_IDX , feature_set)); - ret |=DL_MODE_NEED_RSP ; - ret |= is_wa ?DL_MODE_WORKING_PDA_CR4 :0 ; - -return ret; -} - static int mt7921_mcu_send_ram_firmware(struct mt7921_dev *dev, const struct mt7921_fw_trailer *hdr,
@@ -616,7 +581,8 @@ mt7921_mcu_send_ram_firmware(struct mt7921_dev *dev, region = (const struct mt7921_fw_region *)((const u8 *)hdr - (hdr->n_region - i) *sizeof (*region)); - mode =mt7921_mcu_gen_dl_mode (region->feature_set, is_wa); + mode =mt76_connac_mcu_gen_dl_mode (&dev->mt76, + region->feature_set, is_wa); len =le32_to_cpu (region->len); addr =le32_to_cpu (region->addr);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 9/10 mt76: mt7915: rely on mt76_connac_mcu_set_rts_thresh
In reply to Lorenzo BianconiRely on mt76_connac_mcu_set_rts_thresh routine in mt7915 driver and remove duplicated code.
--- .../net/wireless/mediatek/mt76/mt7915/main.c | 5 +++-- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 20 ------------------- .../wireless/mediatek/mt76/mt7915/mt7915.h | 1 - 3 files changed, 3 insertions(+), 23 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7915/main.c +3 -2
@@ -65,7 +65,8 @@ static int mt7915_start(struct ieee80211_hw *hw)mt7915_mac_enable_nf (dev,1 ); } - ret =mt7915_mcu_set_rts_thresh (phy,0x92b ); + ret =mt76_connac_mcu_set_rts_thresh (&dev->mt76,0x92b , + phy != &dev->phy);if (ret) goto out;
@@ -747,7 +748,7 @@ static int mt7915_set_rts_threshold(struct ieee80211_hw *hw, u32 val)int ret;mutex_lock (&dev->mt76.mutex); - ret =mt7915_mcu_set_rts_thresh (phy, val); + ret =mt76_connac_mcu_set_rts_thresh (&dev->mt76, val, phy != &dev->phy);mutex_unlock (&dev->mt76.mutex);return ret;
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +0 -20
@@ -2483,26 +2483,6 @@ int mt7915_mcu_set_scs(struct mt7915_dev *dev, u8 band, bool enable) sizeof(req), false); } -int mt7915_mcu_set_rts_thresh (struct mt7915_phy *phy,u32 val) -{ -struct mt7915_dev *dev = phy->dev; -struct { -u8 prot_idx; -u8 band; -u8 rsv[2 ]; -__le32 len_thresh; -__le32 pkt_thresh; - } __packed req = { - .prot_idx =1 , - .band = phy != &dev->phy, - .len_thresh =cpu_to_le32 (val), - .pkt_thresh =cpu_to_le32 (0x2 ), - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_EXT_CMD (PROTECT_CTRL ), &req, -sizeof (req), true); -} -int mt7915_mcu_update_edca (struct mt7915_dev *dev,void *param) {struct mt7915_mcu_tx *req = (struct mt7915_mcu_tx *)param;
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h +0 -1
@@ -440,7 +440,6 @@ int mt7915_mcu_set_test_param(struct mt7915_dev *dev, u8 param, bool test_mode, u8 en);int mt7915_mcu_set_scs (struct mt7915_dev *dev,u8 band,bool enable);int mt7915_mcu_set_ser (struct mt7915_dev *dev,u8 action,u8 set,u8 band); -int mt7915_mcu_set_rts_thresh (struct mt7915_phy *phy,u32 val);int mt7915_mcu_set_sku_en (struct mt7915_phy *phy,bool enable);int mt7915_mcu_set_txpower_sku (struct mt7915_phy *phy);int mt7915_mcu_get_txpower_sku (struct mt7915_phy *phy,s8 *txpower,int len);
Signature · 1 line
2.33.1
Lorenzo Bianconi
maintainerPATCH 10/10 mt76: connac: move mt76_connac_mcu_rdd_cmd in mt76-connac module
In reply to Lorenzo BianconiMove mt76_connac_mcu_rdd_cmd routine in mt76-connac module and remove duplicated code.
--- .../net/wireless/mediatek/mt76/mt7615/mac.c | 23 +++++++++++-------- .../net/wireless/mediatek/mt76/mt7615/mcu.c | 21 ----------------- .../wireless/mediatek/mt76/mt7615/mt7615.h | 3 --- .../wireless/mediatek/mt76/mt76_connac_mcu.c | 21 +++++++++++++++++ .../wireless/mediatek/mt76/mt76_connac_mcu.h | 2 ++ .../wireless/mediatek/mt76/mt7915/debugfs.c | 2 +- .../net/wireless/mediatek/mt76/mt7915/mac.c | 23 +++++++++++-------- .../net/wireless/mediatek/mt76/mt7915/mcu.c | 21 ----------------- .../wireless/mediatek/mt76/mt7915/mt7915.h | 2 -- 9 files changed, 52 insertions(+), 66 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7615/mac.c +14 -9
@@ -2160,21 +2160,24 @@ static void mt7615_dfs_stop_radar_detector(struct mt7615_phy *phy)struct mt7615_dev *dev = phy->dev;if (phy->rdd_state &BIT (0 )) -mt7615_mcu_rdd_cmd (dev,RDD_STOP ,0 ,MT_RX_SEL0 ,0 ); +mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_STOP ,0 , +MT_RX_SEL0 ,0 );if (phy->rdd_state &BIT (1 )) -mt7615_mcu_rdd_cmd (dev,RDD_STOP ,1 ,MT_RX_SEL0 ,0 ); +mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_STOP ,1 , +MT_RX_SEL0 ,0 ); }static int mt7615_dfs_start_rdd (struct mt7615_dev *dev,int chain) {int err; - err =mt7615_mcu_rdd_cmd (dev,RDD_START , chain,MT_RX_SEL0 ,0 ); + err =mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_START , chain, +MT_RX_SEL0 ,0 );if (err <0 )return err; -return mt7615_mcu_rdd_cmd (dev,RDD_DET_MODE , chain, -MT_RX_SEL0 ,1 ); +return mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_DET_MODE , chain, +MT_RX_SEL0 ,1 ); }static int mt7615_dfs_start_radar_detector (struct mt7615_phy *phy)
@@ -2185,7 +2188,8 @@ static int mt7615_dfs_start_radar_detector(struct mt7615_phy *phy)int err;/* start CAC */ - err =mt7615_mcu_rdd_cmd (dev,RDD_CAC_START , ext_phy,MT_RX_SEL0 ,0 ); + err =mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_CAC_START , ext_phy, +MT_RX_SEL0 ,0 );if (err <0 )return err;
@@ -2280,12 +2284,13 @@ int mt7615_dfs_init_radar_detector(struct mt7615_phy *phy)if (chandef->chan->dfs_state !=NL80211_DFS_AVAILABLE )return mt7615_dfs_start_radar_detector (phy); -return mt7615_mcu_rdd_cmd (dev,RDD_CAC_END , ext_phy, -MT_RX_SEL0 ,0 ); +return mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_CAC_END , ext_phy, +MT_RX_SEL0 ,0 ); } stop: - err =mt7615_mcu_rdd_cmd (dev,RDD_NORMAL_START , ext_phy,MT_RX_SEL0 ,0 ); + err =mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_NORMAL_START , ext_phy, +MT_RX_SEL0 ,0 );if (err <0 )return err;
drivers/net/wireless/mediatek/mt76/mt7615/mcu.c +0 -21
@@ -1891,27 +1891,6 @@ int mt7615_mcu_del_wtbl_all(struct mt7615_dev *dev) &req, sizeof(req), true); } -int mt7615_mcu_rdd_cmd (struct mt7615_dev *dev, -enum mt7615_rdd_cmd cmd,u8 index, -u8 rx_sel,u8 val) -{ -struct { -u8 ctrl; -u8 rdd_idx; -u8 rdd_rx_sel; -u8 val; -u8 rsv[4 ]; - } req = { - .ctrl = cmd, - .rdd_idx = index, - .rdd_rx_sel = rx_sel, - .val = val, - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_EXT_CMD (SET_RDD_CTRL ), - &req,sizeof (req), true); -} -int mt7615_mcu_set_fcc5_lpn (struct mt7615_dev *dev,int val) {struct {
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h +0 -3
@@ -403,9 +403,6 @@ int mt7615_mcu_set_chan_info(struct mt7615_phy *phy, int cmd);int mt7615_mcu_set_wmm (struct mt7615_dev *dev,u8 queue,const struct ieee80211_tx_queue_params *params);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_mcu_rdd_send_pattern (struct mt7615_dev *dev);int mt7615_mcu_fw_log_2_host (struct mt7615_dev *dev,u8 ctrl);
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.c +21 -0
@@ -2764,5 +2764,26 @@ int mt76_connac_mcu_restart(struct mt76_dev *dev) }EXPORT_SYMBOL_GPL (mt76_connac_mcu_restart); +int mt76_connac_mcu_rdd_cmd (struct mt76_dev *dev,int cmd,u8 index, +u8 rx_sel,u8 val) +{ +struct { +u8 ctrl; +u8 rdd_idx; +u8 rdd_rx_sel; +u8 val; +u8 rsv[4 ]; + } __packed req = { + .ctrl = cmd, + .rdd_idx = index, + .rdd_rx_sel = rx_sel, + .val = val, + }; + +return mt76_mcu_send_msg (dev,MCU_EXT_CMD (SET_RDD_CTRL ), &req, +sizeof (req), true); +} +EXPORT_SYMBOL_GPL (mt76_connac_mcu_rdd_cmd); +MODULE_AUTHOR ("Lorenzo Bianconi <[email protected]>" );MODULE_LICENSE ("Dual BSD/GPL" );
drivers/net/wireless/mediatek/mt76/mt76_connac_mcu.h +2 -0
@@ -1649,4 +1649,6 @@ void mt76_connac_mcu_wtbl_smps_tlv(struct sk_buff *skb, void *sta_wtbl, void *wtbl_tlv);int mt76_connac_mcu_set_pm (struct mt76_dev *dev,int band,int enter);int mt76_connac_mcu_restart (struct mt76_dev *dev); +int mt76_connac_mcu_rdd_cmd (struct mt76_dev *dev,int cmd,u8 index, +u8 rx_sel,u8 val);#endif /* __MT76_CONNAC_MCU_H */
drivers/net/wireless/mediatek/mt76/mt7915/debugfs.c +1 -1
@@ -75,7 +75,7 @@ mt7915_radar_trigger(void *data, u64 val) {struct mt7915_dev *dev = data; -return mt7915_mcu_rdd_cmd (dev,RDD_RADAR_EMULATE ,1 ,0 ,0 ); +return mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_RADAR_EMULATE ,1 ,0 ,0 ); } DEFINE_DEBUGFS_ATTRIBUTE(fops_radar_trigger, NULL,
drivers/net/wireless/mediatek/mt76/mt7915/mac.c +14 -9
@@ -2346,20 +2346,24 @@ static void mt7915_dfs_stop_radar_detector(struct mt7915_phy *phy)struct mt7915_dev *dev = phy->dev;if (phy->rdd_state &BIT (0 )) -mt7915_mcu_rdd_cmd (dev,RDD_STOP ,0 ,MT_RX_SEL0 ,0 ); +mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_STOP ,0 , +MT_RX_SEL0 ,0 );if (phy->rdd_state &BIT (1 )) -mt7915_mcu_rdd_cmd (dev,RDD_STOP ,1 ,MT_RX_SEL0 ,0 ); +mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_STOP ,1 , +MT_RX_SEL0 ,0 ); }static int mt7915_dfs_start_rdd (struct mt7915_dev *dev,int chain) {int err; - err =mt7915_mcu_rdd_cmd (dev,RDD_START , chain,MT_RX_SEL0 ,0 ); + err =mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_START , chain, +MT_RX_SEL0 ,0 );if (err <0 )return err; -return mt7915_mcu_rdd_cmd (dev,RDD_DET_MODE , chain,MT_RX_SEL0 ,1 ); +return mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_DET_MODE , chain, +MT_RX_SEL0 ,1 ); }static int mt7915_dfs_start_radar_detector (struct mt7915_phy *phy)
@@ -2370,7 +2374,8 @@ static int mt7915_dfs_start_radar_detector(struct mt7915_phy *phy)int err;/* start CAC */ - err =mt7915_mcu_rdd_cmd (dev,RDD_CAC_START , ext_phy,MT_RX_SEL0 ,0 ); + err =mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_CAC_START , ext_phy, +MT_RX_SEL0 ,0 );if (err <0 )return err;
@@ -2459,13 +2464,13 @@ int mt7915_dfs_init_radar_detector(struct mt7915_phy *phy)if (chandef->chan->dfs_state !=NL80211_DFS_AVAILABLE )return mt7915_dfs_start_radar_detector (phy); -return mt7915_mcu_rdd_cmd (dev,RDD_CAC_END , ext_phy, -MT_RX_SEL0 ,0 ); +return mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_CAC_END , + ext_phy,MT_RX_SEL0 ,0 ); } stop: - err =mt7915_mcu_rdd_cmd (dev,RDD_NORMAL_START , ext_phy, -MT_RX_SEL0 ,0 ); + err =mt76_connac_mcu_rdd_cmd (&dev->mt76,RDD_NORMAL_START , ext_phy, +MT_RX_SEL0 ,0 );if (err <0 )return err;
drivers/net/wireless/mediatek/mt76/mt7915/mcu.c +0 -21
@@ -2528,27 +2528,6 @@ int mt7915_mcu_set_tx(struct mt7915_dev *dev, struct ieee80211_vif *vif)return mt7915_mcu_update_edca (dev, &req); } -int mt7915_mcu_rdd_cmd (struct mt7915_dev *dev, -enum mt7915_rdd_cmd cmd,u8 index, -u8 rx_sel,u8 val) -{ -struct { -u8 ctrl; -u8 rdd_idx; -u8 rdd_rx_sel; -u8 val; -u8 rsv[4 ]; - } __packed req = { - .ctrl = cmd, - .rdd_idx = index, - .rdd_rx_sel = rx_sel, - .val = val, - }; - -return mt76_mcu_send_msg (&dev->mt76,MCU_EXT_CMD (SET_RDD_CTRL ), &req, -sizeof (req), true); -} -int mt7915_mcu_set_fcc5_lpn (struct mt7915_dev *dev,int val) {struct {
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h +0 -2
@@ -457,8 +457,6 @@ int mt7915_mcu_get_temperature(struct mt7915_phy *phy);int mt7915_mcu_set_thermal_throttling (struct mt7915_phy *phy,u8 state);int mt7915_mcu_get_rx_rate (struct mt7915_phy *phy,struct ieee80211_vif *vif,struct ieee80211_sta *sta,struct rate_info *rate); -int mt7915_mcu_rdd_cmd (struct mt7915_dev *dev,enum mt7915_rdd_cmd cmd, -u8 index,u8 rx_sel,u8 val);int mt7915_mcu_wa_cmd (struct mt7915_dev *dev,int cmd,u32 a1,u32 a2,u32 a3);int mt7915_mcu_fw_log_2_host (struct mt7915_dev *dev,u8 type,u8 ctrl);int mt7915_mcu_fw_dbg_ctrl (struct mt7915_dev *dev,u32 module,u8 level);
Signature · 1 line
2.33.1