My driver is sky2 network driver.
I found the function static netdev_tx_t sky2_xmit_frame
that maps to the Linux net_device_ops: .ndo_start_xmit
.
The comment above this function is:
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.
However, I do not find the code for signaling the hardware to transmit the packet after the driver puts it in the ring buffer.
Any idea about how does sky2 signal the Marvell NIC or other drivers signal related devices?
It writes to a memory mapped IO region. I assume it's line 1987 (v4.16):
sky2_put_idx(hw, txqaddr[sky2->port], sky2->tx_prod);