diff options
| author | Yan Ka Chiu <nyan@myuji.xyz> | 2022-07-13 01:16:29 +0000 |
|---|---|---|
| committer | Eric Joyner <erj@FreeBSD.org> | 2022-10-19 23:19:43 +0000 |
| commit | 749c7da9b9b45949c2aae76bffafb626e7316b06 (patch) | |
| tree | 1056ee78df7797a304ccd9af8cd5be8a55796610 | |
| parent | 03b2ad9a03c92c51711a3100b9aafe1586c8566c (diff) | |
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
(cherry picked from commit e706512a2b64fa2741144caf056c9fe923b60004)
| -rw-r--r-- | sys/dev/ixl/ixl_pf_main.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/sys/dev/ixl/ixl_pf_main.c b/sys/dev/ixl/ixl_pf_main.c index 4d75200ea739..61dd4da05030 100644 --- a/sys/dev/ixl/ixl_pf_main.c +++ b/sys/dev/ixl/ixl_pf_main.c @@ -1124,6 +1124,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); |
