On 5/16/2025 2:47 AM, Robert Malz wrote:
The function i40e_vc_reset_vf attempts, up to 20 times, to handle a
VF reset request, using the return value of i40e_reset_vf as an indicator
of whether the reset was successfully triggered. Currently, i40e_reset_vf
always returns true, which causes new reset requests to be ignored if a
different VF reset is already in progress.

This patch updates the return value of i40e_reset_vf to reflect when
another VF reset is in progress, allowing the caller to properly use
the retry mechanism.

Fixes: 52424f974bc5 ("i40e: Fix VF hang when reset is triggered on another VF")
Signed-off-by: Robert Malz <[email protected]>
---
  drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c | 6 +++---
  1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c 
b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
index 1120f8e4bb67..2f1aa18bcfb8 100644
--- a/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
+++ b/drivers/net/ethernet/intel/i40e/i40e_virtchnl_pf.c
@@ -1546,8 +1546,8 @@ static void i40e_cleanup_reset_vf(struct i40e_vf *vf)
   * @vf: pointer to the VF structure
   * @flr: VFLR was issued or not
   *
- * Returns true if the VF is in reset, resets successfully, or resets
- * are disabled and false otherwise.
+ * Returns true if reset was performed successfully or if resets are
+ * disabled. False if reset is already in progress.

nit but if we are editing this, let's make kdoc happy. Please start with Return: or Returns:

Thanks,
Tony

   **/
  bool i40e_reset_vf(struct i40e_vf *vf, bool flr)
  {
@@ -1566,7 +1566,7 @@ bool i40e_reset_vf(struct i40e_vf *vf, bool flr)
/* If VF is being reset already we don't need to continue. */
        if (test_and_set_bit(I40E_VF_STATE_RESETTING, &vf->vf_states))
-               return true;
+               return false;
i40e_trigger_vf_reset(vf, flr);

Reply via email to