Index: sys/dev/ixl/ixl_pf_main.c =================================================================== --- sys/dev/ixl/ixl_pf_main.c +++ sys/dev/ixl/ixl_pf_main.c @@ -1114,16 +1114,23 @@ ixl_add_hw_filters(vsi, &tmp, cnt); - /* Filter could be removed if MAC address was changed */ - ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY); - - if ((if_getcapenable(vsi->ifp) & IFCAP_VLAN_HWFILTER) == 0) - return; /* - * VLAN HW filtering is enabled, make sure that filters - * for all registered VLAN tags are configured + * 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. */ - ixl_add_vlan_filters(vsi, hw->mac.addr); + if (hw == NULL) { + /* Filter could be removed if MAC address was changed */ + ixl_add_filter(vsi, hw->mac.addr, IXL_VLAN_ANY); + + if ((if_getcapenable(vsi->ifp) & IFCAP_VLAN_HWFILTER) == 0) + return; + /* + * VLAN HW filtering is enabled, make sure that filters + * for all registered VLAN tags are configured + */ + ixl_add_vlan_filters(vsi, hw->mac.addr); + } } /*