diff options
| author | msaitoh <msaitoh@NetBSD.org> | 2021-10-20 08:06:45 +0000 |
|---|---|---|
| committer | msaitoh <msaitoh@NetBSD.org> | 2021-10-20 08:06:45 +0000 |
| commit | 645ea366f7c10e37ab03eb29cfebc7055a351e04 (patch) | |
| tree | f9810aa6032d032d20469eba469ae5b06c188a7e /tests/kernel/kqueue | |
| parent | 596a5637f6d6b9c42d5c092b5f872d2ccaa5243e (diff) | |
Disable printf()s in wm_flush_desc_rings() because the code is verified.
The problem was very rare, so I added those printf()s as we can see.
Last week, knakahara and I found a procedure to reproduce the problem and
verified it worked correctly.
To reproduce the problem:
0) Use I219 V1 to V5. Not all of them have the problem and newer than V5 may
have the problem. I used V2 for the test.
1) Define WM_DEBUG or add printf in wm_flush_desc_rings() to see
DESCRING_STATUS_FLUSH_REQ bit.
2) Run "iperf -s" on the DUT.
3) Run "iperf3 -R -u -c 192.168.1.110 -w 8m -b 1g" repeatedly on another
machine. Note that kern.sbmax should be increased on both machines.
4) run
while true; do
ifconfig wm0 down up
sleep 30
done
5) After DESCRING_STATUS_FLUSH_REQ is set, without wm_flush_desc_rings(),
TX stalls and reboot is required to recover from it.
With wm_flush_desc_rings(), no device hang.
6) If you can't see the DESCRING_STATUS_FLUSH_REQ is set, change the media
to 100BASE-T.
Note that if_wm.c rev. 1.710 originally written by chuq is required for the
test. Without the change, the device becomes unrecoverable state before
wm_flush_desc_rings() and the function doesn't recover from the problem.
Diffstat (limited to 'tests/kernel/kqueue')
0 files changed, 0 insertions, 0 deletions
