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
>
next prev parent 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.