Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 19 Feb 2024 04:48:51 GMT
From:      Warner Losh <imp@FreeBSD.org>
To:        src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-branches@FreeBSD.org
Subject:   git: a9600913b4db - stable/14 - vtnet: Avoid ifdefs based on __NO_STRICT_ALIGNMENT
Message-ID:  <202402190448.41J4mpXg076959@gitrepo.freebsd.org>

next in thread | raw e-mail | index | archive | help
The branch stable/14 has been updated by imp:

URL: https://cgit.FreeBSD.org/src/commit/?id=a9600913b4dbf66fb257ea90702ea4705fb40362

commit a9600913b4dbf66fb257ea90702ea4705fb40362
Author:     Warner Losh <imp@FreeBSD.org>
AuthorDate: 2024-02-05 05:43:49 +0000
Commit:     Warner Losh <imp@FreeBSD.org>
CommitDate: 2024-02-19 04:47:16 +0000

    vtnet: Avoid ifdefs based on __NO_STRICT_ALIGNMENT
    
    Some platforms require an adjustment of the ethernet hearders. Rather
    than make this be on __NO_STRICT_ALIGNMENT being defined, define
    VTNET_ETHER_ALIGN to be either 0 or ETHER_ALIGN (aka 2). Add a test to
    the if statements to only do them when != 0. This eliminates the #ifdef
    sprinkled in the code, still communicates the intent and gives the same
    compiled results.
    
    Sponsored by:           Netflix
    Reviewed by:            bz, bryanv
    Differential Revision:  https://reviews.freebsd.org/D43654
    
    (cherry picked from commit 0ea4b4084845bfeedc8c692e4d34252023b78cb3)
---
 sys/dev/virtio/network/if_vtnet.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/sys/dev/virtio/network/if_vtnet.c b/sys/dev/virtio/network/if_vtnet.c
index 6694c655f3af..7d6411876b3d 100644
--- a/sys/dev/virtio/network/if_vtnet.c
+++ b/sys/dev/virtio/network/if_vtnet.c
@@ -90,6 +90,12 @@
 #include <machine/in_cksum.h>
 #endif
 
+#ifdef __NO_STRICT_ALIGNMENT
+#define VTNET_ETHER_ALIGN 0
+#else /* Strict alignment */
+#define VTNET_ETHER_ALIGN ETHER_ALIGN
+#endif
+
 static int	vtnet_modevent(module_t, int, void *);
 
 static int	vtnet_probe(device_t);
@@ -1232,15 +1238,13 @@ vtnet_rx_cluster_size(struct vtnet_softc *sc, int mtu)
 	} else
 		framesz = sizeof(struct vtnet_rx_header);
 	framesz += sizeof(struct ether_vlan_header) + mtu;
-#ifndef __NO_STRICT_ALIGNMENT
 	/*
 	 * Account for the offsetting we'll do elsewhere so we allocate the
 	 * right size for the mtu.
 	 */
-	if (sc->vtnet_hdr_size % 4 == 0) {
-		framesz += ETHER_ALIGN;
+	if (VTNET_ETHER_ALIGN != 0 && sc->vtnet_hdr_size % 4 == 0) {
+		framesz += VTNET_ETHER_ALIGN;
 	}
-#endif
 
 	if (framesz <= MCLBYTES)
 		return (MCLBYTES);
@@ -1552,15 +1556,13 @@ vtnet_rx_alloc_buf(struct vtnet_softc *sc, int nbufs, struct mbuf **m_tailp)
 		}
 
 		m->m_len = size;
-#ifndef __NO_STRICT_ALIGNMENT
 		/*
 		 * Need to offset the mbuf if the header we're going to add
 		 * will misalign.
 		 */
-		if (sc->vtnet_hdr_size % 4 == 0) {
-			m_adj(m, ETHER_ALIGN);
+		if (VTNET_ETHER_ALIGN != 0 && sc->vtnet_hdr_size % 4 == 0) {
+			m_adj(m, VTNET_ETHER_ALIGN);
 		}
-#endif
 		if (m_head != NULL) {
 			m_tail->m_next = m;
 			m_tail = m;
@@ -1587,14 +1589,12 @@ vtnet_rxq_replace_lro_nomrg_buf(struct vtnet_rxq *rxq, struct mbuf *m0,
 
 	sc = rxq->vtnrx_sc;
 	clustersz = sc->vtnet_rx_clustersz;
-#ifndef __NO_STRICT_ALIGNMENT
 	/*
 	 * Need to offset the mbuf if the header we're going to add will
 	 * misalign, account for that here.
 	 */
-	if (sc->vtnet_hdr_size % 4 == 0)
-		clustersz -= ETHER_ALIGN;
-#endif
+	if (VTNET_ETHER_ALIGN != 0 && sc->vtnet_hdr_size % 4 == 0)
+		clustersz -= VTNET_ETHER_ALIGN;
 
 	m_prev = NULL;
 	m_tail = NULL;



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?202402190448.41J4mpXg076959>