diff options
author | Jesse Brandeburg <jesse.brandeburg@intel.com> | 2009-06-04 12:02:04 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-06-07 08:20:25 -0400 |
commit | ae540af18597a441bf17a26389179465ea4b9c36 (patch) | |
tree | 384ed42717b548fd4ba70f869c64d852afe20938 /drivers/net | |
parent | c4cf55e5d2e9353c6054eb0e22fc1d0a9a48f045 (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.h | 35 |
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 | ||
122 | struct ixgbe_ring { | 122 | struct 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 | ||
160 | enum ixgbe_ring_f_enum { | 163 | enum ixgbe_ring_f_enum { |