wifi: mt76: move irq_tasklet in mt76_dev struct
authorLorenzo Bianconi <lorenzo@kernel.org>
Mon, 3 Apr 2023 10:33:55 +0000 (12:33 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 17 Apr 2023 15:30:00 +0000 (17:30 +0200)
irq_tasklet struct is used by most of the drivers (e.g. mt7915, mt7921,
mt7615, mt7663 and mt7996) so move it in common code.

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
15 files changed:
drivers/net/wireless/mediatek/mt76/mt76.h
drivers/net/wireless/mediatek/mt76/mt7615/mmio.c
drivers/net/wireless/mediatek/mt76/mt7615/mt7615.h
drivers/net/wireless/mediatek/mt76/mt7615/pci.c
drivers/net/wireless/mediatek/mt76/mt7615/pci_init.c
drivers/net/wireless/mediatek/mt76/mt7915/init.c
drivers/net/wireless/mediatek/mt76/mt7915/mac.c
drivers/net/wireless/mediatek/mt76/mt7915/mmio.c
drivers/net/wireless/mediatek/mt76/mt7915/mt7915.h
drivers/net/wireless/mediatek/mt76/mt7921/mt7921.h
drivers/net/wireless/mediatek/mt76/mt7921/pci.c
drivers/net/wireless/mediatek/mt76/mt7996/init.c
drivers/net/wireless/mediatek/mt76/mt7996/mac.c
drivers/net/wireless/mediatek/mt76/mt7996/mmio.c
drivers/net/wireless/mediatek/mt76/mt7996/mt7996.h

index c3d1313e2f200fd557f770f4d9283f3e06312f71..6b07b8fafec2fbc2ee24c38b07b736d61a1b20b1 100644 (file)
@@ -788,6 +788,7 @@ struct mt76_dev {
        spinlock_t rx_lock;
        struct napi_struct napi[__MT_RXQ_MAX];
        struct sk_buff_head rx_skb[__MT_RXQ_MAX];
+       struct tasklet_struct irq_tasklet;
 
        struct list_head txwi_cache;
        struct list_head rxwi_cache;
index 83173efb56dc42c4abd887b2dee05b45242d581f..e703400aa55185a93cdcafa9384e22b93f01a327 100644 (file)
@@ -80,14 +80,14 @@ static irqreturn_t mt7615_irq_handler(int irq, void *dev_instance)
        if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
                return IRQ_NONE;
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 
        return IRQ_HANDLED;
 }
 
 static void mt7615_irq_tasklet(struct tasklet_struct *t)
 {
-       struct mt7615_dev *dev = from_tasklet(dev, t, irq_tasklet);
+       struct mt7615_dev *dev = from_tasklet(dev, t, mt76.irq_tasklet);
        u32 intr, mask = 0, tx_mcu_mask = mt7615_tx_mcu_int_mask(dev);
        u32 mcu_int;
 
@@ -202,7 +202,7 @@ int mt7615_mmio_probe(struct device *pdev, void __iomem *mem_base,
 
        dev = container_of(mdev, struct mt7615_dev, mt76);
        mt76_mmio_init(&dev->mt76, mem_base);
-       tasklet_setup(&dev->irq_tasklet, mt7615_irq_tasklet);
+       tasklet_setup(&mdev->irq_tasklet, mt7615_irq_tasklet);
 
        dev->reg_map = map;
        dev->ops = ops;
index 43591b4c1d9afc38d516b62862a0995c9bc99a5e..fbf73f8fda1b0600fa90b4cc308887ea4cc8aec9 100644 (file)
@@ -245,8 +245,6 @@ struct mt7615_dev {
        };
 
        const struct mt76_bus_ops *bus_ops;
-       struct tasklet_struct irq_tasklet;
-
        struct mt7615_phy phy;
        u64 omac_mask;
 
@@ -416,7 +414,7 @@ static inline void mt7615_irq_enable(struct mt7615_dev *dev, u32 mask)
 {
        mt76_set_irq_mask(&dev->mt76, 0, 0, mask);
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 }
 
 static inline bool mt7615_firmware_offload(struct mt7615_dev *dev)
index b808248943ea0065289562c9fe62b270524851b4..9f43e673518b8858a965ea4bd9cb34d4cc9ca59f 100644 (file)
@@ -94,7 +94,7 @@ static int mt7615_pci_suspend(struct pci_dev *pdev, pm_message_t state)
        mt76_for_each_q_rx(mdev, i) {
                napi_disable(&mdev->napi[i]);
        }
-       tasklet_kill(&dev->irq_tasklet);
+       tasklet_kill(&mdev->irq_tasklet);
 
        mt7615_dma_reset(dev);
 
index 0680e002b9814506dc690f215556148a676e2209..f607eee3fb479bcc39b4724ff1c3ea8e70077548 100644 (file)
@@ -122,7 +122,7 @@ void mt7615_unregister_device(struct mt7615_dev *dev)
 
        mt7615_tx_token_put(dev);
        mt7615_dma_cleanup(dev);
-       tasklet_disable(&dev->irq_tasklet);
+       tasklet_disable(&dev->mt76.irq_tasklet);
 
        mt76_free_device(&dev->mt76);
 }
index 71ccefd39cb20de52eb8187c3df4f1d4b99267a2..0d52c30ff8fd7c0d35b8f764c45d80dc3de50c9f 100644 (file)
@@ -1180,7 +1180,7 @@ static void mt7915_stop_hardware(struct mt7915_dev *dev)
        mt7915_mcu_exit(dev);
        mt7915_tx_token_put(dev);
        mt7915_dma_cleanup(dev);
-       tasklet_disable(&dev->irq_tasklet);
+       tasklet_disable(&dev->mt76.irq_tasklet);
 
        if (is_mt7986(&dev->mt76))
                mt7986_wmac_disable(dev);
index 97ca55d283fb18d66a23c9422ee6f0344e1be0ac..3c156c1d589b0e1c3b9ca410253cbc9d73d34c32 100644 (file)
@@ -1627,7 +1627,7 @@ void mt7915_mac_reset_work(struct work_struct *work)
        }
        local_bh_enable();
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 
        mt76_wr(dev, MT_MCU_INT_EVENT, MT_MCU_INT_EVENT_RESET_DONE);
        mt7915_wait_reset_state(dev, MT_MCU_CMD_NORMAL_STATE);
index 6f0c0e2ae04539b19e22ea9cf59a5a070f32fbf6..49f0410384c0752467d8c4aee84b77b107335d0c 100644 (file)
@@ -916,7 +916,7 @@ static void mt7915_rx_poll_complete(struct mt76_dev *mdev,
 /* TODO: support 2/4/6/8 MSI-X vectors */
 static void mt7915_irq_tasklet(struct tasklet_struct *t)
 {
-       struct mt7915_dev *dev = from_tasklet(dev, t, irq_tasklet);
+       struct mt7915_dev *dev = from_tasklet(dev, t, mt76.irq_tasklet);
        struct mtk_wed_device *wed = &dev->mt76.mmio.wed;
        u32 intr, intr1, mask;
 
@@ -1000,7 +1000,7 @@ irqreturn_t mt7915_irq_handler(int irq, void *dev_instance)
        if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
                return IRQ_NONE;
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 
        return IRQ_HANDLED;
 }
@@ -1041,7 +1041,7 @@ struct mt7915_dev *mt7915_mmio_probe(struct device *pdev,
        if (ret)
                goto error;
 
-       tasklet_setup(&dev->irq_tasklet, mt7915_irq_tasklet);
+       tasklet_setup(&mdev->irq_tasklet, mt7915_irq_tasklet);
 
        return dev;
 
index e4016cef94477c0b15b67bbc319d4bffcb34d7ab..530cdcef13c9235a929e68d78873e82af70cf84e 100644 (file)
@@ -294,7 +294,6 @@ struct mt7915_dev {
        u32 wfdma_mask;
 
        const struct mt76_bus_ops *bus_ops;
-       struct tasklet_struct irq_tasklet;
        struct mt7915_phy phy;
 
        /* monitor rx chain configured channel */
@@ -567,7 +566,7 @@ static inline void mt7915_irq_enable(struct mt7915_dev *dev, u32 mask)
        else
                mt76_set_irq_mask(&dev->mt76, 0, 0, mask);
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 }
 
 static inline void mt7915_irq_disable(struct mt7915_dev *dev, u32 mask)
index b1dceeafa54ee9465a4e695ea7d24a77ad4b8849..aeb58ad169e60e9a76bacef4c0d587fc80e9123d 100644 (file)
@@ -287,7 +287,6 @@ struct mt7921_dev {
 
        const struct mt76_bus_ops *bus_ops;
        struct mt7921_phy phy;
-       struct tasklet_struct irq_tasklet;
 
        struct work_struct reset_work;
        bool hw_full_reset:1;
@@ -395,7 +394,7 @@ static inline void mt7921_irq_enable(struct mt7921_dev *dev, u32 mask)
 {
        mt76_set_irq_mask(&dev->mt76, 0, 0, mask);
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 }
 
 static inline u32
index 974412b6f76a2b478bd1ea06851fdf9420082fdd..020ee0e49f7815e824ca81b312cd50cf2bcbabc1 100644 (file)
@@ -50,7 +50,7 @@ static irqreturn_t mt7921_irq_handler(int irq, void *dev_instance)
        if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
                return IRQ_NONE;
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 
        return IRQ_HANDLED;
 }
@@ -122,7 +122,7 @@ static void mt7921e_unregister_device(struct mt7921_dev *dev)
        mt7921_wfsys_reset(dev);
        skb_queue_purge(&dev->mt76.mcu.res_q);
 
-       tasklet_disable(&dev->irq_tasklet);
+       tasklet_disable(&dev->mt76.irq_tasklet);
 }
 
 static u32 __mt7921_reg_addr(struct mt7921_dev *dev, u32 addr)
@@ -309,7 +309,7 @@ static int mt7921_pci_probe(struct pci_dev *pdev,
        dev->fw_features = features;
        dev->hif_ops = &mt7921_pcie_ops;
        mt76_mmio_init(&dev->mt76, pcim_iomap_table(pdev)[0]);
-       tasklet_init(&dev->irq_tasklet, mt7921_irq_tasklet, (unsigned long)dev);
+       tasklet_init(&mdev->irq_tasklet, mt7921_irq_tasklet, (unsigned long)dev);
 
        dev->phy.dev = dev;
        dev->phy.mt76 = &dev->mt76.phy;
@@ -421,7 +421,7 @@ static int mt7921_pci_suspend(struct device *device)
        mt76_wr(dev, MT_WFDMA0_HOST_INT_ENA, 0);
        mt76_wr(dev, MT_PCIE_MAC_INT_ENABLE, 0x0);
        synchronize_irq(pdev->irq);
-       tasklet_kill(&dev->irq_tasklet);
+       tasklet_kill(&mdev->irq_tasklet);
 
        err = mt7921_mcu_fw_pmctrl(dev);
        if (err)
index de94e151c47bcfe8e6022f2945e44d3f31f195e2..539e5cc4aa2bf0f29ad821e4f3e8a40bbbdedba4 100644 (file)
@@ -902,7 +902,7 @@ void mt7996_unregister_device(struct mt7996_dev *dev)
        mt7996_mcu_exit(dev);
        mt7996_tx_token_put(dev);
        mt7996_dma_cleanup(dev);
-       tasklet_disable(&dev->irq_tasklet);
+       tasklet_disable(&dev->mt76.irq_tasklet);
 
        mt76_free_device(&dev->mt76);
 }
index f1414a448023091e3c1850ef5a0bb9edcbf49931..18a997a79526975e04473ca57eef9ea082c9080e 100644 (file)
@@ -1883,7 +1883,7 @@ void mt7996_mac_reset_work(struct work_struct *work)
        }
        local_bh_enable();
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 
        mt76_wr(dev, MT_MCU_INT_EVENT, MT_MCU_INT_EVENT_RESET_DONE);
        mt7996_wait_reset_state(dev, MT_MCU_CMD_NORMAL_STATE);
index 902370a2a6397220ec6482fcb139539796353736..65fa1260e80bf1020cc1e6dd99b57907bf25bb93 100644 (file)
@@ -251,7 +251,7 @@ static void mt7996_rx_poll_complete(struct mt76_dev *mdev,
 /* TODO: support 2/4/6/8 MSI-X vectors */
 static void mt7996_irq_tasklet(struct tasklet_struct *t)
 {
-       struct mt7996_dev *dev = from_tasklet(dev, t, irq_tasklet);
+       struct mt7996_dev *dev = from_tasklet(dev, t, mt76.irq_tasklet);
        u32 i, intr, mask, intr1;
 
        mt76_wr(dev, MT_INT_MASK_CSR, 0);
@@ -308,7 +308,7 @@ irqreturn_t mt7996_irq_handler(int irq, void *dev_instance)
        if (!test_bit(MT76_STATE_INITIALIZED, &dev->mphy.state))
                return IRQ_NONE;
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 
        return IRQ_HANDLED;
 }
@@ -349,7 +349,7 @@ struct mt7996_dev *mt7996_mmio_probe(struct device *pdev,
        if (ret)
                goto error;
 
-       tasklet_setup(&dev->irq_tasklet, mt7996_irq_tasklet);
+       tasklet_setup(&mdev->irq_tasklet, mt7996_irq_tasklet);
 
        mt76_wr(dev, MT_INT_MASK_CSR, 0);
 
index 5463ce77a1a0333c7c7a6c3e6cb511c47aa70ecd..4cdc3cc6102d68f7f024034d87ede9c2947ec8a0 100644 (file)
@@ -222,7 +222,6 @@ struct mt7996_dev {
        u32 q_wfdma_mask;
 
        const struct mt76_bus_ops *bus_ops;
-       struct tasklet_struct irq_tasklet;
        struct mt7996_phy phy;
 
        /* monitor rx chain configured channel */
@@ -451,7 +450,7 @@ static inline void mt7996_irq_enable(struct mt7996_dev *dev, u32 mask)
        else
                mt76_set_irq_mask(&dev->mt76, 0, 0, mask);
 
-       tasklet_schedule(&dev->irq_tasklet);
+       tasklet_schedule(&dev->mt76.irq_tasklet);
 }
 
 static inline void mt7996_irq_disable(struct mt7996_dev *dev, u32 mask)