OSDN Git Service

net/mlx5: Enable flow-steering for IB link
authorErez Shitrit <erezsh@mellanox.com>
Thu, 13 Apr 2017 03:36:53 +0000 (06:36 +0300)
committerDavid S. Miller <davem@davemloft.net>
Mon, 17 Apr 2017 15:08:29 +0000 (11:08 -0400)
Get the relevant capabilities if supports ipoib_enhanced_offloads and
init the flow steering table accordingly.

Signed-off-by: Erez Shitrit <erezsh@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/fs_core.c
drivers/net/ethernet/mellanox/mlx5/core/fw.c

index 55182d0..b8a1765 100644 (file)
@@ -1905,9 +1905,6 @@ void mlx5_cleanup_fs(struct mlx5_core_dev *dev)
 {
        struct mlx5_flow_steering *steering = dev->priv.steering;
 
-       if (MLX5_CAP_GEN(dev, port_type) != MLX5_CAP_PORT_TYPE_ETH)
-               return;
-
        cleanup_root_ns(steering->root_ns);
        cleanup_root_ns(steering->esw_egress_root_ns);
        cleanup_root_ns(steering->esw_ingress_root_ns);
@@ -2010,9 +2007,6 @@ int mlx5_init_fs(struct mlx5_core_dev *dev)
        struct mlx5_flow_steering *steering;
        int err = 0;
 
-       if (MLX5_CAP_GEN(dev, port_type) != MLX5_CAP_PORT_TYPE_ETH)
-               return 0;
-
        err = mlx5_init_fc_stats(dev);
        if (err)
                return err;
@@ -2023,7 +2017,10 @@ int mlx5_init_fs(struct mlx5_core_dev *dev)
        steering->dev = dev;
        dev->priv.steering = steering;
 
-       if (MLX5_CAP_GEN(dev, nic_flow_table) &&
+       if ((((MLX5_CAP_GEN(dev, port_type) == MLX5_CAP_PORT_TYPE_ETH) &&
+             (MLX5_CAP_GEN(dev, nic_flow_table))) ||
+            ((MLX5_CAP_GEN(dev, port_type) == MLX5_CAP_PORT_TYPE_IB) &&
+             MLX5_CAP_GEN(dev, ipoib_enhanced_offloads))) &&
            MLX5_CAP_FLOWTABLE_NIC_RX(dev, ft_support)) {
                err = init_root_ns(steering);
                if (err)
index d0bbefa..1bc14d0 100644 (file)
@@ -137,7 +137,8 @@ int mlx5_query_hca_caps(struct mlx5_core_dev *dev)
                        return err;
        }
 
-       if (MLX5_CAP_GEN(dev, nic_flow_table)) {
+       if (MLX5_CAP_GEN(dev, nic_flow_table) ||
+           MLX5_CAP_GEN(dev, ipoib_enhanced_offloads)) {
                err = mlx5_core_get_caps(dev, MLX5_CAP_FLOW_TABLE);
                if (err)
                        return err;