From: Eric Dumazet > Sent: 14 January 2021 05:17 > > On Wed, Jan 13, 2021 at 11:23 PM David Laight <david.lai...@aculab.com> wrote: > > > > From: Eric Dumazet > > > Sent: 13 January 2021 16:18 > > > > > > From: Eric Dumazet <eduma...@google.com> > > > > > > Both virtio net and napi_get_frags() allocate skbs > > > with a very small skb->head > > > > > > While using page fragments instead of a kmalloc backed skb->head might > > > give > > > a small performance improvement in some cases, there is a huge risk of > > > under estimating memory usage. > > > > There is (or was last time I looked) also a problem with > > some of the USB ethernet drivers. > > > > IIRC one of the ASXnnnnnn (???) USB3 ones allocates 64k skb to pass > > to the USB stack and then just lies about skb->truesize when passing > > them into the network stack. > > You sure ? I think I have fixed this at some point > > https://git.kernel.org/pub/scm/linux/kernel/git/netdev/net.git/commit/?id=a9e0aca4b37885b5599e52211f09 > 8bd7f565e749
I might have forgotten that patch :-) Or possibly only remembered it changing small packets. > > The USB hardware will merge TCP receives and put multiple ethernet > > packets into a single USB message. > > But single frames can end up in very big kernel memory buffers. > > > > Yeah, this is a known problem. The whole USB ethernet block is somewhat horrid and inefficient especially for XHCI/USB3 - which could have high speed ethernet. It really needs to either directly interface to the XHCI ring (like a normal ethernet driver) or be given the sequence of USB rx packets to split/join into ethernet frames. However I don't have the time to make those changes. When I was looking at that driver 'dayjob' was actually trying to make it work. They dropped that idea later. I've not got the ethernet dongle any more either. David - Registered Address Lakeside, Bramley Road, Mount Farm, Milton Keynes, MK1 1PT, UK Registration No: 1397386 (Wales)