DPDK patches and discussions
 help / color / mirror / Atom feed
From: Somnath Kotur <somnath.kotur@broadcom.com>
To: Ferruh Yigit <ferruh.yigit@intel.com>
Cc: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,
	Thomas Monjalon <thomas@monjalon.net>,
	 Somalapuram Amaranath <asomalap@amd.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	 Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>,
	Hemant Agrawal <hemant.agrawal@nxp.com>,
	 Sachin Saxena <sachin.saxena@oss.nxp.com>,
	Haiyue Wang <haiyue.wang@intel.com>,
	Gagandeep Singh <g.singh@nxp.com>,
	Ziyang Xuan <xuanziyang2@huawei.com>,
	 Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>,
	Guoyang Zhou <zhouguoyang@huawei.com>,
	 Beilei Xing <beilei.xing@intel.com>,
	Jingjing Wu <jingjing.wu@intel.com>,
	 Qiming Yang <qiming.yang@intel.com>,
	Qi Zhang <qi.z.zhang@intel.com>,  Rosen Xu <rosen.xu@intel.com>,
	Shijith Thotton <sthotton@marvell.com>,
	 Srisivasubramanian Srinivasan <srinivasan@marvell.com>,
	Heinrich Kuhn <heinrich.kuhn@corigine.com>,
	 Harman Kalra <hkalra@marvell.com>,
	Jerin Jacob <jerinj@marvell.com>,
	 Nithin Dabilpuram <ndabilpuram@marvell.com>,
	Kiran Kumar K <kirankumark@marvell.com>,
	 Rasesh Mody <rmody@marvell.com>,
	Devendra Singh Rawat <dsinghrawat@marvell.com>,
	Maciej Czekaj <mczekaj@marvell.com>,
	Jiawen Wu <jiawenwu@trustnetic.com>,
	 Jian Wang <jianwang@trustnetic.com>, dev <dev@dpdk.org>
Subject: Re: [dpdk-dev] [PATCH v3 3/6] ethdev: move check to library for MTU set
Date: Mon, 4 Oct 2021 10:39:28 +0530	[thread overview]
Message-ID: <CAOBf=mvJqBgew18fwbOOuWi2RddkNCuYXK9f45Wm7TUCb3Bc-w@mail.gmail.com> (raw)
In-Reply-To: <20211001143624.3744505-3-ferruh.yigit@intel.com>

[-- Attachment #1: Type: text/plain, Size: 22405 bytes --]

On Fri, Oct 1, 2021 at 8:07 PM Ferruh Yigit <ferruh.yigit@intel.com> wrote:
>
> Move requested MTU value check to the API to prevent the duplicated
> code.
>
> Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
> Reviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
> Reviewed-by: Rosen Xu <rosen.xu@intel.com>
> ---
>  drivers/net/axgbe/axgbe_ethdev.c        | 15 ++++-----------
>  drivers/net/bnxt/bnxt_ethdev.c          |  2 +-
>  drivers/net/cxgbe/cxgbe_ethdev.c        | 13 +------------
>  drivers/net/dpaa/dpaa_ethdev.c          |  2 --
>  drivers/net/dpaa2/dpaa2_ethdev.c        |  4 ----
>  drivers/net/e1000/em_ethdev.c           | 10 ----------
>  drivers/net/e1000/igb_ethdev.c          | 11 -----------
>  drivers/net/enetc/enetc_ethdev.c        |  4 ----
>  drivers/net/hinic/hinic_pmd_ethdev.c    |  8 +-------
>  drivers/net/i40e/i40e_ethdev.c          | 17 ++++-------------
>  drivers/net/iavf/iavf_ethdev.c          | 10 ++--------
>  drivers/net/ice/ice_ethdev.c            | 14 +++-----------
>  drivers/net/igc/igc_ethdev.c            |  5 -----
>  drivers/net/ipn3ke/ipn3ke_representor.c |  6 ------
>  drivers/net/liquidio/lio_ethdev.c       | 10 ----------
>  drivers/net/nfp/nfp_common.c            |  4 ----
>  drivers/net/octeontx/octeontx_ethdev.c  |  4 ----
>  drivers/net/octeontx2/otx2_ethdev_ops.c |  4 ----
>  drivers/net/qede/qede_ethdev.c          | 12 ------------
>  drivers/net/thunderx/nicvf_ethdev.c     |  6 ------
>  drivers/net/txgbe/txgbe_ethdev.c        | 10 ----------
>  lib/ethdev/rte_ethdev.c                 |  9 +++++++++
>  22 files changed, 25 insertions(+), 155 deletions(-)
>
> diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c
> index 2960834b4539..c36cd7b1d2f0 100644
> --- a/drivers/net/axgbe/axgbe_ethdev.c
> +++ b/drivers/net/axgbe/axgbe_ethdev.c
> @@ -1478,25 +1478,18 @@ axgbe_dev_supported_ptypes_get(struct rte_eth_dev *dev)
>
>  static int axgb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>  {
> -       struct rte_eth_dev_info dev_info;
>         struct axgbe_port *pdata = dev->data->dev_private;
> -       uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;
> -       unsigned int val = 0;
> -       axgbe_dev_info_get(dev, &dev_info);
> -       /* check that mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)
> -               return -EINVAL;
> +       unsigned int val;
> +
>         /* mtu setting is forbidden if port is start */
>         if (dev->data->dev_started) {
>                 PMD_DRV_LOG(ERR, "port %d must be stopped before configuration",
>                                 dev->data->port_id);
>                 return -EBUSY;
>         }
> -       if (mtu > RTE_ETHER_MTU)
> -               val = 1;
> -       else
> -               val = 0;
> +       val = mtu > RTE_ETHER_MTU ? 1 : 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 07ee19938930..dc33b961320a 100644
> --- a/drivers/net/bnxt/bnxt_ethdev.c
> +++ b/drivers/net/bnxt/bnxt_ethdev.c
> @@ -3025,7 +3025,7 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)
>         uint32_t overhead = BNXT_MAX_PKT_LEN - BNXT_MAX_MTU;
>         struct bnxt *bp = eth_dev->data->dev_private;
>         uint32_t new_pkt_size;
> -       uint32_t rc = 0;
> +       uint32_t rc;
>         uint32_t i;
>
>         rc = is_bnxt_in_error(bp);
Acked-by:  Somnath Kotur <somnath.kotur@broadcom.com>
> diff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c
> index 0c9cc2f5bb3f..70b879fed100 100644
> --- a/drivers/net/cxgbe/cxgbe_ethdev.c
> +++ b/drivers/net/cxgbe/cxgbe_ethdev.c
> @@ -301,21 +301,10 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)
>  {
>         struct port_info *pi = eth_dev->data->dev_private;
>         struct adapter *adapter = pi->adapter;
> -       struct rte_eth_dev_info dev_info;
> -       int err;
>         uint16_t new_mtu = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;
>
> -       err = cxgbe_dev_info_get(eth_dev, &dev_info);
> -       if (err != 0)
> -               return err;
> -
> -       /* Must accommodate at least RTE_ETHER_MIN_MTU */
> -       if (mtu < RTE_ETHER_MIN_MTU || new_mtu > dev_info.max_rx_pktlen)
> -               return -EINVAL;
> -
> -       err = t4_set_rxmode(adapter, adapter->mbox, pi->viid, new_mtu, -1, -1,
> +       return 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 57b09f16ba44..3172e3b2de87 100644
> --- a/drivers/net/dpaa/dpaa_ethdev.c
> +++ b/drivers/net/dpaa/dpaa_ethdev.c
> @@ -167,8 +167,6 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>
>         PMD_INIT_FUNC_TRACE();
>
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > DPAA_MAX_RX_PKT_LEN)
> -               return -EINVAL;
>         /*
>          * Refuse mtu that requires the support of scattered packets
>          * when this feature has not been enabled before.
> diff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c
> index df44bb204f65..c28f03641bbc 100644
> --- a/drivers/net/dpaa2/dpaa2_ethdev.c
> +++ b/drivers/net/dpaa2/dpaa2_ethdev.c
> @@ -1466,10 +1466,6 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>                 return -EINVAL;
>         }
>
> -       /* check that mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > DPAA2_MAX_RX_PKT_LEN)
> -               return -EINVAL;
> -
>         /* 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 1b41dd04df5a..6ebef55588bc 100644
> --- a/drivers/net/e1000/em_ethdev.c
> +++ b/drivers/net/e1000/em_ethdev.c
> @@ -1788,22 +1788,12 @@ eth_em_default_mac_addr_set(struct rte_eth_dev *dev,
>  static int
>  eth_em_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>  {
> -       struct rte_eth_dev_info dev_info;
>         struct e1000_hw *hw;
>         uint32_t frame_size;
>         uint32_t rctl;
> -       int ret;
> -
> -       ret = eth_em_infos_get(dev, &dev_info);
> -       if (ret != 0)
> -               return ret;
>
>         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)
> -               return -EINVAL;
> -
>         /*
>          * If device is started, refuse mtu that requires the support of
>          * scattered packets when this feature has not been enabled before.
> diff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c
> index a061d0529dd1..3164fde5b939 100644
> --- a/drivers/net/e1000/igb_ethdev.c
> +++ b/drivers/net/e1000/igb_ethdev.c
> @@ -4363,9 +4363,7 @@ eth_igb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>  {
>         uint32_t rctl;
>         struct e1000_hw *hw;
> -       struct rte_eth_dev_info dev_info;
>         uint32_t frame_size = mtu + E1000_ETH_OVERHEAD;
> -       int ret;
>
>         hw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);
>
> @@ -4374,15 +4372,6 @@ eth_igb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>         if (hw->mac.type == e1000_82571)
>                 return -ENOTSUP;
>  #endif
> -       ret = eth_igb_infos_get(dev, &dev_info);
> -       if (ret != 0)
> -               return ret;
> -
> -       /* check that mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU ||
> -                       frame_size > dev_info.max_rx_pktlen)
> -               return -EINVAL;
> -
>         /*
>          * If device is started, refuse mtu that requires the support of
>          * scattered packets when this feature has not been enabled before.
> diff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c
> index fbcbbb6c0533..a7372c1787c7 100644
> --- a/drivers/net/enetc/enetc_ethdev.c
> +++ b/drivers/net/enetc/enetc_ethdev.c
> @@ -662,10 +662,6 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>         struct enetc_hw *enetc_hw = &hw->hw;
>         uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;
>
> -       /* check that mtu is within the allowed range */
> -       if (mtu < ENETC_MAC_MINFRM_SIZE || frame_size > ENETC_MAC_MAXFRM_SIZE)
> -               return -EINVAL;
> -
>         /*
>          * Refuse mtu that requires the support of scattered packets
>          * when this feature has not been enabled before.
> diff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c
> index 4b30dfa222a8..79987bec273c 100644
> --- a/drivers/net/hinic/hinic_pmd_ethdev.c
> +++ b/drivers/net/hinic/hinic_pmd_ethdev.c
> @@ -1530,17 +1530,11 @@ static void hinic_deinit_mac_addr(struct rte_eth_dev *eth_dev)
>  static int hinic_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
>  {
>         struct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev);
> -       int ret = 0;
> +       int ret;
>
>         PMD_DRV_LOG(INFO, "Set port mtu, port_id: %d, mtu: %d, max_pkt_len: %d",
>                         dev->data->port_id, mtu, HINIC_MTU_TO_PKTLEN(mtu));
>
> -       if (mtu < HINIC_MIN_MTU_SIZE || mtu > HINIC_MAX_MTU_SIZE) {
> -               PMD_DRV_LOG(ERR, "Invalid mtu: %d, must between %d and %d",
> -                               mtu, HINIC_MIN_MTU_SIZE, HINIC_MAX_MTU_SIZE);
> -               return -EINVAL;
> -       }
> -
>         ret = hinic_set_port_mtu(nic_dev->hwdev, mtu);
>         if (ret) {
>                 PMD_DRV_LOG(ERR, "Set port mtu failed, ret: %d", ret);
> diff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c
> index e14859db9cfd..b93e314d3d0c 100644
> --- a/drivers/net/i40e/i40e_ethdev.c
> +++ b/drivers/net/i40e/i40e_ethdev.c
> @@ -11756,25 +11756,16 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,
>  }
>
>  static int
> -i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
> +i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused)
>  {
> -       struct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);
> -       struct rte_eth_dev_data *dev_data = pf->dev_data;
> -       uint32_t frame_size = mtu + I40E_ETH_OVERHEAD;
> -       int ret = 0;
> -
> -       /* check if mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > I40E_FRAME_SIZE_MAX)
> -               return -EINVAL;
> -
>         /* mtu setting is forbidden if port is start */
> -       if (dev_data->dev_started) {
> +       if (dev->data->dev_started != 0) {
>                 PMD_DRV_LOG(ERR, "port %d must be stopped before configuration",
> -                           dev_data->port_id);
> +                           dev->data->port_id);
>                 return -EBUSY;
>         }
>
> -       return ret;
> +       return 0;
>  }
>
>  /* Restore ethertype filter */
> diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
> index 844d26d87ba6..2d43c666fdbb 100644
> --- a/drivers/net/iavf/iavf_ethdev.c
> +++ b/drivers/net/iavf/iavf_ethdev.c
> @@ -1459,21 +1459,15 @@ iavf_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
>  }
>
>  static int
> -iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
> +iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused)
>  {
> -       uint32_t frame_size = mtu + IAVF_ETH_OVERHEAD;
> -       int ret = 0;
> -
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > IAVF_FRAME_SIZE_MAX)
> -               return -EINVAL;
> -
>         /* mtu setting is forbidden if port is start */
>         if (dev->data->dev_started) {
>                 PMD_DRV_LOG(ERR, "port must be stopped before configuration");
>                 return -EBUSY;
>         }
>
> -       return ret;
> +       return 0;
>  }
>
>  static int
> diff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c
> index 83e8f0da687c..02c06d4da8bc 100644
> --- a/drivers/net/ice/ice_ethdev.c
> +++ b/drivers/net/ice/ice_ethdev.c
> @@ -3974,21 +3974,13 @@ ice_dev_set_link_down(struct rte_eth_dev *dev)
>  }
>
>  static int
> -ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
> +ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused)
>  {
> -       struct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);
> -       struct rte_eth_dev_data *dev_data = pf->dev_data;
> -       uint32_t frame_size = mtu + ICE_ETH_OVERHEAD;
> -
> -       /* check if mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > ICE_FRAME_SIZE_MAX)
> -               return -EINVAL;
> -
>         /* mtu setting is forbidden if port is start */
> -       if (dev_data->dev_started) {
> +       if (dev->data->dev_started != 0) {
>                 PMD_DRV_LOG(ERR,
>                             "port %d must be stopped before configuration",
> -                           dev_data->port_id);
> +                           dev->data->port_id);
>                 return -EBUSY;
>         }
>
> diff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c
> index dcbc26b8186e..e279ae1fff1d 100644
> --- a/drivers/net/igc/igc_ethdev.c
> +++ b/drivers/net/igc/igc_ethdev.c
> @@ -1576,11 +1576,6 @@ eth_igc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>         if (IGC_READ_REG(hw, IGC_CTRL_EXT) & IGC_CTRL_EXT_EXT_VLAN)
>                 frame_size += VLAN_TAG_SIZE;
>
> -       /* check that mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU ||
> -               frame_size > MAX_RX_JUMBO_FRAME_SIZE)
> -               return -EINVAL;
> -
>         /*
>          * If device is started, refuse mtu that requires the support of
>          * scattered packets when this feature has not been enabled before.
> diff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c
> index e8a33f04bd69..377b96c0236a 100644
> --- a/drivers/net/ipn3ke/ipn3ke_representor.c
> +++ b/drivers/net/ipn3ke/ipn3ke_representor.c
> @@ -2778,12 +2778,6 @@ ipn3ke_rpst_mtu_set(struct rte_eth_dev *ethdev, uint16_t mtu)
>         int ret = 0;
>         struct ipn3ke_rpst *rpst = IPN3KE_DEV_PRIVATE_TO_RPST(ethdev);
>         struct rte_eth_dev_data *dev_data = ethdev->data;
> -       uint32_t frame_size = mtu  + IPN3KE_ETH_OVERHEAD;
> -
> -       /* check if mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU ||
> -               frame_size > IPN3KE_MAC_FRAME_SIZE_MAX)
> -               return -EINVAL;
>
>         /* mtu setting is forbidden if port is start */
>         /* make sure NIC port is stopped */
> diff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c
> index 3a516c52d199..9d1d811a2e37 100644
> --- a/drivers/net/liquidio/lio_ethdev.c
> +++ b/drivers/net/liquidio/lio_ethdev.c
> @@ -434,7 +434,6 @@ static int
>  lio_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)
>  {
>         struct lio_device *lio_dev = LIO_DEV(eth_dev);
> -       uint16_t pf_mtu = lio_dev->linfo.link.s.mtu;
>         struct lio_dev_ctrl_cmd ctrl_cmd;
>         struct lio_ctrl_pkt ctrl_pkt;
>
> @@ -446,15 +445,6 @@ lio_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)
>                 return -EINVAL;
>         }
>
> -       /* check if VF MTU is within allowed range.
> -        * New value should not exceed PF MTU.
> -        */
> -       if (mtu < RTE_ETHER_MIN_MTU || mtu > pf_mtu) {
> -               lio_dev_err(lio_dev, "VF MTU should be >= %d and <= %d\n",
> -                           RTE_ETHER_MIN_MTU, pf_mtu);
> -               return -EINVAL;
> -       }
> -
>         /* flush added to prevent cmd failure
>          * incase the queue is full
>          */
> diff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c
> index 850ec7655f82..b1ce35b334da 100644
> --- a/drivers/net/nfp/nfp_common.c
> +++ b/drivers/net/nfp/nfp_common.c
> @@ -951,10 +951,6 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>
>         hw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);
>
> -       /* check that mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU || (uint32_t)mtu > hw->max_mtu)
> -               return -EINVAL;
> -
>         /* mtu setting is forbidden if port is started */
>         if (dev->data->dev_started) {
>                 PMD_DRV_LOG(ERR, "port %d must be stopped before configuration",
> diff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c
> index fb65be2c2dc3..b2355fa695bc 100644
> --- a/drivers/net/octeontx/octeontx_ethdev.c
> +++ b/drivers/net/octeontx/octeontx_ethdev.c
> @@ -524,10 +524,6 @@ octeontx_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)
>         struct rte_eth_dev_data *data = eth_dev->data;
>         int rc = 0;
>
> -       /* Check if MTU is within the allowed range */
> -       if (frame_size < OCCTX_MIN_FRS || frame_size > OCCTX_MAX_FRS)
> -               return -EINVAL;
> -
>         buffsz = data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
>
>         /* Refuse MTU that requires the support of scattered packets
> diff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c
> index 293306c7be2a..206da6f7cfda 100644
> --- a/drivers/net/octeontx2/otx2_ethdev_ops.c
> +++ b/drivers/net/octeontx2/otx2_ethdev_ops.c
> @@ -20,10 +20,6 @@ otx2_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)
>         if (dev->configured && otx2_ethdev_is_ptp_en(dev))
>                 frame_size += NIX_TIMESYNC_RX_OFFSET;
>
> -       /* Check if MTU is within the allowed range */
> -       if (frame_size < NIX_MIN_FRS || frame_size > NIX_MAX_FRS)
> -               return -EINVAL;
> -
>         buffsz = data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
>
>         /* Refuse MTU that requires the support of scattered packets
> diff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c
> index 6886a4e5efb4..84e23ff03418 100644
> --- a/drivers/net/qede/qede_ethdev.c
> +++ b/drivers/net/qede/qede_ethdev.c
> @@ -2307,7 +2307,6 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
>  {
>         struct qede_dev *qdev = QEDE_INIT_QDEV(dev);
>         struct ecore_dev *edev = QEDE_INIT_EDEV(qdev);
> -       struct rte_eth_dev_info dev_info = {0};
>         struct qede_fastpath *fp;
>         uint32_t frame_size;
>         uint16_t bufsz;
> @@ -2315,19 +2314,8 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
>         int i, rc;
>
>         PMD_INIT_FUNC_TRACE(edev);
> -       rc = qede_dev_info_get(dev, &dev_info);
> -       if (rc != 0) {
> -               DP_ERR(edev, "Error during getting ethernet device info\n");
> -               return rc;
> -       }
>
>         frame_size = mtu + QEDE_MAX_ETHER_HDR_LEN;
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen) {
> -               DP_ERR(edev, "MTU %u out of range, %u is maximum allowable\n",
> -                      mtu, dev_info.max_rx_pktlen - RTE_ETHER_HDR_LEN -
> -                      QEDE_ETH_OVERHEAD);
> -               return -EINVAL;
> -       }
>         if (!dev->data->scattered_rx &&
>             frame_size > dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM) {
>                 DP_INFO(edev, "MTU greater than minimum RX buffer size of %u\n",
> diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c
> index b501fee5332c..44c6b1c72354 100644
> --- a/drivers/net/thunderx/nicvf_ethdev.c
> +++ b/drivers/net/thunderx/nicvf_ethdev.c
> @@ -154,12 +154,6 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)
>
>         PMD_INIT_FUNC_TRACE();
>
> -       if (frame_size > NIC_HW_MAX_FRS)
> -               return -EINVAL;
> -
> -       if (frame_size < NIC_HW_MIN_FRS)
> -               return -EINVAL;
> -
>         buffsz = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;
>
>         /*
> diff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c
> index 35b98097c3a4..c6fcb1871981 100644
> --- a/drivers/net/txgbe/txgbe_ethdev.c
> +++ b/drivers/net/txgbe/txgbe_ethdev.c
> @@ -3463,18 +3463,8 @@ static int
>  txgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
>  {
>         struct txgbe_hw *hw = TXGBE_DEV_HW(dev);
> -       struct rte_eth_dev_info dev_info;
>         uint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;
>         struct rte_eth_dev_data *dev_data = dev->data;
> -       int ret;
> -
> -       ret = txgbe_dev_info_get(dev, &dev_info);
> -       if (ret != 0)
> -               return ret;
> -
> -       /* check that mtu is within the allowed range */
> -       if (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)
> -               return -EINVAL;
>
>         /* If device is started, refuse mtu that requires the support of
>          * scattered packets when this feature has not been enabled before.
> diff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c
> index 1740bab98a83..ce0ed509d28f 100644
> --- a/lib/ethdev/rte_ethdev.c
> +++ b/lib/ethdev/rte_ethdev.c
> @@ -3652,6 +3652,9 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu)
>          * which relies on dev->dev_ops->dev_infos_get.
>          */
>         if (*dev->dev_ops->dev_infos_get != NULL) {
> +               uint16_t overhead_len;
> +               uint32_t frame_size;
> +
>                 ret = rte_eth_dev_info_get(port_id, &dev_info);
>                 if (ret != 0)
>                         return ret;
> @@ -3659,6 +3662,12 @@ 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;
>
> +               overhead_len = eth_dev_get_overhead_len(dev_info.max_rx_pktlen,
> +                               dev_info.max_mtu);
> +               frame_size = mtu + overhead_len;
> +               if (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)
> +                       return -EINVAL;
> +
>                 if ((dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) != 0)
>                         is_jumbo_frame_capable = 1;
>         }
> --
> 2.31.1
>

  reply	other threads:[~2021-10-04  5:09 UTC|newest]

Thread overview: 112+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-07-09 17:29 [dpdk-dev] [PATCH 1/4] ethdev: fix max Rx packet length Ferruh Yigit
2021-07-09 17:29 ` [dpdk-dev] [PATCH 2/4] ethdev: move jumbo frame offload check to library Ferruh Yigit
2021-07-13 13:48   ` Andrew Rybchenko
2021-07-21 12:26     ` Ferruh Yigit
2021-07-18  7:49   ` Xu, Rosen
2021-07-19 14:38   ` Ajit Khaparde
2021-07-09 17:29 ` [dpdk-dev] [PATCH 3/4] ethdev: move check to library for MTU set Ferruh Yigit
2021-07-13 13:56   ` Andrew Rybchenko
2021-07-18  7:52   ` Xu, Rosen
2021-07-09 17:29 ` [dpdk-dev] [PATCH 4/4] ethdev: remove jumbo offload flag Ferruh Yigit
2021-07-13 14:07   ` Andrew Rybchenko
2021-07-21 12:26     ` Ferruh Yigit
2021-07-21 12:39     ` Ferruh Yigit
2021-07-18  7:53   ` Xu, Rosen
2021-07-13 12:47 ` [dpdk-dev] [PATCH 1/4] ethdev: fix max Rx packet length Andrew Rybchenko
2021-07-21 16:46   ` Ferruh Yigit
2021-07-22  1:31     ` Ajit Khaparde
2021-07-22 10:27       ` Ferruh Yigit
2021-07-22 10:38         ` Andrew Rybchenko
2021-07-18  7:45 ` Xu, Rosen
2021-07-19  3:35 ` Huisong Li
2021-07-21 15:29   ` Ferruh Yigit
2021-07-22  7:21     ` Huisong Li
2021-07-22 10:12       ` Ferruh Yigit
2021-07-22 10:15         ` Andrew Rybchenko
2021-07-22 14:43           ` Stephen Hemminger
2021-09-17  1:08             ` Min Hu (Connor)
2021-09-17  8:04               ` Ferruh Yigit
2021-09-17  8:16                 ` Min Hu (Connor)
2021-09-17  8:17                 ` Min Hu (Connor)
2021-07-22 17:21 ` [dpdk-dev] [PATCH v2 1/6] " Ferruh Yigit
2021-07-22 17:21   ` [dpdk-dev] [PATCH v2 2/6] ethdev: move jumbo frame offload check to library Ferruh Yigit
2021-07-22 17:21   ` [dpdk-dev] [PATCH v2 3/6] ethdev: move check to library for MTU set Ferruh Yigit
2021-07-22 17:21   ` [dpdk-dev] [PATCH v2 4/6] ethdev: remove jumbo offload flag Ferruh Yigit
2021-07-22 17:21   ` [dpdk-dev] [PATCH v2 5/6] ethdev: unify MTU checks Ferruh Yigit
2021-07-23  3:29     ` Huisong Li
2021-07-22 17:21   ` [dpdk-dev] [PATCH v2 6/6] examples/ip_reassembly: remove unused parameter Ferruh Yigit
2021-10-01 14:36   ` [dpdk-dev] [PATCH v3 1/6] ethdev: fix max Rx packet length Ferruh Yigit
2021-10-01 14:36     ` [dpdk-dev] [PATCH v3 2/6] ethdev: move jumbo frame offload check to library Ferruh Yigit
2021-10-04  5:08       ` Somnath Kotur
2021-10-01 14:36     ` [dpdk-dev] [PATCH v3 3/6] ethdev: move check to library for MTU set Ferruh Yigit
2021-10-04  5:09       ` Somnath Kotur [this message]
2021-10-01 14:36     ` [dpdk-dev] [PATCH v3 4/6] ethdev: remove jumbo offload flag Ferruh Yigit
     [not found]       ` <CAOBf=muYkU2dwgi3iC8Q7pdSNTJsMUwWYdXj14KeN_=_mUGa0w@mail.gmail.com>
2021-10-04  7:55         ` Somnath Kotur
2021-10-05 16:48           ` Ferruh Yigit
2021-10-01 14:36     ` [dpdk-dev] [PATCH v3 5/6] ethdev: unify MTU checks Ferruh Yigit
2021-10-01 14:36     ` [dpdk-dev] [PATCH v3 6/6] examples/ip_reassembly: remove unused parameter Ferruh Yigit
2021-10-01 15:07     ` [dpdk-dev] [PATCH v3 1/6] ethdev: fix max Rx packet length Stephen Hemminger
2021-10-05 16:46       ` Ferruh Yigit
2021-10-05 17:16     ` [dpdk-dev] [PATCH v4 " Ferruh Yigit
2021-10-05 17:16       ` [dpdk-dev] [PATCH v4 2/6] ethdev: move jumbo frame offload check to library Ferruh Yigit
2021-10-08  8:39         ` Xu, Rosen
2021-10-05 17:16       ` [dpdk-dev] [PATCH v4 3/6] ethdev: move check to library for MTU set Ferruh Yigit
2021-10-05 17:16       ` [dpdk-dev] [PATCH v4 4/6] ethdev: remove jumbo offload flag Ferruh Yigit
2021-10-08  8:38         ` Xu, Rosen
2021-10-05 17:16       ` [dpdk-dev] [PATCH v4 5/6] ethdev: unify MTU checks Ferruh Yigit
2021-10-05 17:16       ` [dpdk-dev] [PATCH v4 6/6] examples/ip_reassembly: remove unused parameter Ferruh Yigit
2021-10-05 22:07       ` [dpdk-dev] [PATCH v4 1/6] ethdev: fix max Rx packet length Ajit Khaparde
2021-10-06  6:08         ` Somnath Kotur
2021-10-08  8:36       ` Xu, Rosen
2021-10-10  6:30       ` Matan Azrad
2021-10-11 21:59         ` Ferruh Yigit
2021-10-12  7:03           ` Matan Azrad
2021-10-12 11:03             ` Ferruh Yigit
2021-10-07 16:56     ` [dpdk-dev] [PATCH v5 " Ferruh Yigit
2021-10-07 16:56       ` [dpdk-dev] [PATCH v5 2/6] ethdev: move jumbo frame offload check to library Ferruh Yigit
2021-10-08 17:20         ` Ananyev, Konstantin
2021-10-09 10:58         ` lihuisong (C)
2021-10-07 16:56       ` [dpdk-dev] [PATCH v5 3/6] ethdev: move check to library for MTU set Ferruh Yigit
2021-10-08 17:19         ` Ananyev, Konstantin
2021-10-07 16:56       ` [dpdk-dev] [PATCH v5 4/6] ethdev: remove jumbo offload flag Ferruh Yigit
2021-10-08 17:11         ` Ananyev, Konstantin
2021-10-09 11:09           ` lihuisong (C)
2021-10-10  5:46         ` Matan Azrad
2021-10-07 16:56       ` [dpdk-dev] [PATCH v5 5/6] ethdev: unify MTU checks Ferruh Yigit
2021-10-08 16:51         ` Ananyev, Konstantin
2021-10-11 19:50           ` Ferruh Yigit
2021-10-09 11:43         ` lihuisong (C)
2021-10-11 20:15           ` Ferruh Yigit
2021-10-12  4:02             ` lihuisong (C)
2021-10-07 16:56       ` [dpdk-dev] [PATCH v5 6/6] examples/ip_reassembly: remove unused parameter Ferruh Yigit
2021-10-08 16:53         ` Ananyev, Konstantin
2021-10-08 15:57       ` [dpdk-dev] [PATCH v5 1/6] ethdev: fix max Rx packet length Ananyev, Konstantin
2021-10-11 19:47         ` Ferruh Yigit
2021-10-09 10:56       ` lihuisong (C)
2021-10-11 23:53     ` [dpdk-dev] [PATCH v6 " Ferruh Yigit
2021-10-11 23:53       ` [dpdk-dev] [PATCH v6 2/6] ethdev: move jumbo frame offload check to library Ferruh Yigit
2021-10-11 23:53       ` [dpdk-dev] [PATCH v6 3/6] ethdev: move check to library for MTU set Ferruh Yigit
2021-10-11 23:53       ` [dpdk-dev] [PATCH v6 4/6] ethdev: remove jumbo offload flag Ferruh Yigit
2021-10-12 17:20         ` Hyong Youb Kim (hyonkim)
2021-10-13  7:16         ` Michał Krawczyk
2021-10-11 23:53       ` [dpdk-dev] [PATCH v6 5/6] ethdev: unify MTU checks Ferruh Yigit
2021-10-12  5:58         ` Andrew Rybchenko
2021-10-11 23:53       ` [dpdk-dev] [PATCH v6 6/6] examples/ip_reassembly: remove unused parameter Ferruh Yigit
2021-10-12  6:02       ` [dpdk-dev] [PATCH v6 1/6] ethdev: fix max Rx packet length Andrew Rybchenko
2021-10-12  9:42       ` Ananyev, Konstantin
2021-10-13  7:08       ` Xu, Rosen
2021-10-15  1:31       ` Hyong Youb Kim (hyonkim)
2021-10-16  0:24       ` Ferruh Yigit
2021-10-18  8:54         ` Ferruh Yigit
2021-10-18 13:48     ` [dpdk-dev] [PATCH v7 " Ferruh Yigit
2021-10-18 13:48       ` [dpdk-dev] [PATCH v7 2/6] ethdev: move jumbo frame offload check to library Ferruh Yigit
2021-10-18 13:48       ` [dpdk-dev] [PATCH v7 3/6] ethdev: move check to library for MTU set Ferruh Yigit
2021-10-18 13:48       ` [dpdk-dev] [PATCH v7 4/6] ethdev: remove jumbo offload flag Ferruh Yigit
2021-10-21  0:43         ` Thomas Monjalon
2021-10-22 11:25           ` Ferruh Yigit
2021-10-22 11:29             ` Andrew Rybchenko
2021-10-18 13:48       ` [dpdk-dev] [PATCH v7 5/6] ethdev: unify MTU checks Ferruh Yigit
2021-10-18 13:48       ` [dpdk-dev] [PATCH v7 6/6] examples/ip_reassembly: remove unused parameter Ferruh Yigit
2021-10-18 17:31       ` [dpdk-dev] [PATCH v7 1/6] ethdev: fix max Rx packet length Ferruh Yigit
2021-11-05 14:19         ` Xueming(Steven) Li
2021-11-05 14:39           ` Ferruh Yigit

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAOBf=mvJqBgew18fwbOOuWi2RddkNCuYXK9f45Wm7TUCb3Bc-w@mail.gmail.com' \
    --to=somnath.kotur@broadcom.com \
    --cc=ajit.khaparde@broadcom.com \
    --cc=andrew.rybchenko@oktetlabs.ru \
    --cc=asomalap@amd.com \
    --cc=beilei.xing@intel.com \
    --cc=cloud.wangxiaoyun@huawei.com \
    --cc=dev@dpdk.org \
    --cc=dsinghrawat@marvell.com \
    --cc=ferruh.yigit@intel.com \
    --cc=g.singh@nxp.com \
    --cc=haiyue.wang@intel.com \
    --cc=heinrich.kuhn@corigine.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=hkalra@marvell.com \
    --cc=jerinj@marvell.com \
    --cc=jianwang@trustnetic.com \
    --cc=jiawenwu@trustnetic.com \
    --cc=jingjing.wu@intel.com \
    --cc=kirankumark@marvell.com \
    --cc=mczekaj@marvell.com \
    --cc=ndabilpuram@marvell.com \
    --cc=qi.z.zhang@intel.com \
    --cc=qiming.yang@intel.com \
    --cc=rahul.lakkireddy@chelsio.com \
    --cc=rmody@marvell.com \
    --cc=rosen.xu@intel.com \
    --cc=sachin.saxena@oss.nxp.com \
    --cc=srinivasan@marvell.com \
    --cc=sthotton@marvell.com \
    --cc=thomas@monjalon.net \
    --cc=xuanziyang2@huawei.com \
    --cc=zhouguoyang@huawei.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).