Re: 請問網卡驅動是怎么向ip層返回數據的??(重發) [ re: wheelz ] 網卡接收到數據,先申請sk_buff,把數據DMA到sk_buff,然后調用netif_rx,把數據包" name="description" />

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 數據包網卡驅動到網絡層的大體流程

    發表于:2007-07-04來源:作者:點擊數: 標簽:
    java script:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)"> Re: 請問網卡驅動是怎么向ip層返回數據的??(重發) [ re: wheelz ] 網卡接收到數據,先申請sk_buff,把數據DMA到sk_buff,然后調用netif_rx,把數據包

    javascript:window.open(this.src);" style="CURSOR: pointer" onload="return imgzoom(this,550)"> Re: 請問網卡驅動是怎么向ip層返回數據的??(重發) [re: wheelz] 



    網卡接收到數據,先申請sk_buff,把數據DMA到sk_buff,然后調用netif_rx,把數據包加入隊列。此后的處理就與網卡無關了。

    后續處理是在softirq中(以前叫bottom_half)。每次中斷返回前內核會檢查softirq隊列。對于網絡數據包接收,會調用處理函數net_rx_action。(初始化網絡的時候在net_dev_init函數中將NET_RX_SOFTIRQ指向了net_rx_action,請查閱代碼)。
    (注意:以上處理過程是常規的方法?,F在一般采用POLL方法,處理過程會有所不同)

    net_rx_action ---> process_backlog ----> netif_receive_skb

    在netif_receive_skb中根據注冊的網絡協議調用相關接口。對于IP協議就是ip_rcv,開始數據包的IP層之旅。

    下面就到了PRE_ROUTING的HOOK點了。接著就是找路、判斷是LOCAL_IN還是FORWARD、按各自的方式處理。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>