The rx setup in init_ring() in drivers/net/natsemi.c in 2.4.6 is miscompiled by several gcc-2.95 versions. I could reproduce it with 2.95.1, and I received bug reports with gcc version 2.95.2 20000220 (Debian GNU/Linux) gcc 2.95.3 19991030 from Mandrake 7.2 egcs-1.12 and rh gcc 2.96-85 are not affected. Symptom: receive process hangs after 2 packets. The patch also cleans up the suspend/resume synchronization and removes 2 superflous (& wrong) spin_unlock calls. -- Manfred