[dpdk-dev] [PATCH v2 05/22] net/e1000: fix the jumbo frame flag condition for mtu set
Guo, Jia
jia.guo at intel.com
Fri Dec 18 03:42:55 CET 2020
Acked-by: Jeff Guo <jia.guo at intel.com>
> -----Original Message-----
> From: Steve Yang <stevex.yang at intel.com>
> Sent: Thursday, December 17, 2020 5:23 PM
> To: dev at dpdk.org
> Cc: Lu, Wenzhuo <wenzhuo.lu at intel.com>; Xing, Beilei
> <beilei.xing at intel.com>; Iremonger, Bernard
> <bernard.iremonger at intel.com>; asomalap at amd.com;
> rahul.lakkireddy at chelsio.com; hemant.agrawal at nxp.com;
> sachin.saxena at oss.nxp.com; Guo, Jia <jia.guo at intel.com>; Wang, Haiyue
> <haiyue.wang at intel.com>; g.singh at nxp.com; xuanziyang2 at huawei.com;
> cloud.wangxiaoyun at huawei.com; zhouguoyang at huawei.com;
> xavier.huwei at huawei.com; humin29 at huawei.com;
> yisen.zhuang at huawei.com; oulijun at huawei.com; Wu, Jingjing
> <jingjing.wu at intel.com>; Yang, Qiming <qiming.yang at intel.com>; Zhang, Qi
> Z <qi.z.zhang at intel.com>; Xu, Rosen <rosen.xu at intel.com>;
> sthotton at marvell.com; srinivasan at marvell.com;
> heinrich.kuhn at netronome.com; hkalra at marvell.com; jerinj at marvell.com;
> ndabilpuram at marvell.com; kirankumark at marvell.com;
> rmody at marvell.com; shshaikh at marvell.com;
> andrew.rybchenko at oktetlabs.ru; mczekaj at marvell.com;
> thomas at monjalon.net; Yigit, Ferruh <ferruh.yigit at intel.com>;
> ivan.boule at 6wind.com; Ananyev, Konstantin
> <konstantin.ananyev at intel.com>; samuel.gauthier at 6wind.com;
> david.marchand at 6wind.com; shahafs at mellanox.com;
> stephen at networkplumber.org; maxime.coquelin at redhat.com;
> olivier.matz at 6wind.com; lihuisong at huawei.com; shreyansh.jain at nxp.com;
> wei.dai at intel.com; fengchunsong at huawei.com; chenhao164 at huawei.com;
> tangchengchang at hisilicon.com; Zhang, Helin <helin.zhang at intel.com>;
> yanglong.wu at intel.com; xiaolong.ye at intel.com; Xu, Ting
> <ting.xu at intel.com>; Li, Xiaoyun <xiaoyun.li at intel.com>; Wei, Dan
> <dan.wei at intel.com>; Pei, Andy <andy.pei at intel.com>;
> vattunuru at marvell.com; skori at marvell.com; sony.chacko at qlogic.com;
> Richardson, Bruce <bruce.richardson at intel.com>; ivan.malov at oktetlabs.ru;
> rad at semihalf.com; slawomir.rosek at semihalf.com;
> kamil.rytarowski at caviumnetworks.com; Zhao1, Wei <wei.zhao1 at intel.com>;
> Jiang, JunyuX <junyux.jiang at intel.com>; kumaras at chelsio.com;
> girish.nandibasappa at amd.com; rolf.neugebauer at netronome.com;
> alejandro.lucero at netronome.com; Yang, SteveX <stevex.yang at intel.com>
> 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 <stevex.yang at intel.com>
> ---
> 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
More information about the dev
mailing list