qed: Relax VF firmware requirements
Current driver require an exact match between VF and PF storm firmware; Any difference would fail the VF acquire message, causing the VF probe to be aborted. While there's still dependencies between the two, the recent FW submission has relaxed the match requirement - instead of an exact match, there's now a 'fastpath' HSI major/minor scheme, where VFs and PFs that match in their major number can co-exist even if their minor is different. In order to accomadate this change some changes in the vf-start init flow had to be made, as the VF start ramrod now has to be sent only after PF learns which fastpath HSI its VF is requiring. Signed-off-by: Yuval Mintz <Yuval.Mintz@qlogic.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
3bcb846ca4
commit
1fe614d10f
@ -147,6 +147,8 @@ static int qed_vf_pf_acquire(struct qed_hwfn *p_hwfn)
|
||||
req->vfdev_info.fw_minor = FW_MINOR_VERSION;
|
||||
req->vfdev_info.fw_revision = FW_REVISION_VERSION;
|
||||
req->vfdev_info.fw_engineering = FW_ENGINEERING_VERSION;
|
||||
req->vfdev_info.eth_fp_hsi_major = ETH_HSI_VER_MAJOR;
|
||||
req->vfdev_info.eth_fp_hsi_minor = ETH_HSI_VER_MINOR;
|
||||
|
||||
/* Fill capability field with any non-deprecated config we support */
|
||||
req->vfdev_info.capabilities |= VFPF_ACQUIRE_CAP_100G;
|
||||
@ -200,6 +202,16 @@ static int qed_vf_pf_acquire(struct qed_hwfn *p_hwfn)
|
||||
|
||||
/* Clear response buffer */
|
||||
memset(p_iov->pf2vf_reply, 0, sizeof(union pfvf_tlvs));
|
||||
} else if ((resp->hdr.status == PFVF_STATUS_NOT_SUPPORTED) &&
|
||||
pfdev_info->major_fp_hsi &&
|
||||
(pfdev_info->major_fp_hsi != ETH_HSI_VER_MAJOR)) {
|
||||
DP_NOTICE(p_hwfn,
|
||||
"PF uses an incompatible fastpath HSI %02x.%02x [VF requires %02x.%02x]. Please change to a VF driver using %02x.xx.\n",
|
||||
pfdev_info->major_fp_hsi,
|
||||
pfdev_info->minor_fp_hsi,
|
||||
ETH_HSI_VER_MAJOR,
|
||||
ETH_HSI_VER_MINOR, pfdev_info->major_fp_hsi);
|
||||
return -EINVAL;
|
||||
} else {
|
||||
DP_ERR(p_hwfn,
|
||||
"PF returned error %d to VF acquisition request\n",
|
||||
@ -225,6 +237,13 @@ static int qed_vf_pf_acquire(struct qed_hwfn *p_hwfn)
|
||||
}
|
||||
}
|
||||
|
||||
if (ETH_HSI_VER_MINOR &&
|
||||
(resp->pfdev_info.minor_fp_hsi < ETH_HSI_VER_MINOR)) {
|
||||
DP_INFO(p_hwfn,
|
||||
"PF is using older fastpath HSI; %02x.%02x is configured\n",
|
||||
ETH_HSI_VER_MAJOR, resp->pfdev_info.minor_fp_hsi);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user