From b765730bc13e008e2b3452a2e6dffb2d24994035 Mon Sep 17 00:00:00 2001 From: Rasesh Mody Date: Thu, 22 Dec 2016 16:50:03 -0800 Subject: [PATCH] net/qede/base: fix to handle acquire request from VF Add a check and fail the VF's probe request if VF is already in VF_ACQUIRED state. Fixes: 22d07d939c3c ("net/qede/base: update") Signed-off-by: Rasesh Mody --- drivers/net/qede/base/ecore_sriov.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/net/qede/base/ecore_sriov.c b/drivers/net/qede/base/ecore_sriov.c index 1255296636..c2fbee872c 100644 --- a/drivers/net/qede/base/ecore_sriov.c +++ b/drivers/net/qede/base/ecore_sriov.c @@ -1459,6 +1459,18 @@ static void ecore_iov_vf_mbx_acquire(struct ecore_hwfn *p_hwfn, pfdev_info->major_fp_hsi = ETH_HSI_VER_MAJOR; pfdev_info->minor_fp_hsi = ETH_HSI_VER_MINOR; + /* TODO - not doing anything is bad since we'll assert, but this isn't + * necessarily the right behavior - perhaps we should have allowed some + * versatility here. + */ + if (vf->state != VF_FREE && + vf->state != VF_STOPPED) { + DP_VERBOSE(p_hwfn, ECORE_MSG_IOV, + "VF[%d] sent ACQUIRE but is already in state %d - fail request\n", + vf->abs_vf_id, vf->state); + goto out; + } + /* Validate FW compatibility */ if (req->vfdev_info.eth_fp_hsi_major != ETH_HSI_VER_MAJOR) { if (req->vfdev_info.capabilities & -- 2.20.1