> > + /** Maximum packet length that will be allocated from > > + the pool. The maximum value is defined by pool > > + capability pkt.max_len. Use 0 for default (the > > + pool maximum). */ > > + uint32_t max_len; > > + > > This max_len is not not used in 2 patches bellow. > > Do not see difference between this new max_len and old len:
Max_len is additional information that implementation may use to optimize memory usage. Currently, linux-gen implementation choose not to use that (max_len here must be always up to max_len of capability). Len and max_len are different things. 'Len' is used with 'num' to specify how many packet there are in the pool (up to 'len' size). Max_len tells what is the maximum packet len allocated (even if it's a single packet). E.g. application may specify that pool must have 8k packets that are at least 1.5k in length, but specify max_len to 9k for jumbo packets (alloc calls are never requested more than 9k). Today application does not tell the max, but assumes that every pool provide the max_len of capability, which may be e.g. 64k or "infinite" (== limited only by system memory). -Petri > > /** Minimum packet length that the pool must provide > 'num' packets. The number of packets may be less > than 'num' when packets are larger than 'len'. > The maximum value is defined by pool capability > pkt.max_len. Use 0 for default. */ > uint32_t len; > > > Is that really needed? > > Maxim. > > > /** Minimum number of packet data bytes that are stored > > in the first segment of a packet. The maximum value > > is defined by pool capability pkt.max_seg_len.