net/mlx5: zero LRO mbuf headroom
[dpdk.git] / drivers / net / mlx5 / mlx5_rxtx.h
index bd4ae80..4252832 100644 (file)
@@ -75,10 +75,20 @@ struct mlx5_mprq_buf {
        struct rte_mempool *mp;
        rte_atomic16_t refcnt; /* Atomically accessed refcnt. */
        uint8_t pad[RTE_PKTMBUF_HEADROOM]; /* Headroom for the first packet. */
+       struct rte_mbuf_ext_shared_info shinfos[];
+       /*
+        * Shared information per stride.
+        * More memory will be allocated for the first stride head-room and for
+        * the strides data.
+        */
 } __rte_cache_aligned;
 
 /* Get pointer to the first stride. */
-#define mlx5_mprq_buf_addr(ptr) ((ptr) + 1)
+#define mlx5_mprq_buf_addr(ptr, strd_n) (RTE_PTR_ADD((ptr), \
+                               sizeof(struct mlx5_mprq_buf) + \
+                               (strd_n) * \
+                               sizeof(struct rte_mbuf_ext_shared_info) + \
+                               RTE_PKTMBUF_HEADROOM))
 
 #define MLX5_MIN_SINGLE_STRIDE_LOG_NUM_BYTES 6
 #define MLX5_MIN_SINGLE_WQE_LOG_NUM_STRIDES 9
@@ -104,7 +114,8 @@ struct mlx5_rxq_data {
        unsigned int strd_sz_n:4; /* Log 2 of stride size. */
        unsigned int strd_shift_en:1; /* Enable 2bytes shift on a stride. */
        unsigned int err_state:2; /* enum mlx5_rxq_err_state. */
-       unsigned int :4; /* Remaining bits. */
+       unsigned int strd_headroom_en:1; /* Enable mbuf headroom in MPRQ. */
+       unsigned int :3; /* Remaining bits. */
        volatile uint32_t *rq_db;
        volatile uint32_t *cq_db;
        uint16_t port_id;
@@ -346,7 +357,7 @@ struct mlx5_hrxq *mlx5_hrxq_new(struct rte_eth_dev *dev,
                                const uint8_t *rss_key, uint32_t rss_key_len,
                                uint64_t hash_fields,
                                const uint16_t *queues, uint32_t queues_n,
-                               int tunnel __rte_unused);
+                               int tunnel __rte_unused, int lro);
 struct mlx5_hrxq *mlx5_hrxq_get(struct rte_eth_dev *dev,
                                const uint8_t *rss_key, uint32_t rss_key_len,
                                uint64_t hash_fields,