|
@@ -2664,7 +2664,29 @@ static int reset_intel_generic_dev(struct pci_dev *dev, int probe)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+static int reset_intel_82599_sfp_virtfn(struct pci_dev *dev, int probe)
|
|
|
+{
|
|
|
+ int pos;
|
|
|
+
|
|
|
+ pos = pci_find_capability(dev, PCI_CAP_ID_EXP);
|
|
|
+ if (!pos)
|
|
|
+ return -ENOTTY;
|
|
|
+
|
|
|
+ if (probe)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ pci_write_config_word(dev, pos + PCI_EXP_DEVCTL,
|
|
|
+ PCI_EXP_DEVCTL_BCR_FLR);
|
|
|
+ msleep(100);
|
|
|
+
|
|
|
+ return 0;
|
|
|
+}
|
|
|
+
|
|
|
+#define PCI_DEVICE_ID_INTEL_82599_SFP_VF 0x10ed
|
|
|
+
|
|
|
struct pci_dev_reset_methods pci_dev_reset_methods[] = {
|
|
|
+ { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_82599_SFP_VF,
|
|
|
+ reset_intel_82599_sfp_virtfn },
|
|
|
{ PCI_VENDOR_ID_INTEL, PCI_ANY_ID,
|
|
|
reset_intel_generic_dev },
|
|
|
{ 0 }
|