From 15f43fcb0bb51a159b3d3c36e85d0f2b5202ec86 Mon Sep 17 00:00:00 2001 From: Bill Paul Date: Thu, 7 Dec 2000 23:30:51 +0000 Subject: [PATCH] When I converted this driver, I neglected to deal with packet alignment. We must force payload alignment to a longword boundary to make the alpha happy. This should stop the driver from trapping on the alpha when the interface is ifconfig'ed (actually, when the first frame is received). --- sys/dev/vx/if_vx.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/sys/dev/vx/if_vx.c b/sys/dev/vx/if_vx.c index 30ce7ccecf6..e1fa7605b54 100644 --- a/sys/dev/vx/if_vx.c +++ b/sys/dev/vx/if_vx.c @@ -77,6 +77,7 @@ #define ETHER_MAX_LEN 1518 #define ETHER_ADDR_LEN 6 +#define ETHER_ALIGN 2 static struct connector_entry { int bit; @@ -687,6 +688,22 @@ again: ++ifp->if_ipackets; + { + struct mbuf *m0; + + m0 = m_devget(mtod(m, char *) - ETHER_ALIGN, + m->m_pkthdr.len + ETHER_ALIGN, 0, ifp, NULL); + + if (m0 == NULL) { + ifp->if_ierrors++; + goto abort; + } + + m_adj(m0, ETHER_ALIGN); + m_freem(m); + m = m0; + } + /* We assume the header fit entirely in one mbuf. */ eh = mtod(m, struct ether_header *);