Hi Mark, If you need a box for testing purpose on this issue.
I can provide you bug reports when I will get a spare box which trigger the watchdog timeout.
In my case it's only with trunk device on failover mode so far. Regards, Alexis VACHETTE* * On 05/10/2015 22:45, Mark Kettenis wrote:
Several people seem to complain on misc@ that they're seeing watchdog timeouts on em(4). But none of them bother to submit a proper bug report to bugs@. Anyway, here is a diff that might fix the issue. Please test, even if you're not experiencing any problems. Thanks, Mark Index: if_em.c =================================================================== RCS file: /home/cvs/src/sys/dev/pci/if_em.c,v retrieving revision 1.306 diff -u -p -r1.306 if_em.c --- if_em.c 30 Sep 2015 11:25:08 -0000 1.306 +++ if_em.c 5 Oct 2015 20:35:13 -0000 @@ -1210,12 +1210,6 @@ em_encap(struct em_softc *sc, struct mbu } }- sc->next_avail_tx_desc = i;- if (sc->pcix_82544) - atomic_sub_int(&sc->num_tx_desc_avail, txd_used); - else - atomic_sub_int(&sc->num_tx_desc_avail, map->dm_nsegs); - #if NVLAN > 0 /* Find out if we are in VLAN mode */ if (m_head->m_flags & M_VLANTAG) { @@ -1249,6 +1243,14 @@ em_encap(struct em_softc *sc, struct mbu tx_buffer = &sc->tx_buffer_area[first]; tx_buffer->next_eop = last;+ membar_producer();+ + sc->next_avail_tx_desc = i; + if (sc->pcix_82544) + atomic_sub_int(&sc->num_tx_desc_avail, txd_used); + else + atomic_sub_int(&sc->num_tx_desc_avail, map->dm_nsegs); + /* * Advance the Transmit Descriptor Tail (Tdt), * this tells the E1000 that this frame is @@ -2377,6 +2379,8 @@ em_transmit_checksum_setup(struct em_softx_buffer->m_head = NULL;tx_buffer->next_eop = -1; + + membar_producer();if (++curr_txd == sc->num_tx_desc)curr_txd = 0;
