Chinaunix首页 | 论坛 | 博客
  • 博客访问: 712792
  • 博文数量: 79
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 1338
  • 用 户 组: 普通用户
  • 注册时间: 2012-06-12 08:51
个人简介

XMU->九天揽月->五湖抓鳖->DSP->driver->kernel/OpenWRT->ISP/RTOS

文章分类

全部博文(79)

文章存档

2020年(2)

2018年(3)

2016年(7)

2015年(42)

2014年(25)

分类: LINUX

2014-09-09 11:51:50

http://wdqfirst.blog.163.com/blog/static/11334741120128921915595/

要点:

硬中断部分

1. net_intr_handle()   --- 设备有关,接口由驱动定义。包括关硬件中断、分配skbbuff、拷贝报文到skb->data、释放硬件buffer。

    用户也可以在这里挂接自己的处理入口,选择不进入linux协议栈。

2. netif_rx()  --- 设备无关,skb入队处理,每个核一个队列,然后 raise_softirq,等待core处理。 

    http://blog.csdn.net/zhangskd/article/details/22211295  其中有NET_RX_SOFTIRQ的触发,空队列才需要触发标记,非空队列直接加到尾巴上即可

至此上半部结束,重新开打开硬件中断。


软中断部分

http://blog.csdn.net/zhangskd/article/details/21469399 网络接收的软中断流程详解

3. net_rx_action --- 软中断(net_dev_init注册),有napi支持,core响应软中断请求后,回调n->poll(net_dev_init注册)

4. process_backlog --- napi接收,skb出队列,

5. __netif_receive_skb --- 单个skb处理,入口流量控制、桥接、VLAN、2层协议等

6. 进入内核协议栈
7. 进入sock队列,内核中协议栈与socket层的通信
8. 用户态通过socket拿到报文。

阅读(1001) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~