diff options
author | Vasanthy Kolluri <vkolluri@cisco.com> | 2011-06-09 06:37:02 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2011-06-09 17:58:09 -0400 |
commit | 7d260ec26ee56495bcb32491d44ed4590cc838a0 (patch) | |
tree | 38e64fbdb28fbe522da30800c890037129c8dc1f /drivers/net/enic | |
parent | e1fb77bfd062b8d38fb0e428ae0edcd2dc4ec07b (diff) |
enic: Get/Set interrupt resource index for transmit and receive queues
Instead of deriving the index of a transmit/receive interrupt resource
from the transmit/receive queue index, always save and retrieve it
using an additional variable.
Signed-off-by: Christian Benvenuti <benve@cisco.com>
Signed-off-by: Danny Guo <dannguo@cisco.com>
Signed-off-by: Vasanthy Kolluri <vkolluri@cisco.com>
Signed-off-by: Roopa Prabhu <roprabhu@cisco.com>
Signed-off-by: David Wang <dwang2@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/enic')
-rw-r--r-- | drivers/net/enic/enic.h | 2 | ||||
-rw-r--r-- | drivers/net/enic/enic_main.c | 4 | ||||
-rw-r--r-- | drivers/net/enic/vnic_cq.c | 2 | ||||
-rw-r--r-- | drivers/net/enic/vnic_cq.h | 1 |
4 files changed, 6 insertions, 3 deletions
diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h index 23e21037410f..2dcf310d837c 100644 --- a/drivers/net/enic/enic.h +++ b/drivers/net/enic/enic.h | |||
@@ -32,7 +32,7 @@ | |||
32 | 32 | ||
33 | #define DRV_NAME "enic" | 33 | #define DRV_NAME "enic" |
34 | #define DRV_DESCRIPTION "Cisco VIC Ethernet NIC Driver" | 34 | #define DRV_DESCRIPTION "Cisco VIC Ethernet NIC Driver" |
35 | #define DRV_VERSION "2.1.1.17" | 35 | #define DRV_VERSION "2.1.1.19" |
36 | #define DRV_COPYRIGHT "Copyright 2008-2011 Cisco Systems, Inc" | 36 | #define DRV_COPYRIGHT "Copyright 2008-2011 Cisco Systems, Inc" |
37 | 37 | ||
38 | #define ENIC_BARS_MAX 6 | 38 | #define ENIC_BARS_MAX 6 |
diff --git a/drivers/net/enic/enic_main.c b/drivers/net/enic/enic_main.c index ea4aededbfe1..e3bffe1aafb7 100644 --- a/drivers/net/enic/enic_main.c +++ b/drivers/net/enic/enic_main.c | |||
@@ -153,12 +153,12 @@ static inline unsigned int enic_legacy_notify_intr(void) | |||
153 | 153 | ||
154 | static inline unsigned int enic_msix_rq_intr(struct enic *enic, unsigned int rq) | 154 | static inline unsigned int enic_msix_rq_intr(struct enic *enic, unsigned int rq) |
155 | { | 155 | { |
156 | return rq; | 156 | return enic->cq[enic_cq_rq(enic, rq)].interrupt_offset; |
157 | } | 157 | } |
158 | 158 | ||
159 | static inline unsigned int enic_msix_wq_intr(struct enic *enic, unsigned int wq) | 159 | static inline unsigned int enic_msix_wq_intr(struct enic *enic, unsigned int wq) |
160 | { | 160 | { |
161 | return enic->rq_count + wq; | 161 | return enic->cq[enic_cq_wq(enic, wq)].interrupt_offset; |
162 | } | 162 | } |
163 | 163 | ||
164 | static inline unsigned int enic_msix_err_intr(struct enic *enic) | 164 | static inline unsigned int enic_msix_err_intr(struct enic *enic) |
diff --git a/drivers/net/enic/vnic_cq.c b/drivers/net/enic/vnic_cq.c index b86d6ef8dad3..0daa1c7073cb 100644 --- a/drivers/net/enic/vnic_cq.c +++ b/drivers/net/enic/vnic_cq.c | |||
@@ -74,6 +74,8 @@ void vnic_cq_init(struct vnic_cq *cq, unsigned int flow_control_enable, | |||
74 | iowrite32(cq_message_enable, &cq->ctrl->cq_message_enable); | 74 | iowrite32(cq_message_enable, &cq->ctrl->cq_message_enable); |
75 | iowrite32(interrupt_offset, &cq->ctrl->interrupt_offset); | 75 | iowrite32(interrupt_offset, &cq->ctrl->interrupt_offset); |
76 | writeq(cq_message_addr, &cq->ctrl->cq_message_addr); | 76 | writeq(cq_message_addr, &cq->ctrl->cq_message_addr); |
77 | |||
78 | cq->interrupt_offset = interrupt_offset; | ||
77 | } | 79 | } |
78 | 80 | ||
79 | void vnic_cq_clean(struct vnic_cq *cq) | 81 | void vnic_cq_clean(struct vnic_cq *cq) |
diff --git a/drivers/net/enic/vnic_cq.h b/drivers/net/enic/vnic_cq.h index 552d3daf2508..579315cbe803 100644 --- a/drivers/net/enic/vnic_cq.h +++ b/drivers/net/enic/vnic_cq.h | |||
@@ -57,6 +57,7 @@ struct vnic_cq { | |||
57 | struct vnic_dev_ring ring; | 57 | struct vnic_dev_ring ring; |
58 | unsigned int to_clean; | 58 | unsigned int to_clean; |
59 | unsigned int last_color; | 59 | unsigned int last_color; |
60 | unsigned int interrupt_offset; | ||
60 | }; | 61 | }; |
61 | 62 | ||
62 | static inline unsigned int vnic_cq_service(struct vnic_cq *cq, | 63 | static inline unsigned int vnic_cq_service(struct vnic_cq *cq, |