Re: [PATCH v3] Drop Tx network packet when Tx TmFIFO is full

From: Ilpo Järvinen
Date: Fri Jan 12 2024 - 10:21:59 EST


On Thu, 11 Jan 2024, Liming Sun wrote:

> Starting from Linux 5.16 kernel, Tx timeout mechanism was added
> in the virtio_net driver which prints the "Tx timeout" warning
> message when a packet stays in Tx queue for too long. Below is an
> example of the reported message:
>
> "[494105.316739] virtio_net virtio1 tmfifo_net0: TX timeout on
> queue: 0, sq: output.0, vq: 0×1, name: output.0, usecs since
> last trans: 3079892256".
>
> This issue could happen when external host driver which drains the
> FIFO is restared, stopped or upgraded. To avoid such confusing
> "Tx timeout" messages, this commit adds logic to drop the outstanding
> Tx packet if it's not able to transmit in two seconds due to Tx FIFO
> full, which can be considered as congestion or out-of-resource drop.
>
> This commit also handles the special case that the packet is half-
> transmitted into the Tx FIFO. In such case, the packet is discarded
> with remaining length stored in vring->rem_padding. So paddings with
> zeros can be sent out when Tx space is available to maintain the
> integrity of the packet format. The padded packet will be dropped on
> the receiving side.
>
> Signed-off-by: Liming Sun <limings@xxxxxxxxxx>
> ---
> v2->v3:
> Updates for Ilpo's comments:
> - Revises commit message to avoid confusion.
> v2: Fixed formatting warning
> v1: Initial version

Thanks, the commit message makes much more sense now!

Reviewed-by: Ilpo Järvinen <ilpo.jarvinen@xxxxxxxxxxxxxxx>

--
i.