diff options
| author | Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> | 2016-06-02 15:05:40 -0300 |
|---|---|---|
| committer | Bruno Martins <bgcngm@gmail.com> | 2022-10-28 15:39:24 +0100 |
| commit | d7707635776bd4c5e5abfac1945a0e09c9adc2cf (patch) | |
| tree | c4681e937bc4fd6dd4694d3794e8f57ede95ee2f /net | |
| parent | 924bbacea75e0c4c8584dab08b3d36b46e9be04d (diff) | |
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>
Change-Id: Ic278a7f5bbe0f86ef348a63508da6819b0d098aa
Diffstat (limited to 'net')
| -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 b7734f91abd6..9f651c32a781 100644 --- a/net/core/skbuff.c +++ b/net/core/skbuff.c @@ -3122,9 +3122,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) |
