All of lore.kernel.org
 help / color / mirror / Atom feed
From: Greg <gvrose8192@gmail.com>
To: Paolo Abeni <pabeni@redhat.com>
Cc: netdev@vger.kernel.org, "David S. Miller" <davem@davemloft.net>,
	Bogdan Hamciuc <bogdan.hamciuc@freescale.com>,
	Ben Greear <greearb@candelatech.com>,
	Sergei Shtylyov <sergei.shtylyov@cogentembedded.com>
Subject: Re: [PATCH net v2] net: pktgen: fix pkt_size
Date: Mon, 03 Oct 2016 06:56:58 -0700	[thread overview]
Message-ID: <1475503018.3279.5.camel@gmail.com> (raw)
In-Reply-To: <1475345120.6330.21.camel@redhat.com>

On Sat, 2016-10-01 at 20:05 +0200, Paolo Abeni wrote:
> On Fri, 2016-09-30 at 08:39 -0700, Greg wrote:
> > On Fri, 2016-09-30 at 16:56 +0200, Paolo Abeni wrote:
> > > The commit 879c7220e828 ("net: pktgen: Observe needed_headroom
> > > of the device") increased the 'pkt_overhead' field value by
> > > LL_RESERVED_SPACE.
> > > As a side effect the generated packet size, computed as:
> > > 
> > > 	/* Eth + IPh + UDPh + mpls */
> > > 	datalen = pkt_dev->cur_pkt_size - 14 - 20 - 8 -
> > > 		  pkt_dev->pkt_overhead;
> > > 
> > > is decreased by the same value.
> > > The above changed slightly the behavior of existing pktgen users,
> > > and made the procfs interface somewhat inconsistent.
> > > Fix it by restoring the previous pkt_overhead value and using
> > > LL_RESERVED_SPACE as extralen in skb allocation.
> > > Also, change pktgen_alloc_skb() to only partially reserve
> > > the headroom to allow the caller to prefetch from ll header
> > > start.
> > > 
> > > v1 -> v2:
> > >  - fixed some typos in the comments
> > > 
> > > Fixes: 879c7220e828 ("net: pktgen: Observe needed_headroom of the device")
> > > Suggested-by: Ben Greear <greearb@candelatech.com>
> > > Signed-off-by: Paolo Abeni <pabeni@redhat.com>
> > > ---
> > >  net/core/pktgen.c | 21 ++++++++++-----------
> > >  1 file changed, 10 insertions(+), 11 deletions(-)
> > > 
> > > diff --git a/net/core/pktgen.c b/net/core/pktgen.c
> > > index bbd118b..5219a9e 100644
> > > --- a/net/core/pktgen.c
> > > +++ b/net/core/pktgen.c
> > > @@ -2286,7 +2286,7 @@ out:
> > >  
> > >  static inline void set_pkt_overhead(struct pktgen_dev *pkt_dev)
> > >  {
> > > -	pkt_dev->pkt_overhead = LL_RESERVED_SPACE(pkt_dev->odev);
> > > +	pkt_dev->pkt_overhead = 0;
> > >  	pkt_dev->pkt_overhead += pkt_dev->nr_labels*sizeof(u32);
> > >  	pkt_dev->pkt_overhead += VLAN_TAG_SIZE(pkt_dev);
> > >  	pkt_dev->pkt_overhead += SVLAN_TAG_SIZE(pkt_dev);
> > > @@ -2777,13 +2777,13 @@ static void pktgen_finalize_skb(struct pktgen_dev *pkt_dev, struct sk_buff *skb,
> > >  }
> > >  
> > >  static struct sk_buff *pktgen_alloc_skb(struct net_device *dev,
> > > -					struct pktgen_dev *pkt_dev,
> > > -					unsigned int extralen)
> > > +					struct pktgen_dev *pkt_dev)
> > >  {
> > > +	unsigned int extralen = LL_RESERVED_SPACE(dev);
> > >  	struct sk_buff *skb = NULL;
> > > -	unsigned int size = pkt_dev->cur_pkt_size + 64 + extralen +
> > > -			    pkt_dev->pkt_overhead;
> > > +	unsigned int size;
> > >  
> > > +	size = pkt_dev->cur_pkt_size + 64 + extralen + pkt_dev->pkt_overhead;
> > >  	if (pkt_dev->flags & F_NODE) {
> > >  		int node = pkt_dev->node >= 0 ? pkt_dev->node : numa_node_id();
> > >  
> > > @@ -2796,8 +2796,9 @@ static struct sk_buff *pktgen_alloc_skb(struct net_device *dev,
> > >  		 skb = __netdev_alloc_skb(dev, size, GFP_NOWAIT);
> > >  	}
> > >  
> > > +	/* the caller pre-fetches from skb->data and reserves for the mac hdr */
> > >  	if (likely(skb))
> > > -		skb_reserve(skb, LL_RESERVED_SPACE(dev));
> > > +		skb_reserve(skb, extralen - 16);
> > 
> > Is the 16 here the same as HD_DATA_MOD?
> > 
> > Magic numbers...
> 
> This magic numbers comes from the current code (the extralen argument),
> this patch just move it around. I can send a v3 using a define for it,
> if really needed, but it seems more a separated clean-up. 

Sure, sounds good.  Looks like Dave applied it.

- Greg

> 
> Thank you,
> 
> Paolo
> 

  reply	other threads:[~2016-10-03 13:57 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-30 14:56 [PATCH net v2] net: pktgen: fix pkt_size Paolo Abeni
2016-09-30 15:39 ` Greg
2016-10-01 18:05   ` Paolo Abeni
2016-10-03 13:56     ` Greg [this message]
2016-10-03  5:30 ` David Miller

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=1475503018.3279.5.camel@gmail.com \
    --to=gvrose8192@gmail.com \
    --cc=bogdan.hamciuc@freescale.com \
    --cc=davem@davemloft.net \
    --cc=greearb@candelatech.com \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=sergei.shtylyov@cogentembedded.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.