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);
}