ionic: stop watchdog timer earlier on remove
authorShannon Nelson <snelson@pensando.io>
Wed, 30 Sep 2020 17:48:27 +0000 (10:48 -0700)
committerDavid S. Miller <davem@davemloft.net>
Wed, 30 Sep 2020 22:11:09 +0000 (15:11 -0700)
We need to be better at making sure we don't have a link check
watchdog go off while we're shutting things down, so let's stop
the timer as soon as we start the remove.

Meanwhile, since that was the only thing in
ionic_dev_teardown(), simplify and remove that function.

Signed-off-by: Shannon Nelson <snelson@pensando.io>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/pensando/ionic/ionic_bus_pci.c
drivers/net/ethernet/pensando/ionic/ionic_dev.c
drivers/net/ethernet/pensando/ionic/ionic_dev.h

index d1d6fb6669e545428e7883129592e5c379d8cd44..2749ce009ebc1192502f5a329e02b12104cd4ca6 100644 (file)
@@ -350,7 +350,7 @@ err_out_port_reset:
 err_out_reset:
        ionic_reset(ionic);
 err_out_teardown:
-       ionic_dev_teardown(ionic);
+       del_timer_sync(&ionic->watchdog_timer);
        pci_clear_master(pdev);
        /* Don't fail the probe for these errors, keep
         * the hw interface around for inspection
@@ -378,6 +378,8 @@ static void ionic_remove(struct pci_dev *pdev)
        if (!ionic)
                return;
 
+       del_timer_sync(&ionic->watchdog_timer);
+
        if (ionic->lif) {
                ionic_devlink_unregister(ionic);
                ionic_lif_unregister(ionic->lif);
@@ -389,7 +391,6 @@ static void ionic_remove(struct pci_dev *pdev)
 
        ionic_port_reset(ionic);
        ionic_reset(ionic);
-       ionic_dev_teardown(ionic);
        pci_clear_master(pdev);
        ionic_unmap_bars(ionic);
        pci_release_regions(pdev);
index a02f710200daf9adc3d8600e4e2f484abcf53627..16b6b65e83194db2c04df9191d220f7552954615 100644 (file)
@@ -98,11 +98,6 @@ int ionic_dev_setup(struct ionic *ionic)
        return 0;
 }
 
-void ionic_dev_teardown(struct ionic *ionic)
-{
-       del_timer_sync(&ionic->watchdog_timer);
-}
-
 /* Devcmd Interface */
 int ionic_heartbeat_check(struct ionic *ionic)
 {
index 8842dc4a716f187d393f919f12428c9e8a57471c..c109cd5a04713e28328ed233ff5a9e15092e36fa 100644 (file)
@@ -283,7 +283,6 @@ static inline bool ionic_q_has_space(struct ionic_queue *q, unsigned int want)
 
 void ionic_init_devinfo(struct ionic *ionic);
 int ionic_dev_setup(struct ionic *ionic);
-void ionic_dev_teardown(struct ionic *ionic);
 
 void ionic_dev_cmd_go(struct ionic_dev *idev, union ionic_dev_cmd *cmd);
 u8 ionic_dev_cmd_status(struct ionic_dev *idev);