LINUX packet receiving process
Using ethtool, we can set the rx-usecs parameter, which is defined as "Maximum number of microseconds to delay an RX interrupt after receiving a packet". My understanding of a NAPI enabled driver is as follows:
A NAPI enabled device driver disables further interrupts from the NIC after the reception of the first packet and goes into poll mode. The poll method checks if all the packets have been processed, and if so it enables interrupts.
If this is correct, can someone please help me understand where the parameter rx-usecs comes into play.
Another confusion that I have is regarding the freeing of rx descriptors. I have read that to avoid packet multiple packet copies the sk_buf for a packet remains the same till it is copied to user space. So does that mean that the rx descriptor is freed only after the protocol processing is completed?