On Mon, Jul 27, 2020 at 08:41:47AM +0000, Matan Azrad wrote: > > Hi Olivier > > From: Olivier Matz: > > Hi, > > > > On Tue, Jun 02, 2020 at 06:49:01AM +0000, Matan Azrad wrote: > > > Hi > > > > > > From: Thomas Monjalon > > > > 10/08/2019 23:31, Thomas Monjalon: > > > > > 06/08/2019 20:17, Andrew Rybchenko: > > > > > > On 8/6/19 5:56 PM, Matan Azrad wrote: > > > > > > > The API breakage is because the ``tso_segsz`` field was > > > > > > > documented for LRO. > > > > > > > > > > > > > > The ``tso_segsz`` field in mbuf indicates the size of each > > > > > > > segment in the LRO packet in Rx path and should be provided by > > > > > > > the LRO packet port. > > > > > > > > > > > > > > While the generic LRO packet may aggregate different segments > > > > > > > sizes in one packet, it is impossible to expose this > > > > > > > information for each segment by one field and it doesn't make > > > > > > > sense to expose all the segments sizes in the mbuf. > > > > > > > > > > > > > > A new field may be added as union with the above field to > > > > > > > expose the number of segments aggregated in the LRO packet. > > > > > > > > > > > > > > Signed-off-by: Matan Azrad <ma...@mellanox.com> > > > > > > > --- > > > > > > > --- a/doc/guides/rel_notes/deprecation.rst > > > > > > > +++ b/doc/guides/rel_notes/deprecation.rst > > > > > > > +* mbuf: Remove ``tso_segsz`` mbuf field providing for LRO > > > > > > > +support. Use union > > > > > > > + block for the field memory to be shared with a new field > > > > > > > +``lro_segs_n`` > > > > > > > + indicates the number of segments aggregated in the LRO packet. > > > > > > > > > > > > I think that the number of segments is more logical in the case of > > > > > > LRO. > > > > > > The question (already asked by Konstantin) is why it is needed > > > > > > at all (statistics?). If so, it still makes sense. > > > > > > > > > > > > Segment size is misleading here, since not all segments could be > > > > > > the same size. So, > > > > > > > > > > > > Acked-by: Andrew Rybchenko <arybche...@solarflare.com> > > > > > > > > > > > > As far as I can see bnxt and qede do not fill it in. > > > > > > mlx5 and vmxnet3 have the number of segments (vmxnet3 has > > > > > > segment size sometimes and sometimes use a function to guess the > > value). > > > > > > So both will win from the change. > > > > > > It looks like virtio does not have number of segments. CC Maxime > > > > > > to comment. > > > > > > > > > > I support improving the API for LRO. > > > > > Unfortunately, the consensus is not strong enough at the moment. > > > > > > > > We had no progress about LRO field in mbuf. > > > > Is it a change we would like to have in 20.11? > > > > > > > +1 to make the change. > > > > Thinking about this, having the segment size for LRO is useful: it is > > expected > > to give the size of the segments, except the last one. The advantage of > > this is > > to be able to resegment exactly at the same MSS on Tx (so it does not break > > PMTU). This is needed if you want to do a bridge or a router with LRO > > enabled. > > Yes, you right it may be useful. > > I don't familiar with other vendors, but mlx5 HWs supply the number of > segments aggregated by the HW and doesn't assume all the head segments are in > the same size. > > So, we just put in the current field packet_size/num of segments. > > So, maybe we need the 2 options as uinion or as 2 separated fields to be more > accurate.
Yes. Having ethdev capas would help to know what the PMD can do (basically, reassembly of same segment sizes or not). Renaming PKT_RX_LRO to PKT_RX_LRO_SEGSIZE could make sense, and the new one PKT_RX_LRO_PKTNUM could be added in case the packet number is provided. I have no strong opinion about union vs 2 separate fields. If a new field is added, I think we should prefer a dynamic mbuf field. > > > What is described above is more GRO than LRO. But today, it is possible to > > do > > this with the virtio driver, so removing the segment size would break this > > use > > case. > > > > Regards, > > Olivier