Skip to content

Commit

Permalink
igb: fix legacy mode irq issue
Browse files Browse the repository at this point in the history
I booted an igb kernel with the option pci=nomsi and instantly noticed
that interrupts no longer worked on my igb device.  I took a look at the
interrupt initialization and quickly discovered a comment stating:

"DO NOT USE EIAME or IAME in legacy mode"

It seemed a bit odd that bits to enable IAM were being set in legacy
interrupt mode, so I dropped out the following parts and interrupts
began working fine again.

[Updated code flow and a nitpick spelling error --Auke]

Signed-off-by: Andy Gospodarek <andy@greyhouse.net>
Signed-off-by: Auke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: Jeff Garzik <jeff@garzik.org>
  • Loading branch information
Andy Gospodarek authored and Jeff Garzik committed Feb 24, 2008
1 parent 5bd3670 commit 6cb5e57
Showing 1 changed file with 2 additions and 7 deletions.
9 changes: 2 additions & 7 deletions drivers/net/igb/igb_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ static int igb_request_irq(struct igb_adapter *adapter)
err = igb_request_msix(adapter);
if (!err) {
/* enable IAM, auto-mask,
* DO NOT USE EIAME or IAME in legacy mode */
* DO NOT USE EIAM or IAM in legacy mode */
wr32(E1000_IAM, IMS_ENABLE_MASK);
goto request_done;
}
Expand All @@ -465,14 +465,9 @@ static int igb_request_irq(struct igb_adapter *adapter)
err = request_irq(adapter->pdev->irq, &igb_intr, IRQF_SHARED,
netdev->name, netdev);

if (err) {
if (err)
dev_err(&adapter->pdev->dev, "Error %d getting interrupt\n",
err);
goto request_done;
}

/* enable IAM, auto-mask */
wr32(E1000_IAM, IMS_ENABLE_MASK);

request_done:
return err;
Expand Down

0 comments on commit 6cb5e57

Please sign in to comment.