This patch leaves the existing iflib mechanism for choosing the receive queue buffer size in place, and extends it to allow drivers to specify on a per-queue basis whether iflib should determine the size or a driver-supplied size should be used. 'Per-queue' here uses the iflib terminology where the machinery for a given NIC queue is represented by an iflib queue set, which may itself be composed of multiple iflib queues.
A read-only freelist sysctl is also added to report the buffer size in use for each freelist (and thus for the corresponding receive queue).
The motivation for this change is the vmx driver, for which each NIC receive queue is served by two buffer descriptor rings. The first buffer descriptor ring is used for the first segment of a given packet, and the second buffer descriptor ring is used for any additional segments of a given packet (which cases arises under jumbo frame and LRO configurations). With this receive buffer ring structure and use, there is better memory utilization and throughput performance with jumbo frames and/or LRO when the size of the buffers used in the first descriptor ring are chosen based on the mtu (i.e., by iflib), and the size of the buffers used in the second descriptor ring are always page-sized.