Hi, in sys/dev/pci/if_em.c at line 469 there is: sc->hw.min_frame_size = ETHER_MIN_LEN + ETHER_CRC_LEN;
But ETHER_MIN_LEN already includes the CRC size: #define ETHER_MIN_LEN 64 /* Minimum frame length, CRC included */ In revision 1.41 the code changed in this way: sc->hw.min_frame_size = - MINIMUM_ETHERNET_PACKET_SIZE + ETHER_CRC_LEN; + ETHER_MIN_LEN + ETHER_CRC_LEN; But MINIMUM_ETHERNET_PACKET_SIZE was the size without CRC. #define MINIMUM_ETHERNET_FRAME_SIZE 64 /* With FCS */ #define ETHERNET_FCS_SIZE 4 #define MINIMUM_ETHERNET_PACKET_SIZE \ (MINIMUM_ETHERNET_FRAME_SIZE - ETHERNET_FCS_SIZE) So I attached the following diff to restore the original minimum size (by the way, what's the effect of having min_frame_size set to 68? Discarding valid packets sized from 64 to 67?) Regards, Michele Index: sys/dev/pci/if_em.c =================================================================== RCS file: /cvs/src/sys/dev/pci/if_em.c,v retrieving revision 1.336 diff -u -p -r1.336 if_em.c --- sys/dev/pci/if_em.c 25 Jul 2017 20:45:18 -0000 1.336 +++ sys/dev/pci/if_em.c 2 Feb 2018 11:13:43 -0000 @@ -466,8 +466,7 @@ em_attach(struct device *parent, struct MAX_JUMBO_FRAME_SIZE; } - sc->hw.min_frame_size = - ETHER_MIN_LEN + ETHER_CRC_LEN; + sc->hw.min_frame_size = ETHER_MIN_LEN; /* Allocate Transmit Descriptor ring */ if (em_dma_malloc(sc, sc->sc_tx_slots * sizeof(struct em_tx_desc),