8139d网卡工作原理 [不断更新]

       工欲善其事,必先利其器。想学习8139网卡驱动程序,但是连它怎么工作的都不知道看代码看的我头都大了!!!特地看了不少文档总结出如下几点,便于学习!


8139d网卡发送一个数据包的过程中:

1:将数据包发送到一个物理上连续的内存中的缓冲区。
2:写指示描述符
(1)填写此缓冲区的起始地址(物理地址)。
(2)填写发送状态:这个包的大小,发送的阈值,清零TSD中的OWN位(这将启动PCI操作)。   
3:由于移动到FIFO的数据数满足早期发送阈值,芯片开始从FIFO拷贝数据到line(传输线).
4:当整个包被移动到FIFO,OWN位被设置为1。
5:当整个包被移动到line(传输线),TOK位(TSD中)被设置为1。
6:如果的TOK(IMR)被设置为1,并且的TOK(ISR)被设置,那么一个中断被触发。
7:中断服务程序被调用,驱动程序应该清除TOK(ISR)状态图:(TOK,OWN)


发送使用的寄存器:

. TSAD0-3
. TSD0-3
. ISR(TOK,TER),IMR(TOK,TER)
. TCR: transmit configuration register发送配置寄存器
. TSAD: reflect the corresponding bits in the TSD0-3 反映的TSD0-3中的相应位。

8139d网卡接收数据包的过程:
1.从line(传输线)接收的数据被存储在接收FIFO。
2.当接收阈值达到了,便开始从FIFO向接收缓冲区拷贝数据。
3.整个数据包都从FIFO拷贝到接收缓冲器后,接收数据分组首部(接收状态和分组长度)被写入在数据包的前面。 CBA也被更新在数据包的末尾。
4.CMD(BufferEmpty)和ISR(TOK)被设置。 

5.ISR(中断服务)被调用,然后驱动程序清空ISR(TOK)和并更新CAPR。


接收使用的寄存器:
RBStart:接收缓冲区的起始地址。
CR(BufferEmpty):象征着驱动程序是空。
CAPR:缓冲区读指针。
CBP:缓冲区写指针。
ISR / IMR(ROK,RER,RxOverflow,RxFIFOOverflow)
RCR:Receive configuration register 接收配置寄存器。
Packet Header(数据包报头)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值