git: e706512a2b64 - main - ixl(4): Fix SR-IOV panics

From: Eric Joyner <erj_at_FreeBSD.org>
Date: Wed, 13 Jul 2022 01:25:27 UTC
The branch main has been updated by erj:

URL: https://cgit.FreeBSD.org/src/commit/?id=e706512a2b64fa2741144caf056c9fe923b60004

commit e706512a2b64fa2741144caf056c9fe923b60004
Author:     Yan Ka Chiu <nyan@myuji.xyz>
AuthorDate: 2022-07-13 01:16:29 +0000
Commit:     Eric Joyner <erj@FreeBSD.org>
CommitDate: 2022-07-13 01:17:03 +0000

    ixl(4): Fix SR-IOV panics
    
    The hw and ifp of a vsi will be NULL if such ixl_vsi is allocated
    for a VF. When ixl_reconfigure_filters called, it is trying to
    access vsi->ifp and hw->mac.addr and therefore is casuing panic.
    
    This commit add checks to determine if vsi is a VF by checking
    if vsi->hw is NULL, before adding IXL_VLAN_ANY filter (which
    is already in a VF vsi's filter list) and VLAN filters.
    
    (erj's Note: The SR-IOV flows need revisiting; this will help
    prevent panics for now)
    
    Reviewed by:    krzysztof.galazka@intel.com, erj@
    MFC after:      1 week
    Differential Revision:  https://reviews.freebsd.org/D35649
---
 sys/dev/ixl/ixl_pf_main.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/sys/dev/ixl/ixl_pf_main.c b/sys/dev/ixl/ixl_pf_main.c
index 8b01ec8a718f..0b1604cc4918 100644
--- a/sys/dev/ixl/ixl_pf_main.c
+++ b/sys/dev/ixl/ixl_pf_main.c
@@ -1114,6 +1114,14 @@ ixl_reconfigure_filters(struct ixl_vsi *vsi)
 
 	ixl_add_hw_filters(vsi, &tmp, cnt);
 
+	/*
+	 * When the vsi is allocated for the VFs, both vsi->hw and vsi->ifp
+	 * will be NULL. Furthermore, the ftl of such vsi already contains
+	 * IXL_VLAN_ANY filter so we can skip that as well.
+	 */
+	if (hw == NULL)
+		return;
+
 	/* Filter could be removed if MAC address was changed */
 	ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY);