On 02 Sep 08:51, Christoph Paasch wrote:
Hello Tariq,
On Sun, Aug 31, 2025 at 2:28 AM Tariq Toukan <ttoukan.linux@xxxxxxxxx> wrote:
On 30/08/2025 1:43, Saeed Mahameed wrote:
> On 28 Aug 20:36, Christoph Paasch via B4 Relay wrote:
>> 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 <cpaasch@xxxxxxxxxx>
>
> 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.