diff options
-rw-r--r-- | drivers/net/ethernet/amazon/ena/ena_netdev.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/drivers/net/ethernet/amazon/ena/ena_netdev.c b/drivers/net/ethernet/amazon/ena/ena_netdev.c index 69e684fd2787..035d47d2179a 100644 --- a/drivers/net/ethernet/amazon/ena/ena_netdev.c +++ b/drivers/net/ethernet/amazon/ena/ena_netdev.c | |||
@@ -76,7 +76,7 @@ MODULE_DEVICE_TABLE(pci, ena_pci_tbl); | |||
76 | 76 | ||
77 | static int ena_rss_init_default(struct ena_adapter *adapter); | 77 | static int ena_rss_init_default(struct ena_adapter *adapter); |
78 | static void check_for_admin_com_state(struct ena_adapter *adapter); | 78 | static void check_for_admin_com_state(struct ena_adapter *adapter); |
79 | static void ena_destroy_device(struct ena_adapter *adapter); | 79 | static void ena_destroy_device(struct ena_adapter *adapter, bool graceful); |
80 | static int ena_restore_device(struct ena_adapter *adapter); | 80 | static int ena_restore_device(struct ena_adapter *adapter); |
81 | 81 | ||
82 | static void ena_tx_timeout(struct net_device *dev) | 82 | static void ena_tx_timeout(struct net_device *dev) |
@@ -1900,7 +1900,7 @@ static int ena_close(struct net_device *netdev) | |||
1900 | "Destroy failure, restarting device\n"); | 1900 | "Destroy failure, restarting device\n"); |
1901 | ena_dump_stats_to_dmesg(adapter); | 1901 | ena_dump_stats_to_dmesg(adapter); |
1902 | /* rtnl lock already obtained in dev_ioctl() layer */ | 1902 | /* rtnl lock already obtained in dev_ioctl() layer */ |
1903 | ena_destroy_device(adapter); | 1903 | ena_destroy_device(adapter, false); |
1904 | ena_restore_device(adapter); | 1904 | ena_restore_device(adapter); |
1905 | } | 1905 | } |
1906 | 1906 | ||
@@ -2550,7 +2550,7 @@ err_disable_msix: | |||
2550 | return rc; | 2550 | return rc; |
2551 | } | 2551 | } |
2552 | 2552 | ||
2553 | static void ena_destroy_device(struct ena_adapter *adapter) | 2553 | static void ena_destroy_device(struct ena_adapter *adapter, bool graceful) |
2554 | { | 2554 | { |
2555 | struct net_device *netdev = adapter->netdev; | 2555 | struct net_device *netdev = adapter->netdev; |
2556 | struct ena_com_dev *ena_dev = adapter->ena_dev; | 2556 | struct ena_com_dev *ena_dev = adapter->ena_dev; |
@@ -2563,7 +2563,8 @@ static void ena_destroy_device(struct ena_adapter *adapter) | |||
2563 | dev_up = test_bit(ENA_FLAG_DEV_UP, &adapter->flags); | 2563 | dev_up = test_bit(ENA_FLAG_DEV_UP, &adapter->flags); |
2564 | adapter->dev_up_before_reset = dev_up; | 2564 | adapter->dev_up_before_reset = dev_up; |
2565 | 2565 | ||
2566 | ena_com_set_admin_running_state(ena_dev, false); | 2566 | if (!graceful) |
2567 | ena_com_set_admin_running_state(ena_dev, false); | ||
2567 | 2568 | ||
2568 | if (test_bit(ENA_FLAG_DEV_UP, &adapter->flags)) | 2569 | if (test_bit(ENA_FLAG_DEV_UP, &adapter->flags)) |
2569 | ena_down(adapter); | 2570 | ena_down(adapter); |
@@ -2665,7 +2666,7 @@ static void ena_fw_reset_device(struct work_struct *work) | |||
2665 | return; | 2666 | return; |
2666 | } | 2667 | } |
2667 | rtnl_lock(); | 2668 | rtnl_lock(); |
2668 | ena_destroy_device(adapter); | 2669 | ena_destroy_device(adapter, false); |
2669 | ena_restore_device(adapter); | 2670 | ena_restore_device(adapter); |
2670 | rtnl_unlock(); | 2671 | rtnl_unlock(); |
2671 | } | 2672 | } |
@@ -3467,7 +3468,7 @@ static int ena_suspend(struct pci_dev *pdev, pm_message_t state) | |||
3467 | "ignoring device reset request as the device is being suspended\n"); | 3468 | "ignoring device reset request as the device is being suspended\n"); |
3468 | clear_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags); | 3469 | clear_bit(ENA_FLAG_TRIGGER_RESET, &adapter->flags); |
3469 | } | 3470 | } |
3470 | ena_destroy_device(adapter); | 3471 | ena_destroy_device(adapter, true); |
3471 | rtnl_unlock(); | 3472 | rtnl_unlock(); |
3472 | return 0; | 3473 | return 0; |
3473 | } | 3474 | } |