mt76: mt7603: improve reliability of tx powersave filtering
authorFelix Fietkau <nbd@nbd.name>
Thu, 25 Nov 2021 19:07:42 +0000 (20:07 +0100)
committerFelix Fietkau <nbd@nbd.name>
Sun, 19 Dec 2021 14:24:01 +0000 (15:24 +0100)
Leave more time to abort transmissions (which could happen at low CCK rates)
Only warn if the last filter command is stuck

Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt7603/mac.c

index a9ac61b..a272d64 100644 (file)
@@ -202,10 +202,11 @@ void mt7603_filter_tx(struct mt7603_dev *dev, int idx, bool abort)
                        FIELD_PREP(MT_DMA_FQCR0_DEST_PORT_ID, port) |
                        FIELD_PREP(MT_DMA_FQCR0_DEST_QUEUE_ID, queue));
 
-               WARN_ON_ONCE(!mt76_poll(dev, MT_DMA_FQCR0, MT_DMA_FQCR0_BUSY,
-                                       0, 5000));
+               mt76_poll(dev, MT_DMA_FQCR0, MT_DMA_FQCR0_BUSY, 0, 15000);
        }
 
+       WARN_ON_ONCE(mt76_rr(dev, MT_DMA_FQCR0) & MT_DMA_FQCR0_BUSY);
+
        mt76_wr(dev, MT_TX_ABORT, 0);
 
        mt7603_wtbl_set_skip_tx(dev, idx, false);