[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <0CEB9B99E5B9024B8FD0E8A1DFF8E638269B99@039-SN1MPN1-002.039d.mgd.msft.net>
Date: Tue, 12 Jun 2012 15:08:58 +0000
From: Hamciuc Bogdan-BHAMCIU1 <bhamciu1@...escale.com>
To: Eric Dumazet <eric.dumazet@...il.com>
CC: "davem@...emloft.net" <davem@...emloft.net>,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>
Subject: RE: [PATCH] netpoll: Fix skb tail pointer in netpoll_send_udp()
Hi Eric,
> -----Original Message-----
> From: Eric Dumazet [mailto:eric.dumazet@...il.com]
> Sent: Tuesday, June 12, 2012 4:34 PM
> To: Hamciuc Bogdan-BHAMCIU1
> Cc: davem@...emloft.net; netdev@...r.kernel.org
> Subject: Re: [PATCH] netpoll: Fix skb tail pointer in netpoll_send_udp()
>
> On Tue, 2012-06-12 at 15:15 +0200, Eric Dumazet wrote:
> > On Tue, 2012-06-12 at 14:22 +0200, Eric Dumazet wrote:
>
> > > Hmm, real question is why skb_realloc_headroom() is even necessary...
Our driver (Freescale P4080, unfortunately not upstream yet) needs a minimum amount of headroom in order to communicate metadata to the NIC.
For instance, frame offsets to the protocol headers are stored there, which the NIC then uses to fill in the egress checksum.
Originating frames, on the other hand, don't always have that amount of headroom, so we occasionally need to realloc.
> > >
> > > I suspect we need to reserve more bytes.
> > >
> > > total_len = ip_len + ETH_HLEN + NET_IP_ALIGN + NET_SKB_PAD;
> > >
> > > or something like that ?
Indeed, your counter-proposal patch (adding LL_RESERVED_SPACE()) worked fine.
> > >
> > > Which driver triggers the bug ?
> > >
>
> In case you wonder why I try so hard to avoid the
> skb_realloc_headroom() :
>
> netpoll has complicated^Wspecial^Wnice skb cache, to make sure it can
> work even if memory is exhausted.
>
> But if we trigger skb_realloc_headroom() the whole thing is useless.
>
Thank you,
Bogdan
Powered by blists - more mailing lists