mt76: dma: add skb check for dummy pointer
authorLorenzo Bianconi <lorenzo@kernel.org>
Tue, 2 Apr 2019 09:47:59 +0000 (11:47 +0200)
committerFelix Fietkau <nbd@nbd.name>
Wed, 1 May 2019 11:03:58 +0000 (13:03 +0200)
Introduce skb check for dummy address in mt76_dma_tx_cleanup_idx.
This is a preliminary patch to add support for new chipsets (e.g. 7615)

Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/dma.c
drivers/net/wireless/mediatek/mt76/dma.h

index 4ffee2e208b284574aec477f5efaff7c9a49958d..c629cb939719f282e576d0efe4ae7da857e2b234 100644 (file)
@@ -18,8 +18,6 @@
 #include "mt76.h"
 #include "dma.h"
 
-#define DMA_DUMMY_TXWI ((void *) ~0)
-
 static int
 mt76_dma_alloc_queue(struct mt76_dev *dev, struct mt76_queue *q,
                     int idx, int n_desc, int bufsize,
@@ -67,7 +65,7 @@ mt76_dma_add_buf(struct mt76_dev *dev, struct mt76_queue *q,
        int i, idx = -1;
 
        if (txwi)
-               q->entry[q->head].txwi = DMA_DUMMY_TXWI;
+               q->entry[q->head].txwi = DMA_DUMMY_DATA;
 
        for (i = 0; i < nbufs; i += 2, buf += 2) {
                u32 buf0 = buf[0].addr, buf1 = 0;
@@ -126,9 +124,12 @@ mt76_dma_tx_cleanup_idx(struct mt76_dev *dev, struct mt76_queue *q, int idx,
                                 DMA_TO_DEVICE);
        }
 
-       if (e->txwi == DMA_DUMMY_TXWI)
+       if (e->txwi == DMA_DUMMY_DATA)
                e->txwi = NULL;
 
+       if (e->skb == DMA_DUMMY_DATA)
+               e->skb = NULL;
+
        *prev_e = *e;
        memset(e, 0, sizeof(*e));
 }
index e3292df5e9b25723e4acf08499fcc974ae31e1b7..03dd2bafa4e8bd28b8b55ec46bde2c7831a4cadf 100644 (file)
@@ -16,6 +16,8 @@
 #ifndef __MT76_DMA_H
 #define __MT76_DMA_H
 
+#define DMA_DUMMY_DATA                 ((void *)~0)
+
 #define MT_RING_SIZE                   0x10
 
 #define MT_DMA_CTL_SD_LEN1             GENMASK(13, 0)