Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 224983
b: refs/heads/master
c: c92bf70
h: refs/heads/master
i:
  224981: 144366d
  224979: 5c89072
  224975: 25b1981
v: v3
  • Loading branch information
Jon Mason authored and David S. Miller committed Dec 11, 2010
1 parent 992aa9d commit ebc84f9
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 8 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 528f727279ae840db8a06c94f5e82cdaeb00da6f
refs/heads/master: c92bf70dcb9d08f821e4c9f09f8fc328495ba998
25 changes: 18 additions & 7 deletions trunk/drivers/net/vxge/vxge-main.c
Original file line number Diff line number Diff line change
Expand Up @@ -4182,6 +4182,20 @@ static int vxge_probe_fw_update(struct vxgedev *vdev)
return ret;
}

static int __devinit is_sriov_initialized(struct pci_dev *pdev)
{
int pos;
u16 ctrl;

pos = pci_find_ext_capability(pdev, PCI_EXT_CAP_ID_SRIOV);
if (pos) {
pci_read_config_word(pdev, pos + PCI_SRIOV_CTRL, &ctrl);
if (ctrl & PCI_SRIOV_CTRL_VFE)
return 1;
}
return 0;
}

/**
* vxge_probe
* @pdev : structure containing the PCI related information of the device.
Expand Down Expand Up @@ -4370,14 +4384,13 @@ vxge_probe(struct pci_dev *pdev, const struct pci_device_id *pre)
num_vfs = vxge_get_num_vfs(function_mode) - 1;

/* Enable SRIOV mode, if firmware has SRIOV support and if it is a PF */
if (is_sriov(function_mode) && (max_config_dev > 1) &&
(ll_config->intr_type != INTA) &&
(is_privileged == VXGE_HW_OK)) {
ret = pci_enable_sriov(pdev, ((max_config_dev - 1) < num_vfs)
? (max_config_dev - 1) : num_vfs);
if (is_sriov(function_mode) && !is_sriov_initialized(pdev) &&
(ll_config->intr_type != INTA)) {
ret = pci_enable_sriov(pdev, num_vfs);
if (ret)
vxge_debug_ll_config(VXGE_ERR,
"Failed in enabling SRIOV mode: %d\n", ret);
/* No need to fail out, as an error here is non-fatal */
}

/*
Expand Down Expand Up @@ -4673,8 +4686,6 @@ static void __devexit vxge_remove(struct pci_dev *pdev)

iounmap(vdev->bar0);

pci_disable_sriov(pdev);

/* we are safe to free it now */
free_netdev(dev);

Expand Down

0 comments on commit ebc84f9

Please sign in to comment.