net/ice/base: use package info from ice segment metadata
[dpdk.git] / drivers / net / mlx5 / mlx5.h
index c9d5d71..721edab 100644 (file)
@@ -164,6 +164,9 @@ struct mlx5_stats_ctrl {
 /* Maximal size of aggregated LRO packet. */
 #define MLX5_MAX_LRO_SIZE (UINT8_MAX * MLX5_LRO_SEG_CHUNK_SIZE)
 
+/* Maximal number of segments to split. */
+#define MLX5_MAX_RXQ_NSEG (1u << MLX5_MAX_LOG_RQ_SEGS)
+
 /* LRO configurations structure. */
 struct mlx5_lro_config {
        uint32_t supported:1; /* Whether LRO is supported. */
@@ -208,6 +211,7 @@ struct mlx5_dev_config {
        unsigned int rt_timestamp:1; /* realtime timestamp format. */
        unsigned int sys_mem_en:1; /* The default memory allocator. */
        unsigned int decap_en:1; /* Whether decap will be used or not. */
+       unsigned int dv_miss_info:1; /* restore packet after partial hw miss */
        struct {
                unsigned int enabled:1; /* Whether MPRQ is enabled. */
                unsigned int stride_num_n; /* Number of strides. */
@@ -644,6 +648,7 @@ struct mlx5_dev_ctx_shared {
        /* UAR same-page access control required in 32bit implementations. */
 #endif
        struct mlx5_hlist *flow_tbls;
+       struct mlx5_flow_tunnel_hub *tunnel_hub;
        /* Direct Rules tables for FDB, NIC TX+RX */
        void *esw_drop_action; /* Pointer to DR E-Switch drop action. */
        void *pop_vlan_action; /* Pointer to DR pop VLAN action. */
@@ -724,9 +729,11 @@ struct mlx5_ind_table_obj {
 };
 
 /* Hash Rx queue. */
+__extension__
 struct mlx5_hrxq {
        ILIST_ENTRY(uint32_t)next; /* Index to the next element. */
        rte_atomic32_t refcnt; /* Reference counter. */
+       uint32_t shared:1; /* This object used in shared action. */
        struct mlx5_ind_table_obj *ind_table; /* Indirection table. */
        RTE_STD_C11
        union {
@@ -798,6 +805,10 @@ struct mlx5_obj_ops {
        void (*ind_table_destroy)(struct mlx5_ind_table_obj *ind_tbl);
        int (*hrxq_new)(struct rte_eth_dev *dev, struct mlx5_hrxq *hrxq,
                        int tunnel __rte_unused);
+       int (*hrxq_modify)(struct rte_eth_dev *dev, struct mlx5_hrxq *hrxq,
+                          const uint8_t *rss_key,
+                          uint64_t hash_fields,
+                          const struct mlx5_ind_table_obj *ind_tbl);
        void (*hrxq_destroy)(struct mlx5_hrxq *hrxq);
        int (*drop_action_create)(struct rte_eth_dev *dev);
        void (*drop_action_destroy)(struct rte_eth_dev *dev);
@@ -886,6 +897,8 @@ struct mlx5_priv {
        uint8_t fdb_def_rule; /* Whether fdb jump to table 1 is configured. */
        struct mlx5_mp_id mp_id; /* ID of a multi-process process */
        LIST_HEAD(fdir, mlx5_fdir_flow) fdir_flows; /* fdir flows. */
+       LIST_HEAD(shared_action, rte_flow_shared_action) shared_actions;
+       /* shared actions */
 };
 
 #define PORT_ID(priv) ((priv)->dev_data->port_id)