diff options
author | Scott Feldman <scofeldm@cisco.com> | 2009-09-03 13:02:24 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-09-03 23:19:19 -0400 |
commit | 6ba9cdc09678d6925c205ef0b0bd374e31589ecf (patch) | |
tree | cff6128e997b6945d77ad47dab3a23bc8de8a56a /drivers/net/enic/enic.h | |
parent | 350991e12ac1ac407850169a0d65f522a7fd029e (diff) |
enic: provision for multiple Rx/Tx queues; prepare for RSS support
Provision for multiple Rx/Tx queues. Max of 8 WQs and 8 RQs. Max for
completion queue is 8+8=16 and max for interrupt resources is 8+8+2.
Add driver/firmware interface for setting up RSS secret key and indirection
table.
Signed-off-by: Scott Feldman <scofeldm@cisco.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/enic/enic.h')
-rw-r--r-- | drivers/net/enic/enic.h | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/drivers/net/enic/enic.h b/drivers/net/enic/enic.h index f7c5b334bc7..e1c2076228b 100644 --- a/drivers/net/enic/enic.h +++ b/drivers/net/enic/enic.h | |||
@@ -29,6 +29,7 @@ | |||
29 | #include "vnic_cq.h" | 29 | #include "vnic_cq.h" |
30 | #include "vnic_intr.h" | 30 | #include "vnic_intr.h" |
31 | #include "vnic_stats.h" | 31 | #include "vnic_stats.h" |
32 | #include "vnic_nic.h" | ||
32 | #include "vnic_rss.h" | 33 | #include "vnic_rss.h" |
33 | 34 | ||
34 | #define DRV_NAME "enic" | 35 | #define DRV_NAME "enic" |
@@ -42,17 +43,20 @@ | |||
42 | 43 | ||
43 | #define ENIC_BARS_MAX 6 | 44 | #define ENIC_BARS_MAX 6 |
44 | 45 | ||
46 | #define ENIC_WQ_MAX 8 | ||
47 | #define ENIC_RQ_MAX 8 | ||
48 | #define ENIC_CQ_MAX (ENIC_WQ_MAX + ENIC_RQ_MAX) | ||
49 | #define ENIC_INTR_MAX (ENIC_CQ_MAX + 2) | ||
50 | |||
45 | enum enic_cq_index { | 51 | enum enic_cq_index { |
46 | ENIC_CQ_RQ, | 52 | ENIC_CQ_RQ, |
47 | ENIC_CQ_WQ, | 53 | ENIC_CQ_WQ, |
48 | ENIC_CQ_MAX, | ||
49 | }; | 54 | }; |
50 | 55 | ||
51 | enum enic_intx_intr_index { | 56 | enum enic_intx_intr_index { |
52 | ENIC_INTX_WQ_RQ, | 57 | ENIC_INTX_WQ_RQ, |
53 | ENIC_INTX_ERR, | 58 | ENIC_INTX_ERR, |
54 | ENIC_INTX_NOTIFY, | 59 | ENIC_INTX_NOTIFY, |
55 | ENIC_INTX_MAX, | ||
56 | }; | 60 | }; |
57 | 61 | ||
58 | enum enic_msix_intr_index { | 62 | enum enic_msix_intr_index { |
@@ -90,13 +94,13 @@ struct enic { | |||
90 | u32 port_mtu; | 94 | u32 port_mtu; |
91 | 95 | ||
92 | /* work queue cache line section */ | 96 | /* work queue cache line section */ |
93 | ____cacheline_aligned struct vnic_wq wq[1]; | 97 | ____cacheline_aligned struct vnic_wq wq[ENIC_WQ_MAX]; |
94 | spinlock_t wq_lock[1]; | 98 | spinlock_t wq_lock[ENIC_WQ_MAX]; |
95 | unsigned int wq_count; | 99 | unsigned int wq_count; |
96 | struct vlan_group *vlan_group; | 100 | struct vlan_group *vlan_group; |
97 | 101 | ||
98 | /* receive queue cache line section */ | 102 | /* receive queue cache line section */ |
99 | ____cacheline_aligned struct vnic_rq rq[1]; | 103 | ____cacheline_aligned struct vnic_rq rq[ENIC_RQ_MAX]; |
100 | unsigned int rq_count; | 104 | unsigned int rq_count; |
101 | int (*rq_alloc_buf)(struct vnic_rq *rq); | 105 | int (*rq_alloc_buf)(struct vnic_rq *rq); |
102 | u64 rq_truncated_pkts; | 106 | u64 rq_truncated_pkts; |
@@ -106,7 +110,7 @@ struct enic { | |||
106 | struct net_lro_desc lro_desc[ENIC_LRO_MAX_DESC]; | 110 | struct net_lro_desc lro_desc[ENIC_LRO_MAX_DESC]; |
107 | 111 | ||
108 | /* interrupt resource cache line section */ | 112 | /* interrupt resource cache line section */ |
109 | ____cacheline_aligned struct vnic_intr intr[ENIC_MSIX_MAX]; | 113 | ____cacheline_aligned struct vnic_intr intr[ENIC_INTR_MAX]; |
110 | unsigned int intr_count; | 114 | unsigned int intr_count; |
111 | u32 __iomem *legacy_pba; /* memory-mapped */ | 115 | u32 __iomem *legacy_pba; /* memory-mapped */ |
112 | 116 | ||