mt7603: rename MT_INT_PRE_TBTT to MT_INT_MAC_IRQ3, check status register before calling pre-tbtt tasklet

Signed-off-by: Felix Fietkau <[email protected]>
This commit is contained in:
Felix Fietkau
2016-02-25 20:59:00 +01:00
parent 81c6ab2d8c
commit 5003f8ab8c
3 changed files with 10 additions and 9 deletions
+2 -2
View File
@@ -119,7 +119,7 @@ void mt7603_beacon_set_timer(struct mt7603_dev *dev, int idx, int intval)
dev->beacon_mask &= BIT(idx);
if (!dev->beacon_mask) {
mt7603_irq_disable(dev, MT_INT_PRE_TBTT);
mt7603_irq_disable(dev, MT_INT_MAC_IRQ3);
mt76_clear(dev, MT_WF_ARB_SCR, MT_WF_ARB_BCNQ_OPMODE_MASK);
mt76_wr(dev, MT_HW_INT_MASK(3), 0);
return;
@@ -137,5 +137,5 @@ void mt7603_beacon_set_timer(struct mt7603_dev *dev, int idx, int intval)
mt76_set(dev, MT_HW_INT_MASK(3), MT_HW_INT3_PRE_TBTT0);
mt76_set(dev, MT_WF_ARB_BCN_START, MT_WF_ARB_BCN_START_BSSn(0));
mt7603_irq_enable(dev, MT_INT_PRE_TBTT);
mt7603_irq_enable(dev, MT_INT_MAC_IRQ3);
}
+7 -6
View File
@@ -43,6 +43,13 @@ irqreturn_t mt7603_irq_handler(int irq, void *dev_instance)
intr &= dev->irqmask;
if (intr & MT_INT_MAC_IRQ3) {
u32 hwintr = mt76_rr(dev, MT_HW_INT_STATUS(3));
mt76_wr(dev, MT_HW_INT_STATUS(3), hwintr);
if (hwintr & MT_HW_INT3_PRE_TBTT0)
tasklet_schedule(&dev->pre_tbtt_tasklet);
}
if (intr & MT_INT_TX_DONE_ALL) {
mt7603_irq_disable(dev, MT_INT_TX_DONE_ALL);
tasklet_schedule(&dev->tx_tasklet);
@@ -58,12 +65,6 @@ irqreturn_t mt7603_irq_handler(int irq, void *dev_instance)
napi_schedule(&dev->mt76.napi[1]);
}
if (intr & MT_INT_PRE_TBTT) {
u32 hwintr = mt76_rr(dev, MT_HW_INT_STATUS(3));
mt76_wr(dev, MT_HW_INT_STATUS(3), hwintr);
tasklet_schedule(&dev->pre_tbtt_tasklet);
}
return IRQ_HANDLED;
}
+1 -1
View File
@@ -43,7 +43,7 @@
#define MT_INT_RX_COHERENT BIT(20)
#define MT_INT_TX_COHERENT BIT(21)
#define MT_INT_PRE_TBTT BIT(27)
#define MT_INT_MAC_IRQ3 BIT(27)
#define MT_INT_MCU_CMD BIT(30)