tg3: use flush_work_keventd()
Convert tg3 over to flush_work_keventd(). Remove nasty now-unneeded deadlock avoidance logic. (akpm: bypassed maintainers, sorry. There are other patches which depend on this) Cc: "Maciej W. Rozycki" <macro@linux-mips.org> Cc: David Howells <dhowells@redhat.com> Cc: "David S. Miller" <davem@davemloft.net> Cc: Michael Chan <mchan@broadcom.com> Cc: Jeff Garzik <jeff@garzik.org> Cc: Oleg Nesterov <oleg@tv-sign.ru> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
This commit is contained in:
parent
19a75d83ff
commit
2b3cb2e778
2 changed files with 2 additions and 11 deletions
|
@ -3716,10 +3716,8 @@ static void tg3_reset_task(struct work_struct *work)
|
|||
unsigned int restart_timer;
|
||||
|
||||
tg3_full_lock(tp, 0);
|
||||
tp->tg3_flags |= TG3_FLAG_IN_RESET_TASK;
|
||||
|
||||
if (!netif_running(tp->dev)) {
|
||||
tp->tg3_flags &= ~TG3_FLAG_IN_RESET_TASK;
|
||||
tg3_full_unlock(tp);
|
||||
return;
|
||||
}
|
||||
|
@ -3750,8 +3748,6 @@ static void tg3_reset_task(struct work_struct *work)
|
|||
mod_timer(&tp->timer, jiffies + 1);
|
||||
|
||||
out:
|
||||
tp->tg3_flags &= ~TG3_FLAG_IN_RESET_TASK;
|
||||
|
||||
tg3_full_unlock(tp);
|
||||
}
|
||||
|
||||
|
@ -7390,12 +7386,7 @@ static int tg3_close(struct net_device *dev)
|
|||
{
|
||||
struct tg3 *tp = netdev_priv(dev);
|
||||
|
||||
/* Calling flush_scheduled_work() may deadlock because
|
||||
* linkwatch_event() may be on the workqueue and it will try to get
|
||||
* the rtnl_lock which we are holding.
|
||||
*/
|
||||
while (tp->tg3_flags & TG3_FLAG_IN_RESET_TASK)
|
||||
msleep(1);
|
||||
flush_work_keventd(&tp->reset_task);
|
||||
|
||||
netif_stop_queue(dev);
|
||||
|
||||
|
|
|
@ -2228,7 +2228,7 @@ struct tg3 {
|
|||
#define TG3_FLAG_JUMBO_RING_ENABLE 0x00800000
|
||||
#define TG3_FLAG_10_100_ONLY 0x01000000
|
||||
#define TG3_FLAG_PAUSE_AUTONEG 0x02000000
|
||||
#define TG3_FLAG_IN_RESET_TASK 0x04000000
|
||||
|
||||
#define TG3_FLAG_40BIT_DMA_BUG 0x08000000
|
||||
#define TG3_FLAG_BROKEN_CHECKSUMS 0x10000000
|
||||
#define TG3_FLAG_SUPPORT_MSI 0x20000000
|
||||
|
|
Loading…
Reference in a new issue