Re: [PATCH net 3/3] ixgbe: add double of VLAN header when computing the max MTU

Jason Xing
2023-02-09T00:47:51Z

CC Alexander Duyck

Hello Alexander, thanks for reviewing the other two patches of this
patchset last night. Would you mind reviewing the last one? :)

Thanks,
Jason

On Sat, Feb 4, 2023 at 9:36 PM Jason Xing <kerneljasonxing@gmail.com> wrote:
>
> From: Jason Xing <kernelxing@tencent.com>
>
> Include the second VLAN HLEN into account when computing the maximum
> MTU size as other drivers do.
>
> Fixes: fabf1bce103a ("ixgbe: Prevent unsupported configurations with XDP")
> Signed-off-by: Jason Xing <kernelxing@tencent.com>
> ---
> drivers/net/ethernet/intel/ixgbe/ixgbe.h | 2 ++
> drivers/net/ethernet/intel/ixgbe/ixgbe_main.c | 3 +--
> 2 files changed, 3 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe.h b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
> index bc68b8f2176d..8736ca4b2628 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe.h
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe.h
> @@ -73,6 +73,8 @@
> #define IXGBE_RXBUFFER_4K 4096
> #define IXGBE_MAX_RXBUFFER 16384 /* largest size for a single descriptor */
>
> +#define IXGBE_PKT_HDR_PAD (ETH_HLEN + ETH_FCS_LEN + (VLAN_HLEN * 2))
> +
> /* Attempt to maximize the headroom available for incoming frames. We
> * use a 2K buffer for receives and need 1536/1534 to store the data for
> * the frame. This leaves us with 512 bytes of room. From that we need
> diff --git a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> index 2c1b6eb60436..149f7baf40fe 100644
> --- a/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> +++ b/drivers/net/ethernet/intel/ixgbe/ixgbe_main.c
> @@ -6801,8 +6801,7 @@ static int ixgbe_change_mtu(struct net_device *netdev, int new_mtu)
> struct ixgbe_adapter *adapter = netdev_priv(netdev);
>
> if (ixgbe_enabled_xdp_adapter(adapter)) {
> - int new_frame_size = new_mtu + ETH_HLEN + ETH_FCS_LEN +
> - VLAN_HLEN;
> + int new_frame_size = new_mtu + IXGBE_PKT_HDR_PAD;
>
> if (new_frame_size > ixgbe_max_xdp_frame_size(adapter)) {
> e_warn(probe, "Requested MTU size is not supported with XDP\n");
> --
> 2.37.3
>