From: Michael Brown Date: Thu, 9 Oct 2025 16:25:25 +0000 (+0100) Subject: [gve] Report only packet completions for the transmit ring X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1cc1f1cd4f06e297552b3cf15d43ee23f5fa1ce2;p=thirdparty%2Fipxe.git [gve] Report only packet completions for the transmit ring The hardware reports descriptor and packet completions separately for the transmit ring. We currently ignore descriptor completions (since we cannot free up the transmit buffers in the queue page list and advance the consumer counter until the packet has also completed). Now that transmit completions are written out immediately (instead of being delayed until 128 bytes of completions are available), there is no value in retaining the descriptor completions. Omit descriptor completions entirely, and reduce the transmit fill level back down to its original value. Signed-off-by: Michael Brown --- diff --git a/src/drivers/net/gve.c b/src/drivers/net/gve.c index 66e529abc..3c45b92fa 100644 --- a/src/drivers/net/gve.c +++ b/src/drivers/net/gve.c @@ -1422,8 +1422,7 @@ static int gve_transmit ( struct net_device *netdev, struct io_buffer *iobuf ) { cpu_to_le64 ( gve_address ( tx, tag ) ); if ( next == len ) { dqo->type = ( GVE_DQO_TX_TYPE_PACKET | - GVE_DQO_TX_TYPE_LAST | - GVE_DQO_TX_TYPE_REPORT ); + GVE_DQO_TX_TYPE_LAST ); dqo->tag.id = tag; dqo->tag.count = count; } else { diff --git a/src/drivers/net/gve.h b/src/drivers/net/gve.h index 29928a34a..9cef01a02 100644 --- a/src/drivers/net/gve.h +++ b/src/drivers/net/gve.h @@ -543,14 +543,9 @@ struct gve_qpl { /** * Maximum number of transmit buffers * - * This is a policy decision. Experiments suggest that out-of-order - * transmit queues will write completions only in batches of 128 - * bytes, comprising 8 descriptor completions and 8 packet - * completions. The transmit fill level must therefore be greater - * than 8, so that completions will be written out before the transmit - * ring runs out of space. + * This is a policy decision. */ -#define GVE_TX_FILL 16 +#define GVE_TX_FILL 8 /** Transmit queue page list ID */ #define GVE_TX_QPL 0x18ae5458 @@ -624,9 +619,6 @@ struct gve_dqo_tx_descriptor { /** Last transmit descriptor in a packet */ #define GVE_DQO_TX_TYPE_LAST 0x20 -/** Report transmit completion */ -#define GVE_DQO_TX_TYPE_REPORT 0x80 - /** An out-of-order transmit completion */ struct gve_dqo_tx_completion { /** Reserved */