Thread (23 messages) flat view 23 messages, 6 authors, 2022-05-13

Re: [PATCH v6 net-next 13/13] mlx5: support BIG TCP packets

From: Eric Dumazet <edumazet@google.com>
Date: 2022-05-13 13:06:07

On Thu, May 12, 2022 at 10:49 PM Saeed Mahameed [off-list ref] wrote:
On 12 May 21:34, Eric Dumazet wrote:
quoted
On Thu, May 12, 2022 at 9:29 PM Saeed Mahameed [off-list ref] wrote:
quoted
On 12 May 11:02, Paolo Abeni wrote:
quoted
On Thu, 2022-05-12 at 01:40 -0700, Saeed Mahameed wrote:
quoted
On 09 May 20:32, Eric Dumazet wrote:
quoted
From: Coco Li <redacted>

mlx5 supports LSOv2.

IPv6 gro/tcp stacks insert a temporary Hop-by-Hop header
with JUMBO TLV for big packets.

We need to ignore/skip this HBH header when populating TX descriptor.
Sorry i didn't go through all the documentations or previous discussions,
please bare with me, so why not clear HBH just before calling the
driver xmit ndo ?
I guess this way is more efficient: the driver copies IP hdr and TCP
hdr directly in the correct/final location into the tx descriptor,
otherwise the caller would have to memmove L2/L3 just before the driver
copies them again.
quoted
memmove(sizeof(L2/L3)) is not that bad when done only every 64KB+.
it's going to be hard to repeat this and maintain this across all drivers
only to get this micro optimization that I doubt it will be even measurable.
We prefer not changing skb->head, this would break tcpdump.
in that case we can provide a helper to the drivers to call, just before
they start processing the skb.
quoted
Surely calling skb_cow_head() would incur a cost.
Sure, but the benefit of this patch outweighs this cost by orders of
magnitude, you pay an extra 0.1$ for a cleaner code, and you still
get your 64K$ BIG TCP cash.
quoted
As I suggested, we can respin the series without the mlx5 patch, this
is totally fine for us, if we can avoid missing 5.19 train.
To be clear, I am not nacking, Tariq already reviewed and gave his blessing,
and i won't resist this patch on v6. I am Just suggesting an improvement
to code readability and scalability to other drivers.
The problem is that  skb_cow_head() can fail.

Really we have thought about this already.

A common helper for drivers is mostly unusable, you would have to
pre-allocate a per TX-ring slot to store the headers.
We would end up with adding complexity at queue creation/dismantle.

We could do that later, because some NICs do not inline the headers in
TX descriptor, but instead request
one mapped buffer for the headers part only.

BTW, I know Tariq already reviewed, the issue at hand is about
CONFIG_FORTIFY which is blocking us.

This is why I was considering not submitting mlx5 change until Kees
Cook and others come up with a solution.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help