无法使用 ethtool 更改 NIC 设置

无法使用 ethtool 更改 NIC 设置

我正在尝试使用 ethtool 更改我的 NIC(Intel 10G NIC)设置,但似乎无法做到这一点。

我试过

ethtool -G xge0 rx 32768 tx 32768

然后尝试使用以下方法查看设置是否已更改

ethtool -g xge0

但我看到了输出

Ring parameters for xge0: 
Pre-set maximums: 
RX:        4096 
RX Mini:   0 
RX Jumbo:  0 
TX:        4096 
Current hardware settings: 
RX:        4096 
RX Mini:   0 
RX Jumbo:  0 
TX:        4096

为何我无法更改设置?

答案1

控制器只能处理每个环中的 4,096 个环条目。NIC 实际上需要每个环缓冲区中每个可用插槽的 DMA 地址。它在每个方向上只有 4,096 个插槽。(而且无论如何,更多也无济于事。)

戒指的工作原理如下(我仅介绍接收,因为它更简单,但概念是一样的):

  1. 驱动程序在 DMAable 主内存中分配一定数量的接收缓冲区。

  2. 驱动程序告诉 NIC 这些缓冲区的基地址。

  3. 当 NIC 接收到数据包时,它会通过 DMA 将其放入这些缓冲区中。

  4. 驱动程序询问 NIC 已将多少个数据包通过 DMA 传输到主内存。

  5. 驱动程序处理这些数据包。

  6. 驱动程序分配新的接收缓冲区来重新填充环。

  7. 驱动程序向 NIC 注册新缓冲区的基地址。

因此 NIC 必须知道环中每个缓冲区的物理地址。此 NIC 在每个方向上只有 4,096 个插槽用于这些物理地址。

相关内容