On Thu, Dec 17, 2020 at 09:23:02AM +0000, Steve Yang wrote:
> The jumbo frame uses the 'RTE_ETHER_MAX_LEN' as boundary condition, but
> the Ether overhead is larger than 18 when it supports dual VLAN tags.
> 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: 0e2efd02db58 ("net/octeontx2: add MTU set operation")
> 
> Signed-off-by: Steve Yang <stevex.y...@intel.com>
> ---
>  drivers/net/octeontx2/otx2_ethdev.h     | 2 ++
>  drivers/net/octeontx2/otx2_ethdev_ops.c | 2 +-
>  2 files changed, 3 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/net/octeontx2/otx2_ethdev.h 
> b/drivers/net/octeontx2/otx2_ethdev.h
> index 3b9871f4dc..99f0469d89 100644
> --- a/drivers/net/octeontx2/otx2_ethdev.h
> +++ b/drivers/net/octeontx2/otx2_ethdev.h
> @@ -51,6 +51,8 @@
>  /* ETH_HLEN+ETH_FCS+2*VLAN_HLEN */
>  #define NIX_L2_OVERHEAD \
>       (RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN + 8)
> +#define NIX_L2_MAX_LEN \
> +     (RTE_ETHER_MTU + NIX_L2_OVERHEAD)
>  
>  /* HW config of frame size doesn't include FCS */
>  #define NIX_MAX_HW_FRS                       9212
> diff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c 
> b/drivers/net/octeontx2/otx2_ethdev_ops.c
> index b36d37b9f7..963cc285ed 100644
> --- a/drivers/net/octeontx2/otx2_ethdev_ops.c
> +++ b/drivers/net/octeontx2/otx2_ethdev_ops.c
> @@ -58,7 +58,7 @@ otx2_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)
>       if (rc)
>               return rc;
>  
> -     if (frame_size > RTE_ETHER_MAX_LEN)
> +     if (frame_size > NIX_L2_MAX_LEN)
>               dev->rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;
>       else
>               dev->rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;
> -- 
> 2.17.1
> 

Acked-by: Nithin Dabilpuram <ndabilpu...@marvell.com>

Reply via email to