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;

}


待续

0 0
原创粉丝点击