Re: [PATCH net-next v4 0/2] net/mlx5: Avoid payload in skb's linear part for better GRO-processing
From: Christoph Paasch <hidden>
Date: 2025-09-02 15:52:13
Also in:
bpf, linux-rdma
Hello Tariq, On Sun, Aug 31, 2025 at 2:28 AM Tariq Toukan [off-list ref] wrote:
On 30/08/2025 1:43, Saeed Mahameed wrote:quoted
On 28 Aug 20:36, Christoph Paasch via B4 Relay wrote:quoted
When LRO is enabled on the MLX, mlx5e_skb_from_cqe_mpwrq_nonlinear copies parts of the payload to the linear part of the skb. This triggers suboptimal processing in GRO, causing slow throughput,... This patch series addresses this by using eth_get_headlen to compute the size of the protocol headers and only copy those bits. This results in a significant throughput improvement (detailled results in the specific patch). Signed-off-by: Christoph Paasch <redacted>LGTM, I would love to take this to net-next-mlx5 and submit it back to netdev after regression testing if that's ok? Christoph? Anyway I will wait for Jakub to mark this as "awaiting-upstream" or if he applies it directly then fine.Hi, I recall trying out similar approach internally a few years ago. eth_get_headlen() function didn't work properly for non-Eth frames (ipoib). I believe this is still the case. Extra care is needed for the ipoib flow, which I assume gets broken here.
Are you actually sure that ipoib goes through mlx5e_skb_from_cqe_mpwrq_nonlinear() ? Because, as far as I can see, IPoIB disables striding in mlx5i_build_nic_params(). It's rather mlx5e_skb_from_cqe_nonlinear() that handles both, ethernet and ipoib. Christoph
According to the perf gain, it is worth splitting to multiple code paths via branches/function pointers. Regards, Tariq