net/qede/base: fix to handle acquire request from VF
authorRasesh Mody <rasesh.mody@cavium.com>
Fri, 23 Dec 2016 00:50:03 +0000 (16:50 -0800)
committerFerruh Yigit <ferruh.yigit@intel.com>
Tue, 17 Jan 2017 18:40:52 +0000 (19:40 +0100)
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 <rasesh.mody@cavium.com>
drivers/net/qede/base/ecore_sriov.c

index 1255296..c2fbee8 100644 (file)
@@ -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 &