This patch enables TLS Rx based on available HW capabilities.

Signed-off-by: Boris Pismenny <bor...@mellanox.com>
---
 drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c 
b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c
index 541e6f4..eddd7702 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_accel/tls.c
@@ -183,13 +183,27 @@ static void mlx5e_tls_resync_rx(struct net_device 
*netdev, struct sock *sk,
 
 void mlx5e_tls_build_netdev(struct mlx5e_priv *priv)
 {
+       u32 caps = mlx5_accel_tls_device_caps(priv->mdev);
        struct net_device *netdev = priv->netdev;
 
        if (!mlx5_accel_is_tls_device(priv->mdev))
                return;
 
-       netdev->features |= NETIF_F_HW_TLS_TX;
-       netdev->hw_features |= NETIF_F_HW_TLS_TX;
+       if (caps & MLX5_ACCEL_TLS_TX) {
+               netdev->features          |= NETIF_F_HW_TLS_TX;
+               netdev->hw_features       |= NETIF_F_HW_TLS_TX;
+       }
+
+       if (caps & MLX5_ACCEL_TLS_RX) {
+               netdev->features          |= NETIF_F_HW_TLS_RX;
+               netdev->hw_features       |= NETIF_F_HW_TLS_RX;
+       }
+
+       if (!(caps & MLX5_ACCEL_TLS_LRO)) {
+               netdev->features          &= ~NETIF_F_LRO;
+               netdev->hw_features       &= ~NETIF_F_LRO;
+       }
+
        netdev->tlsdev_ops = &mlx5e_tls_ops;
 }
 
-- 
1.8.3.1

Reply via email to