]> git.kernelconcepts.de Git - karo-tx-linux.git/blobdiff - drivers/net/ethernet/mellanox/mlx5/core/eswitch.h
net/mlx5: Add devlink interface
[karo-tx-linux.git] / drivers / net / ethernet / mellanox / mlx5 / core / eswitch.h
index b7fabd1b97d61c180598abae62e098c9e41dcab4..7843f981509da1e7eb8e0f3116da967358754da7 100644 (file)
@@ -35,6 +35,7 @@
 
 #include <linux/if_ether.h>
 #include <linux/if_link.h>
+#include <net/devlink.h>
 #include <linux/mlx5/device.h>
 
 #define MLX5_MAX_UC_PER_VPORT(dev) \
@@ -155,6 +156,11 @@ enum {
        SRIOV_OFFLOADS
 };
 
+struct mlx5_esw_offload {
+       struct mlx5_flow_table *ft_offloads;
+       struct mlx5_flow_group *vport_rx_group;
+};
+
 struct mlx5_eswitch {
        struct mlx5_core_dev    *dev;
        struct mlx5_l2_table    l2_table;
@@ -169,6 +175,7 @@ struct mlx5_eswitch {
         */
        struct mutex            state_lock;
        struct esw_mc_addr      *mc_promisc;
+       struct mlx5_esw_offload offloads;
        int                     mode;
 };
 
@@ -196,6 +203,12 @@ int mlx5_eswitch_get_vport_stats(struct mlx5_eswitch *esw,
 struct mlx5_flow_rule *
 mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *esw, int vport, u32 sqn);
 
+struct mlx5_flow_rule *
+mlx5_eswitch_create_vport_rx_rule(struct mlx5_eswitch *esw, int vport, u32 tirn);
+
+int mlx5_devlink_eswitch_mode_set(struct devlink *devlink, u16 mode);
+int mlx5_devlink_eswitch_mode_get(struct devlink *devlink, u16 *mode);
+
 #define MLX5_DEBUG_ESWITCH_MASK BIT(3)
 
 #define esw_info(dev, format, ...)                             \