get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 95630,
    "url": "http://patches.dpdk.org/api/patches/95630/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/20210709172923.3369846-2-ferruh.yigit@intel.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<20210709172923.3369846-2-ferruh.yigit@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20210709172923.3369846-2-ferruh.yigit@intel.com",
    "date": "2021-07-09T17:29:20",
    "name": "[2/4] ethdev: move jumbo frame offload check to library",
    "commit_ref": null,
    "pull_url": null,
    "state": "superseded",
    "archived": true,
    "hash": "51dfc2f367f5d89112c0bd657a10ed9478bb5ff0",
    "submitter": {
        "id": 324,
        "url": "http://patches.dpdk.org/api/people/324/?format=api",
        "name": "Ferruh Yigit",
        "email": "ferruh.yigit@intel.com"
    },
    "delegate": {
        "id": 3961,
        "url": "http://patches.dpdk.org/api/users/3961/?format=api",
        "username": "arybchenko",
        "first_name": "Andrew",
        "last_name": "Rybchenko",
        "email": "andrew.rybchenko@oktetlabs.ru"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/20210709172923.3369846-2-ferruh.yigit@intel.com/mbox/",
    "series": [
        {
            "id": 17747,
            "url": "http://patches.dpdk.org/api/series/17747/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=17747",
            "date": "2021-07-09T17:29:19",
            "name": "[1/4] ethdev: fix max Rx packet length",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/17747/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/95630/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/95630/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 DE9A2A0548;\n\tFri,  9 Jul 2021 19:30:18 +0200 (CEST)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id B98DC416FD;\n\tFri,  9 Jul 2021 19:30:18 +0200 (CEST)",
            "from mga09.intel.com (mga09.intel.com [134.134.136.24])\n by mails.dpdk.org (Postfix) with ESMTP id 37919410FD\n for <dev@dpdk.org>; Fri,  9 Jul 2021 19:30:17 +0200 (CEST)",
            "from fmsmga003.fm.intel.com ([10.253.24.29])\n by orsmga102.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384;\n 09 Jul 2021 10:30:15 -0700",
            "from silpixa00399752.ir.intel.com (HELO\n silpixa00399752.ger.corp.intel.com) ([10.237.222.27])\n by FMSMGA003.fm.intel.com with ESMTP; 09 Jul 2021 10:30:07 -0700"
        ],
        "X-IronPort-AV": [
            "E=McAfee;i=\"6200,9189,10039\"; a=\"209703999\"",
            "E=Sophos;i=\"5.84,226,1620716400\"; d=\"scan'208\";a=\"209703999\"",
            "E=Sophos;i=\"5.84,226,1620716400\"; d=\"scan'208\";a=\"488264539\""
        ],
        "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 Nithin Dabilpuram <ndabilpuram@marvell.com>,\n Kiran Kumar K <kirankumark@marvell.com>,\n Sunil Kumar Kori <skori@marvell.com>, Satha Rao <skoteshwar@marvell.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>,\n \"Min Hu (Connor)\" <humin29@huawei.com>,\n Yisen Zhuang <yisen.zhuang@huawei.com>, Lijun Ou <oulijun@huawei.com>,\n Beilei Xing <beilei.xing@intel.com>, Jingjing Wu <jingjing.wu@intel.com>,\n Qiming Yang <qiming.yang@intel.com>, Qi Zhang <qi.z.zhang@intel.com>,\n Rosen Xu <rosen.xu@intel.com>, Shijith Thotton <sthotton@marvell.com>,\n Srisivasubramanian Srinivasan <srinivasan@marvell.com>,\n Heinrich Kuhn <heinrich.kuhn@netronome.com>,\n Harman Kalra <hkalra@marvell.com>, Jerin Jacob <jerinj@marvell.com>,\n Rasesh Mody <rmody@marvell.com>,\n Devendra Singh Rawat <dsinghrawat@marvell.com>,\n Igor Russkikh <irusskikh@marvell.com>,\n Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Maciej Czekaj <mczekaj@marvell.com>, Jiawen Wu <jiawenwu@trustnetic.com>,\n Jian Wang <jianwang@trustnetic.com>, Thomas Monjalon <thomas@monjalon.net>",
        "Cc": "Ferruh Yigit <ferruh.yigit@intel.com>,\n\tdev@dpdk.org",
        "Date": "Fri,  9 Jul 2021 18:29:20 +0100",
        "Message-Id": "<20210709172923.3369846-2-ferruh.yigit@intel.com>",
        "X-Mailer": "git-send-email 2.31.1",
        "In-Reply-To": "<20210709172923.3369846-1-ferruh.yigit@intel.com>",
        "References": "<20210709172923.3369846-1-ferruh.yigit@intel.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH 2/4] ethdev: move jumbo frame offload check to\n library",
        "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": "Setting MTU bigger than RTE_ETHER_MTU requires the jumbo frame support,\nand application should enable the jumbo frame offload support for it.\n\nWhen jumbo frame offload is not enabled by application, but MTU bigger\nthan RTE_ETHER_MTU is requested there are two options, either fail or\nenable jumbo frame offload implicitly.\n\nEnabling jumbo frame offload implicitly is selected by many drivers\nsince setting a big MTU value already implies it, and this increases\nusability.\n\nThis patch moves this logic from drivers to the library, both to reduce\nthe duplicated code in the drivers and to make behaviour more visible.\n\nSigned-off-by: Ferruh Yigit <ferruh.yigit@intel.com>\n---\n drivers/net/axgbe/axgbe_ethdev.c        |  9 ++-------\n drivers/net/bnxt/bnxt_ethdev.c          |  9 ++-------\n drivers/net/cnxk/cnxk_ethdev_ops.c      |  5 -----\n drivers/net/cxgbe/cxgbe_ethdev.c        |  8 --------\n drivers/net/dpaa/dpaa_ethdev.c          |  7 -------\n drivers/net/dpaa2/dpaa2_ethdev.c        |  7 -------\n drivers/net/e1000/em_ethdev.c           |  9 ++-------\n drivers/net/e1000/igb_ethdev.c          |  9 ++-------\n drivers/net/enetc/enetc_ethdev.c        |  7 -------\n drivers/net/hinic/hinic_pmd_ethdev.c    |  7 -------\n drivers/net/hns3/hns3_ethdev.c          |  8 --------\n drivers/net/hns3/hns3_ethdev_vf.c       |  6 ------\n drivers/net/i40e/i40e_ethdev.c          |  5 -----\n drivers/net/i40e/i40e_ethdev_vf.c       |  5 -----\n drivers/net/iavf/iavf_ethdev.c          |  7 -------\n drivers/net/ice/ice_ethdev.c            |  5 -----\n drivers/net/igc/igc_ethdev.c            |  9 ++-------\n drivers/net/ipn3ke/ipn3ke_representor.c |  5 -----\n drivers/net/ixgbe/ixgbe_ethdev.c        |  7 ++-----\n drivers/net/liquidio/lio_ethdev.c       |  7 -------\n drivers/net/nfp/nfp_net.c               |  6 ------\n drivers/net/octeontx/octeontx_ethdev.c  |  5 -----\n drivers/net/octeontx2/otx2_ethdev_ops.c |  5 -----\n drivers/net/qede/qede_ethdev.c          |  4 ----\n drivers/net/sfc/sfc_ethdev.c            |  9 ---------\n drivers/net/thunderx/nicvf_ethdev.c     |  6 ------\n drivers/net/txgbe/txgbe_ethdev.c        |  6 ------\n lib/ethdev/rte_ethdev.c                 | 18 +++++++++++++++++-\n 28 files changed, 29 insertions(+), 171 deletions(-)",
    "diff": "diff --git a/drivers/net/axgbe/axgbe_ethdev.c b/drivers/net/axgbe/axgbe_ethdev.c\nindex 76aeec077f2b..2960834b4539 100644\n--- a/drivers/net/axgbe/axgbe_ethdev.c\n+++ b/drivers/net/axgbe/axgbe_ethdev.c\n@@ -1492,15 +1492,10 @@ static int axgb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\t\t\tdev->data->port_id);\n \t\treturn -EBUSY;\n \t}\n-\tif (mtu > RTE_ETHER_MTU) {\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n+\tif (mtu > RTE_ETHER_MTU)\n \t\tval = 1;\n-\t} else {\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\telse\n \t\tval = 0;\n-\t}\n \tAXGMAC_IOWRITE_BITS(pdata, MAC_RCR, JE, val);\n \treturn 0;\n }\ndiff --git a/drivers/net/bnxt/bnxt_ethdev.c b/drivers/net/bnxt/bnxt_ethdev.c\nindex 335505a106d5..4344a012f06e 100644\n--- a/drivers/net/bnxt/bnxt_ethdev.c\n+++ b/drivers/net/bnxt/bnxt_ethdev.c\n@@ -3018,15 +3018,10 @@ int bnxt_mtu_set_op(struct rte_eth_dev *eth_dev, uint16_t new_mtu)\n \t\treturn -EINVAL;\n \t}\n \n-\tif (new_mtu > RTE_ETHER_MTU) {\n+\tif (new_mtu > RTE_ETHER_MTU)\n \t\tbp->flags |= BNXT_FLAG_JUMBO;\n-\t\tbp->eth_dev->data->dev_conf.rxmode.offloads |=\n-\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\t} else {\n-\t\tbp->eth_dev->data->dev_conf.rxmode.offloads &=\n-\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\telse\n \t\tbp->flags &= ~BNXT_FLAG_JUMBO;\n-\t}\n \n \t/* Is there a change in mtu setting? */\n \tif (eth_dev->data->mtu == new_mtu)\ndiff --git a/drivers/net/cnxk/cnxk_ethdev_ops.c b/drivers/net/cnxk/cnxk_ethdev_ops.c\nindex 695d0d6fd3e2..349896f6a1bf 100644\n--- a/drivers/net/cnxk/cnxk_ethdev_ops.c\n+++ b/drivers/net/cnxk/cnxk_ethdev_ops.c\n@@ -439,11 +439,6 @@ cnxk_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \t\tplt_err(\"Failed to max Rx frame length, rc=%d\", rc);\n \t\tgoto exit;\n \t}\n-\n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n exit:\n \treturn rc;\n }\ndiff --git a/drivers/net/cxgbe/cxgbe_ethdev.c b/drivers/net/cxgbe/cxgbe_ethdev.c\nindex 8cf61f12a8d6..0c9cc2f5bb3f 100644\n--- a/drivers/net/cxgbe/cxgbe_ethdev.c\n+++ b/drivers/net/cxgbe/cxgbe_ethdev.c\n@@ -313,14 +313,6 @@ int cxgbe_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \tif (mtu < RTE_ETHER_MIN_MTU || new_mtu > dev_info.max_rx_pktlen)\n \t\treturn -EINVAL;\n \n-\t/* set to jumbo mode if needed */\n-\tif (mtu > RTE_ETHER_MTU)\n-\t\teth_dev->data->dev_conf.rxmode.offloads |=\n-\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\teth_dev->data->dev_conf.rxmode.offloads &=\n-\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \terr = t4_set_rxmode(adapter, adapter->mbox, pi->viid, new_mtu, -1, -1,\n \t\t\t    -1, -1, true);\n \treturn err;\ndiff --git a/drivers/net/dpaa/dpaa_ethdev.c b/drivers/net/dpaa/dpaa_ethdev.c\nindex 56703e3a39e8..a444f749bb96 100644\n--- a/drivers/net/dpaa/dpaa_ethdev.c\n+++ b/drivers/net/dpaa/dpaa_ethdev.c\n@@ -187,13 +187,6 @@ dpaa_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EINVAL;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \tfman_if_set_maxfrm(dev->process_private, frame_size);\n \n \treturn 0;\ndiff --git a/drivers/net/dpaa2/dpaa2_ethdev.c b/drivers/net/dpaa2/dpaa2_ethdev.c\nindex 6213bcbf3a43..be2858b3adac 100644\n--- a/drivers/net/dpaa2/dpaa2_ethdev.c\n+++ b/drivers/net/dpaa2/dpaa2_ethdev.c\n@@ -1470,13 +1470,6 @@ dpaa2_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \tif (mtu < RTE_ETHER_MIN_MTU || frame_size > DPAA2_MAX_RX_PKT_LEN)\n \t\treturn -EINVAL;\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\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 6f418a36aa04..1b41dd04df5a 100644\n--- a/drivers/net/e1000/em_ethdev.c\n+++ b/drivers/net/e1000/em_ethdev.c\n@@ -1818,15 +1818,10 @@ eth_em_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \trctl = E1000_READ_REG(hw, E1000_RCTL);\n \n \t/* switch to jumbo mode if needed */\n-\tif (mtu > RTE_ETHER_MTU) {\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n+\tif (mtu > RTE_ETHER_MTU)\n \t\trctl |= E1000_RCTL_LPE;\n-\t} else {\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\telse\n \t\trctl &= ~E1000_RCTL_LPE;\n-\t}\n \tE1000_WRITE_REG(hw, E1000_RCTL, rctl);\n \n \treturn 0;\ndiff --git a/drivers/net/e1000/igb_ethdev.c b/drivers/net/e1000/igb_ethdev.c\nindex 35b517891d67..f15774eae20d 100644\n--- a/drivers/net/e1000/igb_ethdev.c\n+++ b/drivers/net/e1000/igb_ethdev.c\n@@ -4401,15 +4401,10 @@ eth_igb_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \trctl = E1000_READ_REG(hw, E1000_RCTL);\n \n \t/* switch to jumbo mode if needed */\n-\tif (mtu > RTE_ETHER_MTU) {\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n+\tif (mtu > RTE_ETHER_MTU)\n \t\trctl |= E1000_RCTL_LPE;\n-\t} else {\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\telse\n \t\trctl &= ~E1000_RCTL_LPE;\n-\t}\n \tE1000_WRITE_REG(hw, E1000_RCTL, rctl);\n \n \tE1000_WRITE_REG(hw, E1000_RLPML, frame_size);\ndiff --git a/drivers/net/enetc/enetc_ethdev.c b/drivers/net/enetc/enetc_ethdev.c\nindex cdb9783b5372..fbcbbb6c0533 100644\n--- a/drivers/net/enetc/enetc_ethdev.c\n+++ b/drivers/net/enetc/enetc_ethdev.c\n@@ -677,13 +677,6 @@ enetc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EINVAL;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \tenetc_port_wr(enetc_hw, ENETC_PTCMSDUR(0), ENETC_MAC_MAXFRM_SIZE);\n \tenetc_port_wr(enetc_hw, ENETC_PTXMBAR, 2 * ENETC_MAC_MAXFRM_SIZE);\n \ndiff --git a/drivers/net/hinic/hinic_pmd_ethdev.c b/drivers/net/hinic/hinic_pmd_ethdev.c\nindex c737ef8d06d8..c1cde811a252 100644\n--- a/drivers/net/hinic/hinic_pmd_ethdev.c\n+++ b/drivers/net/hinic/hinic_pmd_ethdev.c\n@@ -1556,13 +1556,6 @@ static int hinic_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn ret;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \tnic_dev->mtu_size = mtu;\n \n \treturn ret;\ndiff --git a/drivers/net/hns3/hns3_ethdev.c b/drivers/net/hns3/hns3_ethdev.c\nindex 8bccdeddb2f7..868d381a4772 100644\n--- a/drivers/net/hns3/hns3_ethdev.c\n+++ b/drivers/net/hns3/hns3_ethdev.c\n@@ -2597,7 +2597,6 @@ hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \tstruct hns3_adapter *hns = dev->data->dev_private;\n \tuint32_t frame_size = mtu + HNS3_ETH_OVERHEAD;\n \tstruct hns3_hw *hw = &hns->hw;\n-\tbool is_jumbo_frame;\n \tint ret;\n \n \tif (dev->data->dev_started) {\n@@ -2607,7 +2606,6 @@ hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t}\n \n \trte_spinlock_lock(&hw->lock);\n-\tis_jumbo_frame = mtu > RTE_ETHER_MTU ? true : false;\n \tframe_size = RTE_MAX(frame_size, HNS3_DEFAULT_FRAME_LEN);\n \n \t/*\n@@ -2622,12 +2620,6 @@ hns3_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn ret;\n \t}\n \n-\tif (is_jumbo_frame)\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n \trte_spinlock_unlock(&hw->lock);\n \n \treturn 0;\ndiff --git a/drivers/net/hns3/hns3_ethdev_vf.c b/drivers/net/hns3/hns3_ethdev_vf.c\nindex ca839fa55fa0..ff28cad53a03 100644\n--- a/drivers/net/hns3/hns3_ethdev_vf.c\n+++ b/drivers/net/hns3/hns3_ethdev_vf.c\n@@ -920,12 +920,6 @@ hns3vf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\trte_spinlock_unlock(&hw->lock);\n \t\treturn ret;\n \t}\n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n \trte_spinlock_unlock(&hw->lock);\n \n \treturn 0;\ndiff --git a/drivers/net/i40e/i40e_ethdev.c b/drivers/net/i40e/i40e_ethdev.c\nindex 1161f301b9ae..c5058f26dff2 100644\n--- a/drivers/net/i40e/i40e_ethdev.c\n+++ b/drivers/net/i40e/i40e_ethdev.c\n@@ -11772,11 +11772,6 @@ i40e_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EBUSY;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev_data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev_data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \treturn ret;\n }\n \ndiff --git a/drivers/net/i40e/i40e_ethdev_vf.c b/drivers/net/i40e/i40e_ethdev_vf.c\nindex 086a167ca672..2015a86ba5ca 100644\n--- a/drivers/net/i40e/i40e_ethdev_vf.c\n+++ b/drivers/net/i40e/i40e_ethdev_vf.c\n@@ -2884,11 +2884,6 @@ i40evf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EBUSY;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev_data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev_data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \treturn ret;\n }\n \ndiff --git a/drivers/net/iavf/iavf_ethdev.c b/drivers/net/iavf/iavf_ethdev.c\nindex 13c2329d85a7..ba5be45e8c5e 100644\n--- a/drivers/net/iavf/iavf_ethdev.c\n+++ b/drivers/net/iavf/iavf_ethdev.c\n@@ -1446,13 +1446,6 @@ iavf_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EBUSY;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |=\n-\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &=\n-\t\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \treturn ret;\n }\n \ndiff --git a/drivers/net/ice/ice_ethdev.c b/drivers/net/ice/ice_ethdev.c\nindex bdda6fee3f8e..502e410b5641 100644\n--- a/drivers/net/ice/ice_ethdev.c\n+++ b/drivers/net/ice/ice_ethdev.c\n@@ -3806,11 +3806,6 @@ ice_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EBUSY;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev_data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev_data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \treturn 0;\n }\n \ndiff --git a/drivers/net/igc/igc_ethdev.c b/drivers/net/igc/igc_ethdev.c\nindex b26723064b07..dcbc26b8186e 100644\n--- a/drivers/net/igc/igc_ethdev.c\n+++ b/drivers/net/igc/igc_ethdev.c\n@@ -1592,15 +1592,10 @@ eth_igc_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t}\n \n \trctl = IGC_READ_REG(hw, IGC_RCTL);\n-\n-\t/* switch to jumbo mode if needed */\n-\tif (mtu > RTE_ETHER_MTU) {\n-\t\tdev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\tif (mtu > RTE_ETHER_MTU)\n \t\trctl |= IGC_RCTL_LPE;\n-\t} else {\n-\t\tdev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\telse\n \t\trctl &= ~IGC_RCTL_LPE;\n-\t}\n \tIGC_WRITE_REG(hw, IGC_RCTL, rctl);\n \n \tIGC_WRITE_REG(hw, IGC_RLPML, frame_size);\ndiff --git a/drivers/net/ipn3ke/ipn3ke_representor.c b/drivers/net/ipn3ke/ipn3ke_representor.c\nindex 3634c0c8c5f0..e8a33f04bd69 100644\n--- a/drivers/net/ipn3ke/ipn3ke_representor.c\n+++ b/drivers/net/ipn3ke/ipn3ke_representor.c\n@@ -2801,11 +2801,6 @@ ipn3ke_rpst_mtu_set(struct rte_eth_dev *ethdev, uint16_t mtu)\n \t\treturn -EBUSY;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev_data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev_data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \tif (rpst->i40e_pf_eth) {\n \t\tret = rpst->i40e_pf_eth->dev_ops->mtu_set(rpst->i40e_pf_eth,\n \t\t\t\t\t\t\tmtu);\ndiff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c\nindex b9048ade3c35..c4696f34a7a1 100644\n--- a/drivers/net/ixgbe/ixgbe_ethdev.c\n+++ b/drivers/net/ixgbe/ixgbe_ethdev.c\n@@ -5196,13 +5196,10 @@ ixgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \thlreg0 = IXGBE_READ_REG(hw, IXGBE_HLREG0);\n \n \t/* switch to jumbo mode if needed */\n-\tif (mtu > RTE_ETHER_MTU) {\n-\t\tdev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\tif (mtu > RTE_ETHER_MTU)\n \t\thlreg0 |= IXGBE_HLREG0_JUMBOEN;\n-\t} else {\n-\t\tdev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\telse\n \t\thlreg0 &= ~IXGBE_HLREG0_JUMBOEN;\n-\t}\n \tIXGBE_WRITE_REG(hw, IXGBE_HLREG0, hlreg0);\n \n \tmaxfrs = IXGBE_READ_REG(hw, IXGBE_MAXFRS);\ndiff --git a/drivers/net/liquidio/lio_ethdev.c b/drivers/net/liquidio/lio_ethdev.c\nindex f0c165c89ba7..5c40f16bfa24 100644\n--- a/drivers/net/liquidio/lio_ethdev.c\n+++ b/drivers/net/liquidio/lio_ethdev.c\n@@ -480,13 +480,6 @@ lio_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \t\treturn -1;\n \t}\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\teth_dev->data->dev_conf.rxmode.offloads |=\n-\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\teth_dev->data->dev_conf.rxmode.offloads &=\n-\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \treturn 0;\n }\n \ndiff --git a/drivers/net/nfp/nfp_net.c b/drivers/net/nfp/nfp_net.c\nindex ff531fdb2354..5cea035e1465 100644\n--- a/drivers/net/nfp/nfp_net.c\n+++ b/drivers/net/nfp/nfp_net.c\n@@ -1550,12 +1550,6 @@ nfp_net_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EBUSY;\n \t}\n \n-\t/* switch to jumbo mode if needed */\n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \t/* writing to configuration space */\n \tnn_cfg_writel(hw, NFP_NET_CFG_MTU, mtu);\n \ndiff --git a/drivers/net/octeontx/octeontx_ethdev.c b/drivers/net/octeontx/octeontx_ethdev.c\nindex 69c3bda12df8..fb65be2c2dc3 100644\n--- a/drivers/net/octeontx/octeontx_ethdev.c\n+++ b/drivers/net/octeontx/octeontx_ethdev.c\n@@ -552,11 +552,6 @@ octeontx_dev_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \tif (rc)\n \t\treturn rc;\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tnic->rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tnic->rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \tocteontx_log_info(\"Received pkt beyond  maxlen %d will be dropped\",\n \t\t\t  frame_size);\n \ndiff --git a/drivers/net/octeontx2/otx2_ethdev_ops.c b/drivers/net/octeontx2/otx2_ethdev_ops.c\nindex ba282762b749..0c97ef7584a0 100644\n--- a/drivers/net/octeontx2/otx2_ethdev_ops.c\n+++ b/drivers/net/octeontx2/otx2_ethdev_ops.c\n@@ -58,11 +58,6 @@ otx2_nix_mtu_set(struct rte_eth_dev *eth_dev, uint16_t mtu)\n \tif (rc)\n \t\treturn rc;\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->rx_offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->rx_offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \treturn rc;\n }\n \ndiff --git a/drivers/net/qede/qede_ethdev.c b/drivers/net/qede/qede_ethdev.c\nindex 53b2c0ca10e3..71065f8072ac 100644\n--- a/drivers/net/qede/qede_ethdev.c\n+++ b/drivers/net/qede/qede_ethdev.c\n@@ -2361,10 +2361,6 @@ static int qede_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \t\t\tfp->rxq->rx_buf_size = rc;\n \t\t}\n \t}\n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n \n \tif (!dev->data->dev_started && restart) {\n \t\tqede_dev_start(dev);\ndiff --git a/drivers/net/sfc/sfc_ethdev.c b/drivers/net/sfc/sfc_ethdev.c\nindex 2afb13b77892..85209b5befbd 100644\n--- a/drivers/net/sfc/sfc_ethdev.c\n+++ b/drivers/net/sfc/sfc_ethdev.c\n@@ -1014,15 +1014,6 @@ sfc_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \t\t}\n \t}\n \n-\t/*\n-\t * The driver does not use it, but other PMDs update jumbo frame\n-\t * flag when MTU is set.\n-\t */\n-\tif (mtu > RTE_ETHER_MTU) {\n-\t\tstruct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;\n-\t\trxmode->offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\t}\n-\n \tsfc_adapter_unlock(sa);\n \n \tsfc_log_init(sa, \"done\");\ndiff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c\nindex 1d1360faff66..0639889b2144 100644\n--- a/drivers/net/thunderx/nicvf_ethdev.c\n+++ b/drivers/net/thunderx/nicvf_ethdev.c\n@@ -151,7 +151,6 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \tstruct nicvf *nic = nicvf_pmd_priv(dev);\n \tuint32_t buffsz, frame_size = mtu + NIC_HW_L2_OVERHEAD;\n \tsize_t i;\n-\tstruct rte_eth_rxmode *rxmode = &dev->data->dev_conf.rxmode;\n \n \tPMD_INIT_FUNC_TRACE();\n \n@@ -176,11 +175,6 @@ nicvf_dev_set_mtu(struct rte_eth_dev *dev, uint16_t mtu)\n \t\t(frame_size + 2 * VLAN_TAG_SIZE > buffsz * NIC_HW_MAX_SEGS))\n \t\treturn -EINVAL;\n \n-\tif (mtu > RTE_ETHER_MTU)\n-\t\trxmode->offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\trxmode->offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \tif (nicvf_mbox_update_hw_max_frs(nic, mtu))\n \t\treturn -EINVAL;\n \ndiff --git a/drivers/net/txgbe/txgbe_ethdev.c b/drivers/net/txgbe/txgbe_ethdev.c\nindex d773a81665d7..b1a3f9fbb84d 100644\n--- a/drivers/net/txgbe/txgbe_ethdev.c\n+++ b/drivers/net/txgbe/txgbe_ethdev.c\n@@ -3482,12 +3482,6 @@ txgbe_dev_mtu_set(struct rte_eth_dev *dev, uint16_t mtu)\n \t\treturn -EINVAL;\n \t}\n \n-\t/* switch to jumbo mode if needed */\n-\tif (mtu > RTE_ETHER_MTU)\n-\t\tdev->data->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\telse\n-\t\tdev->data->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME;\n-\n \tif (hw->mode)\n \t\twr32m(hw, TXGBE_FRMSZ, TXGBE_FRMSZ_MAX_MASK,\n \t\t\tTXGBE_FRAME_SIZE_MAX);\ndiff --git a/lib/ethdev/rte_ethdev.c b/lib/ethdev/rte_ethdev.c\nindex 3451125639f9..d649a5dd69a9 100644\n--- a/lib/ethdev/rte_ethdev.c\n+++ b/lib/ethdev/rte_ethdev.c\n@@ -3625,6 +3625,7 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu)\n \tint ret;\n \tstruct rte_eth_dev_info dev_info;\n \tstruct rte_eth_dev *dev;\n+\tint is_jumbo_frame_capable = 0;\n \n \tRTE_ETH_VALID_PORTID_OR_ERR_RET(port_id, -ENODEV);\n \tdev = &rte_eth_devices[port_id];\n@@ -3643,12 +3644,27 @@ rte_eth_dev_set_mtu(uint16_t port_id, uint16_t mtu)\n \n \t\tif (mtu < dev_info.min_mtu || mtu > dev_info.max_mtu)\n \t\t\treturn -EINVAL;\n+\n+\t\tif (dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME)\n+\t\t\tis_jumbo_frame_capable = 1;\n \t}\n \n+\tif (mtu > RTE_ETHER_MTU && is_jumbo_frame_capable == 0)\n+\t\treturn -EINVAL;\n+\n \tret = (*dev->dev_ops->mtu_set)(dev, mtu);\n-\tif (!ret)\n+\tif (!ret) {\n \t\tdev->data->mtu = mtu;\n \n+\t\t/* switch to jumbo mode if needed */\n+\t\tif (mtu > RTE_ETHER_MTU)\n+\t\t\tdev->data->dev_conf.rxmode.offloads |=\n+\t\t\t\tDEV_RX_OFFLOAD_JUMBO_FRAME;\n+\t\telse\n+\t\t\tdev->data->dev_conf.rxmode.offloads &=\n+\t\t\t\t~DEV_RX_OFFLOAD_JUMBO_FRAME;\n+\t}\n+\n \treturn eth_err(port_id, ret);\n }\n \n",
    "prefixes": [
        "2/4"
    ]
}