aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet/mellanox
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2014-10-05 05:35:10 -0400
committerDavid S. Miller <davem@davemloft.net>2014-10-06 01:04:15 -0400
commit98b1634941e3efb0334f794efc79702839993d86 (patch)
treed5cc5f5e6fd9984c3ec59652de96fe9824157d22 /drivers/net/ethernet/mellanox
parent7dfa4b414d4eec8da56e44fb2b4aea3e549b092f (diff)
net/mlx4_en: Align tx path structures to cache lines
Reorganize struct mlx4_en_tx_ring to have: - One cache line containing last_nr_txbb & cons & wake_queue, used by tx completion. - One cache line containing fields dirtied by mlx4_en_xmit() - Following part is read mostly and shared by cpus. Align struct mlx4_en_tx_info to a cache line Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: Amir Vadai <amirv@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/mellanox')
-rw-r--r--drivers/net/ethernet/mellanox/mlx4/mlx4_en.h86
1 files changed, 46 insertions, 40 deletions
diff --git a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
index e54b653de3d4..b7bde95e05fe 100644
--- a/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
+++ b/drivers/net/ethernet/mellanox/mlx4/mlx4_en.h
@@ -216,13 +216,13 @@ enum cq_type {
216 216
217struct mlx4_en_tx_info { 217struct mlx4_en_tx_info {
218 struct sk_buff *skb; 218 struct sk_buff *skb;
219 u32 nr_txbb; 219 u32 nr_txbb;
220 u32 nr_bytes; 220 u32 nr_bytes;
221 u8 linear; 221 u8 linear;
222 u8 data_offset; 222 u8 data_offset;
223 u8 inl; 223 u8 inl;
224 u8 ts_requested; 224 u8 ts_requested;
225}; 225} ____cacheline_aligned_in_smp;
226 226
227 227
228#define MLX4_EN_BIT_DESC_OWN 0x80000000 228#define MLX4_EN_BIT_DESC_OWN 0x80000000
@@ -253,40 +253,46 @@ struct mlx4_en_rx_alloc {
253}; 253};
254 254
255struct mlx4_en_tx_ring { 255struct mlx4_en_tx_ring {
256 /* cache line used and dirtied in tx completion
257 * (mlx4_en_free_tx_buf())
258 */
259 u32 last_nr_txbb;
260 u32 cons;
261 unsigned long wake_queue;
262
263 /* cache line used and dirtied in mlx4_en_xmit() */
264 u32 prod ____cacheline_aligned_in_smp;
265 unsigned long bytes;
266 unsigned long packets;
267 unsigned long tx_csum;
268 unsigned long tso_packets;
269 unsigned long xmit_more;
270 struct mlx4_bf bf;
271 unsigned long queue_stopped;
272
273 /* Following part should be mostly read */
274 cpumask_t affinity_mask;
275 struct mlx4_qp qp;
256 struct mlx4_hwq_resources wqres; 276 struct mlx4_hwq_resources wqres;
257 u32 size ; /* number of TXBBs */ 277 u32 size; /* number of TXBBs */
258 u32 size_mask; 278 u32 size_mask;
259 u16 stride; 279 u16 stride;
260 u16 cqn; /* index of port CQ associated with this ring */ 280 u16 cqn; /* index of port CQ associated with this ring */
261 u32 prod; 281 u32 buf_size;
262 u32 cons; 282 u32 doorbell_qpn;
263 u32 buf_size; 283 void *buf;
264 u32 doorbell_qpn; 284 struct mlx4_en_tx_info *tx_info;
265 void *buf; 285 u8 *bounce_buf;
266 struct mlx4_en_tx_info *tx_info; 286 struct mlx4_qp_context context;
267 u8 *bounce_buf; 287 int qpn;
268 u8 queue_index; 288 enum mlx4_qp_state qp_state;
269 cpumask_t affinity_mask; 289 u8 queue_index;
270 u32 last_nr_txbb; 290 bool bf_enabled;
271 struct mlx4_qp qp; 291 bool bf_alloced;
272 struct mlx4_qp_context context; 292 struct netdev_queue *tx_queue;
273 int qpn; 293 int hwtstamp_tx_type;
274 enum mlx4_qp_state qp_state; 294 int inline_thold;
275 struct mlx4_srq dummy; 295} ____cacheline_aligned_in_smp;
276 unsigned long bytes;
277 unsigned long packets;
278 unsigned long tx_csum;
279 unsigned long queue_stopped;
280 unsigned long wake_queue;
281 unsigned long tso_packets;
282 unsigned long xmit_more;
283 struct mlx4_bf bf;
284 bool bf_enabled;
285 bool bf_alloced;
286 struct netdev_queue *tx_queue;
287 int hwtstamp_tx_type;
288 int inline_thold;
289};
290 296
291struct mlx4_en_rx_desc { 297struct mlx4_en_rx_desc {
292 /* actual number of entries depends on rx ring stride */ 298 /* actual number of entries depends on rx ring stride */