mt76x02u: add mt76_release_buffered_frames
authorStanislaw Gruszka <sgruszka@redhat.com>
Tue, 19 Mar 2019 10:37:45 +0000 (11:37 +0100)
committerFelix Fietkau <nbd@nbd.name>
Wed, 1 May 2019 11:03:56 +0000 (13:03 +0200)
Create software MT_TXQ_PSD queue for USB and map it to MT_TXQ_VO
since we do not have USB endpoint for PSD. This should make
mt76_release_buffered_frames() work by sending released frames
via MT_TXQ_VO.

Signed-off-by: Stanislaw Gruszka <sgruszka@redhat.com>
Signed-off-by: Felix Fietkau <nbd@nbd.name>
drivers/net/wireless/mediatek/mt76/mt76x0/usb.c
drivers/net/wireless/mediatek/mt76/mt76x2/usb_main.c
drivers/net/wireless/mediatek/mt76/usb.c

index 71dfff23c29a5e16e9836edc802e0e8bc37f579c..37f6baa94400c66dab2a89372299485444994360 100644 (file)
@@ -152,6 +152,7 @@ static const struct ieee80211_ops mt76x0u_ops = {
        .set_rts_threshold = mt76x02_set_rts_threshold,
        .wake_tx_queue = mt76_wake_tx_queue,
        .get_txpower = mt76_get_txpower,
+       .release_buffered_frames = mt76_release_buffered_frames,
 };
 
 static int mt76x0u_init_hardware(struct mt76x02_dev *dev)
index 1e68568565364f55ea02e7aab2823fa1a81488de..46c6b3764f5aa256238c1b9a5b95c9c3712ba1af 100644 (file)
@@ -129,4 +129,5 @@ const struct ieee80211_ops mt76x2u_ops = {
        .sw_scan_complete = mt76x02_sw_scan_complete,
        .sta_rate_tbl_update = mt76x02_sta_rate_tbl_update,
        .get_txpower = mt76_get_txpower,
+       .release_buffered_frames = mt76_release_buffered_frames,
 };
index 27896a435d6c4846ac78c53675e04ce3cc8bec5f..7b62bd63d395c9a9a17285ec9b7b05923725cd66 100644 (file)
@@ -792,9 +792,14 @@ static int mt76u_alloc_tx(struct mt76_dev *dev)
        struct mt76_queue *q;
        int i, j;
 
-       for (i = 0; i < IEEE80211_NUM_ACS; i++) {
+       for (i = 0; i <= MT_TXQ_PSD; i++) {
                INIT_LIST_HEAD(&dev->q_tx[i].swq);
 
+               if (i >= IEEE80211_NUM_ACS) {
+                       dev->q_tx[i].q = dev->q_tx[0].q;
+                       continue;
+               }
+
                q = devm_kzalloc(dev->dev, sizeof(*q), GFP_KERNEL);
                if (!q)
                        return -ENOMEM;