net/mlx5: add define of LRO segment chunk size
[dpdk.git] / drivers / net / mlx5 / mlx5.h
index e8148ce..c3df825 100644 (file)
@@ -218,6 +218,12 @@ TAILQ_HEAD(mlx5_flows, rte_flow);
 #define MLX5_LRO_SUPPORTED(dev) \
        (((struct mlx5_priv *)((dev)->data->dev_private))->config.lro.supported)
 
+/* Maximal size of coalesced segment for LRO is set in chunks of 256 Bytes. */
+#define MLX5_LRO_SEG_CHUNK_SIZE        256u
+
+/* Maximal size of aggregated LRO packet. */
+#define MLX5_MAX_LRO_SIZE (UINT8_MAX * MLX5_LRO_SEG_CHUNK_SIZE)
+
 /* LRO configurations structure. */
 struct mlx5_lro_config {
        uint32_t supported:1; /* Whether LRO is supported. */
@@ -267,6 +273,7 @@ struct mlx5_dev_config {
                /* Rx queue count threshold to enable MPRQ. */
        } mprq; /* Configurations for Multi-Packet RQ. */
        int mps; /* Multi-packet send supported mode. */
+       int dbnc; /* Skip doorbell register write barrier. */
        unsigned int flow_prio; /* Number of flow priorities. */
        enum modify_reg flow_mreg_c[MLX5_MREG_C_NUM];
        /* Availibility of mreg_c's. */
@@ -571,6 +578,18 @@ struct mlx5_ibv_shared_port {
         */
 };
 
+/* Table key of the hash organization. */
+union mlx5_flow_tbl_key {
+       struct {
+               /* Table ID should be at the lowest address. */
+               uint32_t table_id;      /**< ID of the table. */
+               uint16_t reserved;      /**< must be zero for comparison. */
+               uint8_t domain;         /**< 1 - FDB, 0 - NIC TX/RX. */
+               uint8_t direction;      /**< 1 - egress, 0 - ingress. */
+       };
+       uint64_t v64;                   /**< full 64bits value of key */
+};
+
 /* Table structure. */
 struct mlx5_flow_tbl_resource {
        void *obj; /**< Pointer to DR table object. */
@@ -644,28 +663,21 @@ struct mlx5_ibv_shared {
        uint32_t dv_regc0_mask; /* available bits of metatada reg_c[0]. */
        uint32_t dv_refcnt; /* DV/DR data reference counter. */
        void *fdb_domain; /* FDB Direct Rules name space handle. */
-       struct mlx5_flow_tbl_resource fdb_tbl[MLX5_MAX_TABLES_FDB];
-       /* FDB Direct Rules tables. */
        struct mlx5_flow_tbl_resource *fdb_mtr_sfx_tbl;
        /* FDB meter suffix rules table. */
        void *rx_domain; /* RX Direct Rules name space handle. */
-       struct mlx5_flow_tbl_resource rx_tbl[MLX5_MAX_TABLES];
-       /* RX Direct Rules tables. */
        struct mlx5_flow_tbl_resource *rx_mtr_sfx_tbl;
        /* RX meter suffix rules table. */
        void *tx_domain; /* TX Direct Rules name space handle. */
-       struct mlx5_flow_tbl_resource tx_tbl[MLX5_MAX_TABLES];
-       /* TX Direct Rules tables. */
        struct mlx5_flow_tbl_resource *tx_mtr_sfx_tbl;
        /* TX meter suffix rules table. */
+       struct mlx5_hlist *flow_tbls;
+       /* 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. */
-       /* TX Direct Rules tables/ */
-       LIST_HEAD(matchers, mlx5_flow_dv_matcher) matchers;
        LIST_HEAD(encap_decap, mlx5_flow_dv_encap_decap_resource) encaps_decaps;
        LIST_HEAD(modify_cmd, mlx5_flow_dv_modify_hdr_resource) modify_cmds;
-       LIST_HEAD(tag, mlx5_flow_dv_tag_resource) tags;
-       LIST_HEAD(jump, mlx5_flow_dv_jump_tbl_resource) jump_tbl;
+       struct mlx5_hlist *tag_table;
        LIST_HEAD(port_id_action_list, mlx5_flow_dv_port_id_action_resource)
                port_id_action_list; /* List of port ID actions. */
        LIST_HEAD(push_vlan_action_list, mlx5_flow_dv_push_vlan_action_resource)
@@ -989,6 +1001,8 @@ int mlx5_nl_promisc(struct rte_eth_dev *dev, int enable);
 int mlx5_nl_allmulti(struct rte_eth_dev *dev, int enable);
 unsigned int mlx5_nl_portnum(int nl, const char *name);
 unsigned int mlx5_nl_ifindex(int nl, const char *name, uint32_t pindex);
+int mlx5_nl_vf_mac_addr_modify(struct rte_eth_dev *dev,
+                              struct rte_ether_addr *mac, int vf_index);
 int mlx5_nl_switch_info(int nl, unsigned int ifindex,
                        struct mlx5_switch_info *info);