Merge branch 'mlx5-next' of git://git.kernel.org/pub/scm/linux/kernel/git/mellanox...
[sfrench/cifs-2.6.git] / drivers / infiniband / hw / mlx5 / devx.c
index ac116d63e4661adf03662bdfb2cd598cc179ce3c..66dc337e49a740fbfac9ee1f6b23aeb6f47cba13 100644 (file)
@@ -284,7 +284,7 @@ static bool devx_is_obj_create_cmd(const void *in)
        case MLX5_CMD_OP_CREATE_FLOW_TABLE:
        case MLX5_CMD_OP_CREATE_FLOW_GROUP:
        case MLX5_CMD_OP_ALLOC_FLOW_COUNTER:
-       case MLX5_CMD_OP_ALLOC_ENCAP_HEADER:
+       case MLX5_CMD_OP_ALLOC_PACKET_REFORMAT_CONTEXT:
        case MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT:
        case MLX5_CMD_OP_CREATE_SCHEDULING_ELEMENT:
        case MLX5_CMD_OP_ADD_VXLAN_UDP_DPORT:
@@ -627,9 +627,9 @@ static void devx_obj_build_destroy_cmd(void *in, void *out, void *din,
                MLX5_SET(general_obj_in_cmd_hdr, din, opcode,
                         MLX5_CMD_OP_DEALLOC_FLOW_COUNTER);
                break;
-       case MLX5_CMD_OP_ALLOC_ENCAP_HEADER:
+       case MLX5_CMD_OP_ALLOC_PACKET_REFORMAT_CONTEXT:
                MLX5_SET(general_obj_in_cmd_hdr, din, opcode,
-                        MLX5_CMD_OP_DEALLOC_ENCAP_HEADER);
+                        MLX5_CMD_OP_DEALLOC_PACKET_REFORMAT_CONTEXT);
                break;
        case MLX5_CMD_OP_ALLOC_MODIFY_HEADER_CONTEXT:
                MLX5_SET(general_obj_in_cmd_hdr, din, opcode,
@@ -723,6 +723,7 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_OBJ_CREATE)(
                attrs, MLX5_IB_ATTR_DEVX_OBJ_CREATE_HANDLE);
        struct mlx5_ib_ucontext *c = to_mucontext(uobj->context);
        struct mlx5_ib_dev *dev = to_mdev(c->ibucontext.device);
+       u32 out[MLX5_ST_SZ_DW(general_obj_out_cmd_hdr)];
        struct devx_obj *obj;
        int err;
 
@@ -754,10 +755,12 @@ static int UVERBS_HANDLER(MLX5_IB_METHOD_DEVX_OBJ_CREATE)(
 
        err = uverbs_copy_to(attrs, MLX5_IB_ATTR_DEVX_OBJ_CREATE_CMD_OUT, cmd_out, cmd_out_len);
        if (err)
-               goto obj_free;
+               goto obj_destroy;
 
        return 0;
 
+obj_destroy:
+       mlx5_cmd_exec(obj->mdev, obj->dinbox, obj->dinlen, out, sizeof(out));
 obj_free:
        kfree(obj);
        return err;