net/mlx5: Expose eswitch encap mode
authorMaor Gottlieb <maorg@mellanox.com>
Wed, 12 Jun 2019 12:20:12 +0000 (15:20 +0300)
committerLeon Romanovsky <leonro@mellanox.com>
Sun, 16 Jun 2019 12:41:43 +0000 (15:41 +0300)
Add API to get the current Eswitch encap mode.
It will be used in downstream patches to check if
flow table can be created with encap support or not.

Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Reviewed-by: Parav Pandit <parav@mellanox.com>
drivers/net/ethernet/mellanox/mlx5/core/eswitch.c
include/linux/mlx5/eswitch.h

index a4df109fbeb72707c58abed0057272a73c71153b..12010f85fa358783cf0706a430cb8cfd1b92dbc9 100644 (file)
@@ -2457,6 +2457,17 @@ u8 mlx5_eswitch_mode(struct mlx5_eswitch *esw)
 }
 EXPORT_SYMBOL_GPL(mlx5_eswitch_mode);
 
+enum devlink_eswitch_encap_mode
+mlx5_eswitch_get_encap_mode(const struct mlx5_core_dev *dev)
+{
+       struct mlx5_eswitch *esw;
+
+       esw = dev->priv.eswitch;
+       return ESW_ALLOWED(esw) ? esw->offloads.encap :
+               DEVLINK_ESWITCH_ENCAP_MODE_NONE;
+}
+EXPORT_SYMBOL(mlx5_eswitch_get_encap_mode);
+
 bool mlx5_esw_lag_prereq(struct mlx5_core_dev *dev0, struct mlx5_core_dev *dev1)
 {
        if ((dev0->priv.eswitch->mode == SRIOV_NONE &&
index d81ee4df181c07b16ac54a16543859d9738aba45..174eec0871d998afc74ba8f1e215dd7a2786245d 100644 (file)
@@ -7,6 +7,7 @@
 #define _MLX5_ESWITCH_
 
 #include <linux/mlx5/driver.h>
+#include <net/devlink.h>
 
 #define MLX5_ESWITCH_MANAGER(mdev) MLX5_CAP_GEN(mdev, eswitch_manager)
 
@@ -62,4 +63,15 @@ u8 mlx5_eswitch_mode(struct mlx5_eswitch *esw);
 struct mlx5_flow_handle *
 mlx5_eswitch_add_send_to_vport_rule(struct mlx5_eswitch *esw,
                                    int vport, u32 sqn);
+
+#ifdef CONFIG_MLX5_ESWITCH
+enum devlink_eswitch_encap_mode
+mlx5_eswitch_get_encap_mode(const struct mlx5_core_dev *dev);
+#else  /* CONFIG_MLX5_ESWITCH */
+static inline enum devlink_eswitch_encap_mode
+mlx5_eswitch_get_encap_mode(const struct mlx5_core_dev *dev)
+{
+       return DEVLINK_ESWITCH_ENCAP_MODE_NONE;
+}
+#endif /* CONFIG_MLX5_ESWITCH */
 #endif