PERFORCE change 93112 for review
Warner Losh
imp at FreeBSD.org
Sat Mar 11 02:10:28 GMT 2006
http://perforce.freebsd.org/chv.cgi?CH=93112
Change 93112 by imp at imp_Speedy on 2006/03/10 17:43:02
Subtract out the CRC length from the lenght we report, as the EMAC
device includes this lenght, but ifnet drivers do not want it.
Free the mb that we just copied. This likely means that we can
go with a much simpler 'pool' of memory for this device and not
mess with the load/unload of each segment as a mbuf as we get
packets.
Minor compile nit.
Affected files ...
.. //depot/projects/arm/src/sys/arm/at91/if_ate.c#39 edit
Differences ...
==== //depot/projects/arm/src/sys/arm/at91/if_ate.c#39 (text+ko) ====
@@ -652,11 +652,17 @@
BUS_DMASYNC_PREWRITE);
continue;
}
- mb->m_len = rx_stat & ETH_LEN_MASK;
+ /*
+ * The length returned by the device includes the
+ * ethernet CRC calculation for the packet, but
+ * ifnet drivers are supposed to discard it.
+ */
+ mb->m_len = (rx_stat & ETH_LEN_MASK) - ETHER_CRC_LEN;
mb->m_pkthdr.len = mb->m_len;
mb->m_pkthdr.rcvif = sc->ifp;
- tmp_mbuf = m_devget(mtod(md, caddr_t), mb->m_len,
+ tmp_mbuf = m_devget(mtod(mb, caddr_t), mb->m_len,
ETHER_ALIGN, sc->ifp, NULL);
+ m_free(mb);
/*
* For the last buffer, set the wrap bit so
* the controller restarts from the first
More information about the p4-projects
mailing list