Linux 2.6 网络下半部
来源:互联网 发布:avast淘宝激活 编辑:程序博客网 时间:2024/05/16 08:25
网络代码之接收下半部:
net_dev_init() //网络设备层初始化,流控、CPU输入队列、注册proc/sys文件系统、网络处理函数数组、注册net_rx_action
net_rx_action() //接收数据帧的软中断处理函数
{
关闭中断;
遍历设备;
开中断;
对设备调用poll方法(默认process_backlog);
}
process_backlog()
{
关中断;
循环取出待处理的包(struck sk_buff *skb);所有设备共享sk_buff队列,如果sk_buff队列空了,则从poll_list中删除设备
开中断;
调netif_receive_skb()处理帧;
}
netif_receive_skb() //软中断处理报文的主函数,NAPI/非NAPI
{
percpu帧计数++;
用skb->data初始化skb中的L2、L3、L4层协议地址;(union)
调用所有协议处理func,将包交给他们处理;
(流控;)
调用L3协议处理func,将包交给L3;
net_dev_init() //网络设备层初始化,流控、CPU输入队列、注册proc/sys文件系统、网络处理函数数组、注册net_rx_action
net_rx_action() //接收数据帧的软中断处理函数
{
关闭中断;
遍历设备;
开中断;
对设备调用poll方法(默认process_backlog);
}
process_backlog()
{
关中断;
循环取出待处理的包(struck sk_buff *skb);所有设备共享sk_buff队列,如果sk_buff队列空了,则从poll_list中删除设备
开中断;
调netif_receive_skb()处理帧;
}
netif_receive_skb() //软中断处理报文的主函数,NAPI/非NAPI
{
percpu帧计数++;
用skb->data初始化skb中的L2、L3、L4层协议地址;(union)
调用所有协议处理func,将包交给他们处理;
(流控;)
调用L3协议处理func,将包交给L3;
}
待续
0 0
- Linux 2.6 网络下半部
- 网络 linux网络配置
- 网络&LINUX
- Linux网络
- Linux 网络
- Linux 网络
- Linux网络
- linux网络
- linux 网络
- linux网络
- Linux网络
- Linux 网络
- linux 网络
- Linux网络
- Linux网络
- Linux网络
- linux 网络
- [Linux] Linux网络编程
- CDH5.7快速离线安装教程
- Http协议
- (LeetCode 202) Happy Number
- 44.leetcode题目:268. Missing Number(位操作没想到)
- enabled_shared_from_this
- Linux 2.6 网络下半部
- Eclipse或MyEclipse修改生成类注释模板
- (MFC)CFont部分字体无法使用的问题
- 搭建Hadoop分布式
- struts-tags标签特殊用法
- Bestcoder #80 题解 (待补)
- 爬虫 取得站内最大页数
- 添加和处理动作(Adding and Handling Actions)
- (MFC)任务对话框CTaskDialog类