net/mlx5: query HCA for enabled FLEX parser protocols
[dpdk.git] / drivers / net / mlx5 / mlx5.h
index 82927e6..024a403 100644 (file)
@@ -184,6 +184,7 @@ struct mlx5_hca_attr {
        uint32_t tunnel_lro_vxlan:1;
        uint32_t lro_max_msg_sz_mode:2;
        uint32_t lro_timer_supported_periods[MLX5_LRO_NUM_SUPP_PERIODS];
+       uint32_t flex_parser_protocols;
 };
 
 /* Flow list . */
@@ -623,6 +624,7 @@ struct mlx5_priv {
        uint32_t vport_meta_tag; /* Used for vport index match ove VF LAG. */
        uint32_t vport_meta_mask; /* Used for vport index field match mask. */
        int32_t representor_id; /* Port representor identifier. */
+       int32_t pf_bond; /* >=0 means PF index in bonding configuration. */
        unsigned int if_index; /* Associated kernel network device index. */
        /* RX/TX queues. */
        unsigned int rxqs_n; /* RX queues array size. */
@@ -681,6 +683,13 @@ int32_t mlx5_release_dbr(struct rte_eth_dev *dev, uint32_t umem_id,
                         uint64_t offset);
 int mlx5_udp_tunnel_port_add(struct rte_eth_dev *dev,
                              struct rte_eth_udp_tunnel *udp_tunnel);
+uint16_t mlx5_eth_find_next(uint16_t port_id, struct rte_pci_device *pci_dev);
+
+/* Macro to iterate over all valid ports for mlx5 driver. */
+#define MLX5_ETH_FOREACH_DEV(port_id, pci_dev) \
+       for (port_id = mlx5_eth_find_next(0, pci_dev); \
+            port_id < RTE_MAX_ETHPORTS; \
+            port_id = mlx5_eth_find_next(port_id + 1, pci_dev))
 
 /* mlx5_ethdev.c */
 
@@ -715,11 +724,8 @@ int mlx5_set_link_up(struct rte_eth_dev *dev);
 int mlx5_is_removed(struct rte_eth_dev *dev);
 eth_tx_burst_t mlx5_select_tx_function(struct rte_eth_dev *dev);
 eth_rx_burst_t mlx5_select_rx_function(struct rte_eth_dev *dev);
-unsigned int mlx5_dev_to_port_id(const struct rte_device *dev,
-                                uint16_t *port_list,
-                                unsigned int port_list_n);
-int mlx5_port_to_eswitch_info(uint16_t port, uint16_t *es_domain_id,
-                             uint16_t *es_port_id);
+struct mlx5_priv *mlx5_port_to_eswitch_info(uint16_t port);
+struct mlx5_priv *mlx5_dev_to_eswitch_info(struct rte_eth_dev *dev);
 int mlx5_sysfs_switch_info(unsigned int ifindex,
                           struct mlx5_switch_info *info);
 void mlx5_sysfs_check_switch_info(bool device_dir,