mirror of
https://github.com/freebsd/freebsd-src.git
synced 2026-11-07 04:36:52 -10:00
Add compile-time optional, non-sleeping fail points around every VF creation resource boundary, before VF VSI reconstruction, and in the GET_STATS validation path. Provide an ICE-wide wrapper and device selector so other driver subsystems can add scoped points without duplicating the failpoint plumbing. Keep the current SR-IOV points and VF selector in an iov child namespace. Compile the facility only with options DRIVER_FAILPOINTS. This shared option avoids a separate kernel option for every driver that provides test-only injection hooks. Ordinary kernels contain no ICE failpoint objects or sysctl nodes. Require an exact PF device name and optionally a VF index before any point can fire. This prevents a stale test setting from affecting another PF. The hooks exposed two reset-lifetime defects while validating the existing SR-IOV review series. A PF reset could discard a firmware VSI before teardown, and a rebuilt sibling could leave stale switch-filter state after IOV destroy. Tested on an E810-XXV with INVARIANTS and WITNESS. All twelve creation checkpoints rolled back and permitted immediate resource reuse. Forced reconstruction and malformed GET_STATS failures also preserved sibling operation and reply cardinality. Reviewed by: gallatin, nprice, ziaee MFC after: 2 weeks Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D58940
30 lines
902 B
Makefile
30 lines
902 B
Makefile
.PATH: ${SRCTOP}/sys/dev/ice
|
|
|
|
KMOD = if_ice
|
|
|
|
# Interface headers
|
|
SRCS = device_if.h bus_if.h pci_if.h ifdi_if.h
|
|
SRCS += irdma_di_if.h irdma_if.h
|
|
|
|
# Option headers
|
|
SRCS += opt_inet.h opt_inet6.h opt_rss.h opt_iflib.h
|
|
SRCS += opt_driver_failpoints.h
|
|
|
|
# Core source
|
|
SRCS += ice_lib.c ice_osdep.c ice_resmgr.c ice_strings.c
|
|
SRCS += ice_iflib_recovery_txrx.c ice_iflib_txrx.c if_ice_iflib.c
|
|
SRCS += ice_fw_logging.c ice_ddp_common.c
|
|
SRCS.PCI_IOV += pci_iov_if.h ice_iov.c ice_vf_mbx.c
|
|
|
|
# RDMA Client interface
|
|
# TODO: Is this the right way to compile this?
|
|
SRCS += ice_rdma.c irdma_di_if.c irdma_if.c
|
|
CFLAGS.irdma_di_if.c += -I${SRCTOP}/sys/dev/ice
|
|
CFLAGS.irdma_if.c += -I${SRCTOP}/sys/dev/ice
|
|
|
|
# Shared source
|
|
SRCS += ice_common.c ice_controlq.c ice_dcb.c ice_flex_pipe.c ice_flow.c
|
|
SRCS += ice_nvm.c ice_sched.c ice_switch.c ice_vlan_mode.c ice_fwlog.c
|
|
|
|
.include <bsd.kmod.mk>
|