[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <7d84293de72a05c76d66f9010248f4d233cd1c1a.camel@redhat.com>
Date: Thu, 01 Jun 2023 10:41:34 +0200
From: Paolo Abeni <pabeni@...hat.com>
To: Simon Horman <simon.horman@...igine.com>, Yoshihiro Shimoda
<yoshihiro.shimoda.uh@...esas.com>
Cc: s.shtylyov@....ru, davem@...emloft.net, edumazet@...gle.com,
kuba@...nel.org, netdev@...r.kernel.org, linux-renesas-soc@...r.kernel.org
Subject: Re: [PATCH net] net: renesas: rswitch: Fix return value in error
path of xmit
On Tue, 2023-05-30 at 13:42 +0200, Simon Horman wrote:
> On Mon, May 29, 2023 at 04:38:17PM +0900, Yoshihiro Shimoda wrote:
> > Fix return value in the error path of rswitch_start_xmit(). If TX
> > queues are full, this function should return NETDEV_TX_BUSY.
> >
> > Fixes: 3590918b5d07 ("net: ethernet: renesas: Add support for "Ethernet Switch"")
> > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@...esas.com>
>
> Hi Shimoda-san,
>
> I agree that this is the correct return value for this case.
> But I do wonder if, as per the documentation of ndo_start_xmit,
> something should be done to avoid getting into such a situation.
>
> * netdev_tx_t (*ndo_start_xmit)(struct sk_buff *skb,
> * struct net_device *dev);
> * Called when a packet needs to be transmitted.
> * Returns NETDEV_TX_OK. Can return NETDEV_TX_BUSY, but you should stop
> * the queue before that can happen; it's for obsolete devices and weird
> * corner cases, but the stack really does a non-trivial amount
> * of useless work if you return NETDEV_TX_BUSY.
> * Required; cannot be NULL.
I agree with Simon, it looks like the driver usage of
netif_stop_subqueue()/netif_wake_subqueue() is a dubious.
I think you will be better of using
netif_subqueue_maybe_stop()/netif_subqueue_completed_wake() alike what
rtl8169 is doing. e.g. netif_subqueue_maybe_stop() should be invoked
after the tx buffer enqueue, and netif_subqueue_completed_wake() should
be invoked after successful tx ring cleanup.
Thanks!
Paolo
Powered by blists - more mailing lists