On Mon, Oct 24, 2016 at 05:25:38PM +0100, Bruce Richardson wrote: > On Mon, Oct 24, 2016 at 04:11:33PM +0000, Wiles, Keith wrote: [...] > > > On Oct 24, 2016, at 10:49 AM, Morten Br?rup <mb at smartsharesystems.com> > > > wrote: [...] > > > 5. > > > > > > And here?s something new to think about: > > > > > > m->next already reveals if there are more segments to a packet. Which > > > purpose does m->nb_segs serve that is not already covered by m->next? > > It is duplicate info, but nb_segs can be used to check the validity of > the next pointer without having to read the second mbuf cacheline. > > Whether it's worth having is something I'm happy enough to discuss, > though.
Although slower in some cases than a full blown "next packet" pointer, nb_segs can also be conveniently abused to link several packets and their segments in the same list without wasting space. > One other point I'll mention is that we need to have a discussion on > how/where to add in a timestamp value into the mbuf. Personally, I think > it can be in a union with the sequence number value, but I also suspect > that 32-bits of a timestamp is not going to be enough for many. > > Thoughts? If we consider that timestamp representation should use nanosecond granularity, a 32-bit value may likely wrap around too quickly to be useful. We can also assume that applications requesting timestamps may care more about latency than throughput, Oleg found that using the second cache line for this purpose had a noticeable impact [1]. [1] http://dpdk.org/ml/archives/dev/2016-October/049237.html -- Adrien Mazarguil 6WIND