Patch "net/mlx5e: Fix hw mtu initializing at XDP SQ allocation" has been added to the 6.0-stable tree

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



This is a note to let you know that I've just added the patch titled

    net/mlx5e: Fix hw mtu initializing at XDP SQ allocation

to the 6.0-stable tree which can be found at:
    http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary

The filename of the patch is:
     net-mlx5e-fix-hw-mtu-initializing-at-xdp-sq-allocati.patch
and it can be found in the queue-6.0 subdirectory.

If you, or anyone else, feels it should not be added to the stable tree,
please let <stable@xxxxxxxxxxxxxxx> know about it.



commit bed12a13b389a4a9bfc3de36c168d1bbf96c793c
Author: Adham Faris <afaris@xxxxxxxxxx>
Date:   Wed Dec 14 16:02:57 2022 +0200

    net/mlx5e: Fix hw mtu initializing at XDP SQ allocation
    
    [ Upstream commit 1e267ab88dc44c48f556218f7b7f14c76f7aa066 ]
    
    Current xdp xmit functions logic (mlx5e_xmit_xdp_frame_mpwqe or
    mlx5e_xmit_xdp_frame), validates xdp packet length by comparing it to
    hw mtu (configured at xdp sq allocation) before xmiting it. This check
    does not account for ethernet fcs length (calculated and filled by the
    nic). Hence, when we try sending packets with length > (hw-mtu -
    ethernet-fcs-size), the device port drops it and tx_errors_phy is
    incremented. Desired behavior is to catch these packets and drop them
    by the driver.
    
    Fix this behavior in XDP SQ allocation function (mlx5e_alloc_xdpsq) by
    subtracting ethernet FCS header size (4 Bytes) from current hw mtu
    value, since ethernet FCS is calculated and written to ethernet frames
    by the nic.
    
    Fixes: d8bec2b29a82 ("net/mlx5e: Support bpf_xdp_adjust_head()")
    Signed-off-by: Adham Faris <afaris@xxxxxxxxxx>
    Reviewed-by: Tariq Toukan <tariqt@xxxxxxxxxx>
    Signed-off-by: Saeed Mahameed <saeedm@xxxxxxxxxx>
    Signed-off-by: Sasha Levin <sashal@xxxxxxxxxx>

diff --git a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
index 6cf6a81775a8..5c16efb8be81 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -1146,7 +1146,7 @@ static int mlx5e_alloc_xdpsq(struct mlx5e_channel *c,
 	sq->channel   = c;
 	sq->uar_map   = mdev->mlx5e_res.hw_objs.bfreg.map;
 	sq->min_inline_mode = params->tx_min_inline_mode;
-	sq->hw_mtu    = MLX5E_SW2HW_MTU(params, params->sw_mtu);
+	sq->hw_mtu    = MLX5E_SW2HW_MTU(params, params->sw_mtu) - ETH_FCS_LEN;
 	sq->xsk_pool  = xsk_pool;
 
 	sq->stats = sq->xsk_pool ?



[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux