Re: [PATCH net-next v4 0/2] net/mlx5: Avoid payload in skb's linear part for better GRO-processing
From: Saeed Mahameed <saeed@kernel.org>
Date: 2025-09-02 16:15:57
Also in:
bpf, linux-rdma
On 02 Sep 08:51, Christoph Paasch wrote:
Hello Tariq, On Sun, Aug 31, 2025 at 2:28 AM Tariq Toukan [off-list ref] wrote:quoted
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.
correct,
const struct mlx5e_rx_handlers mlx5i_rx_handlers = {
.handle_rx_cqe = mlx5i_handle_rx_cqe,
.handle_rx_cqe_mpwqe = NULL, /* Not supported */
};
I see that the patches are "awaiting-upstream" so I applied it to our internal
queue, will let you know if we find any issues, otherwise, will repost as
part of our upcoming submissions.
Thanks,
Saeed.