diff options
author | Dhananjay Phadke <dhananjay@netxen.com> | 2009-05-08 22:02:27 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-05-09 13:13:35 -0700 |
commit | 7a2469ce4d8984722d65628969ad6f8b09da136f (patch) | |
tree | cc0b1e1b060882f68575b6cfc4597b759e901881 /drivers | |
parent | 61de71c67caec39df0a854a1ef5be0c6be385c2a (diff) | |
download | kernel_samsung_smdk4412-7a2469ce4d8984722d65628969ad6f8b09da136f.zip kernel_samsung_smdk4412-7a2469ce4d8984722d65628969ad6f8b09da136f.tar.gz kernel_samsung_smdk4412-7a2469ce4d8984722d65628969ad6f8b09da136f.tar.bz2 |
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>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/netxen/netxen_nic.h | 3 | ||||
-rw-r--r-- | drivers/net/netxen/netxen_nic_main.c | 4 |
2 files changed, 6 insertions, 1 deletions
diff --git a/drivers/net/netxen/netxen_nic.h b/drivers/net/netxen/netxen_nic.h index 9350c86..ab11c2b 100644 --- a/drivers/net/netxen/netxen_nic.h +++ b/drivers/net/netxen/netxen_nic.h @@ -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; diff --git a/drivers/net/netxen/netxen_nic_main.c b/drivers/net/netxen/netxen_nic_main.c index 83dadfd..edb4bcd 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) 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; |