網絡卡本身是有記憶體的,每個網絡卡一般都有4k以上的記憶體,用來傳送,接收資料。
資料在從主記憶體搬到網絡卡之後,不是立即就能被傳送出去的,而是要先在網絡卡自身的記憶體中排隊,再按照先後順序傳送;同樣的,資料從乙太網傳遞到網絡卡時,網絡卡也是先把資料儲存到自身的記憶體中,等到收到一幀資料了,再經過中斷的方式,告訴主cpu(不是網絡卡本身的微處理器)把網絡卡記憶體的資料讀走,而讀走後的記憶體,又被清空,再次被使用,用來接收新的資料,如此迴圈往復。
而網絡卡本身的記憶體,又多是按照256位元組為1頁的方式,把所有記憶體分頁,之後把這些頁組成佇列,大致的結構如圖:
一般會劃分一小部分頁面作為傳送資料用的,大部分用於接收網路資料,大致如圖:
藍色部分為傳送資料用的頁面總和,總共只有6個頁面用於傳送資料(40h~45h);剩餘的46h~80h都是接收資料用的,而在接收資料記憶體中,只有紅色部分是有資料的,當接收新的資料時,是向紅色部分前面的綠色中的256位元組寫入資料,同時「把當前指標」移動到+256位元組的後面(網絡卡自動完成),而現在要讀的資料,是在「邊界指標」那裡開始的256位元組(紫色部分),下乙個要讀的資料,是在「下一包指標」的位置開始的256位元組,當256位元組被讀出來了,就變成了重新可以使用的記憶體,即綠色所表示,而接收資料,就是把可用的記憶體拿來用,即變成了紅色,當資料寫到了0x80h後,又從0x46h開始寫資料,這樣迴圈,如果資料滿了,則網絡卡就不能再接收資料,必須等待資料被讀出去了,才能再繼續接收。
下面是一些網絡卡常用的暫存器:
cr(command register)---命令暫存器
tsr(transmit state register)---傳送狀態暫存器
isr(interrupt state register)----中斷狀態暫存器
rsr(receive state register)---接收狀態暫存器
rcr(receive configure register)---接收配置暫存器
tcr(transmit configure register)---傳送配置暫存器
dcr(data configure register)---資料配置暫存器
imr(interrupt mask register)---中斷遮蔽暫存器
ncr(non-coding region)---包傳送期間碰撞次數
fifo(first in first out)
cntr0(counter register)--- 幀同步錯總計數器
cntr1---crc錯總計數器
cntr2---丟包總計數器
par0~5(physical address register)---本地mac位址
mar0~7(multiple address register)---多播位址匹配
pstop(page stop register)---結束頁面暫存器
pstart(page start register)---開始頁面暫存器
bnry(boundary register)----邊界頁暫存器
curr(current page register)---當前頁面暫存器
clda0,1(current local dma address)---當前本地dma暫存器
tpsr(transmit page start register)---傳送頁面開始暫存器
tbcr0,1(transmit byte counter register)---傳送位元組計數暫存器
crda0,1(current remote dma address)---當前遠端dma暫存器
rsar0,1(remote start address register)---遠端dma起始位址暫存器
rbcr0,1(remote byte counter register)---遠端位元組計數暫存器
bpage(brom page register)---brom頁面暫存器
linux核心網路協議棧 網絡卡報文收發(十六)
linux版本 3.10.103 網絡卡驅動 ixgbev 網絡卡驅動預設採用的是napi的報文處理方式。即中斷 輪詢的方式,網絡卡收到乙個報文之後會產生接收中斷,並且遮蔽中斷,直到收夠了netdev max backlog個報文 預設300 或者收完網絡卡上的所有報文之後,重新開啟中斷。網絡卡啟用...
網路資料報收發流程 三 e1000網絡卡和DMA
from 一 硬體布局 每個網絡卡 mac 都有自己的專用dma engine,如上圖的 tsec 和 e1000 網絡卡intel82546。上圖中的紅色線就是乙太網資料流,dma與ddr打交道需要其他模組的協助,如tsec,pci controller 乙太網資料在tsecddr pci con...
網路資料報收發流程 3 E1000網絡卡和DMA
標籤 資料報乙太網資料流 原文出處 一 硬體布局 每個網絡卡 mac 都有自己的專用dma engine,如上圖的 tsec 和 e1000 網絡卡intel82546。上圖中的紅色線就是乙太網資料流,dma與ddr打交道需要其他模組的協助,如tsec,pci controller 乙太網資料在 t...