Linux network driver 如何向 NIC 卡发送数据已准备好传输的信号

How does Linux network driver signal the NIC card that the data is ready to be transmit

我的 driver 是 sky2 network driver

我找到了映射到 Linux net_device_ops: .ndo_start_xmit 的函数 static netdev_tx_t sky2_xmit_frame

这个函数上面的注释是:

Put one packet in ring for transmit. A single packet can generate multiple list elements, and the number of ring elements will probably be less than the number of list elements used.

但是,我没有找到在 driver 将数据包放入环形缓冲区后向硬件发送数据包的代码。

知道 sky2 如何向 Marvell NIC 或其他 drivers 信号相关设备发送信号吗?

它写入到内存映射的 IO 区域。我假设它是 1987 (v4.16):

sky2_put_idx(hw, txqaddr[sky2->port], sky2->tx_prod);