]> git.ipfire.org Git - thirdparty/ipxe.git/commitdiff
[gve] Report only packet completions for the transmit ring
authorMichael Brown <mcb30@ipxe.org>
Thu, 9 Oct 2025 16:25:25 +0000 (17:25 +0100)
committerMichael Brown <mcb30@ipxe.org>
Thu, 9 Oct 2025 16:29:20 +0000 (17:29 +0100)
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 <mcb30@ipxe.org>
src/drivers/net/gve.c
src/drivers/net/gve.h

index 66e529abc51df0efaab25d41c7704b6ab92e8532..3c45b92fa171d3739f2a72b950be9efd68366af6 100644 (file)
@@ -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 {
index 29928a34adf7ec155d9ddc926b5683ca7d4f07e2..9cef01a02f635768d3b45666e579e2a2b5a49048 100644 (file)
@@ -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 */