unsigned int skc_hash;
struct proto *skc_prot;
xid_t skc_xid;
- struct vx_info *skc_vx_info;
+ struct vx_info *skc_vx_info;
nid_t skc_nid;
- struct nx_info *skc_nx_info;
+ struct nx_info *skc_nx_info;
};
/**
{
__sk_dst_set(sk, dst);
sk->sk_route_caps = dst->dev->features;
+ if (sk->sk_route_caps & NETIF_F_GSO)
+ sk->sk_route_caps |= NETIF_F_TSO;
if (sk->sk_route_caps & NETIF_F_TSO) {
if (sock_flag(sk, SOCK_NO_LARGESEND) || dst->header_len)
sk->sk_route_caps &= ~NETIF_F_TSO;
+ else
+ sk->sk_route_caps |= NETIF_F_SG | NETIF_F_HW_CSUM;
}
}