diff options
Diffstat (limited to 'drivers/net/tg3.c')
-rw-r--r-- | drivers/net/tg3.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/drivers/net/tg3.c b/drivers/net/tg3.c index 58740428dd07..9034a05734ef 100644 --- a/drivers/net/tg3.c +++ b/drivers/net/tg3.c | |||
@@ -64,8 +64,8 @@ | |||
64 | 64 | ||
65 | #define DRV_MODULE_NAME "tg3" | 65 | #define DRV_MODULE_NAME "tg3" |
66 | #define PFX DRV_MODULE_NAME ": " | 66 | #define PFX DRV_MODULE_NAME ": " |
67 | #define DRV_MODULE_VERSION "3.80" | 67 | #define DRV_MODULE_VERSION "3.81" |
68 | #define DRV_MODULE_RELDATE "August 2, 2007" | 68 | #define DRV_MODULE_RELDATE "September 5, 2007" |
69 | 69 | ||
70 | #define TG3_DEF_MAC_MODE 0 | 70 | #define TG3_DEF_MAC_MODE 0 |
71 | #define TG3_DEF_RX_MODE 0 | 71 | #define TG3_DEF_RX_MODE 0 |
@@ -7127,6 +7127,10 @@ static int tg3_open(struct net_device *dev) | |||
7127 | } else if (pci_enable_msi(tp->pdev) == 0) { | 7127 | } else if (pci_enable_msi(tp->pdev) == 0) { |
7128 | u32 msi_mode; | 7128 | u32 msi_mode; |
7129 | 7129 | ||
7130 | /* Hardware bug - MSI won't work if INTX disabled. */ | ||
7131 | if (tp->tg3_flags2 & TG3_FLG2_5780_CLASS) | ||
7132 | pci_intx(tp->pdev, 1); | ||
7133 | |||
7130 | msi_mode = tr32(MSGINT_MODE); | 7134 | msi_mode = tr32(MSGINT_MODE); |
7131 | tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE); | 7135 | tw32(MSGINT_MODE, msi_mode | MSGINT_MODE_ENABLE); |
7132 | tp->tg3_flags2 |= TG3_FLG2_USING_MSI; | 7136 | tp->tg3_flags2 |= TG3_FLG2_USING_MSI; |
@@ -12172,6 +12176,11 @@ static int tg3_resume(struct pci_dev *pdev) | |||
12172 | if (err) | 12176 | if (err) |
12173 | return err; | 12177 | return err; |
12174 | 12178 | ||
12179 | /* Hardware bug - MSI won't work if INTX disabled. */ | ||
12180 | if ((tp->tg3_flags2 & TG3_FLG2_5780_CLASS) && | ||
12181 | (tp->tg3_flags2 & TG3_FLG2_USING_MSI)) | ||
12182 | pci_intx(tp->pdev, 1); | ||
12183 | |||
12175 | netif_device_attach(dev); | 12184 | netif_device_attach(dev); |
12176 | 12185 | ||
12177 | tg3_full_lock(tp, 0); | 12186 | tg3_full_lock(tp, 0); |