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
This commit is contained in:
Yan Ka Chiu 2022-07-12 18:16:29 -07:00 committed by Eric Joyner
parent becd9908be
commit e706512a2b
No known key found for this signature in database
GPG Key ID: 96F0C6FD61E05DE3

View File

@ -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);