Search Linux Wireless

RE: [PATCH] wifi: rtlwifi: pci: Fix condition to wake the queues

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Bitterblue Smith <rtl8821cerfe2@xxxxxxxxx> wrote:
> diff --git a/drivers/net/wireless/realtek/rtlwifi/pci.c b/drivers/net/wireless/realtek/rtlwifi/pci.c
> index 0eafc4d125f9..9614a9e752b9 100644
> --- a/drivers/net/wireless/realtek/rtlwifi/pci.c
> +++ b/drivers/net/wireless/realtek/rtlwifi/pci.c
> @@ -520,7 +520,7 @@ static void _rtl_pci_tx_isr(struct ieee80211_hw *hw, int prio)
>                         rtl_tx_ackqueue(hw, skb);
>                 }
> 
> -               if ((ring->entries - skb_queue_len(&ring->queue)) <= 4) {
> +               if ((ring->entries - skb_queue_len(&ring->queue)) >= 4) {
>                         rtl_dbg(rtlpriv, COMP_ERR, DBG_DMESG,
>                                 "more desc left, wake skb_queue@%d, ring->idx = %d, skb_queue_len =
> 0x%x\n",
>                                 prio, ring->idx,

Reading the code about calling ieee80211_stop_queue() and
ieee80211_wake_queue() again. It looks like

In TX path (rtl_pci_tx):

    if (remaining < 2)
        ieee80211_stop_queue();

In TX completion path (_rtl_pci_tx_isr):

    if (remaining <= 4)
        ieee80211_wake_queue();

I guess it uses "<= 4" in TX completion path because origin patch doesn't
want to call ieee80211_wake_queue() redundantly, but looks not so reasonable.
The better way may use ieee80211_queue_stopped() instead.





[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux