]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
net: hns3: Implement shutdown ops in hns3 pci driver
authorYunsheng Lin <linyunsheng@huawei.com>
Mon, 3 Sep 2018 10:21:49 +0000 (11:21 +0100)
committerDavid S. Miller <davem@davemloft.net>
Tue, 4 Sep 2018 05:04:45 +0000 (22:04 -0700)
This patch implements shutdown ops in hns3 pci driver, which
unloads the hns3 driver and set the power state to D3hot.

Signed-off-by: Yunsheng Lin <linyunsheng@huawei.com>
Signed-off-by: Peng Li <lipeng321@huawei.com>
Signed-off-by: Salil Mehta <salil.mehta@huawei.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/hisilicon/hns3/hns3_enet.c

index 955c4ab18b03bb300ec7beb8f8bcf953e817b2fc..75e8ee9d4e2e2ba5eb0d49f65f6b47f7504839fb 100644 (file)
@@ -1662,11 +1662,24 @@ static int hns3_pci_sriov_configure(struct pci_dev *pdev, int num_vfs)
        return 0;
 }
 
+static void hns3_shutdown(struct pci_dev *pdev)
+{
+       struct hnae3_ae_dev *ae_dev = pci_get_drvdata(pdev);
+
+       hnae3_unregister_ae_dev(ae_dev);
+       devm_kfree(&pdev->dev, ae_dev);
+       pci_set_drvdata(pdev, NULL);
+
+       if (system_state == SYSTEM_POWER_OFF)
+               pci_set_power_state(pdev, PCI_D3hot);
+}
+
 static struct pci_driver hns3_driver = {
        .name     = hns3_driver_name,
        .id_table = hns3_pci_tbl,
        .probe    = hns3_probe,
        .remove   = hns3_remove,
+       .shutdown = hns3_shutdown,
        .sriov_configure = hns3_pci_sriov_configure,
 };