aboutsummaryrefslogtreecommitdiff
path: root/contrib/tcpdump/(developers-only)
diff options
context:
space:
mode:
authorKevin Bowling <kbowling@FreeBSD.org>2026-08-18 08:48:36 +0000
committerKevin Bowling <kbowling@FreeBSD.org>2026-09-17 08:26:18 +0000
commit468384c8bd1130a880fd87ac5c2d182123f9f6ec (patch)
tree1c94f78c1db5478fd4a0a199284a1425c627bfed /contrib/tcpdump/(developers-only)
parent1d4a00d455617e150da5a7c3076579a7e612d33d (diff)
ice: Fix SR-IOV VF resource cleanupHEADmain
ice_iov_uninit() freed each VF interrupt-map array without returning the reserved indices to the device interrupt resource manager. Repeated VF create and destroy cycles therefore exhausted the PF interrupt map even though no VFs remained. Return the interrupt allocation before freeing its map. Also split software-only VSI release from hardware teardown so failures before ice_initialize_vsi() do not issue invalid RSS, scheduler, and Free VSI commands for an object firmware has never seen. Keep a VF disabled until all of its resources and hardware state have been created successfully. Clear the enabled state before teardown and after any failed add so asynchronous mailbox processing cannot use a partial or freed VSI. Consume VFLR status for inactive VF slots without trying to reset a nonexistent VSI. Track whether firmware currently owns each VSI and clear that ownership after resets. Teardown can then skip AdminQ commands for VSIs which were not rebuilt. Remove every VSI switch filter before firmware teardown, matching Linux and preventing filter-list leaks across create and destroy cycles. This also applies to the PF VSI detach path. Validated on an E810-XXV with two consecutive create and destroy cycles of 128 four-queue VFs. A 16-queue VF could then be created. Two oversized configurations each failed, cleaned back to zero VFs without invalid firmware teardown commands, and were each followed by a successful 16-queue VF creation. MFC after: 2 weeks Sponsored by: BBOX.io Differential Revision: https://reviews.freebsd.org/D58908
Diffstat (limited to 'contrib/tcpdump/(developers-only)')
0 files changed, 0 insertions, 0 deletions