[<prev] [next>] [day] [month] [year] [list]
Message-ID: <AP2AlAA-I3id1jhRl3Q*8qr3.1.1679386299965.Hmail.mocan@ucloud.cn>
Date: Tue, 21 Mar 2023 16:11:39 +0800 (GMT+08:00)
From: Faicker Mo <faicker.mo@...oud.cn>
To: faicker.mo@...oud.cn
Cc: netdev@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re:Re: [PATCH] net/net_failover: fix queue exceeding warning
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@...adcom.com>
Date: 2023-03-21 13:11:52
To:Faicker Mo <faicker.mo@...oud.cn>
cc: Sridhar Samudrala <sridhar.samudrala@...el.com>,"David S. Miller" <davem@...emloft.net>,Eric Dumazet <edumazet@...gle.com>,Jakub Kicinski <kuba@...nel.org>,Paolo Abeni <pabeni@...hat.com>,netdev@...r.kernel.org,linux-kernel@...r.kernel.org
Subject: Re: [PATCH] net/net_failover: fix queue exceeding warning>On Tue, Mar 21, 2023 at 8:15 AM Faicker Mo <faicker.mo@...oud.cn> wrote:
>>
>> 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?
>
>> Signed-off-by: Faicker Mo <faicker.mo@...oud.cn>
>> ---
>> 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
>>
Powered by blists - more mailing lists