tg3: Eliminate timer race with reset_task
authorMatt Carlson <mcarlson@broadcom.com>
Fri, 4 Nov 2011 09:15:04 +0000 (09:15 +0000)
committerDavid S. Miller <davem@davemloft.net>
Fri, 4 Nov 2011 21:31:48 +0000 (17:31 -0400)
commit5b1906241905d9bd1abe920854b3d43c2b9c85e1
treed259390621daa923977f00fb43415a09da565cd5
parentdb21997379906fe7657d360674e1106d80b020a4
tg3: Eliminate timer race with reset_task

During shutdown, it is impossible to reliably disable the timer and
reset_task threads.  Each thread can schedule the other, which leads to
shutdown code that chases its tail.

To fix the problem, this patch removes the ability of tg3_reset_task to
schedule a new timer thread.  To support this change, tg3_timer no
longer terminates itself, but rather goes into a polling mode.

Signed-off-by: Matt Carlson <mcarlson@broadcom.com>
Reviewed-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/broadcom/tg3.c
drivers/net/ethernet/broadcom/tg3.h