aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net
diff options
context:
space:
mode:
authorJesse Brandeburg <jesse.brandeburg@intel.com>2009-06-04 12:02:04 -0400
committerDavid S. Miller <davem@davemloft.net>2009-06-07 08:20:25 -0400
commitae540af18597a441bf17a26389179465ea4b9c36 (patch)
tree384ed42717b548fd4ba70f869c64d852afe20938 /drivers/net
parentc4cf55e5d2e9353c6054eb0e22fc1d0a9a48f045 (diff)
ixgbe: Re-adjust ring layouts to have better cacheline efficiency
This patch rearranges the ixgbe_ring struct to make better use of cacheline efficiency. Signed-off-by: Peter P Waskiewicz Jr <peter.p.waskiewicz.jr@intel.com> Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net')
-rw-r--r--drivers/net/ixgbe/ixgbe.h35
1 files changed, 19 insertions, 16 deletions
diff --git a/drivers/net/ixgbe/ixgbe.h b/drivers/net/ixgbe/ixgbe.h
index f2206e2a2425..cd22323cfd22 100644
--- a/drivers/net/ixgbe/ixgbe.h
+++ b/drivers/net/ixgbe/ixgbe.h
@@ -121,19 +121,18 @@ struct ixgbe_queue_stats {
121 121
122struct ixgbe_ring { 122struct ixgbe_ring {
123 void *desc; /* descriptor ring memory */ 123 void *desc; /* descriptor ring memory */
124 dma_addr_t dma; /* phys. address of descriptor ring */
125 unsigned int size; /* length in bytes */
126 unsigned int count; /* amount of descriptors */
127 unsigned int next_to_use;
128 unsigned int next_to_clean;
129 u8 atr_sample_rate;
130 u8 atr_count;
131
132 int queue_index; /* needed for multiqueue queue management */
133 union { 124 union {
134 struct ixgbe_tx_buffer *tx_buffer_info; 125 struct ixgbe_tx_buffer *tx_buffer_info;
135 struct ixgbe_rx_buffer *rx_buffer_info; 126 struct ixgbe_rx_buffer *rx_buffer_info;
136 }; 127 };
128 u8 atr_sample_rate;
129 u8 atr_count;
130 u16 count; /* amount of descriptors */
131 u16 rx_buf_len;
132 u16 next_to_use;
133 u16 next_to_clean;
134
135 u8 queue_index; /* needed for multiqueue queue management */
137 136
138 u16 head; 137 u16 head;
139 u16 tail; 138 u16 tail;
@@ -141,20 +140,24 @@ struct ixgbe_ring {
141 unsigned int total_bytes; 140 unsigned int total_bytes;
142 unsigned int total_packets; 141 unsigned int total_packets;
143 142
144 u16 reg_idx; /* holds the special value that gets the hardware register
145 * offset associated with this ring, which is different
146 * for DCB and RSS modes */
147
148#ifdef CONFIG_IXGBE_DCA 143#ifdef CONFIG_IXGBE_DCA
149 /* cpu for tx queue */ 144 /* cpu for tx queue */
150 int cpu; 145 int cpu;
151#endif 146#endif
147
148 u16 work_limit; /* max work per interrupt */
149 u16 reg_idx; /* holds the special value that gets
150 * the hardware register offset
151 * associated with this ring, which is
152 * different for DCB and RSS modes
153 */
154
152 struct ixgbe_queue_stats stats; 155 struct ixgbe_queue_stats stats;
153 unsigned long reinit_state; 156 unsigned long reinit_state;
157 u64 rsc_count; /* stat for coalesced packets */
154 158
155 u16 work_limit; /* max work per interrupt */ 159 unsigned int size; /* length in bytes */
156 u16 rx_buf_len; 160 dma_addr_t dma; /* phys. address of descriptor ring */
157 u64 rsc_count; /* stat for coalesced packets */
158}; 161};
159 162
160enum ixgbe_ring_f_enum { 163enum ixgbe_ring_f_enum {