Linux 2.6 网络下半部

网络代码之接收下半部:

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;

}


待续

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值