|
@@ -217,7 +217,7 @@ void nitrox_put_device(struct nitrox_device *ndev)
|
|
|
smp_mb__after_atomic();
|
|
|
}
|
|
|
|
|
|
-static int nitrox_reset_device(struct pci_dev *pdev)
|
|
|
+static int nitrox_device_flr(struct pci_dev *pdev)
|
|
|
{
|
|
|
int pos = 0;
|
|
|
|
|
@@ -227,15 +227,10 @@ static int nitrox_reset_device(struct pci_dev *pdev)
|
|
|
return -ENOMEM;
|
|
|
}
|
|
|
|
|
|
- pos = pci_pcie_cap(pdev);
|
|
|
- if (!pos)
|
|
|
- return -ENOTTY;
|
|
|
+ /* check flr support */
|
|
|
+ if (pcie_has_flr(pdev))
|
|
|
+ pcie_flr(pdev);
|
|
|
|
|
|
- if (!pci_wait_for_pending_transaction(pdev))
|
|
|
- dev_err(&pdev->dev, "waiting for pending transaction\n");
|
|
|
-
|
|
|
- pcie_capability_set_word(pdev, PCI_EXP_DEVCTL, PCI_EXP_DEVCTL_BCR_FLR);
|
|
|
- msleep(100);
|
|
|
pci_restore_state(pdev);
|
|
|
|
|
|
return 0;
|
|
@@ -345,7 +340,7 @@ static int nitrox_probe(struct pci_dev *pdev,
|
|
|
return err;
|
|
|
|
|
|
/* do FLR */
|
|
|
- err = nitrox_reset_device(pdev);
|
|
|
+ err = nitrox_device_flr(pdev);
|
|
|
if (err) {
|
|
|
dev_err(&pdev->dev, "FLR failed\n");
|
|
|
pci_disable_device(pdev);
|