In the API, rx_nseg and max_nseg are uint16_t.
In mlx5, MLX5_MAX_RXQ_NSEG is 32.
So there is no reason to have rxseg_n as uint32_t.
Reduce the fields to uint16_t and move them to avoid struct holes.

Fixes: 9f209b59c8b0 ("net/mlx5: support Rx buffer split description")
Fixes: 572c9d4bda08 ("net/mlx5: fix shared Rx queue segment configuration 
match")
Cc: [email protected]

Signed-off-by: Thomas Monjalon <[email protected]>
---
 drivers/net/mlx5/mlx5_rx.h | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/net/mlx5/mlx5_rx.h b/drivers/net/mlx5/mlx5_rx.h
index dffab3955b..01b563d981 100644
--- a/drivers/net/mlx5/mlx5_rx.h
+++ b/drivers/net/mlx5/mlx5_rx.h
@@ -164,9 +164,9 @@ struct __rte_cache_aligned mlx5_rxq_data {
        uint64_t flow_meta_mask;
        int32_t flow_meta_offset;
        uint32_t flow_meta_port_mask;
-       uint32_t rxseg_n; /* Number of split segment descriptions. */
        struct mlx5_eth_rxseg rxseg[MLX5_MAX_RXQ_NSEG];
        /* Buffer split segment descriptions - sizes, offsets, pools. */
+       uint16_t rxseg_n; /* Number of split segment descriptions. */
        uint16_t rq_win_cnt; /* Number of packets in the sliding window data. */
        uint16_t rq_win_idx_mask; /* Sliding window index wrapping mask. */
        uint16_t rq_win_idx; /* Index of the first element in sliding window. */
@@ -191,9 +191,9 @@ struct mlx5_rxq_ctrl {
        unsigned int irq:1; /* Whether IRQ is enabled. */
        uint32_t flow_tunnels_n[MLX5_FLOW_TUNNEL]; /* Tunnels counters. */
        uint32_t wqn; /* WQ number. */
-       uint32_t rxseg_n; /* Number of split segment descriptions. */
        struct rte_eth_rxseg_split rxseg[MLX5_MAX_RXQ_NSEG];
        /* Saved original buffer split segment configuration. */
+       uint16_t rxseg_n; /* Number of split segment descriptions. */
        uint16_t dump_file_n; /* Number of dump files. */
 };
 
-- 
2.54.0

Reply via email to