LRO -- skb_buff->frags[] skb_buff->frag_list
/*更新整个lro skb的相关数据*/
static void lro_add_common(struct net_lro_desc *lro_desc, struct iphdr *iph,struct tcphdr *tcph, int tcp_data_len)
{struct sk_buff *parent = lro_desc->parent;__be32 *topt;lro_desc->pkt_aggr_cnt++;lro_desc->ip_tot_len += tcp_data_len;lro_desc->tcp_next_seq += tcp_data_len;lro_desc->tcp_window = tcph->window;lro_desc->tcp_ack = tcph->ack_seq;/* don't update tcp_rcv_tsval, would not work with PAWS */if (lro_desc->tcp_saw_tstamp) {topt = (__be32 *) (tcph + 1);lro_desc->tcp_rcv_tsecr = *(topt + 2);}lro_desc->data_csum = csum_block_add(lro_desc->data_csum,lro_tcp_data_csum(iph, tcph,tcp_data_len),parent->len);parent->len += tcp_data_len;parent->data_len += tcp_data_len;if (tcp_data_len > lro_desc->mss)lro_desc->mss = tcp_data_len;
}/*向LRO skb中添加一个新的skb*/
static void lro_add_packet(struct net_lro_desc *lro_desc, struct sk_buff *skb,struct iphdr *iph, struct tcphdr *tcph)
{struct sk_buff *parent = lro_desc->parent;int tcp_data_len = TCP_PAYLOAD_LENGTH(iph, tcph);lro_add_common(lro_desc, iph, tcph, tcp_data_len);/*更新该skb的data 长度,需要除去header部分长度*/skb_pull(skb, (skb->len - tcp_data_len));/*更新整个lro skb的总长度*/parent->truesize += skb->truesize;/*将skb挂接在lro skb的 frag_list上面。*/if (lro_desc->last_skb)lro_desc->last_skb->next = skb;elseskb_shinfo(parent)->frag_list = skb;lro_desc->last_skb = skb;
}/*向一个skb添加带frags的数据包; 支持分散、聚合的dma, 一个数据可能由多个skb_frags组成。*/
static void lro_add_frags(struct net_lro_desc *lro_desc,int len, int hlen, int truesize,struct skb_frag_struct *skb_frags,struct iphdr *iph, struct tcphdr *tcph)
{struct sk_buff *skb = lro_desc->parent;int tcp_data_len = TCP_PAYLOAD_LENGTH(iph, tcph);lro_add_common(lro_desc, iph, tcph, tcp_data_len);skb->truesize += truesize;/*去掉该skb包的header部分, 而该header应该保存在第一个frags数据中。*/skb_frags[0].page_offset += hlen;skb_frags[0].size -= hlen;/*将page部分的数据,直接保存到skb的frags中*/while (tcp_data_len > 0) {*(lro_desc->next_frag) = *skb_frags;tcp_data_len -= skb_frags->size;lro_desc->next_frag++;skb_frags++;skb_shinfo(skb)->nr_frags++;}
}
LRO -- skb_buff->frags[] skb_buff->frag_list相关推荐
- [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4地面站立动作状态机详解
本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的 ...
- asp.net的aspx页面<% %>、<%@ %>、<%# %>、<%= %>、<%$ %>的用法
1. <%--exegesics--%> 注释 相当于<!----> 2. <% code%> 绑定后台代码块: //相当于写在后台的可执行代码 <form ...
- [玩转UE4/UE5动画系统>应用篇>功能模块] 之 ALS V4 主状态机详解
本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式.教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>.教程中使用的 ...
- [玩转UE4/UE5动画系统>应用篇>功能模块] 之 Foot IK系统(ALS V4实现方案详解)
本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式. 教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>. 教程中使 ...
- HTML中有序列表(<ol><li>)和无序列表(<ul><li>)以及定义列表的使用,以及利用无序列表制作网购按钮
文章速览: HTML基础知识的学习+附加常用HTML标签 HTML中有序列表(<ol><li>)和无序列表(<ul><li>)以及定义列表的使用,以及利 ...
- [玩转UE4/UE5动画系统>应用篇>功能模块] 之 布娃娃系统(ALS V4实现方案详解)
本教程采用图文教程+视频教程的多元化形式,我会为不同的知识点选择适当的表达方式. 教程内容将同步免费发布于 开发游戏的老王(知乎|CSDN)的专栏<玩转UE4/UE5动画系统>. 教程中使 ...
- 【数据结构与算法】->算法-> A* 搜索算法->如何实现游戏中的寻路功能?
A* 搜索算法 Ⅰ 前言 Ⅱ 算法解析 Ⅲ 如何实现游戏寻路问题 Ⅳ 总结 Ⅰ 前言 你可能玩过魔兽世界,仙剑奇侠和英雄联盟这类 MMRPG 游戏,在这些游戏中,有一个非常重要的功能,就是人物角色自动 ...
- Linux 中echo及echo > 和echo >>
一.Linux 中的echo指令 Shell 的 echo 指令用于字符串的输出.详见: Shell echo命令 | 菜鸟教程 二.echo > 和echo >> echo > ...
- 关于学习Python的一点学习总结(5->切片赋值->sort排序->列表操作)
16.给切片赋值: >>> test=list('hello')>>> test['h', 'e', 'l', 'l', 'o']>>> test ...
- 关于学习Python的一点学习总结(3->标识符->if->模块->字符)
5.在Python中,名称(标识符)只能由字母.数字和下划线(_)构成,且不能以数字打头. 因此you8是合法的变量名,而8you不是. 6. >>>x = input(" ...
最新文章
- IDEA中修改文件的默认创建方式
- Java不同场景加载不同类_[改善Java代码]不同的场景使用不同的泛型通配符
- Windows Live Windows Phone 7
- 使用windows服务更新站点地图
- [转自天涯]很多年以前,我是一个中锋
- 修改服务器的时区为gmt,将GMT转换为服务器本地时区C#
- [原创]传递UIScrollView的滑动事件到其子视图中
- silence丶你的名字
- android jni framework,Android Framework层的JNI机制(二)
- 91.接收用户请求包体的方式
- Unix环境高级编程(二)文件和目录
- photoshop 2021在m1 mac上导出png发生未知错误的解决方案
- 51单片机LCD1602程序
- Java创建Excel文档(自定义格式)
- HDU 5144 NPY and shot(三分法)
- SCI收录声学学科期刊31种
- 带软开启功能的MOS管电源开关电路!
- matlab画爱心的代码
- 三菱 FX5U PLC结构化4轴伺服机器人程序
- log4 日志级别使用
热门文章
- cookie的保存 jq,如何使用jQuery读取Cookie并将其存储在变量中?
- 约瑟夫环问题java_Java求解约瑟夫环问题
- 标题中冒号的用法_英文中冒号的各种用法
- android炫彩跑马灯特效,盘点一下那些自带酷炫跑马灯效果的手机,最后一款几乎没人知道...
- 《对比Excel,轻松学习Python数据分析》读书笔记------Pandas入门
- 各场景下NetApp的数据备份推荐(Veeam+群晖NAS)
- 终端应用安全之网络流量分析
- 【小程序开发】开发一个短信登录验证(后端采用springboot)
- 获取网站CDN加速的真实服务器IP方法
- 在Windows 10 64 位机器上安装Debug