diff --git a/[refs] b/[refs] index 3958a2160ba7..8da4bf53eaa6 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 4d77d2b567ec66a443792d99e96ac760991d80d0 +refs/heads/master: f07d960df33c5aef8f513efce0fd201f962f94a1 diff --git a/trunk/net/ipv4/tcp.c b/trunk/net/ipv4/tcp.c index ecbc89a0436b..45156be3abfd 100644 --- a/trunk/net/ipv4/tcp.c +++ b/trunk/net/ipv4/tcp.c @@ -897,9 +897,12 @@ static inline int select_size(const struct sock *sk, bool sg) int tmp = tp->mss_cache; if (sg) { - if (sk_can_gso(sk)) - tmp = 0; - else { + if (sk_can_gso(sk)) { + /* Small frames wont use a full page: + * Payload will immediately follow tcp header. + */ + tmp = SKB_WITH_OVERHEAD(2048 - MAX_TCP_HEADER); + } else { int pgbreak = SKB_MAX_HEAD(MAX_TCP_HEADER); if (tmp >= pgbreak &&