网络卡的DMA环缓冲区和TX / RX环的关系是什么?

时间:2017-11-23 07:56:50

标签: linux networking linux-kernel dma nic

我知道对于网卡,操作系统必须为其分配tx / rx环,以便当操作系统想要接收/传输数据包时,网卡将知道数据包的位置以及要传输的数据包。

当我读到DMA时,我看到一些名为DMA环缓冲区的东西。 DMA环和tx / rx是否相同?或者是什么关系?

3 个答案:

答案 0 :(得分:2)

简答:这些都是一样的。

更多详情: 首先,请参阅与您的问题非常相关的this post

this article中说:

  

通常可以在网络中看到异步方法的变体   牌。这些卡通常期望看到循环缓冲区(通常称为   在与处理器共享的存储器中建立的DMA环缓冲器;   每个传入的数据包都放在下一个可用的缓冲区中   响铃,并发出中断信号。然后驱动程序通过网络   数据包到内核的其余部分,并在其中放置一个新的DMA缓冲区   环。

DMA环允许NIC直接访问软件使用的内存。软件(内核中的NIC驱动程序)为环分配内存,然后将其映射为DMA内存,因此NIC知道它可以访问它。 TX数据包将由软件在此存储器中创建,并由NIC读取和传输(通常在软件向NIC发出信号后应开始传输)。 RX数据包将由NIC写入此存储器,并由软件读取和处理(通常在发出中断后发出信号)。

希望这有帮助。

答案 1 :(得分:1)

  1. 环形缓冲区包含RAM中缓冲区的开始和结束地址。 TX Ring将在RAM中包含缓冲区的地址,其中包含要发送的数据。 RX环将包含NIC用来放置数据的RAM中的缓冲区地址。

    这些环存在于RAM中。

  2. TX缓冲区和RX缓冲区位于TX / RX环指向的RAM中。

  3. 现在,网卡寄存器在RAM中具有振铃缓冲区的位置。

现在1和2可以是具有DMA功能的缓冲区,它们分别称为DMA TX / RX环和DMA TX / RX缓冲区。 现在,由于必须始终保持RX / TX环,因此将它们作为一致/一致的DMA类型的存储器。 虽然使缓冲区成为流式/单DMA类型的内存

enter image description here enter image description here enter image description here enter image description here

答案 2 :(得分:0)

DMA环缓冲区和TX / RX环是同一件事。
DMA有两种类型的环形缓冲区

  • TX环形缓冲区-用于将数据从内核传输到设备
  • RX环形缓冲区-用于从设备到内核接收数据