Acked-by: Jeff Guo <[email protected]>

> -----Original Message-----
> From: Steve Yang <[email protected]>
> Sent: Thursday, December 17, 2020 5:23 PM
> To: [email protected]
> Cc: Lu, Wenzhuo <[email protected]>; Xing, Beilei
> <[email protected]>; Iremonger, Bernard
> <[email protected]>; [email protected];
> [email protected]; [email protected];
> [email protected]; Guo, Jia <[email protected]>; Wang, Haiyue
> <[email protected]>; [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected]; Wu, Jingjing
> <[email protected]>; Yang, Qiming <[email protected]>; Zhang, Qi
> Z <[email protected]>; Xu, Rosen <[email protected]>;
> [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; Yigit, Ferruh <[email protected]>;
> [email protected]; Ananyev, Konstantin
> <[email protected]>; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; [email protected]; [email protected];
> [email protected]; Zhang, Helin <[email protected]>;
> [email protected]; [email protected]; Xu, Ting
> <[email protected]>; Li, Xiaoyun <[email protected]>; Wei, Dan
> <[email protected]>; Pei, Andy <[email protected]>;
> [email protected]; [email protected]; [email protected];
> Richardson, Bruce <[email protected]>; [email protected];
> [email protected]; [email protected];
> [email protected]; Zhao1, Wei <[email protected]>;
> Jiang, JunyuX <[email protected]>; [email protected];
> [email protected]; [email protected];
> [email protected]; Yang, SteveX <[email protected]>
> Subject: [PATCH v2 05/22] net/e1000: fix the jumbo frame flag condition for
> mtu set
> 
> The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition,
> but the Ether overhead is larger than 18 when it supports VLAN tag. That will
> cause the jumbo flag rx offload is wrong when MTU size is 'RTE_ETHER_MTU'.
> 
> This fix will change the boundary condition with 'RTE_ETHER_MTU' and
> overhead.
> 
> Fixes: ef990fb56e55 ("net/e1000: convert to new Rx offloads API")
> 
> Signed-off-by: Steve Yang <[email protected]>
> ---
>  drivers/net/e1000/e1000_ethdev.h | 2 +-
>  drivers/net/e1000/em_ethdev.c    | 5 ++---
>  drivers/net/e1000/igb_ethdev.c   | 2 +-
>  3 files changed, 4 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/net/e1000/e1000_ethdev.h
> b/drivers/net/e1000/e1000_ethdev.h
> index 4755a5f333..3b4d9c3ee6 100644
> --- a/drivers/net/e1000/e1000_ethdev.h
> +++ b/drivers/net/e1000/e1000_ethdev.h
> @@ -97,7 +97,7 @@
>   */
>  #define E1000_ETH_OVERHEAD (RTE_ETHER_HDR_LEN +
> RTE_ETHER_CRC_LEN + \
>                               VLAN_TAG_SIZE)
> -
> +#define E1000_ETH_MAX_LEN (RTE_ETHER_MTU + E1000_ETH_OVERHEAD)
>  /*
>   * Maximum number of Ring Descriptors.
>   *
> diff --git a/drivers/net/e1000/em_ethdev.c
> b/drivers/net/e1000/em_ethdev.c index 8ee9422bf4..2036c6e917 100644
> --- a/drivers/net/e1000/em_ethdev.c
> +++ b/drivers/net/e1000/em_ethdev.c
> @@ -1799,8 +1799,7 @@ eth_em_mtu_set(struct rte_eth_dev *dev,
> uint16_t mtu)
>       if (ret != 0)
>               return ret;
> 
> -     frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN +
> -             VLAN_TAG_SIZE;
> +     frame_size = mtu + E1000_ETH_OVERHEAD;
> 
>       /* check that mtu is within the allowed range */
>       if (mtu < RTE_ETHER_MIN_MTU || frame_size >
> dev_info.max_rx_pktlen) @@ -1816,7 +1815,7 @@ eth_em_mtu_set(struct
> rte_eth_dev *dev, uint16_t mtu)
>       rctl = E1000_READ_REG(hw, E1000_RCTL);
> 
>       /* switch to jumbo mode if needed */
> -     if (frame_size > RTE_ETHER_MAX_LEN) {
> +     if (frame_size > E1000_ETH_MAX_LEN) {
>               dev->data->dev_conf.rxmode.offloads |=
>                       DEV_RX_OFFLOAD_JUMBO_FRAME;
>               rctl |= E1000_RCTL_LPE;
> diff --git a/drivers/net/e1000/igb_ethdev.c
> b/drivers/net/e1000/igb_ethdev.c index 647aa8d995..dfe87508c2 100644
> --- a/drivers/net/e1000/igb_ethdev.c
> +++ b/drivers/net/e1000/igb_ethdev.c
> @@ -4369,7 +4369,7 @@ eth_igb_mtu_set(struct rte_eth_dev *dev,
> uint16_t mtu)
>       rctl = E1000_READ_REG(hw, E1000_RCTL);
> 
>       /* switch to jumbo mode if needed */
> -     if (frame_size > RTE_ETHER_MAX_LEN) {
> +     if (frame_size > E1000_ETH_MAX_LEN) {
>               dev->data->dev_conf.rxmode.offloads |=
>                       DEV_RX_OFFLOAD_JUMBO_FRAME;
>               rctl |= E1000_RCTL_LPE;
> --
> 2.17.1

Reply via email to