DF-4159 / fix.diff
--- a/sys/dev/netif/xe/if_xe.c +++ b/sys/dev/netif/xe/if_xe.c @@ -753,16 +753,19 @@ xe_intr(void *xscp) if (len == 0) { IFNET_STAT_INC(ifp, iqdrops, 1); + XE_OUTW(XE_DO, 0x8000); /* release packet: avoid RX livelock */ continue; } MGETHDR(mbp, M_NOWAIT, MT_DATA); if (mbp == NULL) { IFNET_STAT_INC(ifp, iqdrops, 1); + XE_OUTW(XE_DO, 0x8000); /* release packet: avoid RX livelock */ continue; } if (len + 3 > MHLEN) { MCLGET(mbp, M_NOWAIT); if ((mbp->m_flags & M_EXT) == 0) { m_freem(mbp); IFNET_STAT_INC(ifp, iqdrops, 1); + XE_OUTW(XE_DO, 0x8000); /* release packet: avoid RX livelock */ continue; } } |