網路協議棧15 網絡卡接收 傳送資料基礎知識

2021-09-08 23:03:48 字數 2732 閱讀 5961

網絡卡本身是有記憶體的,每個網絡卡一般都有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...