In trying to upgrade to 3.8, the rl driver complains from rl_diag that loopback failed. There is a bit of code that doesn't make sense to me:
* Wait for it to propagate through the chip */ DELAY(100000); for (i = 0; i < RL_TIMEOUT; i++) { status = CSR_READ_2(sc, RL_ISR); if ((status & (RL_ISR_TIMEOUT_EXPIRED|RL_ISR_RX_OK)) == ^^ (RL_ISR_TIMEOUT_EXPIRED|RL_ISR_RX_OK)) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ break; DELAY(10); } if (i == RL_TIMEOUT) { printf("%s: diagnostic failed, failed to receive packet " "in loopback mode\n", sc->sc_dev.dv_xname); error = EIO; goto done; } It appears that the loop will always run RL_TIMEOUT cycles because the test is for >both< RL_ISR_TIMEOUT_EXPIRED and RL_ISR_RX_OK. On my systems, 3.7 runs the rl8169 fine, but fails the attach with the above message. I believe the marked code should be removed, leaving only the test for either of the two status bits being true. Anyone have an opinion? thanks Geoff Steckel [EMAIL PROTECTED]