[PATCH v6] net/ice: add retry mechanism for DCF after failure

Zhang, Qi Z qi.z.zhang at intel.com
Thu Jul 7 08:55:45 CEST 2022



> -----Original Message-----
> From: Zhang, Peng1X <peng1x.zhang at intel.com>
> Sent: Wednesday, July 6, 2022 10:17 PM
> To: Yang, Qiming <qiming.yang at intel.com>; Zhang, Qi Z
> <qi.z.zhang at intel.com>; dev at dpdk.org
> Subject: [PATCH v6] net/ice: add retry mechanism for DCF after failure
> 
> From: Peng Zhang <peng1x.zhang at intel.com>
> 
> The origin design is if error happen during the step 3 of given situation, it will
> return error directly without retry. While in current patch, it will retry at every
> interval time during certain time if receive designed error code
> 'VIRTCHNL_STATUS_ERR_RETRY'
> from kernel. If retry succeed, rule can be continuously created.
> 
> The given situation as following steps show:
> step 1. Kernel PF and DPDK DCF are ready at the beginning.
> step 2. A VF reset happen, kernel send an event to DCF and set STATE to pause.
> step 3. Before DCF receive the event, it is possible a rule creation is ongoing
> and virtual channel command from DCF to kernel PF is executing.
> step 4. Then result of command is failure, it will lead to error code return to
> DCF. Error code will be set as EINVAL, not EAGAIN.
> 
> Fixes: daa714d55c72 ("net/ice: handle AdminQ command by DCF")
> Cc: stable at dpdk.org
> 
> Signed-off-by: Peng Zhang <peng1x.zhang at intel.com>
> ---
>  v6 changes:
>  - Add retry mechanism for DCF if receive designed error code from kernel.
>  v5 changes:
>  - Add retry mechanism for DCF if the result of sending virtual channel
>    command is failure.
>  v4 changes:
>  - Add retry mechanism if the result of sending adminQ queue command is
>    failure.
>  v3 Changes:
>  - Add the situation description, expected error code and incorrect
>    error code in commit log.
>  v2 Changes:
>  - Modify DCF state checking mechanism.
> 
>  drivers/common/iavf/virtchnl.h |  1 +
>  drivers/net/ice/ice_dcf.c      | 32 ++++++++++++++++++++------------
>  2 files changed, 21 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/common/iavf/virtchnl.h b/drivers/common/iavf/virtchnl.h
> index f123daec8e..e15e3a4439 100644
> --- a/drivers/common/iavf/virtchnl.h
> +++ b/drivers/common/iavf/virtchnl.h
> @@ -49,6 +49,7 @@ enum virtchnl_status_code {
>  	VIRTCHNL_STATUS_ERR_CQP_COMPL_ERROR		= -39,
>  	VIRTCHNL_STATUS_ERR_INVALID_VF_ID		= -40,
>  	VIRTCHNL_STATUS_ERR_ADMIN_QUEUE_ERROR		= -53,
> +	VIRTCHNL_STATUS_ERR_RETRY			= -63,

Where this error code be used?



More information about the dev mailing list