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. Christoph > > According to the perf gain, it is worth splitting to multiple code paths > via branches/function pointers. > > Regards, > Tariq