0341d5e3d1
The cur_tx counter must be incremented after TACT bit of
txdesc->status was set. However, a CPU is possible to reorder
instructions and/or memory accesses between cur_tx and
txdesc->status. And then, if TX interrupt happened at such a
timing, the sh_eth_tx_free() may free the descriptor wrongly.
So, add wmb() before cur_tx++.
Otherwise NETDEV WATCHDOG timeout is possible to happen.
Fixes:
|
||
---|---|---|
.. | ||
Kconfig | ||
Makefile | ||
ravb_main.c | ||
ravb_ptp.c | ||
ravb.h | ||
sh_eth.c | ||
sh_eth.h |