]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
wifi: mt76: mt7996: Fix tx-queues initialization for second phy on mt7996
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 9 Sep 2025 09:45:16 +0000 (11:45 +0200)
committerFelix Fietkau <nbd@nbd.name>
Mon, 15 Sep 2025 07:47:41 +0000 (09:47 +0200)
Fix the second phy tx queue initialization if hif device is not
available for MT7990 chipset.

Fixes: 83eafc9251d6d ("wifi: mt76: mt7996: add wed tx support")
Co-developed-by: Sujuan Chen <sujuan.chen@mediatek.com>
Signed-off-by: Sujuan Chen <sujuan.chen@mediatek.com>
Co-developed-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Signed-off-by: Benjamin Lin <benjamin-jw.lin@mediatek.com>
Co-developed-by: Rex Lu <rex.lu@mediatek.com>
Signed-off-by: Rex Lu <rex.lu@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Link: https://patch.msgid.link/20250909-mt7996-rro-rework-v5-8-7d66f6eb7795@kernel.org
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7996/init.c

index 73a55eea535872f94d2328ea5d832d82bf02abb2..a472c9bd4fd8ae88a5213bda8225c91716423f6d 100644 (file)
@@ -703,13 +703,20 @@ static int mt7996_register_phy(struct mt7996_dev *dev, enum mt76_band_id band)
 
        /* init wiphy according to mphy and phy */
        mt7996_init_wiphy_band(mphy->hw, phy);
-       ret = mt7996_init_tx_queues(mphy->priv,
-                                   MT_TXQ_ID(band),
-                                   MT7996_TX_RING_SIZE,
-                                   MT_TXQ_RING_BASE(band) + hif1_ofs,
-                                   wed);
-       if (ret)
-               goto error;
+
+       if (is_mt7996(&dev->mt76) && !dev->hif2 && band == MT_BAND1) {
+               int i;
+
+               for (i = 0; i <= MT_TXQ_PSD; i++)
+                       mphy->q_tx[i] = dev->mt76.phys[MT_BAND0]->q_tx[0];
+       } else {
+               ret = mt7996_init_tx_queues(mphy->priv, MT_TXQ_ID(band),
+                                           MT7996_TX_RING_SIZE,
+                                           MT_TXQ_RING_BASE(band) + hif1_ofs,
+                                           wed);
+               if (ret)
+                       goto error;
+       }
 
        ret = mt76_register_phy(mphy, true, mt76_rates,
                                ARRAY_SIZE(mt76_rates));