RDMA/mlx5: Enable sniffer when device is in switchdev mode
authorMaor Gottlieb <maorg@mellanox.com>
Mon, 3 Aug 2020 06:02:14 +0000 (09:02 +0300)
committerJason Gunthorpe <jgg@nvidia.com>
Tue, 18 Aug 2020 18:03:32 +0000 (15:03 -0300)
In order to allow sniffer when the RDMA device is in switchdev mode, we
don't need to set the source port when creating the sniffer rule.

Link: https://lore.kernel.org/r/20200803060214.15328-1-leon@kernel.org
Signed-off-by: Maor Gottlieb <maorg@mellanox.com>
Reviewed-by: Mark Bloch <markb@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
drivers/infiniband/hw/mlx5/fs.c

index ab5ea9b..492cfe0 100644 (file)
@@ -953,7 +953,7 @@ static struct mlx5_ib_flow_handler *_create_flow_rule(struct mlx5_ib_dev *dev,
        if (!flow_is_multicast_only(flow_attr))
                set_underlay_qp(dev, spec, underlay_qpn);
 
-       if (dev->is_rep) {
+       if (dev->is_rep && flow_attr->type != IB_FLOW_ATTR_SNIFFER) {
                struct mlx5_eswitch_rep *rep;
 
                rep = dev->port[flow_attr->port - 1].rep;
@@ -1115,6 +1115,7 @@ static struct mlx5_ib_flow_handler *create_sniffer_rule(struct mlx5_ib_dev *dev,
        int err;
        static const struct ib_flow_attr flow_attr  = {
                .num_of_specs = 0,
+               .type = IB_FLOW_ATTR_SNIFFER,
                .size = sizeof(flow_attr)
        };