aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/mediatek
diff options
context:
space:
mode:
authorFelix Fietkau <nbd@nbd.name>2019-08-12 15:50:59 +0200
committerFelix Fietkau <nbd@nbd.name>2019-09-05 17:42:32 +0200
commit5a90107d79e70d2596fb68be3018e8b7e0ae4534 (patch)
tree9805e3652975ca8fc5681b54e94452fa49eca08a /drivers/net/wireless/mediatek
parentmt76: mt7615: apply calibration-free data from OTP (diff)
downloadlinux-dev-5a90107d79e70d2596fb68be3018e8b7e0ae4534.tar.xz
linux-dev-5a90107d79e70d2596fb68be3018e8b7e0ae4534.zip
mt76: dma: reset q->rx_head on rx reset
Fixes rx of the first frame if a fragmented rx was interrupted by the reset Signed-off-by: Felix Fietkau <nbd@nbd.name>
Diffstat (limited to 'drivers/net/wireless/mediatek')
-rw-r--r--drivers/net/wireless/mediatek/mt76/dma.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/net/wireless/mediatek/mt76/dma.c b/drivers/net/wireless/mediatek/mt76/dma.c
index 46f5223b4d89..c747eb24581c 100644
--- a/drivers/net/wireless/mediatek/mt76/dma.c
+++ b/drivers/net/wireless/mediatek/mt76/dma.c
@@ -431,6 +431,12 @@ mt76_dma_rx_reset(struct mt76_dev *dev, enum mt76_rxq_id qid)
mt76_dma_rx_cleanup(dev, q);
mt76_dma_sync_idx(dev, q);
mt76_dma_rx_fill(dev, q);
+
+ if (!q->rx_head)
+ return;
+
+ dev_kfree_skb(q->rx_head);
+ q->rx_head = NULL;
}
static void