hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/drivers/net/ethernet/sfc/efx_common.c
....@@ -542,6 +542,8 @@
542542 /* Start the hardware monitor if there is one */
543543 efx_start_monitor(efx);
544544
545
+ efx_selftest_async_start(efx);
546
+
545547 /* Link state detection is normally event-driven; we have
546548 * to poll now because we could have missed a change
547549 */
....@@ -897,7 +899,7 @@
897899 * have changed by now. Now that we have the RTNL lock,
898900 * it cannot change again.
899901 */
900
- if (efx->state == STATE_READY)
902
+ if (efx_net_active(efx->state))
901903 (void)efx_reset(efx, method);
902904
903905 rtnl_unlock();
....@@ -907,7 +909,7 @@
907909 {
908910 enum reset_type method;
909911
910
- if (efx->state == STATE_RECOVERY) {
912
+ if (efx_recovering(efx->state)) {
911913 netif_dbg(efx, drv, efx->net_dev,
912914 "recovering: skip scheduling %s reset\n",
913915 RESET_TYPE(type));
....@@ -942,7 +944,7 @@
942944 /* If we're not READY then just leave the flags set as the cue
943945 * to abort probing or reschedule the reset later.
944946 */
945
- if (READ_ONCE(efx->state) != STATE_READY)
947
+ if (!efx_net_active(READ_ONCE(efx->state)))
946948 return;
947949
948950 /* efx_process_channel() will no longer read events once a
....@@ -1214,7 +1216,7 @@
12141216 rtnl_lock();
12151217
12161218 if (efx->state != STATE_DISABLED) {
1217
- efx->state = STATE_RECOVERY;
1219
+ efx->state = efx_recover(efx->state);
12181220 efx->reset_pending = 0;
12191221
12201222 efx_device_detach_sync(efx);
....@@ -1268,7 +1270,7 @@
12681270 netif_err(efx, hw, efx->net_dev,
12691271 "efx_reset failed after PCI error (%d)\n", rc);
12701272 } else {
1271
- efx->state = STATE_READY;
1273
+ efx->state = efx_recovered(efx->state);
12721274 netif_dbg(efx, hw, efx->net_dev,
12731275 "Done resetting and resuming IO after PCI error.\n");
12741276 }