From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 86E66A052A; Wed, 27 Jan 2021 04:05:25 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6ED17140DDB; Wed, 27 Jan 2021 04:05:25 +0100 (CET) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by mails.dpdk.org (Postfix) with ESMTP id 9D390140DD8; Wed, 27 Jan 2021 04:05:23 +0100 (CET) IronPort-SDR: iCOsKoILDDPl2D+2d9Azo/sEwdQ5Us/XoXv4qxnxlBxhiyU9dPAceQVIF4YI0O9gRUP6/tXcpU zU5O4BlW/LUA== X-IronPort-AV: E=McAfee;i="6000,8403,9876"; a="179226707" X-IronPort-AV: E=Sophos;i="5.79,378,1602572400"; d="scan'208";a="179226707" Received: from orsmga004.jf.intel.com ([10.7.209.38]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Jan 2021 19:05:22 -0800 IronPort-SDR: tiBuXYeAbwFARvRXq6evIHxRf3h/SuV0veQdFwf5Cy4zE7+gPJDp1v/S8E5PmxOIU1y3Tg3deM AwUi7U0IOdXw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.79,378,1602572400"; d="scan'208";a="504749438" Received: from fmsmsx604.amr.corp.intel.com ([10.18.126.84]) by orsmga004.jf.intel.com with ESMTP; 26 Jan 2021 19:05:22 -0800 Received: from fmsmsx610.amr.corp.intel.com (10.18.126.90) by fmsmsx604.amr.corp.intel.com (10.18.126.84) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Tue, 26 Jan 2021 19:05:21 -0800 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx610.amr.corp.intel.com (10.18.126.90) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.1713.5 via Frontend Transport; Tue, 26 Jan 2021 19:05:21 -0800 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.176) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.1713.5; Tue, 26 Jan 2021 19:05:21 -0800 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cP+Iq5lafCKFCosayf1jmub98gb+6xw/ZEONBbF8N4FvIV4N53dUcHht/NNe+ZRZo1FQBJ5weqiP9HByCkvLSb5pdmlxbs55p89P68PIs0YDL9PsKipIM551fBjXglJ+kPoC1zwtV4udeAiDfLu0axfDZfkcbeK6LJWjCQfCYAf3sbdmINzQYRF3CrOJHR7wzw/npxxYxcW0PakioLZYdlfJyVEakwObUKy4991PkiicDQEqNjZJJKs29qBl7zF/YU6AIN9RVvxaN4AAzIvbGbCpeq10a0Z/8FxXg2oxH2nv/2gXbdP3I9MUranFeiRcLXVhkW0UXgpVAjfwaycTPQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ZDBD2nhkABEXFNfAAbWnIl4+sX2spgWoPs+GTXNDWw=; b=V7g0f5V4Ri8E1WiZNYkxIsy546F6FJuUHXd893A7NYROgnJvo59RsHwg90z4DBSJCKS7KMjy1WwSFeo4nxsPCqQB35DA9F713Rz679JDq96G5YQ1HCRJw0tDqigMQcXUGJhDm1bHszn7XBiNQgx3+/IqAf1fhHuvwhLSLWWOeW/53aqjvGx7AoWsw/anORZYGXrCsZ0qhG65mnH92Su1nqQk3+lWuT0cewp83uCHmPSNYmzr8IAn37CD+NA3LcAD444oBsQ6QK0nDerSc9GHu0I2N86P7x79bxeU0ET4iFSkRSMfVaG62L4Gj5/WJGYzP4XLI08VppuxJQC3ZAHk7Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=4ZDBD2nhkABEXFNfAAbWnIl4+sX2spgWoPs+GTXNDWw=; b=fhcd4BdWBz5XFoBgCZA3NdcCi6XeOscyYKlZUhxzeldjrP8CoMZOix+N1L+a+k00DEjIF7KiiCrJSNgKj2uyPPhjFjMh/T7U/WIzPRGdCefQuIj6M4pbE28UkWRRVDMw8iwPdY1dJ1j7ZWWrbJP5HawLJ22863TobWOC9LlBIQs= Received: from CY4PR11MB1750.namprd11.prod.outlook.com (2603:10b6:903:126::8) by CY4PR11MB1608.namprd11.prod.outlook.com (2603:10b6:910:e::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3784.12; Wed, 27 Jan 2021 03:04:55 +0000 Received: from CY4PR11MB1750.namprd11.prod.outlook.com ([fe80::8fd:c082:f2bc:f6ae]) by CY4PR11MB1750.namprd11.prod.outlook.com ([fe80::8fd:c082:f2bc:f6ae%12]) with mapi id 15.20.3784.016; Wed, 27 Jan 2021 03:04:54 +0000 From: "Li, Xiaoyun" To: "Yigit, Ferruh" , "Lu, Wenzhuo" , "Iremonger, Bernard" , "Yang, SteveX" CC: "dev@dpdk.org" , "stable@dpdk.org" , "lance.richardson@broadcom.com" , "oulijun@huawei.com" , "wisamm@mellanox.com" , "lihuisong@huawei.com" Thread-Topic: [PATCH v5] app/testpmd: fix setting maximum packet length Thread-Index: AQHW80YjjSLBHuH6aEiUHaLkeBFQnao6yxdw Date: Wed, 27 Jan 2021 03:04:54 +0000 Message-ID: References: <20210125083202.38267-1-stevex.yang@intel.com> <20210125181548.2713326-1-ferruh.yigit@intel.com> In-Reply-To: <20210125181548.2713326-1-ferruh.yigit@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [192.102.204.36] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 8011c900-af40-4d4b-fa35-08d8c2705263 x-ms-traffictypediagnostic: CY4PR11MB1608: x-ld-processed: 46c98d88-e344-4ed4-8496-4ed7712e255d,ExtAddr x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:164; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XToSKCo6q9wB4yTKZMIMFMofXog+L/hDDCFGv3EloRU3tXUqzXVjH+JcH/W/auclaDd6RQelws3JFdh12KNe1GAYzKGQIeAVJ3lYPlqoz2Vy8rI8jhxEpqHnGFVADE+sFH5r6o45Or3QiztAeRufWLtp55uSDHbIK0gCy+z8gU2Scb+D6jYSKi8OKcyi+rP4+mLjkjTk4NNKtcx46Y4tLXH9x7TwhUSwUaV7QxCmjeIjYyfdpZt8hPzU+ujEUfxSwjOBThB2HDqbbDEYSBqtow9uldOGyo6I5+IN1N5s/okdycYolYGBphkI/HVXaDAQb/PuMmWsE9nGs8j2yzcC47n/FhLWIdr6zs3DlGIDExhEaF6hH70OsDv0L/efdcYpVEOnDGiXCwIgL5GOF2KrOBHcNb1YSq1MdCM1gDDfzgdzyiQq667wg5bI0iqT8XNdqfLvPIW17/pGuveghxxQVLgHYgawGOyGVTr9Ho7qNn/ZEXvgiKsBn7F3mUXQRZlSbI8KbJhT3O7lI5ZBLvEHcg== x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:CY4PR11MB1750.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(4636009)(346002)(39860400002)(376002)(396003)(136003)(366004)(7696005)(66446008)(9686003)(478600001)(66556008)(66476007)(64756008)(110136005)(4326008)(316002)(26005)(54906003)(6506007)(86362001)(66946007)(8936002)(83380400001)(52536014)(53546011)(33656002)(8676002)(76116006)(186003)(2906002)(55016002)(5660300002)(6636002)(71200400001); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata: =?us-ascii?Q?UNMfIMPcazSxsbBcsSWLRiCumwrVnU2ut1/jImlLQa/JnHO589/U19Bg7tvt?= =?us-ascii?Q?I/5ixWVCjuR2Mfhb7YcWy4d9LlTo/amHgPtk1m3TPRvOov9tIxnVMDcl//cx?= =?us-ascii?Q?pjVbgUSl0OaS3bnIgLIkd+xeL45Xwqw88pfdVb/+BEy8BLOI77S9nP1oba9y?= =?us-ascii?Q?IgF/0gnPTHhLnfakkFP8I37R2jcf5JMYqpZUJ9hAdxyuDzczoXGCGbc3KPCW?= =?us-ascii?Q?N83NgcB8g9h0jTcWFAL1EmX+JwPoX3CO6Yea2EfqV4wNnUs9NZkHDOmvuFt0?= =?us-ascii?Q?mJw0FAmxypQHo/tTtgPljsf6HgrJdcII5F/mqC5yj/K3FlfR4tag7SmoCIWn?= =?us-ascii?Q?zcCIIGVVgtaXrH4P8SXBdbBI1lIbfbaZq7UBXQymSFUFFtJRxIJmzEDkrm23?= =?us-ascii?Q?Gflhr2VtXtf3Fl0gqSr71CmXpsDklDJXwf3vU8fTtEwvpY7LE7ayuEYaX831?= =?us-ascii?Q?4DKXGlvyiUfsZ/FmrlFn8ot9x858zckluqS7850PMOKTgf5aWaqxVZS1RadC?= =?us-ascii?Q?DzNI3SZQvJRjnTtmvfnyj16glA7XFe25kBT9wK6Fl1zgxBzZ+2WO5ak683eS?= =?us-ascii?Q?xtifxLBdvRYUMdJHKwHBYiR4jGT6FR2mANdvqUf+S+CWkCMuUxW8Op70SEc4?= =?us-ascii?Q?L/0ilTe1ESdpGhncMyl2ox3l8lh+fPuqC22snrTVpuuo9rFG/BizY0w9aw59?= =?us-ascii?Q?+BlBByjVkt5PipyjwUbWjt4Qam+1zZmw7grzphocYBXCvXekbTIPyl5S0eqt?= =?us-ascii?Q?t07RqDBq57OjpL8xZi37OOWtRAXmCsUHZyfwMO9js0Fu+qwfK5VEBcK4BCyL?= =?us-ascii?Q?5ukewib8BANpowhGaAIfZR0MMpe+RX3urCaa0NxlxIb6uifSSrx6VpnQdXwu?= =?us-ascii?Q?gdX244G1KQBoWVqUUwEBMWQyhgD1qwn1yt8gHznSaTJ2YAKGES/4NU+p9jez?= =?us-ascii?Q?7msauHA8QghrWY5+7c74ljhHmJKmc0E8hWZev2tAt+NXGc/5h1ASxaHtvb2s?= =?us-ascii?Q?+WfSn89vT2mImzpQpIdR9cCJTGvA8AwKEdHseiPTDqSpQL27bq1KyY2qmQlb?= =?us-ascii?Q?iyDiWHj0?= Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CY4PR11MB1750.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 8011c900-af40-4d4b-fa35-08d8c2705263 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Jan 2021 03:04:54.4945 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: KhoXDGIGG1Gc5384tdcX5PaWHFuk1/0p8ImuXv7+9rBa3XHyLie8V6EUc8EZy1GHfOPdkfZyrKKdLIMdd0KBGg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY4PR11MB1608 X-OriginatorOrg: intel.com Subject: Re: [dpdk-dev] [PATCH v5] app/testpmd: fix setting maximum packet length X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Except a minor typo inline. Acked-by: Xiaoyun Li > -----Original Message----- > From: Yigit, Ferruh > Sent: Tuesday, January 26, 2021 02:16 > To: Lu, Wenzhuo ; Li, Xiaoyun ; > Iremonger, Bernard ; Yang, SteveX > > Cc: Yigit, Ferruh ; dev@dpdk.org; stable@dpdk.org= ; > lance.richardson@broadcom.com; oulijun@huawei.com; > wisamm@mellanox.com; lihuisong@huawei.com > Subject: [PATCH v5] app/testpmd: fix setting maximum packet length >=20 > From: Steve Yang >=20 > "port config all max-pkt-len" command fails because it doesn't set the > 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag properly. >=20 > Commit in the fixes line moved the 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload > flag update from 'cmd_config_max_pkt_len_parsed()' to 'init_config()'. > 'init_config()' function is only called during testpmd startup, but the f= lag status > needs to be calculated whenever 'max_rx_pkt_len' changes. >=20 > The issue can be reproduce as [1], where the 'max-pkt-len' reduced and reproduced > 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag should be cleared but it didn't= . >=20 > Adding the 'update_jumbo_frame_offload()' helper function to update > 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag and 'max_rx_pkt_len'. This > function is called both by 'init_config()' and 'cmd_config_max_pkt_len_pa= rsed()'. >=20 > Default 'max-pkt-len' value set to zero, 'update_jumbo_frame_offload()' > updates it to "RTE_ETHER_MTU + PMD specific Ethernet overhead" when it is > zero. > If '--max-pkt-len=3DN' argument provided, it will be used instead. > And with each "port config all max-pkt-len" command, the > 'DEV_RX_OFFLOAD_JUMBO_FRAME' offload flag, 'max-pkt-len' and MTU is > updated. >=20 > [1] > -------------------------------------------------------------------------= - > dpdk-testpmd -c 0xf -n 4 -- -i --max-pkt-len=3D9000 --tx-offloads=3D0x800= 0 > --rxq=3D4 --txq=3D4 --disable-rss > testpmd> set verbose 3 > testpmd> port stop all > testpmd> port config all max-pkt-len 1518 port start all >=20 > // Got fail error info without this patch Configuring Port 0 (socket 1) E= thdev > port_id=3D0 rx_queue_id=3D0, new added offloads 0x800 must be within per-= queue > offload capabilities 0x0 in rte_eth_rx_queue_setup() Fail to configure po= rt 0 rx > queues //<-- Fail error info; > -------------------------------------------------------------------------= - >=20 > Fixes: 761c4d66900f ("app/testpmd: fix max Rx packet length for VLAN pack= ets") > Cc: stable@dpdk.org >=20 > Signed-off-by: Steve Yang > Signed-off-by: Ferruh Yigit > --- >=20 > v5: > * 'update_jumbo_frame_offload()' helper updated > * check zero 'max-pkt-len' value > * Update how queue offload flags updated > * Update MTU if JUMBO_FRAME flag is not set > * Default testpmd 'max-pkt-len' value set to zero >=20 > Cc: lance.richardson@broadcom.com > Cc: oulijun@huawei.com > Cc: wisamm@mellanox.com > Cc: lihuisong@huawei.com > --- > app/test-pmd/cmdline.c | 13 ++++++ > app/test-pmd/testpmd.c | 102 +++++++++++++++++++++++++++++++++-------- > app/test-pmd/testpmd.h | 1 + > 3 files changed, 97 insertions(+), 19 deletions(-) >=20 > diff --git a/app/test-pmd/cmdline.c b/app/test-pmd/cmdline.c index > 89034c8b7272..9ada4316c6c0 100644 > --- a/app/test-pmd/cmdline.c > +++ b/app/test-pmd/cmdline.c > @@ -1877,7 +1877,9 @@ cmd_config_max_pkt_len_parsed(void > *parsed_result, > __rte_unused void *data) > { > struct cmd_config_max_pkt_len_result *res =3D parsed_result; > + uint32_t max_rx_pkt_len_backup =3D 0; > portid_t pid; > + int ret; >=20 > if (!all_ports_stopped()) { > printf("Please stop all ports first\n"); @@ -1896,7 +1898,18 @@ > cmd_config_max_pkt_len_parsed(void *parsed_result, > if (res->value =3D=3D port- > >dev_conf.rxmode.max_rx_pkt_len) > return; >=20 > + ret =3D eth_dev_info_get_print_err(pid, &port->dev_info); > + if (ret !=3D 0) { > + printf("rte_eth_dev_info_get() failed for > port %u\n", > + pid); > + return; > + } > + > + max_rx_pkt_len_backup =3D port- > >dev_conf.rxmode.max_rx_pkt_len; > + > port->dev_conf.rxmode.max_rx_pkt_len =3D res->value; > + if (update_jumbo_frame_offload(pid) !=3D 0) > + port->dev_conf.rxmode.max_rx_pkt_len =3D > max_rx_pkt_len_backup; > } else { > printf("Unknown parameter\n"); > return; > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > c256e719aea2..b69fcd3fde72 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -443,8 +443,11 @@ lcoreid_t latencystats_lcore_id =3D -1; > * Ethernet device configuration. > */ > struct rte_eth_rxmode rx_mode =3D { > - .max_rx_pkt_len =3D RTE_ETHER_MAX_LEN, > - /**< Default maximum frame length. */ > + /* Default maximum frame length. > + * Zero is converted to "RTE_ETHER_MTU + PMD Ethernet overhead" > + * in init_config(). > + */ > + .max_rx_pkt_len =3D 0, > }; >=20 > struct rte_eth_txmode tx_mode =3D { > @@ -1410,7 +1413,6 @@ init_config(void) > struct rte_gro_param gro_param; > uint32_t gso_types; > uint16_t data_size; > - uint16_t eth_overhead; > bool warning =3D 0; > int k; > int ret; > @@ -1447,22 +1449,10 @@ init_config(void) > rte_exit(EXIT_FAILURE, > "rte_eth_dev_info_get() failed\n"); >=20 > - /* Update the max_rx_pkt_len to have MTU as > RTE_ETHER_MTU */ > - if (port->dev_info.max_mtu !=3D UINT16_MAX && > - port->dev_info.max_rx_pktlen > port->dev_info.max_mtu) > - eth_overhead =3D port->dev_info.max_rx_pktlen - > - port->dev_info.max_mtu; > - else > - eth_overhead =3D > - RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN; > - > - if (port->dev_conf.rxmode.max_rx_pkt_len <=3D > - (uint32_t)(RTE_ETHER_MTU + eth_overhead)) > - port->dev_conf.rxmode.max_rx_pkt_len =3D > - RTE_ETHER_MTU + eth_overhead; > - else > - port->dev_conf.rxmode.offloads |=3D > - DEV_RX_OFFLOAD_JUMBO_FRAME; > + ret =3D update_jumbo_frame_offload(pid); > + if (ret !=3D 0) > + printf("Updating jumbo frame offload failed for > port %u\n", > + pid); >=20 > if (!(port->dev_info.tx_offload_capa & > DEV_TX_OFFLOAD_MBUF_FAST_FREE)) @@ -3358,6 > +3348,80 @@ rxtx_port_config(struct rte_port *port) > } > } >=20 > +/* > + * Helper function to arrange max_rx_pktlen value and JUMBO_FRAME > +offload, > + * MTU is also aligned if JUMBO_FRAME offload is not set. > + * > + * port->dev_info should be get before calling this function. > + * > + * return 0 on success, negative on error */ int > +update_jumbo_frame_offload(portid_t portid) { > + struct rte_port *port =3D &ports[portid]; > + uint32_t eth_overhead; > + uint64_t rx_offloads; > + int ret; > + bool on; > + > + /* Update the max_rx_pkt_len to have MTU as RTE_ETHER_MTU */ > + if (port->dev_info.max_mtu !=3D UINT16_MAX && > + port->dev_info.max_rx_pktlen > port->dev_info.max_mtu) > + eth_overhead =3D port->dev_info.max_rx_pktlen - > + port->dev_info.max_mtu; > + else > + eth_overhead =3D RTE_ETHER_HDR_LEN + RTE_ETHER_CRC_LEN; > + > + rx_offloads =3D port->dev_conf.rxmode.offloads; > + > + /* Default config value is 0 to use PMD specific overhead */ > + if (port->dev_conf.rxmode.max_rx_pkt_len =3D=3D 0) > + port->dev_conf.rxmode.max_rx_pkt_len =3D RTE_ETHER_MTU + > eth_overhead; > + > + if (port->dev_conf.rxmode.max_rx_pkt_len <=3D RTE_ETHER_MTU + > eth_overhead) { > + rx_offloads &=3D ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + on =3D false; > + } else { > + if ((port->dev_info.rx_offload_capa & > DEV_RX_OFFLOAD_JUMBO_FRAME) =3D=3D 0) { > + printf("Frame size (%u) is not supported by port %u\n", > + port->dev_conf.rxmode.max_rx_pkt_len, > + portid); > + return -1; > + } > + rx_offloads |=3D DEV_RX_OFFLOAD_JUMBO_FRAME; > + on =3D true; > + } > + > + if (rx_offloads !=3D port->dev_conf.rxmode.offloads) { > + uint16_t qid; > + > + port->dev_conf.rxmode.offloads =3D rx_offloads; > + > + /* Apply JUMBO_FRAME offload configuration to Rx queue(s) > */ > + for (qid =3D 0; qid < port->dev_info.nb_rx_queues; qid++) { > + if (on) > + port->rx_conf[qid].offloads |=3D > DEV_RX_OFFLOAD_JUMBO_FRAME; > + else > + port->rx_conf[qid].offloads &=3D > ~DEV_RX_OFFLOAD_JUMBO_FRAME; > + } > + } > + > + /* If JUMBO_FRAME is set MTU conversion done by ethdev layer, > + * if unset do it here > + */ > + if ((rx_offloads & DEV_RX_OFFLOAD_JUMBO_FRAME) =3D=3D 0) { > + ret =3D rte_eth_dev_set_mtu(portid, > + port->dev_conf.rxmode.max_rx_pkt_len - > eth_overhead); > + if (ret) > + printf("Failed to set MTU to %u for port %u\n", > + port->dev_conf.rxmode.max_rx_pkt_len - > eth_overhead, > + portid); > + } > + > + return 0; > +} > + > void > init_port_config(void) > { > diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index > 5f2316210726..2f8f5a92e46a 100644 > --- a/app/test-pmd/testpmd.h > +++ b/app/test-pmd/testpmd.h > @@ -1005,6 +1005,7 @@ uint16_t tx_pkt_set_dynf(uint16_t port_id, > __rte_unused uint16_t queue, > __rte_unused void *user_param); > void add_tx_dynf_callback(portid_t portid); void > remove_tx_dynf_callback(portid_t portid); > +int update_jumbo_frame_offload(portid_t portid); >=20 > /* > * Work-around of a compilation error with ICC on invocations of the > -- > 2.29.2