wifi: mt76: mt792xu: some more code de-duplication
Subsystems (2)
Lorenzo Bianconi
maintainercover wifi: mt76: mt792xu: some more code de-duplication
Remove some more usb duplicated code shared between mt7921 and mt7925
Lorenzo Bianconi (2):
wifi: mt76: mt792x: move mt7921_skb_add_usb_sdio_hdr in mt792x module
wifi: mt76: mt792x: move some common usb code in mt792x module
.../net/wireless/mediatek/mt76/mt7921/mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7921/main.c | 21 +----------------- .../wireless/mediatek/mt76/mt7921/mt7921.h | 17 -------------- .../wireless/mediatek/mt76/mt7921/sdio_mcu.c | 2 +- .../net/wireless/mediatek/mt76/mt7921/usb.c | 12 ++-------- .../net/wireless/mediatek/mt76/mt7925/mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7925/main.c | 20 +---------------- .../wireless/mediatek/mt76/mt7925/mt7925.h | 16 -------------- .../net/wireless/mediatek/mt76/mt7925/usb.c | 12 ++-------- drivers/net/wireless/mediatek/mt76/mt792x.h | 18 +++++++++++++++ .../net/wireless/mediatek/mt76/mt792x_core.c | 22 +++++++++++++++++++ .../net/wireless/mediatek/mt76/mt792x_usb.c | 9 ++++++++ 12 files changed, 58 insertions(+), 95 deletions(-)
Signature · 1 line
2.41.0
Lorenzo Bianconi
maintainerPATCH 1/2 wifi: mt76: mt792x: move mt7921_skb_add_usb_sdio_hdr in mt792x module
Since mt7921_skb_add_usb_sdio_hdr is shared between mt7925 and mt7921 drivers, move it in mt792x module.
Signed-off-by Lorenzo Bianconi <[email protected]>
--- drivers/net/wireless/mediatek/mt76/mt7921/mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7921/mt7921.h | 16 ---------------- .../net/wireless/mediatek/mt76/mt7921/sdio_mcu.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7921/usb.c | 2 +- drivers/net/wireless/mediatek/mt76/mt7925/mac.c | 2 +- .../net/wireless/mediatek/mt76/mt7925/mt7925.h | 15 --------------- drivers/net/wireless/mediatek/mt76/mt7925/usb.c | 2 +- drivers/net/wireless/mediatek/mt76/mt792x.h | 16 ++++++++++++++++ 8 files changed, 21 insertions(+), 36 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/mac.c +1 -1
@@ -794,7 +794,7 @@ int mt7921_usb_sdio_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr,mt7921_usb_sdio_write_txwi (dev, wcid, qid, sta, key, pktid, skb); type =mt76_is_sdio (mdev) ?MT7921_SDIO_DATA :0 ; -mt7921_skb_add_usb_sdio_hdr (dev, skb, type); +mt792x_skb_add_usb_sdio_hdr (dev, skb, type); pad =round_up (skb->len,4 ) - skb->len;if (mt76_is_usb (mdev)) pad +=4 ;
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -16
@@ -23,9 +23,6 @@#define MT7921_SKU_MAX_DELTA_IDX MT7921_SKU_RATE_NUM#define MT7921_SKU_TABLE_SIZE (MT7921_SKU_RATE_NUM + 1) -#define MT7921_SDIO_HDR_TX_BYTES GENMASK(15, 0) -#define MT7921_SDIO_HDR_PKT_TYPE GENMASK(17, 16) -#define MCU_UNI_EVENT_ROC 0x27enum {
@@ -235,19 +232,6 @@ mt7921_l1_rmw(struct mt792x_dev *dev, u32 addr, u32 mask, u32 val)#define mt7921_l1_set (dev, addr, val) mt7921_l1_rmw(dev, addr, 0, val)#define mt7921_l1_clear (dev, addr, val) mt7921_l1_rmw(dev, addr, val, 0) -static inline void -mt7921_skb_add_usb_sdio_hdr (struct mt792x_dev *dev,struct sk_buff *skb, -int type) -{ -u32 hdr, len; - - len =mt76_is_usb (&dev->mt76) ? skb->len : skb->len +sizeof (hdr); - hdr =FIELD_PREP (MT7921_SDIO_HDR_TX_BYTES , len) | -FIELD_PREP (MT7921_SDIO_HDR_PKT_TYPE , type); - -put_unaligned_le32 (hdr,skb_push (skb,sizeof (hdr))); -} -void mt7921_stop (struct ieee80211_hw *hw);int mt7921_mac_init (struct mt792x_dev *dev);bool mt7921_mac_wtbl_update (struct mt792x_dev *dev,int idx,u32 mask);
drivers/net/wireless/mediatek/mt76/mt7921/sdio_mcu.c +1 -1
@@ -38,7 +38,7 @@ mt7921s_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,if (cmd ==MCU_CMD (FW_SCATTER )) type =MT7921_SDIO_FWDL ; -mt7921_skb_add_usb_sdio_hdr (dev, skb, type); +mt792x_skb_add_usb_sdio_hdr (dev, skb, type); pad =round_up (skb->len,4 ) - skb->len;__skb_put_zero (skb, pad);
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +1 -1
@@ -43,7 +43,7 @@ mt7921u_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,else ep =MT_EP_OUT_AC_BE ; -mt7921_skb_add_usb_sdio_hdr (dev, skb,0 ); +mt792x_skb_add_usb_sdio_hdr (dev, skb,0 ); pad =round_up (skb->len,4 ) +4 - skb->len;__skb_put_zero (skb, pad);
drivers/net/wireless/mediatek/mt76/mt7925/mac.c +1 -1
@@ -1378,7 +1378,7 @@ int mt7925_usb_sdio_tx_prepare_skb(struct mt76_dev *mdev, void *txwi_ptr, pktid =mt76_tx_status_skb_add (&dev->mt76, wcid, skb);mt7925_usb_sdio_write_txwi (dev, wcid, qid, sta, key, pktid, skb); -mt7925_skb_add_usb_sdio_hdr (dev, skb,0 ); +mt792x_skb_add_usb_sdio_hdr (dev, skb,0 ); pad =round_up (skb->len,4 ) - skb->len;if (mt76_is_usb (mdev)) pad +=4 ;
drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +0 -15
@@ -25,9 +25,6 @@#define MT7925_SKU_MAX_DELTA_IDX MT7925_SKU_RATE_NUM#define MT7925_SKU_TABLE_SIZE (MT7925_SKU_RATE_NUM + 1) -#define MT7925_SDIO_HDR_TX_BYTES GENMASK(15, 0) -#define MT7925_SDIO_HDR_PKT_TYPE GENMASK(17, 16) -#define MCU_UNI_EVENT_ROC 0x27enum {
@@ -210,18 +207,6 @@ void mt7925_mcu_rx_event(struct mt792x_dev *dev, struct sk_buff *skb);int mt7925_mcu_chip_config (struct mt792x_dev *dev,const char *cmd);int mt7925_mcu_set_rxfilter (struct mt792x_dev *dev,u32 fif,u8 bit_op,u32 bit_map); -static inline void -mt7925_skb_add_usb_sdio_hdr (struct mt792x_dev *dev,struct sk_buff *skb, -int type) -{ -u32 hdr, len; - - len =mt76_is_usb (&dev->mt76) ? skb->len : skb->len +sizeof (hdr); - hdr =FIELD_PREP (MT7925_SDIO_HDR_TX_BYTES , len) | -FIELD_PREP (MT7925_SDIO_HDR_PKT_TYPE , type); - -put_unaligned_le32 (hdr,skb_push (skb,sizeof (hdr))); -}void mt7925_stop (struct ieee80211_hw *hw);int mt7925_mac_init (struct mt792x_dev *dev);
drivers/net/wireless/mediatek/mt76/mt7925/usb.c +1 -1
@@ -34,7 +34,7 @@ mt7925u_mcu_send_message(struct mt76_dev *mdev, struct sk_buff *skb,else ep =MT_EP_OUT_AC_BE ; -mt7925_skb_add_usb_sdio_hdr (dev, skb,0 ); +mt792x_skb_add_usb_sdio_hdr (dev, skb,0 ); pad =round_up (skb->len,4 ) +4 - skb->len;__skb_put_zero (skb, pad);
drivers/net/wireless/mediatek/mt76/mt792x.h +16 -0
@@ -42,6 +42,9 @@#define MT7922_ROM_PATCH "mediatek/WIFI_MT7922_patch_mcu_1_1_hdr.bin"#define MT7925_ROM_PATCH "mediatek/mt7925/WIFI_MT7925_PATCH_MCU_1_1_hdr.bin" +#define MT792x_SDIO_HDR_TX_BYTES GENMASK(15, 0) +#define MT792x_SDIO_HDR_PKT_TYPE GENMASK(17, 16) +struct mt792x_vif ;struct mt792x_sta ;
@@ -343,6 +346,19 @@ u32 mt792xu_rmw(struct mt76_dev *dev, u32 addr, u32 mask, u32 val);void mt792xu_copy (struct mt76_dev *dev,u32 offset,const void *data,int len);void mt792xu_disconnect (struct usb_interface *usb_intf); +static inline void +mt792x_skb_add_usb_sdio_hdr (struct mt792x_dev *dev,struct sk_buff *skb, +int type) +{ +u32 hdr, len; + + len =mt76_is_usb (&dev->mt76) ? skb->len : skb->len +sizeof (hdr); + hdr =FIELD_PREP (MT792x_SDIO_HDR_TX_BYTES, len) | +FIELD_PREP (MT792x_SDIO_HDR_PKT_TYPE, type); + +put_unaligned_le32 (hdr,skb_push (skb,sizeof (hdr))); +} +int __mt792xe_mcu_drv_pmctrl (struct mt792x_dev *dev);int mt792xe_mcu_drv_pmctrl (struct mt792x_dev *dev);int mt792xe_mcu_fw_pmctrl (struct mt792x_dev *dev);
Signature · 1 line
2.41.0
Lorenzo Bianconi
maintainerPATCH 2/2 wifi: mt76: mt792x: move some common usb code in mt792x module
In reply to Lorenzo BianconiMove the following shared usb routines in mt792x module:
- mt792xu_stop
- mt792x_stop
Signed-off-by Lorenzo Bianconi <[email protected]>
--- .../net/wireless/mediatek/mt76/mt7921/main.c | 21 +----------------- .../wireless/mediatek/mt76/mt7921/mt7921.h | 1 - .../net/wireless/mediatek/mt76/mt7921/usb.c | 10 +-------- .../net/wireless/mediatek/mt76/mt7925/main.c | 20 +---------------- .../wireless/mediatek/mt76/mt7925/mt7925.h | 1 - .../net/wireless/mediatek/mt76/mt7925/usb.c | 10 +-------- drivers/net/wireless/mediatek/mt76/mt792x.h | 2 ++ .../net/wireless/mediatek/mt76/mt792x_core.c | 22 +++++++++++++++++++ .../net/wireless/mediatek/mt76/mt792x_usb.c | 9 ++++++++ 9 files changed, 37 insertions(+), 59 deletions(-)
drivers/net/wireless/mediatek/mt76/mt7921/main.c +1 -20
@@ -259,25 +259,6 @@ static int mt7921_start(struct ieee80211_hw *hw)return err; } -void mt7921_stop (struct ieee80211_hw *hw) -{ -struct mt792x_dev *dev =mt792x_hw_dev (hw); -struct mt792x_phy *phy =mt792x_hw_phy (hw); - -cancel_delayed_work_sync (&phy->mt76->mac_work); - -cancel_delayed_work_sync (&dev->pm.ps_work); -cancel_work_sync (&dev->pm.wake_work); -cancel_work_sync (&dev->reset_work); -mt76_connac_free_pending_tx_skbs (&dev->pm,NULL ); - -mt792x_mutex_acquire (dev); -clear_bit (MT76_STATE_RUNNING , &phy->mt76->state); -mt76_connac_mcu_set_mac_enable (&dev->mt76,0 , false, false); -mt792x_mutex_release (dev); -} -EXPORT_SYMBOL_GPL (mt7921_stop); -static int mt7921_add_interface (struct ieee80211_hw *hw,struct ieee80211_vif *vif) {
@@ -1312,7 +1293,7 @@ static void mt7921_mgd_complete_tx(struct ieee80211_hw *hw,const struct ieee80211_ops mt7921_ops = { .tx = mt792x_tx, .start = mt7921_start, - .stop = mt7921_stop, + .stop = mt792x_stop, .add_interface = mt7921_add_interface, .remove_interface = mt792x_remove_interface, .config = mt7921_config,
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h +0 -1
@@ -232,7 +232,6 @@ mt7921_l1_rmw(struct mt792x_dev *dev, u32 addr, u32 mask, u32 val)#define mt7921_l1_set (dev, addr, val) mt7921_l1_rmw(dev, addr, 0, val)#define mt7921_l1_clear (dev, addr, val) mt7921_l1_rmw(dev, addr, val, 0) -void mt7921_stop (struct ieee80211_hw *hw);int mt7921_mac_init (struct mt792x_dev *dev);bool mt7921_mac_wtbl_update (struct mt792x_dev *dev,int idx,u32 mask); int mt7921_mac_sta_add(struct mt76_dev *mdev, struct ieee80211_vif *vif,
drivers/net/wireless/mediatek/mt76/mt7921/usb.c +1 -9
@@ -135,14 +135,6 @@ static int mt7921u_mac_reset(struct mt792x_dev *dev)return err; } -static void mt7921u_stop (struct ieee80211_hw *hw) -{ -struct mt792x_dev *dev =mt792x_hw_dev (hw); - -mt76u_stop_tx (&dev->mt76); -mt7921_stop (hw); -} -static int mt7921u_probe (struct usb_interface *usb_intf,const struct usb_device_id *id) {
@@ -189,7 +181,7 @@ static int mt7921u_probe(struct usb_interface *usb_intf,if (!ops)return -ENOMEM ; - ops->stop = mt7921u_stop; + ops->stop = mt792xu_stop; mdev =mt76_alloc_device (&usb_intf->dev,sizeof (*dev), ops, &drv_ops);if (!mdev)return -ENOMEM ;
drivers/net/wireless/mediatek/mt76/mt7925/main.c +1 -19
@@ -318,24 +318,6 @@ static int mt7925_start(struct ieee80211_hw *hw)return err; } -void mt7925_stop (struct ieee80211_hw *hw) -{ -struct mt792x_dev *dev =mt792x_hw_dev (hw); -struct mt792x_phy *phy =mt792x_hw_phy (hw); - -cancel_delayed_work_sync (&phy->mt76->mac_work); - -cancel_delayed_work_sync (&dev->pm.ps_work); -cancel_work_sync (&dev->pm.wake_work); -cancel_work_sync (&dev->reset_work); -mt76_connac_free_pending_tx_skbs (&dev->pm,NULL ); - -mt792x_mutex_acquire (dev); -clear_bit (MT76_STATE_RUNNING , &phy->mt76->state); -mt792x_mutex_release (dev); -} -EXPORT_SYMBOL_GPL (mt7925_stop); -static int mt7925_add_interface (struct ieee80211_hw *hw,struct ieee80211_vif *vif) {
@@ -1411,7 +1393,7 @@ static void mt7925_mgd_complete_tx(struct ieee80211_hw *hw,const struct ieee80211_ops mt7925_ops = { .tx = mt792x_tx, .start = mt7925_start, - .stop = mt7925_stop, + .stop = mt792x_stop, .add_interface = mt7925_add_interface, .remove_interface = mt792x_remove_interface, .config = mt7925_config,
drivers/net/wireless/mediatek/mt76/mt7925/mt7925.h +0 -1
@@ -208,7 +208,6 @@ int mt7925_mcu_chip_config(struct mt792x_dev *dev, const char *cmd);int mt7925_mcu_set_rxfilter (struct mt792x_dev *dev,u32 fif,u8 bit_op,u32 bit_map); -void mt7925_stop (struct ieee80211_hw *hw);int mt7925_mac_init (struct mt792x_dev *dev);int mt7925_mac_sta_add (struct mt76_dev *mdev,struct ieee80211_vif *vif,struct ieee80211_sta *sta);
drivers/net/wireless/mediatek/mt76/mt7925/usb.c +1 -9
@@ -69,14 +69,6 @@ static int mt7925u_mcu_init(struct mt792x_dev *dev)return 0 ; } -static void mt7925u_stop (struct ieee80211_hw *hw) -{ -struct mt792x_dev *dev =mt792x_hw_dev (hw); - -mt76u_stop_tx (&dev->mt76); -mt7925_stop (hw); -} -static int mt7925u_mac_reset (struct mt792x_dev *dev) {int err;
@@ -180,7 +172,7 @@ static int mt7925u_probe(struct usb_interface *usb_intf,if (!ops)return -ENOMEM ; - ops->stop = mt7925u_stop; + ops->stop = mt792xu_stop; mdev =mt76_alloc_device (&usb_intf->dev,sizeof (*dev), ops, &drv_ops);if (!mdev)
drivers/net/wireless/mediatek/mt76/mt792x.h +2 -0
@@ -233,6 +233,7 @@ static inline bool mt792x_dma_need_reinit(struct mt792x_dev *dev)#define mt792x_mutex_release (dev) \ mt76_connac_mutex_release(&(dev)->mt76, &(dev)->pm) +void mt792x_stop (struct ieee80211_hw *hw);void mt792x_pm_wake_work (struct work_struct *work);void mt792x_pm_power_save_work (struct work_struct *work);void mt792x_reset (struct mt76_dev *mdev);
@@ -345,6 +346,7 @@ void mt792xu_wr(struct mt76_dev *dev, u32 addr, u32 val);u32 mt792xu_rmw (struct mt76_dev *dev,u32 addr,u32 mask,u32 val);void mt792xu_copy (struct mt76_dev *dev,u32 offset,const void *data,int len);void mt792xu_disconnect (struct usb_interface *usb_intf); +void mt792xu_stop (struct ieee80211_hw *hw); static inline void mt792x_skb_add_usb_sdio_hdr(struct mt792x_dev *dev, struct sk_buff *skb,
drivers/net/wireless/mediatek/mt76/mt792x_core.c +22 -0
@@ -91,6 +91,28 @@ void mt792x_tx(struct ieee80211_hw *hw, struct ieee80211_tx_control *control, }EXPORT_SYMBOL_GPL (mt792x_tx); +void mt792x_stop (struct ieee80211_hw *hw) +{ +struct mt792x_dev *dev =mt792x_hw_dev (hw); +struct mt792x_phy *phy =mt792x_hw_phy (hw); + +cancel_delayed_work_sync (&phy->mt76->mac_work); + +cancel_delayed_work_sync (&dev->pm.ps_work); +cancel_work_sync (&dev->pm.wake_work); +cancel_work_sync (&dev->reset_work); +mt76_connac_free_pending_tx_skbs (&dev->pm,NULL ); + +if (is_mt7921 (&dev->mt76)) { +mt792x_mutex_acquire (dev); +mt76_connac_mcu_set_mac_enable (&dev->mt76,0 , false, false); +mt792x_mutex_release (dev); + } + +clear_bit (MT76_STATE_RUNNING , &phy->mt76->state); +} +EXPORT_SYMBOL_GPL (mt792x_stop); +void mt792x_remove_interface (struct ieee80211_hw *hw,struct ieee80211_vif *vif) {
drivers/net/wireless/mediatek/mt76/mt792x_usb.c +9 -0
@@ -287,6 +287,15 @@ int mt792xu_init_reset(struct mt792x_dev *dev) }EXPORT_SYMBOL_GPL (mt792xu_init_reset); +void mt792xu_stop (struct ieee80211_hw *hw) +{ +struct mt792x_dev *dev =mt792x_hw_dev (hw); + +mt76u_stop_tx (&dev->mt76); +mt792x_stop (hw); +} +EXPORT_SYMBOL_GPL (mt792xu_stop); +void mt792xu_disconnect (struct usb_interface *usb_intf) {struct mt792x_dev *dev =usb_get_intfdata (usb_intf);
Signature · 1 line
2.41.0