SG就是说网卡支持一次发送多个不连续的数据段。 GSO就是利用上面这个特性,在tcp_sendmsg的时候申请的skb的主buff只存L2/L3/L4的协议头,把所有的数据先放到skb_shinfo(skb)->frags里。等到skb交给网卡驱动前再分片。 在sendmsg函数里只申请了左边这样的skb,在发给驱动之前把skb分片成右边这样,然后利用网卡的SG发送。
Date: Mon, 01 Mar 2010 19:01:23 -0800 (PST) From: David Miller <davem@...emloft.net> To: bhutchings@...arflare.com Cc: mekaviraj@...il.com, netdev@...r.kernel.org Subject: Re: NETIF_F_FRAGLIST and NETIF_F_SG difference From: Ben Hutchings Date: Tue, 02 Mar 2010 02:...
netif_keep_dst(dev); dev->hw_features =NETIF_F_GSO_SOFTWARE; dev->features = NETIF_F_SG |NETIF_F_FRAGLIST|NETIF_F_GSO_SOFTWARE|NETIF_F_HW_CSUM|NETIF_F_RXCSUM|NETIF_F_SCTP_CRC|NETIF_F_HIGHDMA|NETIF_F_LLTX|NETIF_F_NETNS_LOCAL|NETIF_F_VLAN_CHALLENGED|NETIF_F_LOOPBACK; dev->eth...
SG就是说网卡支持一次发送多个不连续的数据段。 GSO就是利用上面这个特性,在tcp_sendmsg的时候申请的skb的主buff只存L2/L3/L4的协议头,把所有的数据先放到skb_shinfo(skb)->frags里。等到skb交给网卡驱动前再分片。 在sendmsg函数里只申请了左边这样的skb,在发给驱动之前把skb分片成右边这样,然后利用网卡的SG发送。