aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDhananjay Phadke <dhananjay@netxen.com>2009-05-08 18:02:27 -0400
committerDavid S. Miller <davem@davemloft.net>2009-05-09 16:13:35 -0400
commit7a2469ce4d8984722d65628969ad6f8b09da136f (patch)
treecc0b1e1b060882f68575b6cfc4597b759e901881
parent61de71c67caec39df0a854a1ef5be0c6be385c2a (diff)
netxen: cache msi register offset
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>
-rw-r--r--drivers/net/netxen/netxen_nic.h3
-rw-r--r--drivers/net/netxen/netxen_nic_main.c4
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h
index 9350c8663fd..ab11c2b3f0f 100644
--- a/drivers/net/netxen/netxen_nic.h
+++ b/drivers/net/netxen/netxen_nic.h
@@ -1257,6 +1257,9 @@ struct netxen_adapter {
1257 u32 irq; 1257 u32 irq;
1258 u32 temp; 1258 u32 temp;
1259 1259
1260 u32 msi_tgt_status;
1261 u32 resv4;
1262
1260 struct netxen_adapter_stats stats; 1263 struct netxen_adapter_stats stats;
1261 1264
1262 struct netxen_recv_context recv_ctx; 1265 struct netxen_recv_context recv_ctx;
diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c
index 83dadfd78c3..edb4bcda71e 100644
--- a/drivers/net/netxen/netxen_nic_main.c
+++ b/drivers/net/netxen/netxen_nic_main.c
@@ -525,6 +525,8 @@ netxen_setup_intr(struct netxen_adapter *adapter)
525request_msi: 525request_msi:
526 if (use_msi && !pci_enable_msi(pdev)) { 526 if (use_msi && !pci_enable_msi(pdev)) {
527 adapter->flags |= NETXEN_NIC_MSI_ENABLED; 527 adapter->flags |= NETXEN_NIC_MSI_ENABLED;
528 adapter->msi_tgt_status =
529 msi_tgt_status[adapter->ahw.pci_func];
528 dev_info(&pdev->dev, "using msi interrupts\n"); 530 dev_info(&pdev->dev, "using msi interrupts\n");
529 } else 531 } else
530 dev_info(&pdev->dev, "using legacy interrupts\n"); 532 dev_info(&pdev->dev, "using legacy interrupts\n");
@@ -1701,7 +1703,7 @@ static irqreturn_t netxen_msi_intr(int irq, void *data)
1701 1703
1702 /* clear interrupt */ 1704 /* clear interrupt */
1703 adapter->pci_write_immediate(adapter, 1705 adapter->pci_write_immediate(adapter,
1704 msi_tgt_status[adapter->ahw.pci_func], 0xffffffff); 1706 adapter->msi_tgt_status, 0xffffffff);
1705 1707
1706 napi_schedule(&sds_ring->napi); 1708 napi_schedule(&sds_ring->napi);
1707 return IRQ_HANDLED; 1709 return IRQ_HANDLED;