Re:Re: [PATCH] net/net_failover: fix queue exceeding warning

From: Faicker Mo <hidden>
Date: 2023-03-21 08:12:58
Also in: lkml

When tx from the net_failover device, the actual tx queue number is the salve device.
The ndo_select_queue of net_failover device returns the txq which is the primary device txq
if the primary device is OK.
This number may be bigger than the default 16 of the net_failover device.
 A warning will be reported in netdev_cap_txqueue which device is the net_failover.

From: Pavan Chebbi <pavan.chebbi@broadcom.com>
 Date: 2023-03-21 13:11:52
To:Faicker Mo [off-list ref]
 cc: Sridhar Samudrala [off-list ref],"David S. Miller" [off-list ref],Eric Dumazet [off-list ref],Jakub Kicinski [off-list ref],Paolo Abeni [off-list ref],netdev@vger.kernel.org,linux-kernel@vger.kernel.org
Subject: Re: [PATCH] net/net_failover: fix queue exceeding warning>On Tue, Mar 21, 2023 at 8:15 AM Faicker Mo [off-list ref] wrote:
quoted
If the primary device queue number is bigger than the default 16,
there is a warning about the queue exceeding when tx from the
net_failover device.
Can you describe the issue more? If the net device has not implemented
its own selection then netdev_pick_tx should take care of the
real_num_tx_queues.
Is that not happening?
quoted
Signed-off-by: Faicker Mo <redacted>
---
 drivers/net/net_failover.c | 8 ++------
 1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/drivers/net/net_failover.c b/drivers/net/net_failover.c
index 7a28e082436e..d0c916a53d7c 100644
--- a/drivers/net/net_failover.c
+++ b/drivers/net/net_failover.c
@@ -130,14 +130,10 @@ static u16 net_failover_select_queue(struct net_device *dev,
                        txq = ops->ndo_select_queue(primary_dev, skb, sb_dev);
                else
                        txq = netdev_pick_tx(primary_dev, skb, NULL);
-
-               qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping;
-
-               return txq;
+       } else {
+               txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : 0;
        }

-       txq = skb_rx_queue_recorded(skb) ? skb_get_rx_queue(skb) : 0;
-
        /* Save the original txq to restore before passing to the driver */
        qdisc_skb_cb(skb)->slave_dev_queue_mapping = skb->queue_mapping;

--
2.39.1



Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help