【Linux4.1.12源码分析】二层报文发送之GSO条件判断

本文深入分析了Linux4.1.12内核中的GSO(Generic Segmentation Offload)报文发送。通过探讨validate_xmit_skb函数中的netif_needs_gso和skb_gso_segment,揭示了GSO分段的判断条件。内容聚焦于netif_needs_gso函数及其依赖的netif_skb_features,为后续GSO分段实现的分析奠定基础。
摘要由CSDN通过智能技术生成

4.1.12内核中,GSO报文的判断和分段的入口函数是validate_xmit_skb,其中使用netif_needs_gso用来判断软件是否要进行GSO分段,skb_gso_segment实现报文的GSO分段,本篇重点讲述GSO分段的判断条件,即netif_needs_gso相关函数。

1、netif_needs_gso函数

static inline bool netif_needs_gso(struct sk_buff *skb,
				   netdev_features_t features)
{
	return skb_is_gso(skb) && (!skb_gso_ok(skb, features) ||   //skb 为gso报文,且feature不包含skb->gso_type  或者
                                                                   //skb 为gso报文,且skb_ipsummed不为CHECKSUM_PARTIAL和CHECKSUM_UNNECESSARY
		unlikely((skb->ip_summed != CHECKSUM_PARTIAL) &&
			 (skb->ip_summed != CHECKSUM_UNNECESSARY)));
}
2、skb_gso_ok函数

static inline bool skb_gso_ok(struct sk_buff *skb, netdev_features_t features)
{
	return net_gso_ok(features, skb_shinfo(skb)->gso_type) &&	//feature包含gso_type 并且skb没有frag_list或
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值