The error code 'VIRTCHNL_STATUS_ERR_RETRY' is used in kernel when DCF state is busy or pause. If DPDK receive VIRTCHNL_STATUS_ERR_RETRY from kernel, actually in 'ice_dcf_send_aq_cmd' function the error code 'VIRTCHNL_STATUS_ERR_RETRY' will be treated as 'IAVF_ERR_NOT_READY'.
> -----Original Message----- > From: Zhang, Qi Z <qi.z.zh...@intel.com> > Sent: Thursday, July 7, 2022 2:56 PM > To: Zhang, Peng1X <peng1x.zh...@intel.com>; Yang, Qiming > <qiming.y...@intel.com>; dev@dpdk.org > Subject: RE: [PATCH v6] net/ice: add retry mechanism for DCF after failure > > > > > -----Original Message----- > > From: Zhang, Peng1X <peng1x.zh...@intel.com> > > Sent: Wednesday, July 6, 2022 10:17 PM > > To: Yang, Qiming <qiming.y...@intel.com>; Zhang, Qi Z > > <qi.z.zh...@intel.com>; dev@dpdk.org > > Subject: [PATCH v6] net/ice: add retry mechanism for DCF after failure > > > > From: Peng Zhang <peng1x.zh...@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: sta...@dpdk.org > > > > Signed-off-by: Peng Zhang <peng1x.zh...@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?