e1000: rework driver hardware reset locking
authorAuke Kok <auke-jan.h.kok@intel.com>
Tue, 27 Jun 2006 16:06:28 +0000 (09:06 -0700)
committerAuke Kok <juke-jan.h.kok@intel.com>
Tue, 27 Jun 2006 16:06:28 +0000 (09:06 -0700)
commit2db10a081c5c1082d58809a1bcf1a6073f4db160
treef54772ef60f2c5bf5f8d602a83d6dc508158a0e0
parentacfbc9fde2ec7f304398f6ad7644002e07bf84bc
e1000: rework driver hardware reset locking

After studying the driver mac reset code it was found that there
were multiple race conditions possible to reset the unit twice or
bring it e1000_up() double. This fixes all occurences where the
driver needs to reset the mac.

We also remove irq requesting/releasing into _open and _close so
that while the device is _up we will never touch the irq's. This fixes
the double free irq bug that people saw.

To make sure that the watchdog task doesn't cause another race we let
it run as a non-scheduled task.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
drivers/net/e1000/e1000.h
drivers/net/e1000/e1000_ethtool.c
drivers/net/e1000/e1000_main.c