Page MenuHomeFreeBSD

Remove freelist contiguous-indexes assertion from rxd_frag_to_sd()

Authored by pkelsey on Mar 3 2020, 4:14 PM.
Referenced Files
Unknown Object (File)
Fri, May 26, 11:13 PM
Unknown Object (File)
Thu, May 4, 4:03 PM
Unknown Object (File)
Apr 18 2023, 11:18 PM
Unknown Object (File)
Mar 4 2023, 9:39 AM
Unknown Object (File)
Feb 16 2023, 4:12 AM
Unknown Object (File)
Feb 12 2023, 5:23 PM
Unknown Object (File)
Feb 11 2023, 1:23 AM
Unknown Object (File)
Feb 5 2023, 5:38 PM



The vmx driver is an example of an iflib driver that might report packets using non-contiguous descriptors (with unused descriptors either between received packets or between the fragments of a received packet), so this assertion needs to be removed.

For such drivers, the freelist producer and consumer indexes don't relate directly to driver ring slots (the driver deals directly with freelist buffer indexes supplied by iflib during refill, and reports them with each fragment during packet reception), but do continue to be used by iflib for accounting, such as determining the number of ring slots that are refillable.

Test Plan

This has been tested on a 12.1 system (with r356932 applied) with em and vmx devices.

This builds for 13-current, but testing on 13-current is waiting for the package system to get fixed.

Diff Detail

rS FreeBSD src repository - subversion
Lint Not Applicable
Tests Not Applicable

Event Timeline

Funny how the comment right above the assert calls it out as bogus..

This revision is now accepted and ready to land.Mar 3 2020, 6:20 PM

Funny how the comment right above the assert calls it out as bogus..

Conditioned on not resolving how bxe actually works...

I think it could have been left out earlier given iflib is apparently designed to allow this to happen (otherwise why provide the array of buffer indexes to the driver during refill, and why use a bitmap to track freelist index states?)