| From foo@baz Thu Jan 27 04:23:09 PM CET 2022 |
| From: Manish Chopra <manishc@marvell.com> |
| Date: Tue, 25 Jan 2022 10:57:49 -0800 |
| Subject: bnx2x: Invalidate fastpath HSI version for VFs |
| To: <stable@vger.kernel.org> |
| Cc: <aelior@marvell.com>, <gregkh@linuxfoundation.org>, <manishc@marvell.com> |
| Message-ID: <20220125185749.26774-2-manishc@marvell.com> |
| |
| From: Manish Chopra <manishc@marvell.com> |
| |
| commit 802d4d207e75d7208ff75adb712b556c1e91cf1c upstream |
| |
| Commit 0a6890b9b4df ("bnx2x: Utilize FW 7.13.15.0.") |
| added validation for fastpath HSI versions for different |
| client init which was not meant for SR-IOV VF clients, which |
| resulted in firmware asserts when running VF clients with |
| different fastpath HSI version. |
| |
| This patch along with the new firmware support in patch #1 |
| fixes this behavior in order to not validate fastpath HSI |
| version for the VFs. |
| |
| Fixes: 0a6890b9b4df ("bnx2x: Utilize FW 7.13.15.0.") |
| Signed-off-by: Manish Chopra <manishc@marvell.com> |
| Signed-off-by: Prabhakar Kushwaha <pkushwaha@marvell.com> |
| Signed-off-by: Alok Prasad <palok@marvell.com> |
| Signed-off-by: Ariel Elior <aelior@marvell.com> |
| Signed-off-by: David S. Miller <davem@davemloft.net> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c | 13 +++++++++++-- |
| 1 file changed, 11 insertions(+), 2 deletions(-) |
| |
| --- a/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c |
| +++ b/drivers/net/ethernet/broadcom/bnx2x/bnx2x_sriov.c |
| @@ -758,9 +758,18 @@ static void bnx2x_vf_igu_reset(struct bn |
| |
| void bnx2x_vf_enable_access(struct bnx2x *bp, u8 abs_vfid) |
| { |
| + u16 abs_fid; |
| + |
| + abs_fid = FW_VF_HANDLE(abs_vfid); |
| + |
| /* set the VF-PF association in the FW */ |
| - storm_memset_vf_to_pf(bp, FW_VF_HANDLE(abs_vfid), BP_FUNC(bp)); |
| - storm_memset_func_en(bp, FW_VF_HANDLE(abs_vfid), 1); |
| + storm_memset_vf_to_pf(bp, abs_fid, BP_FUNC(bp)); |
| + storm_memset_func_en(bp, abs_fid, 1); |
| + |
| + /* Invalidate fp_hsi version for vfs */ |
| + if (bp->fw_cap & FW_CAP_INVALIDATE_VF_FP_HSI) |
| + REG_WR8(bp, BAR_XSTRORM_INTMEM + |
| + XSTORM_ETH_FUNCTION_INFO_FP_HSI_VALID_E2_OFFSET(abs_fid), 0); |
| |
| /* clear vf errors*/ |
| bnx2x_vf_semi_clear_err(bp, abs_vfid); |