netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Thomas Graf <tgraf@suug.ch>
To: Jesse Gross <jesse@nicira.com>
Cc: Simon Horman <horms@verge.net.au>,
	"dev@openvswitch.org" <dev@openvswitch.org>,
	netdev <netdev@vger.kernel.org>,
	Pravin B Shelar <pshelar@nicira.com>, Ben Pfaff <blp@nicira.com>,
	Ravi K <rkerur@gmail.com>, Joe Stringer <joe@wand.net.nz>
Subject: Re: [PATCH v2.57] datapath: Add basic MPLS support to kernel
Date: Fri, 16 May 2014 22:48:06 +0100	[thread overview]
Message-ID: <20140516214806.GH8346@casper.infradead.org> (raw)
In-Reply-To: <CAEP_g=-BQJTthV3JbgiiMtCEwM+-YX_sN5VpGkiPQLUVOKP0cg@mail.gmail.com>

On 05/16/14 at 02:29pm, Jesse Gross wrote:
> On Fri, May 16, 2014 at 1:48 AM, Simon Horman <horms@verge.net.au> wrote:
> > On Fri, May 16, 2014 at 08:07:07AM +0900, Simon Horman wrote:
> >> Allow datapath to recognize and extract MPLS labels into flow keys
> >> and execute actions which push, pop, and set labels on packets.
> >
> > [snip]
> >
> >> diff --git a/datapath/linux/compat/gso.h b/datapath/linux/compat/gso.h
> >> index b83a4c3..98b2aba 100644
> >> --- a/datapath/linux/compat/gso.h
> >> +++ b/datapath/linux/compat/gso.h
> >> @@ -4,6 +4,7 @@
> >>  #include <linux/version.h>
> >>  #if LINUX_VERSION_CODE < KERNEL_VERSION(3,12,0)
> >>
> >> +#include <linux/netdevice.h>
> >>  #include <linux/skbuff.h>
> >>  #include <net/protocol.h>
> >>
> >> @@ -14,6 +15,9 @@ struct ovs_gso_cb {
> >>       sk_buff_data_t  inner_network_header;
> >>       sk_buff_data_t  inner_mac_header;
> >>       void (*fix_segment)(struct sk_buff *);
> >> +#if LINUX_VERSION_CODE < KERNEL_VERSION(3,11,0)
> >> +     __be16                  inner_protocol;
> >> +#endif
> >>  };
> >>  #define OVS_GSO_CB(skb) ((struct ovs_gso_cb *)(skb)->cb)
> >
> > Unfortunately it seems that at least for v3.11 on x86_64 the above now
> > results in struct ovs_gso_cb being larger than the cb field of struct
> > skb_buff.
> >
> > (It also seems that the call to ovs_skb_set_inner_protocol() is
> >  missing from push_mpls() so it is likely that GSO segmentation
> >  is broken.)
> >
> > I apologise for not noticing this earlier.
> >
> > One idea I had is so make inner_protocol union of some other member of
> > either struct ovs_gso_cb or struct ovs_skb_cb. But its not clear to me that
> > would fly.
> >
> > Another possibility is to simply drop compatibility for segmentation of GSO
> > packets that become MPLS.  But I gather that is not the preferred way for
> > datapath features.
> >
> > Any suggestions would be much appreciated.
> 
> Argh, I didn't realize that we were completely at the limit here...
> 
> This is a little nasty but for the compatibility code maybe we could
> make the inner offsets be 16 bits. I think this is unlikely to ever
> cause a problem in practice and so it might be OK for the compat code.

We actually hit the 16bit overflow issue with collapsed TCP frames
on IB when the headroom grew beyond 64K. See commit 50bceae9bd
''tcp: Reallocate headroom if it would overflow csum_start''
for additional details.
 
What about keeping the mac offset 32bit and basing a 16bit net offset
on the mac offset. That would give 16 spare bits.

  reply	other threads:[~2014-05-16 21:48 UTC|newest]

Thread overview: 18+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-05-15 23:07 [PATCH v2.57] datapath: Add basic MPLS support to kernel Simon Horman
     [not found] ` <1400195227-21265-1-git-send-email-horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2014-05-15 23:07   ` Simon Horman
2014-05-16  8:48     ` Simon Horman
     [not found]       ` <20140516084809.GA18920-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2014-05-16 21:29         ` Jesse Gross
2014-05-16 21:48           ` Thomas Graf [this message]
     [not found]             ` <20140516214806.GH8346-FZi0V3Vbi30CUdFEqe4BF2D2FQJk+8+b@public.gmane.org>
2014-05-16 22:17               ` Jesse Gross
2014-05-17  1:32                 ` Simon Horman
     [not found]                   ` <20140517013224.GA25978-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2014-05-19 22:02                     ` Simon Horman
     [not found]                       ` <20140519220219.GA20590-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2014-05-20 12:18                         ` Thomas Graf
2014-05-20  1:34     ` Jesse Gross
2014-05-20 10:48       ` Simon Horman
2014-05-21  2:05         ` Jesse Gross
2014-05-21 15:26           ` Simon Horman
     [not found]     ` <1400195227-21265-2-git-send-email-horms-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2014-05-21  2:30       ` Jesse Gross
     [not found]         ` <CAEP_g=8ZEbx0NzCaXOc=ywiBAtejpmO4K-UzVk5uwBmEfUwZ7w-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2014-05-21 15:31           ` Simon Horman
2014-05-21 20:31             ` Jesse Gross
2014-05-21 23:03               ` Simon Horman
     [not found]                 ` <20140521230351.GC19986-/R6kz+dDXgpPR4JQBCEnsQ@public.gmane.org>
2014-05-21 23:53                   ` Jesse Gross

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=20140516214806.GH8346@casper.infradead.org \
    --to=tgraf@suug.ch \
    --cc=blp@nicira.com \
    --cc=dev@openvswitch.org \
    --cc=horms@verge.net.au \
    --cc=jesse@nicira.com \
    --cc=joe@wand.net.nz \
    --cc=netdev@vger.kernel.org \
    --cc=pshelar@nicira.com \
    --cc=rkerur@gmail.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).