ix(4): allocate less memory for tx buffers
authorjan <jan@openbsd.org>
Mon, 10 Jul 2023 19:36:54 +0000 (19:36 +0000)
committerjan <jan@openbsd.org>
Mon, 10 Jul 2023 19:36:54 +0000 (19:36 +0000)
TSO packets are limited to MAXMCLBYTES (64k).  Thus, we don't need to
allocate IXGBE_TSO_SIZE (256k) per packet for the transmit buffers.

tested by bluhm

ok bluhm@

sys/dev/pci/if_ix.c

index 195b5d6..92b384b 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: if_ix.c,v 1.198 2023/07/08 09:01:30 jmatthew Exp $    */
+/*     $OpenBSD: if_ix.c,v 1.199 2023/07/10 19:36:54 jan Exp $ */
 
 /******************************************************************************
 
 #include <dev/pci/if_ix.h>
 #include <dev/pci/ixgbe_type.h>
 
+/*
+ * Our TCP/IP Stack could not handle packets greater than MAXMCLBYTES.
+ * This interface could not handle packets greater than IXGBE_TSO_SIZE.
+ */
+CTASSERT(MAXMCLBYTES <= IXGBE_TSO_SIZE);
+
 /*********************************************************************
  *  Driver version
  *********************************************************************/
@@ -2263,7 +2269,7 @@ ixgbe_allocate_transmit_buffers(struct tx_ring *txr)
        /* Create the descriptor buffer dma maps */
        for (i = 0; i < sc->num_tx_desc; i++) {
                txbuf = &txr->tx_buffers[i];
-               error = bus_dmamap_create(txr->txdma.dma_tag, IXGBE_TSO_SIZE,
+               error = bus_dmamap_create(txr->txdma.dma_tag, MAXMCLBYTES,
                            sc->num_segs, PAGE_SIZE, 0,
                            BUS_DMA_NOWAIT, &txbuf->map);