From: Vlad Yasevich <vyasevich@gmail.com>
To: Jim Baxter <jim_baxter@mentor.com>,
linux-usb@vger.kernel.org, linux-kernel@vger.kernel.org,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>
Cc: "David S. Miller" <davem@davemloft.net>,
kamal@canonical.com, Ben Hutchings <bhutchings@solarflare.com>,
edumazet@google.com, mszeredi@suse.cz, fw@strlen.de
Subject: Re: skbuff truesize incorrect.
Date: Thu, 22 May 2014 15:25:29 -0400 [thread overview]
Message-ID: <537E4F29.9080103@gmail.com> (raw)
In-Reply-To: <537E4AFD.20304@mentor.com>
On 05/22/2014 03:07 PM, Jim Baxter wrote:
> Hi, I was hoping you can help me with some questions.
>
> 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.
>
> skb2 = skb_clone(skb, GFP_ATOMIC);
> if (skb2 == NULL)
> goto err;
>
> if (!skb_pull(skb2, index)) {
> ret = -EOVERFLOW;
> goto err;
> }
This assumes that you original 16K packet is linear. Is that
always the case?
>
> skb_trim(skb2, dg_len - crc_len);
>
> My questions are:
>
> 1) Which buffer size does truesize represent, is it the total buffer or
> just the data related to the relevant skb?
Total buffer size (including the struct sk_buff).
>
> 2) If truesize is for the skb it is contained within should it be
> updated during the call to skb_trim?
No, because the the buffer/memory is still there. skb_trim just
sets the tail pointer and adjusts skb->len.
>
> 3) Why does the truesize default to 32960?
Probably because that's how much buffer space was actually allocated
for the original skb. When you cloned it, you inherited the truesize
since a clone is just the struct sk_buff that points into the data
of the original.
This is the very same problem that I ran into with SCTP since it
has similar code in it. You can play games with truesize manually,
but you have to be very careful here.
-vlad
>
>
> Thank you for any help,
> Jim Baxter.
> --
> To unsubscribe from this list: send the line "unsubscribe netdev" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
>
next prev parent reply other threads:[~2014-05-22 19:25 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-05-22 19:07 skbuff truesize incorrect Jim Baxter
2014-05-22 19:21 ` David Miller
2014-05-22 20:21 ` Jim Baxter
[not found] ` <537E5C63.7080607-nmGgyN9QBj3QT0dZR+AlfA@public.gmane.org>
2014-05-22 20:30 ` Eric Dumazet
2014-05-22 20:58 ` David Miller
2014-05-23 9:21 ` Jim Baxter
2014-05-23 9:27 ` David Laight
2014-05-23 16:46 ` David Miller
2014-05-22 19:25 ` Vlad Yasevich [this message]
2014-05-22 19:39 ` Jim Baxter
2014-05-22 19:59 ` Eric Dumazet
2014-05-22 20:21 ` Jim Baxter
2014-05-22 20:58 ` Eric Dumazet
2014-05-22 21:03 ` Eric Dumazet
2014-05-22 21:10 ` David Miller
2014-05-23 7:07 ` Bjørn Mork
2014-05-23 8:58 ` Jim Baxter
2014-05-23 9:33 ` Bjørn Mork
2014-05-23 14:00 ` Eric Dumazet
2014-05-23 15:44 ` Rick Jones
2014-05-23 16:00 ` Eric Dumazet
2014-05-23 8:52 ` David Laight
2014-05-23 9:48 ` Bjørn Mork
2014-05-23 10:45 ` David Laight
2014-05-23 11:13 ` Jim Baxter
2014-05-23 13:47 ` Eric Dumazet
2014-05-23 15:00 ` Jim Baxter
2014-05-23 15:30 ` David Laight
2014-05-23 15:41 ` Eric Dumazet
2014-05-23 20:18 ` David Miller
2014-05-27 15:23 ` David Laight
[not found] ` <063D6719AE5E284EB5DD2968C1650D6D1724E565-VkEWCZq2GCInGFn1LkZF6NBPR1lH4CV8@public.gmane.org>
2014-05-27 15:52 ` David Miller
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=537E4F29.9080103@gmail.com \
--to=vyasevich@gmail.com \
--cc=bhutchings@solarflare.com \
--cc=davem@davemloft.net \
--cc=edumazet@google.com \
--cc=fw@strlen.de \
--cc=jim_baxter@mentor.com \
--cc=kamal@canonical.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-usb@vger.kernel.org \
--cc=mszeredi@suse.cz \
--cc=netdev@vger.kernel.org \
/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).