All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ferruh Yigit <ferruh.yigit@intel.com>
To: Somalapuram Amaranath <asomalap@amd.com>,
	Ajit Khaparde <ajit.khaparde@broadcom.com>,
	Somnath Kotur <somnath.kotur@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@netronome.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>,
	Igor Russkikh <irusskikh@marvell.com>,
	Maciej Czekaj <mczekaj@marvell.com>,
	Jiawen Wu <jiawenwu@trustnetic.com>,
	Jian Wang <jianwang@trustnetic.com>,
	Thomas Monjalon <thomas@monjalon.net>,
	Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>
Cc: Ferruh Yigit <ferruh.yigit@intel.com>, dev@dpdk.org
Subject: [dpdk-dev] [PATCH 3/4] ethdev: move check to library for MTU set
Date: Fri,  9 Jul 2021 18:29:21 +0100	[thread overview]
Message-ID: <20210709172923.3369846-3-ferruh.yigit@intel.com> (raw)
In-Reply-To: <20210709172923.3369846-1-ferruh.yigit@intel.com>

Move requested MTU value check to the API to prevent the duplicated
code.

Signed-off-by: Ferruh Yigit <ferruh.yigit@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/i40e/i40e_ethdev_vf.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_net.c               |  4 ----
 drivers/net/octeontx/octeontx_ethdev.c  |  4 ----
 drivers/net/octeontx2/otx2_ethdev_ops.c |  5 -----
 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 +++++++++
 23 files changed, 29 insertions(+), 169 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 4344a012f06e..1e7da8ba61a6 100644
--- a/drivers/net/bnxt/bnxt_ethdev.c
+++ b/drivers/net/bnxt/bnxt_ethdev.c
@@ -2991,7 +2991,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);
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 a444f749bb96..60dd4f67fc26 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 be2858b3adac..6b44b0557e6a 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 f15774eae20d..fb69210ba9f4 100644
--- a/drivers/net/e1000/igb_ethdev.c
+++ b/drivers/net/e1000/igb_ethdev.c
@@ -4368,9 +4368,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);
 
@@ -4379,15 +4377,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 c1cde811a252..ce0b52c718ab 100644
--- a/drivers/net/hinic/hinic_pmd_ethdev.c
+++ b/drivers/net/hinic/hinic_pmd_ethdev.c
@@ -1539,17 +1539,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 c5058f26dff2..dad151eac5f1 100644
--- a/drivers/net/i40e/i40e_ethdev.c
+++ b/drivers/net/i40e/i40e_ethdev.c
@@ -11754,25 +11754,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) {
 		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/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c
index 2015a86ba5ca..f7f9d44ef181 100644
--- a/drivers/net/i40e/i40e_ethdev_vf.c
+++ b/drivers/net/i40e/i40e_ethdev_vf.c
@@ -2866,25 +2866,16 @@ i40evf_dev_rss_hash_conf_get(struct rte_eth_dev *dev,
 }
 
 static int
-i40evf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)
+i40evf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused)
 {
-	struct i40e_vf *vf = I40EVF_DEV_PRIVATE_TO_VF(dev->data->dev_private);
-	struct rte_eth_dev_data *dev_data = vf->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) {
 		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;
 }
 
 static int
diff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c
index ba5be45e8c5e..049671ef3da9 100644
--- a/drivers/net/iavf/iavf_ethdev.c
+++ b/drivers/net/iavf/iavf_ethdev.c
@@ -1432,21 +1432,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 502e410b5641..c1a96d3de183 100644
--- a/drivers/net/ice/ice_ethdev.c
+++ b/drivers/net/ice/ice_ethdev.c
@@ -3788,21 +3788,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) {
 		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 5c40f16bfa24..0fd8b247aabf 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_net.c b/drivers/net/nfp/nfp_net.c
index 5cea035e1465..8efeacc03943 100644
--- a/drivers/net/nfp/nfp_net.c
+++ b/drivers/net/nfp/nfp_net.c
@@ -1539,10 +1539,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 0c97ef7584a0..cba03b4bb9b8 100644
--- a/drivers/net/octeontx2/otx2_ethdev_ops.c
+++ b/drivers/net/octeontx2/otx2_ethdev_ops.c
@@ -18,11 +18,6 @@ otx2_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)
 	int rc;
 
 	frame_size += NIX_TIMESYNC_RX_OFFSET * otx2_ethdev_is_ptp_en(dev);
-
-	/* 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 71065f8072ac..098e56e9822f 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 0639889b2144..ac8477cbd7f4 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 b1a3f9fbb84d..41b0e63cd79e 100644
--- a/drivers/net/txgbe/txgbe_ethdev.c
+++ b/drivers/net/txgbe/txgbe_ethdev.c
@@ -3459,18 +3459,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 d649a5dd69a9..41c9e630e4d4 100644
--- a/lib/ethdev/rte_ethdev.c
+++ b/lib/ethdev/rte_ethdev.c
@@ -3638,6 +3638,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;
@@ -3645,6 +3648,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)
 			is_jumbo_frame_capable = 1;
 	}
-- 
2.31.1


  parent reply	other threads:[~2021-07-09 17:30 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 ` Ferruh Yigit [this message]
2021-07-13 13:56   ` [dpdk-dev] [PATCH 3/4] ethdev: move check to library for MTU set 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
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=20210709172923.3369846-3-ferruh.yigit@intel.com \
    --to=ferruh.yigit@intel.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=g.singh@nxp.com \
    --cc=haiyue.wang@intel.com \
    --cc=heinrich.kuhn@netronome.com \
    --cc=hemant.agrawal@nxp.com \
    --cc=hkalra@marvell.com \
    --cc=irusskikh@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=somnath.kotur@broadcom.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.