linux核心網絡卡中斷收發包

2021-10-08 07:04:03 字數 625 閱讀 8883

1、網絡卡中斷收發包上半部註冊

1.1、網絡卡驅動呼叫request_irq(dev->irq, i596_interrupt, 0, "i82596", dev)函式申請中斷號並傳入中斷上半部處理函式;

1.2、request_irq將網絡卡驅動註冊的中斷號和中斷上半部處理函式新增到ino_buket中斷鍊錶;

2、中斷上半部的執行

2.1、cpu在收到硬體發出的中斷時,通過在ino_buket中斷鍊錶查詢對應中斷號的中斷上半部處理函式並執行;

2.2、中斷上半部處理函式讀取網絡卡暫存器狀態:

a、若為發包中斷:

1、讀取發包狀態,發包成功調dev_kfree_skb_irq置位發包中斷下半部標誌,發包失敗進行統計計數後調dev_kfree_skb_irq置位發包中斷下半部標誌;

2、清除硬體中斷標記;

b、若為收包中斷:

1、讀取收包狀態:若網絡卡硬體收包成功,申請skb_buffer,將網絡卡硬體中的包拷貝到skb並在skb中記錄網絡卡裝置和以太協議型別後調netif_rx;

2、netif_rx函式

a、若為輪詢收包調輪詢收包介面進行收包後釋放skb;

b、若為中斷收包,中斷收包佇列有空閒空間將skb入隊到中斷收包佇列後退出;若中斷收包佇列無空

linux核心網路協議棧 網絡卡報文收發(十六)

linux版本 3.10.103 網絡卡驅動 ixgbev 網絡卡驅動預設採用的是napi的報文處理方式。即中斷 輪詢的方式,網絡卡收到乙個報文之後會產生接收中斷,並且遮蔽中斷,直到收夠了netdev max backlog個報文 預設300 或者收完網絡卡上的所有報文之後,重新開啟中斷。網絡卡啟用...

網絡卡驅動收發包過程

網絡卡工作在物理層和資料鏈路層,主要由phy mac晶元 tx rx fifo dma等組成,其中網線通過變壓器接phy晶元 phy晶元通過mii接mac晶元 mac晶元接pci匯流排 phy晶元主要負責 csma cd 模數轉換 編譯碼 串並轉換 mac晶元主要負責 intel的千兆網絡卡以825...

網絡卡驅動收發包過程

網絡卡工作在物理層和資料鏈路層,主要由phy mac晶元 tx rx fifo dma等組成,其中網線通過變壓器接phy晶元 phy晶元通過mii接mac晶元 mac晶元接pci匯流排 phy晶元主要負責 csma cd 模數轉換 編譯碼 串並轉換 mac晶元主要負責 位元流和幀的轉換 7位元組的前...