Re: gso: Attempt to handle mega-GRO packets

Eric Dumazet
2013-11-07T01:08:12Z

On Thu, 2013-11-07 at 09:00 +0800, Herbert Xu wrote:
> On Wed, Nov 06, 2013 at 04:56:03PM -0800, Eric Dumazet wrote:
> > On Thu, 2013-11-07 at 08:47 +0800, Herbert Xu wrote:
> > > On Wed, Nov 06, 2013 at 04:15:21PM -0800, Eric Dumazet wrote:
> > > >
> > > > Here is the patch I came into (I tested it and it works very fine)
> > >
> > > Thanks. However, unless I'm missing something aren't you now
> > > copying every linear skb frag_list? With the current code we
> > > just do a clone and add the headers.
> >
> > No copy at all.
> >
> > As explained, all RX skb are now backed to a page frag. (see
> > skb->head_frag)
>
> Even if we have called pskb_expand_head on it?

Well, in this case we pulled only the headers in skb->head.

Only few buggy drivers do a pull of say 64 bytes in skb->head before
calling eth_type_trans() so could possibly have a few bytes of TCP
payload in skb->head

And this case is handled without copy.