From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 400ADA0C4B; Mon, 4 Oct 2021 07:08:32 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id B2118412A0; Mon, 4 Oct 2021 07:08:31 +0200 (CEST) Received: from mail-yb1-f181.google.com (mail-yb1-f181.google.com [209.85.219.181]) by mails.dpdk.org (Postfix) with ESMTP id 74BDE40688 for ; Mon, 4 Oct 2021 07:08:29 +0200 (CEST) Received: by mail-yb1-f181.google.com with SMTP id a7so5527136yba.6 for ; Sun, 03 Oct 2021 22:08:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=broadcom.com; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=zYzKksyT5OG/hv1cSCuHpLAt6XuOq10ZVLWVCPSB6WU=; b=P0zMzdlmTXioM7RwUAdAAPi00wR8AtIQ4ykp3kQ7wLTAy8chfyIKEnklXdWhAtO2LU mlcTMxtL4e+pqSDAHPplAfM5FhLGRBmJfOMJN6lWjEs1nXICC0yJUmp59qoiImP5ib4o bRPsajMBQWe9AjEe4MxfHf1abiQ3RWl5KYtXY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=zYzKksyT5OG/hv1cSCuHpLAt6XuOq10ZVLWVCPSB6WU=; b=oTlYvB0trpRQcoY5g1hp5rSmHxLhqRBRGMYNa8s5r2e0AlpgQcpsxPqS6O1LEexvU5 Xf8rjMSt9zC5/P8i4kLNsdhI2VZPEok8GisJa8cv43yDqh43K64nA/tR/tzRtsAi1ueM 8zLoJqIysGLZP2HAdqBz7/pZ/vt3F7WxXPpIIe93TBfxt5Keu9e/C7Z2Oo45wpaFRYea I+F5f/LHjkOTy8RGGUwAZ/GNWw0bqI0cZWxCkL4npY+0wqC1iufLWCXC78p2ExG4j7kX xdGAN7rXvdkST1kYSovyNXJXjWOFK7BK4jDxvY8id7Zj8Qi2JcT31rFCSStxhKl8MT2+ kZpg== X-Gm-Message-State: AOAM533GdAmP0y26bw7UXbEYsfo8QbTTecYWLHt2EUVGzHDMEvabtJob m7rlI+kpkAA1tOLT+ovHnbpaQ44nC2GApzBiMUZhbg== X-Google-Smtp-Source: ABdhPJxYsifu8bWienILexxO2BzFA0BgQ+oBSDsKIsvb2rmvDSm7hPIhESY6taa4Anf0COvUtRWfp4PwGnSgg2qC4vw= X-Received: by 2002:a25:b447:: with SMTP id c7mr13416377ybg.214.1633324108318; Sun, 03 Oct 2021 22:08:28 -0700 (PDT) MIME-Version: 1.0 References: <20210722172113.3236450-1-ferruh.yigit@intel.com> <20211001143624.3744505-1-ferruh.yigit@intel.com> <20211001143624.3744505-2-ferruh.yigit@intel.com> In-Reply-To: <20211001143624.3744505-2-ferruh.yigit@intel.com> From: Somnath Kotur Date: Mon, 4 Oct 2021 10:38:17 +0530 Message-ID: To: Ferruh Yigit Cc: Andrew Rybchenko , Thomas Monjalon , Somalapuram Amaranath , Ajit Khaparde , Nithin Dabilpuram , Kiran Kumar K , Sunil Kumar Kori , Satha Rao , Rahul Lakkireddy , Hemant Agrawal , Sachin Saxena , Haiyue Wang , Gagandeep Singh , Ziyang Xuan , Xiaoyun Wang , Guoyang Zhou , "Min Hu (Connor)" , Yisen Zhuang , Lijun Ou , Beilei Xing , Jingjing Wu , Qiming Yang , Qi Zhang , Rosen Xu , Shijith Thotton , Srisivasubramanian Srinivasan , Heinrich Kuhn , Harman Kalra , Jerin Jacob , Rasesh Mody , Devendra Singh Rawat , Maciej Czekaj , Jiawen Wu , Jian Wang , dev@dpdk.org Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha-256; boundary="00000000000051610105cd7fe743" X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: Re: [dpdk-dev] [PATCH v3 2/6] ethdev: move jumbo frame offload check to library X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" --00000000000051610105cd7fe743 Content-Type: text/plain; charset="UTF-8" On Fri, Oct 1, 2021 at 8:06 PM Ferruh Yigit wrote: > > Setting MTU bigger than RTE_ETHER_MTU requires the jumbo frame support, > and application should enable the jumbo frame offload support for it. > > When jumbo frame offload is not enabled by application, but MTU bigger > than RTE_ETHER_MTU is requested there are two options, either fail or > enable jumbo frame offload implicitly. > > Enabling jumbo frame offload implicitly is selected by many drivers > since setting a big MTU value already implies it, and this increases > usability. > > This patch moves this logic from drivers to the library, both to reduce > the duplicated code in the drivers and to make behaviour more visible. > > Signed-off-by: Ferruh Yigit > Reviewed-by: Andrew Rybchenko > Reviewed-by: Rosen Xu > Acked-by: Ajit Khaparde > --- > drivers/net/axgbe/axgbe_ethdev.c | 9 ++------- > drivers/net/bnxt/bnxt_ethdev.c | 9 ++------- > drivers/net/cnxk/cnxk_ethdev_ops.c | 5 ----- > drivers/net/cxgbe/cxgbe_ethdev.c | 8 -------- > drivers/net/dpaa/dpaa_ethdev.c | 7 ------- > drivers/net/dpaa2/dpaa2_ethdev.c | 7 ------- > drivers/net/e1000/em_ethdev.c | 9 ++------- > drivers/net/e1000/igb_ethdev.c | 9 ++------- > drivers/net/enetc/enetc_ethdev.c | 7 ------- > drivers/net/hinic/hinic_pmd_ethdev.c | 7 ------- > drivers/net/hns3/hns3_ethdev.c | 8 -------- > drivers/net/hns3/hns3_ethdev_vf.c | 6 ------ > drivers/net/i40e/i40e_ethdev.c | 5 ----- > drivers/net/iavf/iavf_ethdev.c | 7 ------- > drivers/net/ice/ice_ethdev.c | 5 ----- > drivers/net/igc/igc_ethdev.c | 9 ++------- > drivers/net/ipn3ke/ipn3ke_representor.c | 5 ----- > drivers/net/ixgbe/ixgbe_ethdev.c | 7 ++----- > drivers/net/liquidio/lio_ethdev.c | 7 ------- > drivers/net/nfp/nfp_common.c | 6 ------ > drivers/net/octeontx/octeontx_ethdev.c | 5 ----- > drivers/net/octeontx2/otx2_ethdev_ops.c | 5 ----- > drivers/net/qede/qede_ethdev.c | 4 ---- > drivers/net/sfc/sfc_ethdev.c | 9 --------- > drivers/net/thunderx/nicvf_ethdev.c | 6 ------ > drivers/net/txgbe/txgbe_ethdev.c | 6 ------ > lib/ethdev/rte_ethdev.c | 18 +++++++++++++++++- > 27 files changed, 29 insertions(+), 166 deletions(-) > > diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c > index 76aeec077f2b..2960834b4539 100644 > --- a/drivers/net/axgbe/axgbe_ethdev.c > +++ b/drivers/net/axgbe/axgbe_ethdev.c > @@ -1492,15 +1492,10 @@ static int axgb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > dev->data->port_id); > return -EBUSY; > } > - if (mtu > RTE_ETHER_MTU) { > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > + if (mtu > RTE_ETHER_MTU) > val = 1; > - } else { > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > val = 0; > - } > AXGMAC_IOWRITE_BITS(pdata, MAC_RCR, JE, val); > return 0; > } > diff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c > index 8c6f20b75aed..07ee19938930 100644 > --- a/drivers/net/bnxt/bnxt_ethdev.c > +++ b/drivers/net/bnxt/bnxt_ethdev.c > @@ -3052,15 +3052,10 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu) > return -EINVAL; > } > > - if (new_mtu > RTE_ETHER_MTU) { > + if (new_mtu > RTE_ETHER_MTU) > bp->flags |= BNXT_FLAG_JUMBO; > - bp->eth_dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - } else { > - bp->eth_dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > bp->flags &= ~BNXT_FLAG_JUMBO; > - } > Acked-by: Somnath kotur > /* Is there a change in mtu setting? */ > if (eth_dev->data->mtu == new_mtu) > diff --git a/drivers/net/cnxk/cnxk_ethdev_ops.c b/drivers/net/cnxk/cnxk_ethdev_ops.c > index 695d0d6fd3e2..349896f6a1bf 100644 > --- a/drivers/net/cnxk/cnxk_ethdev_ops.c > +++ b/drivers/net/cnxk/cnxk_ethdev_ops.c > @@ -439,11 +439,6 @@ cnxk_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) > plt_err("Failed to max Rx frame length, rc=%d", rc); > goto exit; > } > - > - if (mtu > RTE_ETHER_MTU) > - dev->rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > exit: > return rc; > } > diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c > index 8cf61f12a8d6..0c9cc2f5bb3f 100644 > --- a/drivers/net/cxgbe/cxgbe_ethdev.c > +++ b/drivers/net/cxgbe/cxgbe_ethdev.c > @@ -313,14 +313,6 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) > if (mtu < RTE_ETHER_MIN_MTU || new_mtu > dev_info.max_rx_pktlen) > return -EINVAL; > > - /* set to jumbo mode if needed */ > - if (mtu > RTE_ETHER_MTU) > - eth_dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - eth_dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > err = t4_set_rxmode(adapter, adapter->mbox, pi->viid, new_mtu, -1, -1, > -1, -1, true); > return err; > diff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c > index adbdb87baab9..57b09f16ba44 100644 > --- a/drivers/net/dpaa/dpaa_ethdev.c > +++ b/drivers/net/dpaa/dpaa_ethdev.c > @@ -187,13 +187,6 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return -EINVAL; > } > > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > fman_if_set_maxfrm(dev->process_private, frame_size); > > return 0; > diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c > index 758a14e0ad2d..df44bb204f65 100644 > --- a/drivers/net/dpaa2/dpaa2_ethdev.c > +++ b/drivers/net/dpaa2/dpaa2_ethdev.c > @@ -1470,13 +1470,6 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > if (mtu < RTE_ETHER_MIN_MTU || frame_size > DPAA2_MAX_RX_PKT_LEN) > return -EINVAL; > > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > /* Set the Max Rx frame length as 'mtu' + > * Maximum Ethernet header length > */ > diff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c > index 6f418a36aa04..1b41dd04df5a 100644 > --- a/drivers/net/e1000/em_ethdev.c > +++ b/drivers/net/e1000/em_ethdev.c > @@ -1818,15 +1818,10 @@ 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 (mtu > RTE_ETHER_MTU) { > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > + if (mtu > RTE_ETHER_MTU) > rctl |= E1000_RCTL_LPE; > - } else { > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > rctl &= ~E1000_RCTL_LPE; > - } > E1000_WRITE_REG(hw, E1000_RCTL, rctl); > > return 0; > diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c > index 4c114bf90fc7..a061d0529dd1 100644 > --- a/drivers/net/e1000/igb_ethdev.c > +++ b/drivers/net/e1000/igb_ethdev.c > @@ -4396,15 +4396,10 @@ 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 (mtu > RTE_ETHER_MTU) { > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > + if (mtu > RTE_ETHER_MTU) > rctl |= E1000_RCTL_LPE; > - } else { > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > rctl &= ~E1000_RCTL_LPE; > - } > E1000_WRITE_REG(hw, E1000_RCTL, rctl); > > E1000_WRITE_REG(hw, E1000_RLPML, frame_size); > diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c > index cdb9783b5372..fbcbbb6c0533 100644 > --- a/drivers/net/enetc/enetc_ethdev.c > +++ b/drivers/net/enetc/enetc_ethdev.c > @@ -677,13 +677,6 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return -EINVAL; > } > > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads &= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > enetc_port_wr(enetc_hw, ENETC_PTCMSDUR(0), ENETC_MAC_MAXFRM_SIZE); > enetc_port_wr(enetc_hw, ENETC_PTXMBAR, 2 * ENETC_MAC_MAXFRM_SIZE); > > diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c > index 2d8271cb6095..4b30dfa222a8 100644 > --- a/drivers/net/hinic/hinic_pmd_ethdev.c > +++ b/drivers/net/hinic/hinic_pmd_ethdev.c > @@ -1547,13 +1547,6 @@ static int hinic_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) > return ret; > } > > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > nic_dev->mtu_size = mtu; > > return ret; > diff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c > index 4ead227f9122..e1d465de8234 100644 > --- a/drivers/net/hns3/hns3_ethdev.c > +++ b/drivers/net/hns3/hns3_ethdev.c > @@ -2571,7 +2571,6 @@ hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > struct hns3_adapter *hns = dev->data->dev_private; > uint32_t frame_size = mtu + HNS3_ETH_OVERHEAD; > struct hns3_hw *hw = &hns->hw; > - bool is_jumbo_frame; > int ret; > > if (dev->data->dev_started) { > @@ -2581,7 +2580,6 @@ hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > } > > rte_spinlock_lock(&hw->lock); > - is_jumbo_frame = mtu > RTE_ETHER_MTU ? true : false; > frame_size = RTE_MAX(frame_size, HNS3_DEFAULT_FRAME_LEN); > > /* > @@ -2596,12 +2594,6 @@ hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return ret; > } > > - if (is_jumbo_frame) > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > rte_spinlock_unlock(&hw->lock); > > return 0; > diff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c > index 0b5db486f8d6..3438b3650de6 100644 > --- a/drivers/net/hns3/hns3_ethdev_vf.c > +++ b/drivers/net/hns3/hns3_ethdev_vf.c > @@ -908,12 +908,6 @@ hns3vf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > rte_spinlock_unlock(&hw->lock); > return ret; > } > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > rte_spinlock_unlock(&hw->lock); > > return 0; > diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c > index 2033f8f55cd6..e14859db9cfd 100644 > --- a/drivers/net/i40e/i40e_ethdev.c > +++ b/drivers/net/i40e/i40e_ethdev.c > @@ -11774,11 +11774,6 @@ i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return -EBUSY; > } > > - if (mtu > RTE_ETHER_MTU) > - dev_data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev_data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > return ret; > } > > diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c > index 0eabce275d92..844d26d87ba6 100644 > --- a/drivers/net/iavf/iavf_ethdev.c > +++ b/drivers/net/iavf/iavf_ethdev.c > @@ -1473,13 +1473,6 @@ iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return -EBUSY; > } > > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > return ret; > } > > diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c > index e6d5128599e1..83e8f0da687c 100644 > --- a/drivers/net/ice/ice_ethdev.c > +++ b/drivers/net/ice/ice_ethdev.c > @@ -3992,11 +3992,6 @@ ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return -EBUSY; > } > > - if (mtu > RTE_ETHER_MTU) > - dev_data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev_data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > return 0; > } > > diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c > index b26723064b07..dcbc26b8186e 100644 > --- a/drivers/net/igc/igc_ethdev.c > +++ b/drivers/net/igc/igc_ethdev.c > @@ -1592,15 +1592,10 @@ eth_igc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > } > > rctl = IGC_READ_REG(hw, IGC_RCTL); > - > - /* switch to jumbo mode if needed */ > - if (mtu > RTE_ETHER_MTU) { > - dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > + if (mtu > RTE_ETHER_MTU) > rctl |= IGC_RCTL_LPE; > - } else { > - dev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > rctl &= ~IGC_RCTL_LPE; > - } > IGC_WRITE_REG(hw, IGC_RCTL, rctl); > > IGC_WRITE_REG(hw, IGC_RLPML, frame_size); > diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c > index 3634c0c8c5f0..e8a33f04bd69 100644 > --- a/drivers/net/ipn3ke/ipn3ke_representor.c > +++ b/drivers/net/ipn3ke/ipn3ke_representor.c > @@ -2801,11 +2801,6 @@ ipn3ke_rpst_mtu_set(struct rte_eth_dev *ethdev, uint16_t mtu) > return -EBUSY; > } > > - if (mtu > RTE_ETHER_MTU) > - dev_data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev_data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > if (rpst->i40e_pf_eth) { > ret = rpst->i40e_pf_eth->dev_ops->mtu_set(rpst->i40e_pf_eth, > mtu); > diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c > index 31e67d86e77b..574a7bffc9cb 100644 > --- a/drivers/net/ixgbe/ixgbe_ethdev.c > +++ b/drivers/net/ixgbe/ixgbe_ethdev.c > @@ -5198,13 +5198,10 @@ ixgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > hlreg0 = IXGBE_READ_REG(hw, IXGBE_HLREG0); > > /* switch to jumbo mode if needed */ > - if (mtu > RTE_ETHER_MTU) { > - dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > + if (mtu > RTE_ETHER_MTU) > hlreg0 |= IXGBE_HLREG0_JUMBOEN; > - } else { > - dev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > hlreg0 &= ~IXGBE_HLREG0_JUMBOEN; > - } > IXGBE_WRITE_REG(hw, IXGBE_HLREG0, hlreg0); > > maxfrs = IXGBE_READ_REG(hw, IXGBE_MAXFRS); > diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c > index 976916f870a5..3a516c52d199 100644 > --- a/drivers/net/liquidio/lio_ethdev.c > +++ b/drivers/net/liquidio/lio_ethdev.c > @@ -480,13 +480,6 @@ lio_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) > return -1; > } > > - if (mtu > RTE_ETHER_MTU) > - eth_dev->data->dev_conf.rxmode.offloads |= > - DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - eth_dev->data->dev_conf.rxmode.offloads &= > - ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > return 0; > } > > diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c > index a2031a7a82cc..850ec7655f82 100644 > --- a/drivers/net/nfp/nfp_common.c > +++ b/drivers/net/nfp/nfp_common.c > @@ -962,12 +962,6 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return -EBUSY; > } > > - /* switch to jumbo mode if needed */ > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > /* writing to configuration space */ > nn_cfg_writel(hw, NFP_NET_CFG_MTU, mtu); > > diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c > index 69c3bda12df8..fb65be2c2dc3 100644 > --- a/drivers/net/octeontx/octeontx_ethdev.c > +++ b/drivers/net/octeontx/octeontx_ethdev.c > @@ -552,11 +552,6 @@ octeontx_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) > if (rc) > return rc; > > - if (mtu > RTE_ETHER_MTU) > - nic->rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - nic->rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > octeontx_log_info("Received pkt beyond maxlen %d will be dropped", > frame_size); > > diff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c > index cf7804157198..293306c7be2a 100644 > --- a/drivers/net/octeontx2/otx2_ethdev_ops.c > +++ b/drivers/net/octeontx2/otx2_ethdev_ops.c > @@ -59,11 +59,6 @@ otx2_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu) > if (rc) > return rc; > > - if (mtu > RTE_ETHER_MTU) > - dev->rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > return rc; > } > > diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c > index 4b971fd1fe3c..6886a4e5efb4 100644 > --- a/drivers/net/qede/qede_ethdev.c > +++ b/drivers/net/qede/qede_ethdev.c > @@ -2361,10 +2361,6 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) > fp->rxq->rx_buf_size = rc; > } > } > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > > if (!dev->data->dev_started && restart) { > qede_dev_start(dev); > diff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c > index 1f55c90b419d..2ee80e2dc41f 100644 > --- a/drivers/net/sfc/sfc_ethdev.c > +++ b/drivers/net/sfc/sfc_ethdev.c > @@ -1064,15 +1064,6 @@ sfc_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) > } > } > > - /* > - * The driver does not use it, but other PMDs update jumbo frame > - * flag when MTU is set. > - */ > - if (mtu > RTE_ETHER_MTU) { > - struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode; > - rxmode->offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - } > - > sfc_adapter_unlock(sa); > > sfc_log_init(sa, "done"); > diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c > index c8ae95a61306..b501fee5332c 100644 > --- a/drivers/net/thunderx/nicvf_ethdev.c > +++ b/drivers/net/thunderx/nicvf_ethdev.c > @@ -151,7 +151,6 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) > struct nicvf *nic = nicvf_pmd_priv(dev); > uint32_t buffsz, frame_size = mtu + NIC_HW_L2_OVERHEAD; > size_t i; > - struct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode; > > PMD_INIT_FUNC_TRACE(); > > @@ -176,11 +175,6 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu) > (frame_size + 2 * VLAN_TAG_SIZE > buffsz * NIC_HW_MAX_SEGS)) > return -EINVAL; > > - if (mtu > RTE_ETHER_MTU) > - rxmode->offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - rxmode->offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > if (nicvf_mbox_update_hw_max_frs(nic, mtu)) > return -EINVAL; > > diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c > index 269de9f848dd..35b98097c3a4 100644 > --- a/drivers/net/txgbe/txgbe_ethdev.c > +++ b/drivers/net/txgbe/txgbe_ethdev.c > @@ -3486,12 +3486,6 @@ txgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu) > return -EINVAL; > } > > - /* switch to jumbo mode if needed */ > - if (mtu > RTE_ETHER_MTU) > - dev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; > - else > - dev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; > - > if (hw->mode) > wr32m(hw, TXGBE_FRMSZ, TXGBE_FRMSZ_MAX_MASK, > TXGBE_FRAME_SIZE_MAX); > diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c > index 4d0584af52e3..1740bab98a83 100644 > --- a/lib/ethdev/rte_ethdev.c > +++ b/lib/ethdev/rte_ethdev.c > @@ -3639,6 +3639,7 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu) > int ret; > struct rte_eth_dev_info dev_info; > struct rte_eth_dev *dev; > + int is_jumbo_frame_capable = 0; > > RTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV); > dev = &rte_eth_devices[port_id]; > @@ -3657,12 +3658,27 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu) > > if (mtu < dev_info.min_mtu || mtu > dev_info.max_mtu) > return -EINVAL; > + > + if ((dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) != 0) > + is_jumbo_frame_capable = 1; > } > > + if (mtu > RTE_ETHER_MTU && is_jumbo_frame_capable == 0) > + return -EINVAL; > + > ret = (*dev->dev_ops->mtu_set)(dev, mtu); > - if (!ret) > + if (ret == 0) { > dev->data->mtu = mtu; > > + /* switch to jumbo mode if needed */ > + if (mtu > RTE_ETHER_MTU) > + dev->data->dev_conf.rxmode.offloads |= > + DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > + dev->data->dev_conf.rxmode.offloads &= > + ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + } > + > return eth_err(port_id, ret); > } > > -- > 2.31.1 > --00000000000051610105cd7fe743--