mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-07-06 06:21:31 +00:00
[NET]: Generalise TSO-specific bits from skb_setup_caps
This patch generalises the TSO-specific bits from sk_setup_caps by adding the sk_gso_type member to struct sock. This makes sk_setup_caps generic so that it can be used by TCPv6 or UFO. The only catch is that whoever uses this must provide a GSO implementation for their protocol which I think is a fair deal :) For now UFO continues to live without a GSO implementation which is OK since it doesn't use the sock caps field at the moment. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
adcfc7d0b4
commit
bcd7611117
6 changed files with 26 additions and 14 deletions
|
@ -510,8 +510,7 @@ static void tcp_queue_skb(struct sock *sk, struct sk_buff *skb)
|
|||
|
||||
static void tcp_set_skb_tso_segs(struct sock *sk, struct sk_buff *skb, unsigned int mss_now)
|
||||
{
|
||||
if (skb->len <= mss_now ||
|
||||
!(sk->sk_route_caps & NETIF_F_TSO)) {
|
||||
if (skb->len <= mss_now || !sk_can_gso(sk)) {
|
||||
/* Avoid the costly divide in the normal
|
||||
* non-TSO case.
|
||||
*/
|
||||
|
@ -525,7 +524,7 @@ static void tcp_set_skb_tso_segs(struct sock *sk, struct sk_buff *skb, unsigned
|
|||
factor /= mss_now;
|
||||
skb_shinfo(skb)->gso_segs = factor;
|
||||
skb_shinfo(skb)->gso_size = mss_now;
|
||||
skb_shinfo(skb)->gso_type = SKB_GSO_TCPV4;
|
||||
skb_shinfo(skb)->gso_type = sk->sk_gso_type;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -824,9 +823,7 @@ unsigned int tcp_current_mss(struct sock *sk, int large_allowed)
|
|||
|
||||
mss_now = tp->mss_cache;
|
||||
|
||||
if (large_allowed &&
|
||||
(sk->sk_route_caps & NETIF_F_TSO) &&
|
||||
!tp->urg_mode)
|
||||
if (large_allowed && sk_can_gso(sk) && !tp->urg_mode)
|
||||
doing_tso = 1;
|
||||
|
||||
if (dst) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue