IB/mlx5: Enable TX on a DEVX flow table
authorAlex Vesker <valex@mellanox.com>
Tue, 4 Dec 2018 13:34:05 +0000 (15:34 +0200)
committerJason Gunthorpe <jgg@mellanox.com>
Fri, 7 Dec 2018 03:33:09 +0000 (20:33 -0700)
Flow table can be passed as a DEVX object which is a valid destination in
an EGRESS flow. Fix the original code to allow that.

Fixes: a7ee18bdee83 ("RDMA/mlx5: Allow creating a matcher for a NIC TX flow table")
Signed-off-by: Alex Vesker <valex@mellanox.com>
Reviewed-by: Yishai Hadas <yishaih@mellanox.com>
Signed-off-by: Leon Romanovsky <leonro@mellanox.com>
Signed-off-by: Jason Gunthorpe <jgg@mellanox.com>
drivers/infiniband/hw/mlx5/flow.c

index 793afa404442e5bc3984d129522a3d80893afb85..b73756bd38bd14ab623dc2728c5c789632310572 100644 (file)
@@ -93,10 +93,6 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_CREATE_FLOW)(
            ((dest_devx && dest_qp) || (!dest_devx && !dest_qp)))
                return -EINVAL;
 
-       if (fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_EGRESS &&
-           (dest_devx || dest_qp))
-               return -EINVAL;
-
        if (dest_devx) {
                devx_obj = uverbs_attr_get_obj(
                        attrs, MLX5_IB_ATTR_CREATE_FLOW_DEST_DEVX);
@@ -141,6 +137,10 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_CREATE_FLOW)(
        if (dev->rep)
                return -ENOTSUPP;
 
+       if (dest_type == MLX5_FLOW_DESTINATION_TYPE_TIR &&
+           fs_matcher->ns_type == MLX5_FLOW_NAMESPACE_EGRESS)
+               return -EINVAL;
+
        cmd_in = uverbs_attr_get_alloced_ptr(
                attrs, MLX5_IB_ATTR_CREATE_FLOW_MATCH_VALUE);
        inlen = uverbs_attr_get_len(attrs,