|
@@ -965,9 +965,6 @@ static void tg3_ape_driver_state_change(struct tg3 *tp, int kind)
|
|
|
|
|
|
event = APE_EVENT_STATUS_STATE_UNLOAD;
|
|
|
break;
|
|
|
- case RESET_KIND_SUSPEND:
|
|
|
- event = APE_EVENT_STATUS_STATE_SUSPEND;
|
|
|
- break;
|
|
|
default:
|
|
|
return;
|
|
|
}
|
|
@@ -1739,10 +1736,6 @@ static void tg3_write_sig_pre_reset(struct tg3 *tp, int kind)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if (kind == RESET_KIND_INIT ||
|
|
|
- kind == RESET_KIND_SUSPEND)
|
|
|
- tg3_ape_driver_state_change(tp, kind);
|
|
|
}
|
|
|
|
|
|
/* tp->lock is held. */
|
|
@@ -1764,9 +1757,6 @@ static void tg3_write_sig_post_reset(struct tg3 *tp, int kind)
|
|
|
break;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
- if (kind == RESET_KIND_SHUTDOWN)
|
|
|
- tg3_ape_driver_state_change(tp, kind);
|
|
|
}
|
|
|
|
|
|
/* tp->lock is held. */
|
|
@@ -4206,6 +4196,8 @@ static int tg3_power_down_prepare(struct tg3 *tp)
|
|
|
|
|
|
tg3_write_sig_post_reset(tp, RESET_KIND_SHUTDOWN);
|
|
|
|
|
|
+ tg3_ape_driver_state_change(tp, RESET_KIND_SHUTDOWN);
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -11244,6 +11236,9 @@ static int tg3_start(struct tg3 *tp, bool reset_phy, bool test_irq,
|
|
|
|
|
|
tg3_full_lock(tp, 0);
|
|
|
|
|
|
+ if (init)
|
|
|
+ tg3_ape_driver_state_change(tp, RESET_KIND_INIT);
|
|
|
+
|
|
|
err = tg3_init_hw(tp, reset_phy);
|
|
|
if (err) {
|
|
|
tg3_halt(tp, RESET_KIND_SHUTDOWN, 1);
|
|
@@ -13360,11 +13355,13 @@ static void tg3_self_test(struct net_device *dev, struct ethtool_test *etest,
|
|
|
struct tg3 *tp = netdev_priv(dev);
|
|
|
bool doextlpbk = etest->flags & ETH_TEST_FL_EXTERNAL_LB;
|
|
|
|
|
|
- if ((tp->phy_flags & TG3_PHYFLG_IS_LOW_POWER) &&
|
|
|
- tg3_power_up(tp)) {
|
|
|
- etest->flags |= ETH_TEST_FL_FAILED;
|
|
|
- memset(data, 1, sizeof(u64) * TG3_NUM_TEST);
|
|
|
- return;
|
|
|
+ if (tp->phy_flags & TG3_PHYFLG_IS_LOW_POWER) {
|
|
|
+ if (tg3_power_up(tp)) {
|
|
|
+ etest->flags |= ETH_TEST_FL_FAILED;
|
|
|
+ memset(data, 1, sizeof(u64) * TG3_NUM_TEST);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ tg3_ape_driver_state_change(tp, RESET_KIND_INIT);
|
|
|
}
|
|
|
|
|
|
memset(data, 0, sizeof(u64) * TG3_NUM_TEST);
|
|
@@ -17670,6 +17667,8 @@ static int tg3_resume(struct device *device)
|
|
|
|
|
|
tg3_full_lock(tp, 0);
|
|
|
|
|
|
+ tg3_ape_driver_state_change(tp, RESET_KIND_INIT);
|
|
|
+
|
|
|
tg3_flag_set(tp, INIT_COMPLETE);
|
|
|
err = tg3_restart_hw(tp,
|
|
|
!(tp->phy_flags & TG3_PHYFLG_KEEP_LINK_ON_PWRDN));
|
|
@@ -17804,6 +17803,7 @@ static void tg3_io_resume(struct pci_dev *pdev)
|
|
|
goto done;
|
|
|
|
|
|
tg3_full_lock(tp, 0);
|
|
|
+ tg3_ape_driver_state_change(tp, RESET_KIND_INIT);
|
|
|
tg3_flag_set(tp, INIT_COMPLETE);
|
|
|
err = tg3_restart_hw(tp, true);
|
|
|
if (err) {
|