All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg KH <greg@kroah.com>
To: Leesoo Ahn <lsahn@ooseel.net>
Cc: Oliver Neukum <oneukum@suse.com>,
	"David S. Miller" <davem@davemloft.net>,
	Eric Dumazet <edumazet@google.com>,
	Jakub Kicinski <kuba@kernel.org>, Paolo Abeni <pabeni@redhat.com>,
	netdev@vger.kernel.org, linux-usb@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH v2] usbnet: optimize usbnet_bh() to reduce CPU load
Date: Wed, 21 Dec 2022 08:30:55 +0100	[thread overview]
Message-ID: <Y6K2L+t5NjK/3ipj@kroah.com> (raw)
In-Reply-To: <2d4033ea-3034-24cf-493c-f60258f9988d@ooseel.net>

On Wed, Dec 21, 2022 at 04:19:45PM +0900, Leesoo Ahn wrote:
> 
> On 22. 12. 21. 15:32, Greg KH wrote:
> > On Wed, Dec 21, 2022 at 01:42:30PM +0900, Leesoo Ahn wrote:
> > > The current source pushes skb into dev->done queue by calling
> > > skb_queue_tail() and then pop it by calling skb_dequeue() to branch to
> > > rx_cleanup state for freeing urb/skb in usbnet_bh(). It takes extra CPU
> > > load, 2.21% (skb_queue_tail) as follows.
> > > 
> > > -   11.58%     0.26%  swapper          [k] usbnet_bh
> > >     - 11.32% usbnet_bh
> > >        - 6.43% skb_dequeue
> > >             6.34% _raw_spin_unlock_irqrestore
> > >        - 2.21% skb_queue_tail
> > >             2.19% _raw_spin_unlock_irqrestore
> > >        - 1.68% consume_skb
> > >           - 0.97% kfree_skbmem
> > >                0.80% kmem_cache_free
> > >             0.53% skb_release_data
> > > 
> > > To reduce the extra CPU load use return values jumping to rx_cleanup
> > > state directly to free them instead of calling skb_queue_tail() and
> > > skb_dequeue() for push/pop respectively.
> > > 
> > > -    7.87%     0.25%  swapper          [k] usbnet_bh
> > >     - 7.62% usbnet_bh
> > >        - 4.81% skb_dequeue
> > >             4.74% _raw_spin_unlock_irqrestore
> > >        - 1.75% consume_skb
> > >           - 0.98% kfree_skbmem
> > >                0.78% kmem_cache_free
> > >             0.58% skb_release_data
> > >          0.53% smsc95xx_rx_fixup
> > > 
> > > Signed-off-by: Leesoo Ahn <lsahn@ooseel.net>
> > > ---
> > > v2:
> > >    - Replace goto label with return statement to reduce goto entropy
> > >    - Add CPU load information by perf in commit message
> > > 
> > > v1 at:
> > >    https://patchwork.kernel.org/project/netdevbpf/patch/20221217161851.829497-1-lsahn@ooseel.net/
> > > ---
> > >   drivers/net/usb/usbnet.c | 19 +++++++++----------
> > >   1 file changed, 9 insertions(+), 10 deletions(-)
> > > 
> > > diff --git a/drivers/net/usb/usbnet.c b/drivers/net/usb/usbnet.c
> > > index 64a9a80b2309..6e82fef90dd9 100644
> > > --- a/drivers/net/usb/usbnet.c
> > > +++ b/drivers/net/usb/usbnet.c
> > > @@ -555,32 +555,30 @@ static int rx_submit (struct usbnet *dev, struct urb *urb, gfp_t flags)
> > >   /*-------------------------------------------------------------------------*/
> > > -static inline void rx_process (struct usbnet *dev, struct sk_buff *skb)
> > > +static inline int rx_process(struct usbnet *dev, struct sk_buff *skb)
> > >   {
> > >   	if (dev->driver_info->rx_fixup &&
> > >   	    !dev->driver_info->rx_fixup (dev, skb)) {
> > >   		/* With RX_ASSEMBLE, rx_fixup() must update counters */
> > >   		if (!(dev->driver_info->flags & FLAG_RX_ASSEMBLE))
> > >   			dev->net->stats.rx_errors++;
> > > -		goto done;
> > > +		return 1;
> > "1" means that you processed 1 byte, not that this is an error, which is
> > what you want to say here, right?
> No not at all..
> > Please return a negative error value
> > like I asked this to be changed to last time :(
> Could you help me to decide the message type at this point please? I am
> confused.

I do not know, pick something that seems correct and we can go from
there.  The important thing is that it is a -ERR value, not a positive
one as that makes no sense for kernel functions.

thanks,

greg k-h

  reply	other threads:[~2022-12-21  7:31 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-12-21  4:42 [PATCH v2] usbnet: optimize usbnet_bh() to reduce CPU load Leesoo Ahn
2022-12-21  6:32 ` Greg KH
2022-12-21  7:19   ` Leesoo Ahn
2022-12-21  7:30     ` Greg KH [this message]
2022-12-21  7:50       ` Leesoo Ahn

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=Y6K2L+t5NjK/3ipj@kroah.com \
    --to=greg@kroah.com \
    --cc=davem@davemloft.net \
    --cc=edumazet@google.com \
    --cc=kuba@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-usb@vger.kernel.org \
    --cc=lsahn@ooseel.net \
    --cc=netdev@vger.kernel.org \
    --cc=oneukum@suse.com \
    --cc=pabeni@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.