Patch "net/mlx5e: Fix hw mtu initializing at XDP SQ allocation" has been added to the 6.1-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.1-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.1 subdirectory.

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



commit f89713bd7279018c47fd8b7f8901228ef25f15fc
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 5e41dfdf79c8..951ede433813 100644
--- a/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
+++ b/drivers/net/ethernet/mellanox/mlx5/core/en_main.c
@@ -1298,7 +1298,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