netxen: cache msi register offset
authorDhananjay Phadke <dhananjay@netxen.com>
Fri, 8 May 2009 22:02:27 +0000 (22:02 +0000)
committerDavid S. Miller <davem@davemloft.net>
Sat, 9 May 2009 20:13:35 +0000 (13:13 -0700)
Store msi target status register offset in adapter struct.
This avoids contention on msi_tgt_status table from interrupt
hadlers of different pci function.

Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/netxen/netxen_nic.h
drivers/net/netxen/netxen_nic_main.c

index 9350c86..ab11c2b 100644 (file)
@@ -1257,6 +1257,9 @@ struct netxen_adapter {
        u32 irq;
        u32 temp;
 
+       u32 msi_tgt_status;
+       u32 resv4;
+
        struct netxen_adapter_stats stats;
 
        struct netxen_recv_context recv_ctx;
index 83dadfd..edb4bcd 100644 (file)
@@ -525,6 +525,8 @@ netxen_setup_intr(struct netxen_adapter *adapter)
 request_msi:
                if (use_msi && !pci_enable_msi(pdev)) {
                        adapter->flags |= NETXEN_NIC_MSI_ENABLED;
+                       adapter->msi_tgt_status =
+                               msi_tgt_status[adapter->ahw.pci_func];
                        dev_info(&pdev->dev, "using msi interrupts\n");
                } else
                        dev_info(&pdev->dev, "using legacy interrupts\n");
@@ -1701,7 +1703,7 @@ static irqreturn_t netxen_msi_intr(int irq, void *data)
 
        /* clear interrupt */
        adapter->pci_write_immediate(adapter,
-                       msi_tgt_status[adapter->ahw.pci_func], 0xffffffff);
+                       adapter->msi_tgt_status, 0xffffffff);
 
        napi_schedule(&sds_ring->napi);
        return IRQ_HANDLED;