[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <1400792295.5367.174.camel@edumazet-glaptop2.roam.corp.google.com>
Date: Thu, 22 May 2014 13:58:15 -0700
From: Eric Dumazet <eric.dumazet@...il.com>
To: Jim Baxter <jim_baxter@...tor.com>
Cc: linux-usb@...r.kernel.org, linux-kernel@...r.kernel.org,
"netdev@...r.kernel.org" <netdev@...r.kernel.org>,
"David S. Miller" <davem@...emloft.net>, kamal@...onical.com,
Ben Hutchings <bhutchings@...arflare.com>, edumazet@...gle.com,
mszeredi@...e.cz, fw@...len.de
Subject: Re: skbuff truesize incorrect.
On Thu, 2014-05-22 at 20:07 +0100, Jim Baxter wrote:
>
> I have been investigating a network issue with bursts of network traffic
> over USB CDC-NCM, the issue is that the kernel is dropping packets
> because sk_rcvqueues_full() returns true due to skb2->truesize is always
> 32960 instead of SKB_TRUESIZE(skb2->len) which is about 1800.
>
> The code I am trying to fix is this code below, it is splitting a set of
> multiple network packets compressed into a single 16k packet into
> individual skb's and sending them up the network stack.
if skb are allocated with 16k = 16384 bytes, adding the struct
skb_shared_info overhead and rounding up to power of two gives 32768
bytes.
Chances to be able to allocate 32KB contiguous memory are slim after a
while.
I would set rx_max (rx_urb_size) to SKB_MAX_HEAD(0) so that you do not
use high order allocations.
What is the exact 'overhead' using ~4K instead of 16K exactly on this
hardware ?
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists