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, |
