diff options
Diffstat (limited to 'drivers/infiniband/hw/mlx5/devx.c')
| -rw-r--r-- | drivers/infiniband/hw/mlx5/devx.c | 11 | 
1 files changed, 7 insertions, 4 deletions
| diff --git a/drivers/infiniband/hw/mlx5/devx.c b/drivers/infiniband/hw/mlx5/devx.c index ac116d63e466..66dc337e49a7 100644 --- a/drivers/infiniband/hw/mlx5/devx.c +++ b/drivers/infiniband/hw/mlx5/devx.c @@ -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; |