--- if_urndis.c.orig 2026-10-04 04:26:45.269523718 +0000 +++ if_urndis.c.fixed5396 2026-10-04 04:27:07.657238854 +0000 @@ -856,7 +856,7 @@ DPRINTF("invalid ethernet size " "%u < %u\n", msg.rm_datalen, (unsigned)sizeof(struct ether_header)); goto tr_setup; - } else if (msg.rm_datalen > (uint32_t)MCLBYTES) { + } else if (msg.rm_datalen > (uint32_t)(MCLBYTES - ETHER_ALIGN)) { IFNET_STAT_INC(ifp, ierrors, 1); DPRINTF("invalid ethernet size " "%u > %u\n", @@ -870,6 +870,7 @@ /* check if we have a buffer */ if (m != NULL) { + m->m_len = m->m_pkthdr.len = msg.rm_datalen + ETHER_ALIGN; m_adj(m, ETHER_ALIGN); usbd_copy_out(pc, offset + msg.rm_dataoffset +