[dpdk-stable] [DPDK 20.11] net/iavf: fix error handling for unsupported promisc config

Xueming(Steven) Li xuemingl at nvidia.com
Sun Jun 20 16:05:03 CEST 2021


Hi Qi,

Two upstream tag in this commit message, the first one not found in upstream branch, could you please check?
BTW, the patch can't be applied to 20.11 work queue branch, could you please rebase on latest version?
	https://github.com/steevenlee/dpdk/commits/20.11

Best Regards,
Xueming

> -----Original Message-----
> From: stable <stable-bounces at dpdk.org> On Behalf Of Qi Zhang
> Sent: Friday, June 11, 2021 9:44 AM
> To: bluca at debian.org
> Cc: vitaliy.zakharchenko at intel.com; arjun.anantharam at intel.com; stable at dpdk.org; Qi Zhang <qi.z.zhang at intel.com>; Ngai-mint
> Kwan <ngai-mint.kwan at intel.com>
> Subject: [dpdk-stable] [DPDK 20.11] net/iavf: fix error handling for unsupported promisc config
> 
> [ upstream commit 308f75b5c9cc5ca3e972dbc84375bdee353c3156 ] [ upstream commit
> 0c35eecfe8b54bbdf59c30a803404acfdcc4f7eb ]
> 
> 1. The VIRTCHNL_STATUS_ERR_NOT_SUPPORTED should be esculated to upper
>    with -ENOTSUP in iavf_execute_vf_cmd.
> 2. fix error code check in iavf_config_promisc 3. change vf->cmd_ret_val from unsigned to signed as it will compare with
>    negtive value.
> 
> Signed-off-by: Qi Zhang <qi.z.zhang at intel.com>
> Signed-off-by: Ngai-mint Kwan <ngai-mint.kwan at intel.com>
> ---
>  drivers/net/iavf/iavf.h       |  2 +-
>  drivers/net/iavf/iavf_vchnl.c | 16 +++++++++++-----
>  2 files changed, 12 insertions(+), 6 deletions(-)
> 
> diff --git a/drivers/net/iavf/iavf.h b/drivers/net/iavf/iavf.h index 0196f74721..4bcb407b20 100644
> --- a/drivers/net/iavf/iavf.h
> +++ b/drivers/net/iavf/iavf.h
> @@ -136,7 +136,7 @@ struct iavf_info {
>  	uint64_t supported_rxdid;
>  	uint8_t *proto_xtr; /* proto xtr type for all queues */
>  	volatile enum virtchnl_ops pend_cmd; /* pending command not finished */
> -	uint32_t cmd_retval; /* return value of the cmd response from PF */
> +	int cmd_retval; /* return value of the cmd response from PF */
>  	uint8_t *aq_resp; /* buffer to store the adminq response from PF */
> 
>  	/* Event from pf */
> diff --git a/drivers/net/iavf/iavf_vchnl.c b/drivers/net/iavf/iavf_vchnl.c index 3d52a8c402..219245d040 100644
> --- a/drivers/net/iavf/iavf_vchnl.c
> +++ b/drivers/net/iavf/iavf_vchnl.c
> @@ -228,12 +228,18 @@ iavf_execute_vf_cmd(struct iavf_adapter *adapter, struct iavf_cmd_info *args)
>  			/* If don't read msg or read sys event, continue */
>  		} while (i++ < MAX_TRY_TIMES);
>  		/* If there's no response is received, clear command */
> -		if (i >= MAX_TRY_TIMES  ||
> -		    vf->cmd_retval != VIRTCHNL_STATUS_SUCCESS) {
> -			err = -1;
> +		if (i >= MAX_TRY_TIMES) {
>  			PMD_DRV_LOG(ERR, "No response or return failure (%d)"
>  				    " for cmd %d", vf->cmd_retval, args->ops);
>  			_clear_cmd(vf);
> +			err = -EIO;
> +		} else if (vf->cmd_retval == VIRTCHNL_STATUS_ERR_NOT_SUPPORTED) {
> +			PMD_DRV_LOG(ERR, "Cmd %d not supported", args->ops);
> +			err = -ENOTSUP;
> +		} else if (vf->cmd_retval != VIRTCHNL_STATUS_SUCCESS) {
> +			PMD_DRV_LOG(ERR, "Return failure %d for cmd %d",
> +				    vf->cmd_retval, args->ops);
> +			err = -EINVAL;
>  		}
>  		break;
>  	}
> @@ -1099,8 +1105,8 @@ iavf_config_promisc(struct iavf_adapter *adapter,
>  		PMD_DRV_LOG(ERR,
>  			    "fail to execute command CONFIG_PROMISCUOUS_MODE");
> 
> -		if (err == IAVF_NOT_SUPPORTED)
> -			return -ENOTSUP;
> +		if (err == -ENOTSUP)
> +			return err;
> 
>  		return -EAGAIN;
>  	}
> --
> 2.26.2



More information about the stable mailing list