> -----Original Message-----
> From: Loftus, Ciara <[email protected]>
> Sent: 09 June 2026 13:44
> To: Mandal, Anurag <[email protected]>; [email protected]
> Cc: Richardson, Bruce <[email protected]>; Medvedkin, Vladimir
> <[email protected]>; [email protected]
> Subject: RE: [PATCH] net/iavf: fix misleading AQ failure logging
> 
> > Subject: [PATCH] net/iavf: fix misleading AQ failure logging
> >
> > iavf_handle_virtchnl_msg() drains the admin receive queue in a loop
> > until iavf_clean_arq_element() reports that no descriptors are
> > pending. When the queue becomes empty, the base driver returns
> > IAVF_ERR_ADMIN_QUEUE_NO_WORK (-57), which is the documented
> terminator
> > for the drain loop, and is not an error.
> >
> > The current loop treats every non-IAVF_SUCCESS return as a failure and
> > logs it as follows:
> >
> > "Failed to read msg from AdminQ, ret: -57"
> >
> > This message floods the logs on every interrupt cycle and misleads the
> > triage during VF reset by chasing a real virtchnl problem seeing these
> > spurious -57 AQ failure lines in logs and assumes the admin queue is
> > broken, when in fact it has just been drained.
> >
> > This patch fixes the aforesaid issue by treating
> > IAVF_ERR_ADMIN_QUEUE_NO_WORK in virtchnl message drain as a normal
> > loop exit empty-queue condition and avoid logging it as an misleading
> > AQ failure.
> >
> > Fixes: 02d212ca3125 ("net/iavf: rename remaining avf strings")
> > Cc: [email protected]
> >
> > Signed-off-by: Anurag Mandal <[email protected]>
> > ---
> >  drivers/net/intel/iavf/iavf_vchnl.c | 10 +++++++++-
> >  1 file changed, 9 insertions(+), 1 deletion(-)
> >
> > diff --git a/drivers/net/intel/iavf/iavf_vchnl.c
> > b/drivers/net/intel/iavf/iavf_vchnl.c
> > index 94ccfb5d6e..870d5c1820 100644
> > --- a/drivers/net/intel/iavf/iavf_vchnl.c
> > +++ b/drivers/net/intel/iavf/iavf_vchnl.c
> > @@ -570,7 +570,15 @@ iavf_handle_virtchnl_msg(struct rte_eth_dev *dev)
> >     while (pending) {
> >             ret = iavf_clean_arq_element(hw, &info, &pending);
> >
> > -           if (ret != IAVF_SUCCESS) {
> > +           /*
> > +            * IAVF_ERR_ADMIN_QUEUE_NO_WORK (-57) means AQ is
> > empty
> > +            * and is a normal way to terminate the drain loop.
> > +            * Log error only for genuine other failure codes.
> > +            * Incorrect logging like this during VF resets might
> > +            * mislead into chasing a non-existent AQ failure.
> > +            */
> > +           if (ret != IAVF_SUCCESS &&
> > +               ret != IAVF_ERR_ADMIN_QUEUE_NO_WORK) {
> >                     PMD_DRV_LOG(INFO, "Failed to read msg from
> AdminQ,"
> >                                 "ret: %d", ret);
> >                     break;
> > --
> 
> I agree we should suppress the log on ret=NO_WORK but I think we should still
> break instead of proceeding with the message handling code. With your
> changes, in place of the
> log:
>       IAVF_DRIVER: iavf_handle_virtchnl_msg(): Failed to read msg from
> AdminQ,ret: -57 I now see:
>       IAVF_DRIVER: iavf_handle_virtchnl_msg(): Request 0 is not supported
> yet
> 
> I think that's because we enter the message handling code and arrive at the
> default case in the switch statement.

Hi Ciara,

Thanks for the review. I checked. You are correct.
Sent v2 with proper fix.
Please review. Thanks!

Thanks,
Anurag

Reply via email to