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