diff options
| author | Kevin Bowling <kbowling@FreeBSD.org> | 2026-08-18 08:48:36 +0000 |
|---|---|---|
| committer | Kevin Bowling <kbowling@FreeBSD.org> | 2026-09-17 08:26:18 +0000 |
| commit | 468384c8bd1130a880fd87ac5c2d182123f9f6ec (patch) | |
| tree | 1c94f78c1db5478fd4a0a199284a1425c627bfed /contrib/tcpdump/(developers-only) | |
| parent | 1d4a00d455617e150da5a7c3076579a7e612d33d (diff) | |
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
