Hello -

If I start a certain app that sends a large amount of data to many
hosts, I get:

re0: watchdog timeout
re0: watchdog timeout

The diff below is what em(4) does and I am no longer able to cause
watchdog timeouts on my re(4).

Does this seem correct or more of a hack?

Index: dev/ic/re.c
===================================================================
RCS file: /cvs/src/sys/dev/ic/re.c,v
retrieving revision 1.202
diff -u -p -r1.202 re.c
--- dev/ic/re.c 19 Jun 2017 09:36:27 -0000      1.202
+++ dev/ic/re.c 31 Aug 2018 19:16:16 -0000
@@ -1817,6 +1817,9 @@ re_start(struct ifqueue *ifq)
                        bpf_mtap_ether(ifp->if_bpf, m, BPF_DIRECTION_OUT);
 #endif
 
+               /* Set timeout in case hardware has problems transmitting */
+               ifp->if_timer = 5;
+
                KASSERT(used <= free);
                free -= used;
 
@@ -1830,7 +1833,6 @@ re_start(struct ifqueue *ifq)
        if (post == 0)
                return;
 
-       ifp->if_timer = 5;
        sc->rl_ldata.rl_txq_prodidx = idx;
        ifq_serialize(ifq, &sc->rl_start);
 }

Reply via email to