diff options
author | Ayaz Abdulla <aabdulla@nvidia.com> | 2009-02-07 03:24:15 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-02-07 03:24:15 -0500 |
commit | b6e4405bf7241ae91c497e021370066fcfb196c8 (patch) | |
tree | a1f369143df2a7d657407f17ae48a6d6fbd34ffb | |
parent | cac1c52c3621b46e3be49cf7887a7cfa393890de (diff) |
forcedeth: msi interrupt fix
This patch fixes an issue with the suspend/resume cycle with msi
interrupts. See bugzilla number 10487 for more details. The fix is to
re-setup a private msi pci config offset field.
Signed-off-by: Ayaz Abdulla <aabdulla@nvidia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r-- | drivers/net/forcedeth.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/net/forcedeth.c b/drivers/net/forcedeth.c index da7c9ee069b5..47962ed4b04c 100644 --- a/drivers/net/forcedeth.c +++ b/drivers/net/forcedeth.c | |||
@@ -589,6 +589,9 @@ union ring_type { | |||
589 | #define NV_MSI_X_VECTOR_TX 0x1 | 589 | #define NV_MSI_X_VECTOR_TX 0x1 |
590 | #define NV_MSI_X_VECTOR_OTHER 0x2 | 590 | #define NV_MSI_X_VECTOR_OTHER 0x2 |
591 | 591 | ||
592 | #define NV_MSI_PRIV_OFFSET 0x68 | ||
593 | #define NV_MSI_PRIV_VALUE 0xffffffff | ||
594 | |||
592 | #define NV_RESTART_TX 0x1 | 595 | #define NV_RESTART_TX 0x1 |
593 | #define NV_RESTART_RX 0x2 | 596 | #define NV_RESTART_RX 0x2 |
594 | 597 | ||
@@ -6074,6 +6077,8 @@ static int nv_resume(struct pci_dev *pdev) | |||
6074 | for (i = 0;i <= np->register_size/sizeof(u32); i++) | 6077 | for (i = 0;i <= np->register_size/sizeof(u32); i++) |
6075 | writel(np->saved_config_space[i], base+i*sizeof(u32)); | 6078 | writel(np->saved_config_space[i], base+i*sizeof(u32)); |
6076 | 6079 | ||
6080 | pci_write_config_dword(pdev, NV_MSI_PRIV_OFFSET, NV_MSI_PRIV_VALUE); | ||
6081 | |||
6077 | netif_device_attach(dev); | 6082 | netif_device_attach(dev); |
6078 | if (netif_running(dev)) { | 6083 | if (netif_running(dev)) { |
6079 | rc = nv_open(dev); | 6084 | rc = nv_open(dev); |