Thread (21 messages) 21 messages, 6 authors, 2023-06-12

Re: [dpdk-dev] [PATCH 2/2] doc: announce new mbuf field for LRO

From: Olivier Matz <hidden>
Date: 2020-07-27 09:07:24

On Mon, Jul 27, 2020 at 08:41:47AM +0000, Matan Azrad wrote:
Hi Olivier

From: Olivier Matz:
quoted
Hi,

On Tue, Jun 02, 2020 at 06:49:01AM +0000, Matan Azrad wrote:
quoted
Hi

From: Thomas Monjalon
quoted
10/08/2019 23:31, Thomas Monjalon:
quoted
06/08/2019 20:17, Andrew Rybchenko:
quoted
On 8/6/19 5:56 PM, Matan Azrad wrote:
quoted
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 <redacted>
---
--- 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 <redacted>

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).
quoted
quoted
quoted
quoted
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.

quoted
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
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help