diff options
author | Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | 2016-06-02 20:05:40 +0200 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2016-06-04 01:37:21 +0200 |
commit | 3953c46c3ac7eef31a9935427371c6f54a22f1ba (patch) | |
tree | c23e5494771fbe5c54057d767addbf54c9f880ca /net/core/skbuff.c | |
parent | skbuff: export skb_gro_receive (diff) | |
download | linux-3953c46c3ac7eef31a9935427371c6f54a22f1ba.tar.xz linux-3953c46c3ac7eef31a9935427371c6f54a22f1ba.zip |
sk_buff: allow segmenting based on frag sizes
This patch allows segmenting a skb based on its frags sizes instead of
based on a fixed value.
Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com>
Tested-by: Xin Long <lucien.xin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/core/skbuff.c')
-rw-r--r-- | net/core/skbuff.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/net/core/skbuff.c b/net/core/skbuff.c index 4724bcf9b0ca..97c32c75e704 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3116,9 +3116,13 @@ struct sk_buff *skb_segment(struct sk_buff *head_skb, int hsize; int size; - len = head_skb->len - offset; - if (len > mss) - len = mss; + if (unlikely(mss == GSO_BY_FRAGS)) { + len = list_skb->len; + } else { + len = head_skb->len - offset; + if (len > mss) + len = mss; + } hsize = skb_headlen(head_skb) - offset; if (hsize < 0) |