net/mlx5: Kconfig, Better organize compilation flags
authorTariq Toukan <tariqt@mellanox.com>
Fri, 5 Jul 2019 15:30:12 +0000 (18:30 +0300)
committerDavid S. Miller <davem@davemloft.net>
Fri, 5 Jul 2019 23:29:19 +0000 (16:29 -0700)
Always contain all acceleration functions declarations in
'accel' files, independent to the flags setting.
For this, introduce new flags CONFIG_FPGA_{IPSEC/TLS} and use stubs
where needed.

This obsoletes the need for stubs in 'fpga' files. Remove them.

Also use the new flags in Makefile, to decide whether to compile
TLS-specific or IPSEC-specific objects, or not.

Signed-off-by: Tariq Toukan <tariqt@mellanox.com>
Signed-off-by: Saeed Mahameed <saeedm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
drivers/net/ethernet/mellanox/mlx5/core/Kconfig
drivers/net/ethernet/mellanox/mlx5/core/Makefile
drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec.c
drivers/net/ethernet/mellanox/mlx5/core/accel/ipsec.h
drivers/net/ethernet/mellanox/mlx5/core/accel/tls.c
drivers/net/ethernet/mellanox/mlx5/core/accel/tls.h
drivers/net/ethernet/mellanox/mlx5/core/fpga/ipsec.h
include/linux/mlx5/accel.h

index 7845aa5bf6befd18d89419872a135b5049ec334a..6556490d809cc8aa273811ef5e383f242f7177c7 100644 (file)
@@ -97,26 +97,49 @@ config MLX5_CORE_IPOIB
        ---help---
          MLX5 IPoIB offloads & acceleration support.
 
+config MLX5_FPGA_IPSEC
+       bool "Mellanox Technologies IPsec Innova support"
+       depends on MLX5_CORE
+       depends on MLX5_FPGA
+       default n
+       help
+       Build IPsec support for the Innova family of network cards by Mellanox
+       Technologies. Innova network cards are comprised of a ConnectX chip
+       and an FPGA chip on one board. If you select this option, the
+       mlx5_core driver will include the Innova FPGA core and allow building
+       sandbox-specific client drivers.
+
 config MLX5_EN_IPSEC
        bool "IPSec XFRM cryptography-offload accelaration"
-       depends on MLX5_ACCEL
        depends on MLX5_CORE_EN
        depends on XFRM_OFFLOAD
        depends on INET_ESP_OFFLOAD || INET6_ESP_OFFLOAD
+       depends on MLX5_FPGA_IPSEC
        default n
-       ---help---
+       help
          Build support for IPsec cryptography-offload accelaration in the NIC.
          Note: Support for hardware with this capability needs to be selected
          for this option to become available.
 
-config MLX5_EN_TLS
-       bool "TLS cryptography-offload accelaration"
-       depends on MLX5_CORE_EN
+config MLX5_FPGA_TLS
+       bool "Mellanox Technologies TLS Innova support"
        depends on TLS_DEVICE
        depends on TLS=y || MLX5_CORE=m
-       depends on MLX5_ACCEL
+       depends on MLX5_FPGA
        default n
-       ---help---
-         Build support for TLS cryptography-offload accelaration in the NIC.
-         Note: Support for hardware with this capability needs to be selected
-         for this option to become available.
+       help
+       Build TLS support for the Innova family of network cards by Mellanox
+       Technologies. Innova network cards are comprised of a ConnectX chip
+       and an FPGA chip on one board. If you select this option, the
+       mlx5_core driver will include the Innova FPGA core and allow building
+       sandbox-specific client drivers.
+
+config MLX5_EN_TLS
+       bool "TLS cryptography-offload accelaration"
+       depends on MLX5_CORE_EN
+       depends on MLX5_FPGA_TLS
+       default y
+       help
+       Build support for TLS cryptography-offload accelaration in the NIC.
+       Note: Support for hardware with this capability needs to be selected
+       for this option to become available.
index 8456b19d79cd08081f06ab7b0670e1b260e2570a..d3409870646a43f1bca9129076e67bc62bb5e270 100644 (file)
@@ -53,10 +53,11 @@ mlx5_core-$(CONFIG_MLX5_CORE_IPOIB) += ipoib/ipoib.o ipoib/ethtool.o ipoib/ipoib
 #
 # Accelerations & FPGA
 #
-mlx5_core-$(CONFIG_MLX5_ACCEL) += accel/ipsec.o accel/tls.o
+mlx5_core-$(CONFIG_MLX5_FPGA_IPSEC) += fpga/ipsec.o
+mlx5_core-$(CONFIG_MLX5_FPGA_TLS)   += fpga/tls.o
+mlx5_core-$(CONFIG_MLX5_ACCEL)      += accel/tls.o accel/ipsec.o
 
-mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o fpga/sdk.o \
-                                fpga/ipsec.o fpga/tls.o
+mlx5_core-$(CONFIG_MLX5_FPGA) += fpga/cmd.o fpga/core.o fpga/conn.o fpga/sdk.o
 
 mlx5_core-$(CONFIG_MLX5_EN_IPSEC) += en_accel/ipsec.o en_accel/ipsec_rxtx.o \
                                     en_accel/ipsec_stats.o
index d1e76d5a413be8e046511e96df67bed454c153bf..eddc34e4a7625000103dc37f6bb4442a82362306 100644 (file)
@@ -31,6 +31,8 @@
  *
  */
 
+#ifdef CONFIG_MLX5_FPGA_IPSEC
+
 #include <linux/mlx5/device.h>
 
 #include "accel/ipsec.h"
@@ -112,3 +114,5 @@ int mlx5_accel_esp_modify_xfrm(struct mlx5_accel_esp_xfrm *xfrm,
        return mlx5_fpga_esp_modify_xfrm(xfrm, attrs);
 }
 EXPORT_SYMBOL_GPL(mlx5_accel_esp_modify_xfrm);
+
+#endif
index 93b3f5faddb583da742529431f67816ec69c22f9..530e428d46ab7288f0cb744561c66caed03535fd 100644 (file)
@@ -37,7 +37,7 @@
 #include <linux/mlx5/driver.h>
 #include <linux/mlx5/accel.h>
 
-#ifdef CONFIG_MLX5_ACCEL
+#ifdef CONFIG_MLX5_FPGA_IPSEC
 
 #define MLX5_IPSEC_DEV(mdev) (mlx5_accel_ipsec_device_caps(mdev) & \
                              MLX5_ACCEL_IPSEC_CAP_DEVICE)
index da7bd26368f9bd4d19da7ff7b98ef3048860684c..a2c9eda1ebf578c491f7432005c40c7fd12cfd8c 100644 (file)
@@ -35,6 +35,8 @@
 
 #include "accel/tls.h"
 #include "mlx5_core.h"
+
+#ifdef CONFIG_MLX5_FPGA_TLS
 #include "fpga/tls.h"
 
 int mlx5_accel_tls_add_flow(struct mlx5_core_dev *mdev, void *flow,
@@ -78,3 +80,4 @@ void mlx5_accel_tls_cleanup(struct mlx5_core_dev *mdev)
 {
        mlx5_fpga_tls_cleanup(mdev);
 }
+#endif
index def4093ebfae86434af1f81e35bd8cd0c6d167e2..e5d306ad7f9143b9edba2ece9b536969ffe7c6ff 100644 (file)
@@ -37,8 +37,7 @@
 #include <linux/mlx5/driver.h>
 #include <linux/tls.h>
 
-#ifdef CONFIG_MLX5_ACCEL
-
+#ifdef CONFIG_MLX5_FPGA_TLS
 enum {
        MLX5_ACCEL_TLS_TX = BIT(0),
        MLX5_ACCEL_TLS_RX = BIT(1),
@@ -88,7 +87,6 @@ static inline bool mlx5_accel_is_tls_device(struct mlx5_core_dev *mdev) { return
 static inline u32 mlx5_accel_tls_device_caps(struct mlx5_core_dev *mdev) { return 0; }
 static inline int mlx5_accel_tls_init(struct mlx5_core_dev *mdev) { return 0; }
 static inline void mlx5_accel_tls_cleanup(struct mlx5_core_dev *mdev) { }
-
 #endif
 
 #endif /* __MLX5_ACCEL_TLS_H__ */
index 2b5e63b0d4d6cd0a59caa9095b6d6d507b6dadb6..382985e65b488c03c8885a1982ef63c00c5f83ad 100644 (file)
@@ -37,8 +37,6 @@
 #include "accel/ipsec.h"
 #include "fs_cmd.h"
 
-#ifdef CONFIG_MLX5_FPGA
-
 u32 mlx5_fpga_ipsec_device_caps(struct mlx5_core_dev *mdev);
 unsigned int mlx5_fpga_ipsec_counters_count(struct mlx5_core_dev *mdev);
 int mlx5_fpga_ipsec_counters_read(struct mlx5_core_dev *mdev, u64 *counters,
@@ -66,77 +64,4 @@ int mlx5_fpga_esp_modify_xfrm(struct mlx5_accel_esp_xfrm *xfrm,
 const struct mlx5_flow_cmds *
 mlx5_fs_cmd_get_default_ipsec_fpga_cmds(enum fs_flow_table_type type);
 
-#else
-
-static inline u32 mlx5_fpga_ipsec_device_caps(struct mlx5_core_dev *mdev)
-{
-       return 0;
-}
-
-static inline unsigned int
-mlx5_fpga_ipsec_counters_count(struct mlx5_core_dev *mdev)
-{
-       return 0;
-}
-
-static inline int mlx5_fpga_ipsec_counters_read(struct mlx5_core_dev *mdev,
-                                               u64 *counters)
-{
-       return 0;
-}
-
-static inline void *
-mlx5_fpga_ipsec_create_sa_ctx(struct mlx5_core_dev *mdev,
-                             struct mlx5_accel_esp_xfrm *accel_xfrm,
-                             const __be32 saddr[4],
-                             const __be32 daddr[4],
-                             const __be32 spi, bool is_ipv6)
-{
-       return NULL;
-}
-
-static inline void mlx5_fpga_ipsec_delete_sa_ctx(void *context)
-{
-}
-
-static inline int mlx5_fpga_ipsec_init(struct mlx5_core_dev *mdev)
-{
-       return 0;
-}
-
-static inline void mlx5_fpga_ipsec_cleanup(struct mlx5_core_dev *mdev)
-{
-}
-
-static inline void mlx5_fpga_ipsec_build_fs_cmds(void)
-{
-}
-
-static inline struct mlx5_accel_esp_xfrm *
-mlx5_fpga_esp_create_xfrm(struct mlx5_core_dev *mdev,
-                         const struct mlx5_accel_esp_xfrm_attrs *attrs,
-                         u32 flags)
-{
-       return ERR_PTR(-EOPNOTSUPP);
-}
-
-static inline void mlx5_fpga_esp_destroy_xfrm(struct mlx5_accel_esp_xfrm *xfrm)
-{
-}
-
-static inline int
-mlx5_fpga_esp_modify_xfrm(struct mlx5_accel_esp_xfrm *xfrm,
-                         const struct mlx5_accel_esp_xfrm_attrs *attrs)
-{
-       return -EOPNOTSUPP;
-}
-
-static inline const struct mlx5_flow_cmds *
-mlx5_fs_cmd_get_default_ipsec_fpga_cmds(enum fs_flow_table_type type)
-{
-       return mlx5_fs_cmd_get_default(type);
-}
-
-#endif /* CONFIG_MLX5_FPGA */
-
 #endif /* __MLX5_FPGA_SADB_H__ */
index 70e7e5673ce9c4d5cb6c858ec2a303db22f12c37..5613e677a5f93b9f0cc945b0e13e0038bfccb763 100644 (file)
@@ -114,7 +114,7 @@ enum mlx5_accel_ipsec_cap {
        MLX5_ACCEL_IPSEC_CAP_TX_IV_IS_ESN       = 1 << 7,
 };
 
-#ifdef CONFIG_MLX5_ACCEL
+#ifdef CONFIG_MLX5_FPGA_IPSEC
 
 u32 mlx5_accel_ipsec_device_caps(struct mlx5_core_dev *mdev);