• Saeed Mahameed's avatar
    net/mlx5: Use mlx5_cmd_do() in core create_{cq,dct} · 31803e59
    Saeed Mahameed authored
    mlx5_core_create_{cq/dct} functions are non-trivial mlx5 commands
    functions. They check command execution status themselves and hide
    valuable FW failure information.
    
    For mlx5_core/eth kernel user this is what we actually want, but for a
    devx/rdma user the hidden information is essential and should be propagated
    up to the caller, thus we convert these commands to use mlx5_cmd_do
    to return the FW/driver and command outbox status as is, and let the caller
    decide what to do with it.
    
    For kernel callers of mlx5_core_create_{cq/dct} or those who only care about
    the binary status (FAIL/SUCCESS) they must check status themselves via
    mlx5_cmd_check() to restore the current behavior.
    
    err = mlx5_create_cq(in, out)
    err = mlx5_cmd_check(err, in, out)
    if (err)
        // handle err
    
    For DEVX users and those who care about full visibility, They will just
    propagate the error to user space, and app can check if err == -EREMOTEIO,
    then outbox.{status,syndrome} are valid.
    
    API Note:
    mlx5_cmd_check() must be used by kernel users since it allows the driver
    to intercept the command execution status and return a driver simulated
    status in case of driver induced error handling or reset/recovery flows.
    Signed-off-by: default avatarSaeed Mahameed <saeedm@mellanox.com>
    Signed-off-by: default avatarSaeed Mahameed <saeedm@nvidia.com>
    31803e59
qpc.c 16.3 KB