Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 35763066 authored by Nithin Nayak Sujir's avatar Nithin Nayak Sujir Committed by David S. Miller
Browse files

tg3: Fix inconsistent locking for tg3_netif_start().



Every caller holds tp->lock when calling tg3_netif_start() except
tg3_io_resume().  Fix it so that it is all consistent.  The subsequent
PTP patches add tg3_ptp_resume() to tg3_netif_start() and the tp->lock
is required.

Signed-off-by: default avatarNithin Nayak Sujir <nsujir@broadcom.com>
Signed-off-by: default avatarMichael Chan <mchan@broadcom.com>
Acked-by: default avatarRichard Cochran <richardcochran@gmail.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 682d7978
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -6525,6 +6525,7 @@ static inline void tg3_netif_stop(struct tg3 *tp)
	netif_tx_disable(tp->dev);
}

/* tp->lock must be held */
static inline void tg3_netif_start(struct tg3 *tp)
{
	/* NOTE: unconditional netif_tx_wake_all_queues is only
@@ -16599,8 +16600,8 @@ static void tg3_io_resume(struct pci_dev *pdev)
	tg3_full_lock(tp, 0);
	tg3_flag_set(tp, INIT_COMPLETE);
	err = tg3_restart_hw(tp, 1);
	tg3_full_unlock(tp);
	if (err) {
		tg3_full_unlock(tp);
		netdev_err(netdev, "Cannot restart hardware after reset.\n");
		goto done;
	}
@@ -16611,6 +16612,8 @@ static void tg3_io_resume(struct pci_dev *pdev)

	tg3_netif_start(tp);

	tg3_full_unlock(tp);

	tg3_phy_start(tp);

done: