mt76: mt76u: take into account different queue mapping for 7663
authorLorenzo Bianconi <lorenzo@kernel.org>
Wed, 15 Jan 2020 10:58:55 +0000 (11:58 +0100)
committerFelix Fietkau <nbd@nbd.name>
Fri, 14 Feb 2020 09:06:05 +0000 (10:06 +0100)
7663u devices rely on a different endpoint mapping. Take it into account
in mt76u_alloc_tx routine

Co-developed-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Sean Wang <sean.wang@mediatek.com>
Signed-off-by: Lorenzo Bianconi <lorenzo@kernel.org>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/usb.c

index 6b31a7a..1f29cd9 100644 (file)
@@ -964,6 +964,14 @@ static void mt76u_tx_kick(struct mt76_dev *dev, struct mt76_queue *q)
        }
 }
 
+static u8 mt76u_ac_to_hwq(struct mt76_dev *dev, u8 ac)
+{
+       if (mt76_chip(dev) == 0x7663)
+               return ac ^ 0x3;
+
+       return mt76_ac_to_hwq(ac);
+}
+
 static int mt76u_alloc_tx(struct mt76_dev *dev)
 {
        struct mt76_queue *q;
@@ -982,7 +990,7 @@ static int mt76u_alloc_tx(struct mt76_dev *dev)
                        return -ENOMEM;
 
                spin_lock_init(&q->lock);
-               q->hw_idx = mt76_ac_to_hwq(i);
+               q->hw_idx = mt76u_ac_to_hwq(dev, i);
                dev->q_tx[i].q = q;
 
                q->entry = devm_kcalloc(dev->dev,