【发布时间】:2017-12-07 09:00:03
【问题描述】:
我正在 x86_64 英特尔至强板上测试水晶海滩 dma。我想用水晶海滩 dma 测试 e1000e 和 ixgbe 驱动程序。
我已经为水晶海滩 dma 修补了 ioatdma 驱动程序(pci.c 和 hw.h 文件)。现在我面临两个驱动程序根本不使用此通道的问题。 bytes_transferred 和 memcpy_count 始终为零。
以下是配置-
我使用的内核是 2.6.32.431
[root@hvtxrs82 dma]# pwd
/sys/class/dma
[root@hvtxrs82 dma]# ls
dma0chan0 dma12chan0 dma15chan0 dma3chan0 dma6chan0 dma9chan0
dma10chan0 dma13chan0 dma1chan0 dma4chan0 dma7chan0
dma11chan0 dma14chan0 dma2chan0 dma5chan0 dma8chan0
我已经插入了 e1000e 和 ixgbe 驱动程序。 dmachannels 显示了这一点。
[root@hvtxrs82 dma]# cat /sys/class/dma/dma0chan0/in_use
4
lspci 输出 -
80:04.0 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 0 (rev 04)
80:04.1 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 1 (rev 04)
80:04.2 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 2 (rev 04)
80:04.3 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 3 (rev 04)
80:04.4 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 4 (rev 04)
80:04.5 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 5 (rev 04)
80:04.6 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 6 (rev 04)
80:04.7 System peripheral: Intel Corporation Ivytown Crystal Beach DMA Channel 7 (rev 04)
我已将堆栈设置更改为sysctl net.ipv4.tcp_dma_copybreak=1
[root@hvtxrs82 dma]# cat /sys/class/dma/dma0chan0/bytes_transferred
0
所有频道都一样。但是 ethtool 显示接收到的流量和数据包。那么为什么没有使用 dma 通道呢?
【问题讨论】:
标签: linux-kernel linux-device-driver