fix.diff — DF-4267: restore correct RX ring wrap-around in wb_list_rx_init(). The DragonFly port collapsed FreeBSD's if/else wrap-around into a ternary and dropped the "i ==" comparison, making the condition the constant 63: nexti is always 0, so every RX descriptor (software wb_nextdesc and hardware wb_next) links to descriptor 0 — a 1-deep self-ring instead of a closed 64-descriptor ring. Applies on top of sys/dev/netif/wb/if_wb.c (read-only audit tree; never applied). --- a/sys/dev/netif/wb/if_wb.c +++ b/sys/dev/netif/wb/if_wb.c @@ -906,7 +906,7 @@ wb_list_rx_init(struct wb_softc *sc) cd->wb_rx_chain[i].wb_buf = &ld->wb_rxbufs[i]; if (wb_newbuf(sc, &cd->wb_rx_chain[i], NULL) == ENOBUFS) return(ENOBUFS); - nexti = (WB_RX_LIST_CNT - 1) ? 0 : i + 1; + nexti = (i == WB_RX_LIST_CNT - 1) ? 0 : i + 1; cd->wb_rx_chain[i].wb_nextdesc = &cd->wb_rx_chain[nexti]; ld->wb_rx_list[i].wb_next = vtophys(&ld->wb_rx_list[nexti]); }