Comment 23 for bug 150515

Revision history for this message
W Unruh (unruh) wrote :

The problem I think was that the adapter->ErrorTimer.expires variable ( which says when the timer is supposed to expire) was set only once. Thus after the first return, the expires time was in the past, and the timer returns immediately which resets the timer which returns immediately, etc. This should have always caused trouble, not just on the tickless kernel. I suspect that originally "immediately" meant once per jiffie, while on the tickless kernel it means "as fast as possible". Ie it originally churned at 300 times per second and now was going at 10000 times per second.

Note that originally it was set ( in et131x_initpci.c) as
adapter->ErrorTimer.expires = jiffies + TX_ERROR_PERIOD * HZ / 1000;
which is supposed to be once a second since TX_ERROR_PERIOD is 1000. The above fix does it once every 30 sec. (there are HZ jiffies /sec) I have no idea if this makes any difference.

This fix has not made it to sourceforge. The latest sourceforge version is 1.2.3-3 which contains a lot of the fixes needed to run and compile this driver on later kernels, but it does not contain the add_timer fix.