diff options
author | Per Fogelstrom <pefo@cvs.openbsd.org> | 1996-09-28 10:16:21 +0000 |
---|---|---|
committer | Per Fogelstrom <pefo@cvs.openbsd.org> | 1996-09-28 10:16:21 +0000 |
commit | 34762a7080a4c6ae8eb19eafb03e5263964192d5 (patch) | |
tree | 9f686ff6036a12a0694dc640ba423e2ea40ae6fa | |
parent | 8047d03c1ce86e6368f4130298088101062df5d8 (diff) |
Apply Niklas align fix. (better than my try)
-rw-r--r-- | sys/dev/ic/elink3.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/sys/dev/ic/elink3.c b/sys/dev/ic/elink3.c index 2eeaa980333..4b0ab2d71ab 100644 --- a/sys/dev/ic/elink3.c +++ b/sys/dev/ic/elink3.c @@ -702,7 +702,7 @@ epget(sc, totlen) bus_io_handle_t ioh = sc->sc_ioh; struct ifnet *ifp = &sc->sc_arpcom.ac_if; struct mbuf *top, **mp, *m; - int len; + int len, pad; int sh; m = sc->mb[sc->next_mb]; @@ -722,7 +722,9 @@ epget(sc, totlen) } m->m_pkthdr.rcvif = ifp; m->m_pkthdr.len = totlen; - len = MHLEN; + pad = ALIGN(sizeof(struct ether_header)) - sizeof(struct ether_header); + m->m_data += pad; + len = MHLEN - pad; top = 0; mp = ⊤ @@ -749,7 +751,7 @@ epget(sc, totlen) } len = MLEN; } - if (totlen >= MINCLSIZE) { + if (top && totlen >= MINCLSIZE) { MCLGET(m, M_DONTWAIT); if (m->m_flags & M_EXT) len = MCLBYTES; |