Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6cb5e577 authored by Andy Gospodarek's avatar Andy Gospodarek Committed by Jeff Garzik
Browse files

igb: fix legacy mode irq issue



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: default avatarAndy Gospodarek <andy@greyhouse.net>
Signed-off-by: default avatarAuke Kok <auke-jan.h.kok@intel.com>
Signed-off-by: default avatarJeff Garzik <jeff@garzik.org>
parent 5bd3670f
Loading
Loading
Loading
Loading
+2 −7
Original line number Diff line number Diff line
@@ -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;
		}
@@ -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;