]> git.dujemihanovic.xyz Git - linux.git/commitdiff
r8169: don't increment tx_dropped in case of NETDEV_TX_BUSY
authorHeiner Kallweit <hkallweit1@gmail.com>
Tue, 30 Jul 2024 19:51:52 +0000 (21:51 +0200)
committerJakub Kicinski <kuba@kernel.org>
Thu, 1 Aug 2024 00:52:46 +0000 (17:52 -0700)
The skb isn't consumed in case of NETDEV_TX_BUSY, therefore don't
increment the tx_dropped counter.

Fixes: 188f4af04618 ("r8169: use NETDEV_TX_{BUSY/OK}")
Cc: stable@vger.kernel.org
Suggested-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Reviewed-by: Wojciech Drewek <wojciech.drewek@intel.com>
Link: https://patch.msgid.link/bbba9c48-8bac-4932-9aa1-d2ed63bc9433@gmail.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
drivers/net/ethernet/realtek/r8169_main.c

index 714d2e80469404ef0e950998a8cbce85449fa8f2..3507c2e28110d23b896c41044708e605130a2f0f 100644 (file)
@@ -4349,7 +4349,8 @@ static netdev_tx_t rtl8169_start_xmit(struct sk_buff *skb,
        if (unlikely(!rtl_tx_slots_avail(tp))) {
                if (net_ratelimit())
                        netdev_err(dev, "BUG! Tx Ring full when queue awake!\n");
-               goto err_stop_0;
+               netif_stop_queue(dev);
+               return NETDEV_TX_BUSY;
        }
 
        opts[1] = rtl8169_tx_vlan_tag(skb);
@@ -4405,11 +4406,6 @@ err_dma_0:
        dev_kfree_skb_any(skb);
        dev->stats.tx_dropped++;
        return NETDEV_TX_OK;
-
-err_stop_0:
-       netif_stop_queue(dev);
-       dev->stats.tx_dropped++;
-       return NETDEV_TX_BUSY;
 }
 
 static unsigned int rtl_last_frag_len(struct sk_buff *skb)