surprise, surprise
I have a similar situation. On a very slow Pentium I machine, runing 2.2.XXX kernel, sometimes I have overruns and frame errors, which choke up the interface and I have to restart it using The overruns are due to torrent traffic generated by one of the geeks here.
ifconfig eth1 down ifconfig eth1 up
So I was thinking of using a cron job and a simple script that restarts the interface, provided the errors have increased since last check.
information is available from within /proc/net/dev its just a case of formatting that somehow and then comparing the 2 values over a time period