net/bnxt: fix lock handling in stop and close
authorSomnath Kotur <somnath.kotur@broadcom.com>
Thu, 14 Jan 2021 02:27:16 +0000 (18:27 -0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Fri, 29 Jan 2021 17:16:07 +0000 (18:16 +0100)
err_recovery_lock needs to be released before returning in
stop and close_op if FW_RESET flag is set.

Fixes: 6f5f3b99821e ("net/bnxt: check chip reset in stop and close")

Signed-off-by: Somnath Kotur <somnath.kotur@broadcom.com>
Reviewed-by: Ajit Khaparde <ajit.khaparde@broadcom.com>
drivers/net/bnxt/bnxt_ethdev.c

index 3ac3818..a3e41c9 100644 (file)
@@ -1374,6 +1374,7 @@ static int bnxt_dev_stop_op(struct rte_eth_dev *eth_dev)
        if (bp->flags & BNXT_FLAG_FW_RESET) {
                PMD_DRV_LOG(ERR,
                            "Adapter recovering from error..Please retry\n");
+               pthread_mutex_unlock(&bp->err_recovery_lock);
                return -EAGAIN;
        }
        pthread_mutex_unlock(&bp->err_recovery_lock);
@@ -1497,6 +1498,7 @@ static int bnxt_dev_close_op(struct rte_eth_dev *eth_dev)
        if (bp->flags & BNXT_FLAG_FW_RESET) {
                PMD_DRV_LOG(ERR,
                            "Adapter recovering from error...Please retry\n");
+               pthread_mutex_unlock(&bp->err_recovery_lock);
                return -EAGAIN;
        }
        pthread_mutex_unlock(&bp->err_recovery_lock);