get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/102044/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 102044,
    "url": "https://patches.dpdk.org/api/patches/102044/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/20211018134854.1258938-3-ferruh.yigit@intel.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20211018134854.1258938-3-ferruh.yigit@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211018134854.1258938-3-ferruh.yigit@intel.com",
    "date": "2021-10-18T13:48:50",
    "name": "[v7,3/6] ethdev: move check to library for MTU set",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "03dcd730f5c3329b3e23eee592078dbc8190afdb",
    "submitter": {
        "id": 324,
        "url": "https://patches.dpdk.org/api/people/324/?format=api",
        "name": "Ferruh Yigit",
        "email": "ferruh.yigit@intel.com"
    },
    "delegate": {
        "id": 319,
        "url": "https://patches.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/20211018134854.1258938-3-ferruh.yigit@intel.com/mbox/",
    "series": [
        {
            "id": 19744,
            "url": "https://patches.dpdk.org/api/series/19744/?format=api",
            "web_url": "https://patches.dpdk.org/project/dpdk/list/?series=19744",
            "date": "2021-10-18T13:48:48",
            "name": "[v7,1/6] ethdev: fix max Rx packet length",
            "version": 7,
            "mbox": "https://patches.dpdk.org/series/19744/mbox/"
        }
    ],
    "comments": "https://patches.dpdk.org/api/patches/102044/comments/",
    "check": "success",
    "checks": "https://patches.dpdk.org/api/patches/102044/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 48BCCA0C43;\n\tMon, 18 Oct 2021 15:49:43 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 38926410F7;\n\tMon, 18 Oct 2021 15:49:43 +0200 (CEST)",
            "from mga05.intel.com (mga05.intel.com [192.55.52.43])\n by mails.dpdk.org (Postfix) with ESMTP id F3BA1410EA\n for <dev@dpdk.org>; Mon, 18 Oct 2021 15:49:40 +0200 (CEST)",
            "from orsmga007.jf.intel.com ([10.7.209.58])\n by fmsmga105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 18 Oct 2021 06:49:39 -0700",
            "from silpixa00399752.ir.intel.com (HELO\n silpixa00399752.ger.corp.intel.com) ([10.237.222.27])\n by orsmga007.jf.intel.com with ESMTP; 18 Oct 2021 06:49:31 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10140\"; a=\"314447492\"",
            "E=Sophos;i=\"5.85,382,1624345200\"; d=\"scan'208\";a=\"314447492\"",
            "E=Sophos;i=\"5.85,382,1624345200\"; d=\"scan'208\";a=\"482741278\""
        ],
        "X-ExtLoop1": "1",
        "From": "Ferruh Yigit <ferruh.yigit@intel.com>",
        "To": "Somalapuram Amaranath <asomalap@amd.com>,\n Ajit Khaparde <ajit.khaparde@broadcom.com>,\n Somnath Kotur <somnath.kotur@broadcom.com>,\n Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>,\n Hemant Agrawal <hemant.agrawal@nxp.com>,\n Sachin Saxena <sachin.saxena@oss.nxp.com>,\n Haiyue Wang <haiyue.wang@intel.com>, Gagandeep Singh <g.singh@nxp.com>,\n Ziyang Xuan <xuanziyang2@huawei.com>,\n Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>,\n Guoyang Zhou <zhouguoyang@huawei.com>, Beilei Xing <beilei.xing@intel.com>,\n Jingjing Wu <jingjing.wu@intel.com>, Qiming Yang <qiming.yang@intel.com>,\n Qi Zhang <qi.z.zhang@intel.com>, Rosen Xu <rosen.xu@intel.com>,\n Shijith Thotton <sthotton@marvell.com>,\n Srisivasubramanian Srinivasan <srinivasan@marvell.com>,\n Heinrich Kuhn <heinrich.kuhn@corigine.com>,\n Harman Kalra <hkalra@marvell.com>, Jerin Jacob <jerinj@marvell.com>,\n Nithin Dabilpuram <ndabilpuram@marvell.com>,\n Kiran Kumar K <kirankumark@marvell.com>, Rasesh Mody <rmody@marvell.com>,\n Devendra Singh Rawat <dsinghrawat@marvell.com>,\n Maciej Czekaj <mczekaj@marvell.com>, Jiawen Wu <jiawenwu@trustnetic.com>,\n Jian Wang <jianwang@trustnetic.com>, Thomas Monjalon <thomas@monjalon.net>,\n Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>",
        "Cc": "Ferruh Yigit <ferruh.yigit@intel.com>, dev@dpdk.org,\n Konstantin Ananyev <konstantin.ananyev@intel.com>",
        "Date": "Mon, 18 Oct 2021 14:48:50 +0100",
        "Message-Id": "<20211018134854.1258938-3-ferruh.yigit@intel.com>",
        "X-Mailer": "git-send-email 2.31.1",
        "In-Reply-To": "<20211018134854.1258938-1-ferruh.yigit@intel.com>",
        "References": "<20211001143624.3744505-1-ferruh.yigit@intel.com>\n <20211018134854.1258938-1-ferruh.yigit@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH v7 3/6] ethdev: move check to library for MTU set",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "Move requested MTU value check to the API to prevent the duplicated\ncode.\n\nSigned-off-by: Ferruh Yigit <ferruh.yigit@intel.com>\nReviewed-by: Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>\nReviewed-by: Rosen Xu <rosen.xu@intel.com>\nAcked-by: Somnath Kotur <somnath.kotur@broadcom.com>\nAcked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>\n---\n drivers/net/axgbe/axgbe_ethdev.c        | 15 ++++-----------\n drivers/net/bnxt/bnxt_ethdev.c          |  2 +-\n drivers/net/cxgbe/cxgbe_ethdev.c        | 13 +------------\n drivers/net/dpaa/dpaa_ethdev.c          |  2 --\n drivers/net/dpaa2/dpaa2_ethdev.c        |  4 ----\n drivers/net/e1000/em_ethdev.c           | 10 ----------\n drivers/net/e1000/igb_ethdev.c          | 11 -----------\n drivers/net/enetc/enetc_ethdev.c        |  4 ----\n drivers/net/hinic/hinic_pmd_ethdev.c    |  8 +-------\n drivers/net/i40e/i40e_ethdev.c          | 17 ++++-------------\n drivers/net/iavf/iavf_ethdev.c          | 10 ++--------\n drivers/net/ice/ice_ethdev.c            | 14 +++-----------\n drivers/net/igc/igc_ethdev.c            |  5 -----\n drivers/net/ipn3ke/ipn3ke_representor.c |  6 ------\n drivers/net/liquidio/lio_ethdev.c       | 10 ----------\n drivers/net/nfp/nfp_common.c            |  4 ----\n drivers/net/octeontx/octeontx_ethdev.c  |  4 ----\n drivers/net/octeontx2/otx2_ethdev_ops.c |  4 ----\n drivers/net/qede/qede_ethdev.c          | 12 ------------\n drivers/net/thunderx/nicvf_ethdev.c     |  6 ------\n drivers/net/txgbe/txgbe_ethdev.c        | 10 ----------\n lib/ethdev/rte_ethdev.c                 |  9 +++++++++\n 22 files changed, 25 insertions(+), 155 deletions(-)",
    "diff": "diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c\nindex 2dc5fa245bd8..d302329525d0 100644\n--- a/drivers/net/axgbe/axgbe_ethdev.c\n+++ b/drivers/net/axgbe/axgbe_ethdev.c\n@@ -1478,25 +1478,18 @@ axgbe_dev_supported_ptypes_get(struct rte_eth_dev *dev)\n \n static int axgb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n {\n-\tstruct rte_eth_dev_info dev_info;\n \tstruct axgbe_port *pdata = dev->data->dev_private;\n-\tuint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;\n-\tunsigned int val = 0;\n-\taxgbe_dev_info_get(dev, &dev_info);\n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)\n-\t\treturn -EINVAL;\n+\tunsigned int val;\n+\n \t/* mtu setting is forbidden if port is start */\n \tif (dev->data->dev_started) {\n \t\tPMD_DRV_LOG(ERR, \"port %d must be stopped before configuration\",\n \t\t\t\tdev->data->port_id);\n \t\treturn -EBUSY;\n \t}\n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tval = 1;\n-\telse\n-\t\tval = 0;\n+\tval = mtu > RTE_ETHER_MTU ? 1 : 0;\n \tAXGMAC_IOWRITE_BITS(pdata, MAC_RCR, JE, val);\n+\n \treturn 0;\n }\n \ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 6a66ed824a47..f3cd756447cf 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -3029,7 +3029,7 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)\n \tuint32_t overhead = BNXT_MAX_PKT_LEN - BNXT_MAX_MTU;\n \tstruct bnxt *bp = eth_dev->data->dev_private;\n \tuint32_t new_pkt_size;\n-\tuint32_t rc = 0;\n+\tuint32_t rc;\n \tuint32_t i;\n \n \trc = is_bnxt_in_error(bp);\ndiff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c\nindex cdecf6b512ef..32a01009107d 100644\n--- a/drivers/net/cxgbe/cxgbe_ethdev.c\n+++ b/drivers/net/cxgbe/cxgbe_ethdev.c\n@@ -301,21 +301,10 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n {\n \tstruct port_info *pi = eth_dev->data->dev_private;\n \tstruct adapter *adapter = pi->adapter;\n-\tstruct rte_eth_dev_info dev_info;\n-\tint err;\n \tuint16_t new_mtu = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;\n \n-\terr = cxgbe_dev_info_get(eth_dev, &dev_info);\n-\tif (err != 0)\n-\t\treturn err;\n-\n-\t/* Must accommodate at least RTE_ETHER_MIN_MTU */\n-\tif (mtu < RTE_ETHER_MIN_MTU || new_mtu > dev_info.max_rx_pktlen)\n-\t\treturn -EINVAL;\n-\n-\terr = t4_set_rxmode(adapter, adapter->mbox, pi->viid, new_mtu, -1, -1,\n+\treturn t4_set_rxmode(adapter, adapter->mbox, pi->viid, new_mtu, -1, -1,\n \t\t\t    -1, -1, true);\n-\treturn err;\n }\n \n /*\ndiff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c\nindex f24ec55bee8b..c117115066b0 100644\n--- a/drivers/net/dpaa/dpaa_ethdev.c\n+++ b/drivers/net/dpaa/dpaa_ethdev.c\n@@ -167,8 +167,6 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \n \tPMD_INIT_FUNC_TRACE();\n \n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > DPAA_MAX_RX_PKT_LEN)\n-\t\treturn -EINVAL;\n \t/*\n \t * Refuse mtu that requires the support of scattered packets\n \t * when this feature has not been enabled before.\ndiff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c\nindex 02e1647d1f42..3d1df34aa852 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -1461,10 +1461,6 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EINVAL;\n \t}\n \n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > DPAA2_MAX_RX_PKT_LEN)\n-\t\treturn -EINVAL;\n-\n \t/* Set the Max Rx frame length as 'mtu' +\n \t * Maximum Ethernet header length\n \t */\ndiff --git a/drivers/net/e1000/em_ethdev.c b/drivers/net/e1000/em_ethdev.c\nindex de4267bf5995..e8d55ddf3349 100644\n--- a/drivers/net/e1000/em_ethdev.c\n+++ b/drivers/net/e1000/em_ethdev.c\n@@ -1786,22 +1786,12 @@ eth_em_default_mac_addr_set(struct rte_eth_dev *dev,\n static int\n eth_em_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n {\n-\tstruct rte_eth_dev_info dev_info;\n \tstruct e1000_hw *hw;\n \tuint32_t frame_size;\n \tuint32_t rctl;\n-\tint ret;\n-\n-\tret = eth_em_infos_get(dev, &dev_info);\n-\tif (ret != 0)\n-\t\treturn ret;\n \n \tframe_size = mtu + E1000_ETH_OVERHEAD;\n \n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)\n-\t\treturn -EINVAL;\n-\n \t/*\n \t * If device is started, refuse mtu that requires the support of\n \t * scattered packets when this feature has not been enabled before.\ndiff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c\nindex 72bdd1087cdf..dbe811a1ad2f 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -4359,9 +4359,7 @@ eth_igb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n {\n \tuint32_t rctl;\n \tstruct e1000_hw *hw;\n-\tstruct rte_eth_dev_info dev_info;\n \tuint32_t frame_size = mtu + E1000_ETH_OVERHEAD;\n-\tint ret;\n \n \thw = E1000_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n \n@@ -4370,15 +4368,6 @@ eth_igb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \tif (hw->mac.type == e1000_82571)\n \t\treturn -ENOTSUP;\n #endif\n-\tret = eth_igb_infos_get(dev, &dev_info);\n-\tif (ret != 0)\n-\t\treturn ret;\n-\n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU ||\n-\t\t\tframe_size > dev_info.max_rx_pktlen)\n-\t\treturn -EINVAL;\n-\n \t/*\n \t * If device is started, refuse mtu that requires the support of\n \t * scattered packets when this feature has not been enabled before.\ndiff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c\nindex 52c89aa03840..ca83fbd0a3d8 100644\n--- a/drivers/net/enetc/enetc_ethdev.c\n+++ b/drivers/net/enetc/enetc_ethdev.c\n@@ -666,10 +666,6 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \tstruct enetc_hw *enetc_hw = &hw->hw;\n \tuint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;\n \n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < ENETC_MAC_MINFRM_SIZE || frame_size > ENETC_MAC_MAXFRM_SIZE)\n-\t\treturn -EINVAL;\n-\n \t/*\n \t * Refuse mtu that requires the support of scattered packets\n \t * when this feature has not been enabled before.\ndiff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c\nindex 5d6700c18303..9a974dff580e 100644\n--- a/drivers/net/hinic/hinic_pmd_ethdev.c\n+++ b/drivers/net/hinic/hinic_pmd_ethdev.c\n@@ -1534,17 +1534,11 @@ static void hinic_deinit_mac_addr(struct rte_eth_dev *eth_dev)\n static int hinic_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n {\n \tstruct hinic_nic_dev *nic_dev = HINIC_ETH_DEV_TO_PRIVATE_NIC_DEV(dev);\n-\tint ret = 0;\n+\tint ret;\n \n \tPMD_DRV_LOG(INFO, \"Set port mtu, port_id: %d, mtu: %d, max_pkt_len: %d\",\n \t\t\tdev->data->port_id, mtu, HINIC_MTU_TO_PKTLEN(mtu));\n \n-\tif (mtu < HINIC_MIN_MTU_SIZE || mtu > HINIC_MAX_MTU_SIZE) {\n-\t\tPMD_DRV_LOG(ERR, \"Invalid mtu: %d, must between %d and %d\",\n-\t\t\t\tmtu, HINIC_MIN_MTU_SIZE, HINIC_MAX_MTU_SIZE);\n-\t\treturn -EINVAL;\n-\t}\n-\n \tret = hinic_set_port_mtu(nic_dev->hwdev, mtu);\n \tif (ret) {\n \t\tPMD_DRV_LOG(ERR, \"Set port mtu failed, ret: %d\", ret);\ndiff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex 208e60ed8c62..cf3f20e79f1a 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -11419,25 +11419,16 @@ static int i40e_set_default_mac_addr(struct rte_eth_dev *dev,\n }\n \n static int\n-i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n+i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused)\n {\n-\tstruct i40e_pf *pf = I40E_DEV_PRIVATE_TO_PF(dev->data->dev_private);\n-\tstruct rte_eth_dev_data *dev_data = pf->dev_data;\n-\tuint32_t frame_size = mtu + I40E_ETH_OVERHEAD;\n-\tint ret = 0;\n-\n-\t/* check if mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > I40E_FRAME_SIZE_MAX)\n-\t\treturn -EINVAL;\n-\n \t/* mtu setting is forbidden if port is start */\n-\tif (dev_data->dev_started) {\n+\tif (dev->data->dev_started != 0) {\n \t\tPMD_DRV_LOG(ERR, \"port %d must be stopped before configuration\",\n-\t\t\t    dev_data->port_id);\n+\t\t\t    dev->data->port_id);\n \t\treturn -EBUSY;\n \t}\n \n-\treturn ret;\n+\treturn 0;\n }\n \n /* Restore ethertype filter */\ndiff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c\nindex 1df4cf17ab92..654337187842 100644\n--- a/drivers/net/iavf/iavf_ethdev.c\n+++ b/drivers/net/iavf/iavf_ethdev.c\n@@ -1459,21 +1459,15 @@ iavf_dev_rss_hash_conf_get(struct rte_eth_dev *dev,\n }\n \n static int\n-iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n+iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused)\n {\n-\tuint32_t frame_size = mtu + IAVF_ETH_OVERHEAD;\n-\tint ret = 0;\n-\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > IAVF_FRAME_SIZE_MAX)\n-\t\treturn -EINVAL;\n-\n \t/* mtu setting is forbidden if port is start */\n \tif (dev->data->dev_started) {\n \t\tPMD_DRV_LOG(ERR, \"port must be stopped before configuration\");\n \t\treturn -EBUSY;\n \t}\n \n-\treturn ret;\n+\treturn 0;\n }\n \n static int\ndiff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c\nindex 4929fc7d3a1c..3a1bcc4e3eb7 100644\n--- a/drivers/net/ice/ice_ethdev.c\n+++ b/drivers/net/ice/ice_ethdev.c\n@@ -3974,21 +3974,13 @@ ice_dev_set_link_down(struct rte_eth_dev *dev)\n }\n \n static int\n-ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n+ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu __rte_unused)\n {\n-\tstruct ice_pf *pf = ICE_DEV_PRIVATE_TO_PF(dev->data->dev_private);\n-\tstruct rte_eth_dev_data *dev_data = pf->dev_data;\n-\tuint32_t frame_size = mtu + ICE_ETH_OVERHEAD;\n-\n-\t/* check if mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > ICE_FRAME_SIZE_MAX)\n-\t\treturn -EINVAL;\n-\n \t/* mtu setting is forbidden if port is start */\n-\tif (dev_data->dev_started) {\n+\tif (dev->data->dev_started != 0) {\n \t\tPMD_DRV_LOG(ERR,\n \t\t\t    \"port %d must be stopped before configuration\",\n-\t\t\t    dev_data->port_id);\n+\t\t\t    dev->data->port_id);\n \t\treturn -EBUSY;\n \t}\n \ndiff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c\nindex c36f0c879ef9..2a1ed90b641b 100644\n--- a/drivers/net/igc/igc_ethdev.c\n+++ b/drivers/net/igc/igc_ethdev.c\n@@ -1575,11 +1575,6 @@ eth_igc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \tif (IGC_READ_REG(hw, IGC_CTRL_EXT) & IGC_CTRL_EXT_EXT_VLAN)\n \t\tframe_size += VLAN_TAG_SIZE;\n \n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU ||\n-\t\tframe_size > MAX_RX_JUMBO_FRAME_SIZE)\n-\t\treturn -EINVAL;\n-\n \t/*\n \t * If device is started, refuse mtu that requires the support of\n \t * scattered packets when this feature has not been enabled before.\ndiff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c\nindex 6bf139c85dea..0438c3f08c24 100644\n--- a/drivers/net/ipn3ke/ipn3ke_representor.c\n+++ b/drivers/net/ipn3ke/ipn3ke_representor.c\n@@ -2768,12 +2768,6 @@ ipn3ke_rpst_mtu_set(struct rte_eth_dev *ethdev, uint16_t mtu)\n \tint ret = 0;\n \tstruct ipn3ke_rpst *rpst = IPN3KE_DEV_PRIVATE_TO_RPST(ethdev);\n \tstruct rte_eth_dev_data *dev_data = ethdev->data;\n-\tuint32_t frame_size = mtu  + IPN3KE_ETH_OVERHEAD;\n-\n-\t/* check if mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU ||\n-\t\tframe_size > IPN3KE_MAC_FRAME_SIZE_MAX)\n-\t\treturn -EINVAL;\n \n \t/* mtu setting is forbidden if port is start */\n \t/* make sure NIC port is stopped */\ndiff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c\nindex 5e3b2aa7a316..0fc3f0ab66a9 100644\n--- a/drivers/net/liquidio/lio_ethdev.c\n+++ b/drivers/net/liquidio/lio_ethdev.c\n@@ -434,7 +434,6 @@ static int\n lio_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n {\n \tstruct lio_device *lio_dev = LIO_DEV(eth_dev);\n-\tuint16_t pf_mtu = lio_dev->linfo.link.s.mtu;\n \tstruct lio_dev_ctrl_cmd ctrl_cmd;\n \tstruct lio_ctrl_pkt ctrl_pkt;\n \n@@ -446,15 +445,6 @@ lio_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \t\treturn -EINVAL;\n \t}\n \n-\t/* check if VF MTU is within allowed range.\n-\t * New value should not exceed PF MTU.\n-\t */\n-\tif (mtu < RTE_ETHER_MIN_MTU || mtu > pf_mtu) {\n-\t\tlio_dev_err(lio_dev, \"VF MTU should be >= %d and <= %d\\n\",\n-\t\t\t    RTE_ETHER_MIN_MTU, pf_mtu);\n-\t\treturn -EINVAL;\n-\t}\n-\n \t/* flush added to prevent cmd failure\n \t * incase the queue is full\n \t */\ndiff --git a/drivers/net/nfp/nfp_common.c b/drivers/net/nfp/nfp_common.c\nindex d7bd5883b107..dc906872192f 100644\n--- a/drivers/net/nfp/nfp_common.c\n+++ b/drivers/net/nfp/nfp_common.c\n@@ -951,10 +951,6 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \n \thw = NFP_NET_DEV_PRIVATE_TO_HW(dev->data->dev_private);\n \n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU || (uint32_t)mtu > hw->max_mtu)\n-\t\treturn -EINVAL;\n-\n \t/* mtu setting is forbidden if port is started */\n \tif (dev->data->dev_started) {\n \t\tPMD_DRV_LOG(ERR, \"port %d must be stopped before configuration\",\ndiff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c\nindex c5dbcc45d86b..f578123ed00b 100644\n--- a/drivers/net/octeontx/octeontx_ethdev.c\n+++ b/drivers/net/octeontx/octeontx_ethdev.c\n@@ -524,10 +524,6 @@ octeontx_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \tstruct rte_eth_dev_data *data = eth_dev->data;\n \tint rc = 0;\n \n-\t/* Check if MTU is within the allowed range */\n-\tif (frame_size < OCCTX_MIN_FRS || frame_size > OCCTX_MAX_FRS)\n-\t\treturn -EINVAL;\n-\n \tbuffsz = data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;\n \n \t/* Refuse MTU that requires the support of scattered packets\ndiff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c\nindex fa6d4030b827..22a8af5cba45 100644\n--- a/drivers/net/octeontx2/otx2_ethdev_ops.c\n+++ b/drivers/net/octeontx2/otx2_ethdev_ops.c\n@@ -20,10 +20,6 @@ otx2_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \tif (dev->configured && otx2_ethdev_is_ptp_en(dev))\n \t\tframe_size += NIX_TIMESYNC_RX_OFFSET;\n \n-\t/* Check if MTU is within the allowed range */\n-\tif (frame_size < NIX_MIN_FRS || frame_size > NIX_MAX_FRS)\n-\t\treturn -EINVAL;\n-\n \tbuffsz = data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;\n \n \t/* Refuse MTU that requires the support of scattered packets\ndiff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c\nindex 7b12794405a1..663cb1460f4f 100644\n--- a/drivers/net/qede/qede_ethdev.c\n+++ b/drivers/net/qede/qede_ethdev.c\n@@ -2307,7 +2307,6 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n {\n \tstruct qede_dev *qdev = QEDE_INIT_QDEV(dev);\n \tstruct ecore_dev *edev = QEDE_INIT_EDEV(qdev);\n-\tstruct rte_eth_dev_info dev_info = {0};\n \tstruct qede_fastpath *fp;\n \tuint32_t frame_size;\n \tuint16_t bufsz;\n@@ -2315,19 +2314,8 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \tint i, rc;\n \n \tPMD_INIT_FUNC_TRACE(edev);\n-\trc = qede_dev_info_get(dev, &dev_info);\n-\tif (rc != 0) {\n-\t\tDP_ERR(edev, \"Error during getting ethernet device info\\n\");\n-\t\treturn rc;\n-\t}\n \n \tframe_size = mtu + QEDE_MAX_ETHER_HDR_LEN;\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen) {\n-\t\tDP_ERR(edev, \"MTU %u out of range, %u is maximum allowable\\n\",\n-\t\t       mtu, dev_info.max_rx_pktlen - RTE_ETHER_HDR_LEN -\n-\t\t       QEDE_ETH_OVERHEAD);\n-\t\treturn -EINVAL;\n-\t}\n \tif (!dev->data->scattered_rx &&\n \t    frame_size > dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM) {\n \t\tDP_INFO(edev, \"MTU greater than minimum RX buffer size of %u\\n\",\ndiff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c\nindex 1974957b3930..328d6d56d921 100644\n--- a/drivers/net/thunderx/nicvf_ethdev.c\n+++ b/drivers/net/thunderx/nicvf_ethdev.c\n@@ -154,12 +154,6 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \n \tPMD_INIT_FUNC_TRACE();\n \n-\tif (frame_size > NIC_HW_MAX_FRS)\n-\t\treturn -EINVAL;\n-\n-\tif (frame_size < NIC_HW_MIN_FRS)\n-\t\treturn -EINVAL;\n-\n \tbuffsz = dev->data->min_rx_buf_size - RTE_PKTMBUF_HEADROOM;\n \n \t/*\ndiff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c\nindex cc1d4a623818..7b46ffb68635 100644\n--- a/drivers/net/txgbe/txgbe_ethdev.c\n+++ b/drivers/net/txgbe/txgbe_ethdev.c\n@@ -3459,18 +3459,8 @@ static int\n txgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n {\n \tstruct txgbe_hw *hw = TXGBE_DEV_HW(dev);\n-\tstruct rte_eth_dev_info dev_info;\n \tuint32_t frame_size = mtu + RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN;\n \tstruct rte_eth_dev_data *dev_data = dev->data;\n-\tint ret;\n-\n-\tret = txgbe_dev_info_get(dev, &dev_info);\n-\tif (ret != 0)\n-\t\treturn ret;\n-\n-\t/* check that mtu is within the allowed range */\n-\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)\n-\t\treturn -EINVAL;\n \n \t/* If device is started, refuse mtu that requires the support of\n \t * scattered packets when this feature has not been enabled before.\ndiff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c\nindex 850208b640dd..4e32b6d964f6 100644\n--- a/lib/ethdev/rte_ethdev.c\n+++ b/lib/ethdev/rte_ethdev.c\n@@ -3660,6 +3660,9 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu)\n \t * which relies on dev->dev_ops->dev_infos_get.\n \t */\n \tif (*dev->dev_ops->dev_infos_get != NULL) {\n+\t\tuint16_t overhead_len;\n+\t\tuint32_t frame_size;\n+\n \t\tret = rte_eth_dev_info_get(port_id, &dev_info);\n \t\tif (ret != 0)\n \t\t\treturn ret;\n@@ -3667,6 +3670,12 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu)\n \t\tif (mtu < dev_info.min_mtu || mtu > dev_info.max_mtu)\n \t\t\treturn -EINVAL;\n \n+\t\toverhead_len = eth_dev_get_overhead_len(dev_info.max_rx_pktlen,\n+\t\t\t\tdev_info.max_mtu);\n+\t\tframe_size = mtu + overhead_len;\n+\t\tif (mtu < RTE_ETHER_MIN_MTU || frame_size > dev_info.max_rx_pktlen)\n+\t\t\treturn -EINVAL;\n+\n \t\tif ((dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) != 0)\n \t\t\tis_jumbo_frame_capable = 1;\n \t}\n",
    "prefixes": [
        "v7",
        "3/6"
    ]
}