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