tg3: Fix INTx fallback when MSI fails
authorAndre Detsch <adetsch@br.ibm.com>
Mon, 26 Apr 2010 07:27:07 +0000 (07:27 +0000)
committerDavid S. Miller <davem@davemloft.net>
Mon, 26 Apr 2010 18:15:49 +0000 (11:15 -0700)
tg3: Fix INTx fallback when MSI fails

MSI setup changes the value of irq_vec in struct tg3 *tp.
This attribute must be taken into account and restored before
we try to do a new request_irq for INTx fallback.

In powerpc, the original code was leading to an EINVAL return within
request_irq, because the driver was trying to use the disabled MSI
virtual irq number instead of tp->pdev->irq.

Signed-off-by: Andre Detsch <adetsch@br.ibm.com>
Acked-by: Michael Chan <mchan@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/tg3.c

index 22cf1c446de3fbbe4afe37b3eaf7fc766e189a8b..ecc41cffb470d3d16b97e5fe61768f57c4822d65 100644 (file)
@@ -8633,6 +8633,7 @@ static int tg3_test_msi(struct tg3 *tp)
        pci_disable_msi(tp->pdev);
 
        tp->tg3_flags2 &= ~TG3_FLG2_USING_MSI;
+       tp->napi[0].irq_vec = tp->pdev->irq;
 
        err = tg3_request_irq(tp, 0);
        if (err)