Hi, I have a question about the "scattered Rx" feature: why enabling it disabled "bulk allocation" feature? There is some unclear comment in the ixgbe_recv_scattered_pkts():
/* * Descriptor done. * * Allocate a new mbuf to replenish the RX ring descriptor. * If the allocation fails: * - arrange for that RX descriptor to be the first one * being parsed the next time the receive function is * invoked [on the same queue]. * * - Stop parsing the RX ring and return immediately. * * This policy does not drop the packet received in the RX * descriptor for which the allocation of a new mbuf failed. * Thus, it allows that packet to be later retrieved if * mbuf have been freed in the mean time. * As a side effect, holding RX descriptors instead of * systematically giving them back to the NIC may lead to * RX ring exhaustion situations. * However, the NIC can gracefully prevent such situations * to happen by sending specific "back-pressure" flow control * frames to its peer(s). */ Why the same "policy" can't be done in the bulk-context allocation? - Don't advance the RDT until u've refilled the ring. What do I miss here? Another question is about the LRO feature - is there a reason why it's not implemented? I've implemented the LRO support in ixgbe PMD to begin with - I used a "scattered Rx" as a template and now I'm tuning it (things like the stuff above). Is there any philosophical reason why it hasn't been implemented in *any* PMD so far? ;) thanks, vlad