jme_start() should be checking if JME_MAXTXSEGS TX descs are available instead of just the 1 reserved descriptor (JME_TXD_RSVD).
Index: if_jme.c =================================================================== RCS file: /home/cvs/src/sys/dev/pci/if_jme.c,v retrieving revision 1.51 diff -u -p -u -p -r1.51 if_jme.c --- if_jme.c 29 Mar 2019 17:25:44 -0000 1.51 +++ if_jme.c 14 Apr 2019 17:44:12 -0000 @@ -1213,7 +1213,7 @@ jme_start(struct ifnet *ifp) * Check number of available TX descs, always * leave JME_TXD_RSVD free TX descs. */ - if (sc->jme_cdata.jme_tx_cnt + JME_TXD_RSVD > + if (sc->jme_cdata.jme_tx_cnt + JME_MAXTXSEGS + JME_TXD_RSVD >= JME_TX_RING_CNT - JME_TXD_RSVD) { ifq_set_oactive(&ifp->if_snd); break;