]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
staging: wfx: fix AC priority
authorJérôme Pouiller <jerome.pouiller@silabs.com>
Fri, 29 May 2020 12:16:02 +0000 (14:16 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Tue, 16 Jun 2020 19:22:50 +0000 (21:22 +0200)
In order to work properly all the queues of the device must be filled (the
device chooses itself the queue to use depending of AC parameters and
other things). It is the job of wfx_tx_queues_get_skb() to choose which
queue must be filled. However, the sorting algorithm was inverted, so it
prioritized the already filled queue! Consequently, the AC priorities was
badly broken.

Fixes: 6bf418c50f98a ("staging: wfx: change the way to choose frame to send")
Signed-off-by: Jérôme Pouiller <jerome.pouiller@silabs.com>
Link: https://lore.kernel.org/r/20200529121603.1050891-1-Jerome.Pouiller@silabs.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/wfx/queue.c

index 3248ecefda5644c7b46053b1a344a7f9bc19ee83..75df4aca29ac32ebd4b2481c63e25f542310cd52 100644 (file)
@@ -246,7 +246,7 @@ static struct sk_buff *wfx_tx_queues_get_skb(struct wfx_dev *wdev)
        for (i = 0; i < IEEE80211_NUM_ACS; i++) {
                sorted_queues[i] = &wdev->tx_queue[i];
                for (j = i; j > 0; j--)
-                       if (atomic_read(&sorted_queues[j]->pending_frames) >
+                       if (atomic_read(&sorted_queues[j]->pending_frames) <
                            atomic_read(&sorted_queues[j - 1]->pending_frames))
                                swap(sorted_queues[j - 1], sorted_queues[j]);
        }