From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by inbox.dpdk.org (Postfix) with ESMTP id 615CAA0530; Wed, 12 Feb 2020 01:25:46 +0100 (CET) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 2DF4429CB; Wed, 12 Feb 2020 01:25:45 +0100 (CET) Received: from incedge.chinasoftinc.com (unknown [114.113.233.8]) by dpdk.org (Postfix) with ESMTP id 3D2652986 for ; Wed, 12 Feb 2020 01:25:42 +0100 (CET) X-ASG-Debug-ID: 1581467138-0a3dd1674917610001-TfluYd Received: from mail.chinasoftinc.com (inccas001.ito.icss [10.168.0.51]) by incedge.chinasoftinc.com with ESMTP id BUhtirTl5WLFrJlk (version=TLSv1 cipher=ECDHE-RSA-AES256-SHA bits=256 verify=NO); Wed, 12 Feb 2020 08:25:38 +0800 (CST) X-Barracuda-Envelope-From: huwei013@chinasoftinc.com X-Barracuda-RBL-Trusted-Forwarder: 10.168.0.51 X-ASG-Whitelist: Client Received: from [192.168.1.199] (139.159.243.11) by INCCAS001.ito.icss (10.168.0.60) with Microsoft SMTP Server id 14.3.439.0; Wed, 12 Feb 2020 08:25:37 +0800 X-Barracuda-RBL-IP: 192.168.1.199 To: Ferruh Yigit , X-ASG-Orig-Subj: Re: [dpdk-dev] [PATCH 1/3] app/testpmd: update Rx offload after setting MTU sccessfully CC: "Wei Hu (Xavier)" , Andrew Rybchenko , Thomas Monjalon , Matan Azrad References: <20200121114433.57543-1-huwei013@chinasoftinc.com> <20200121114433.57543-2-huwei013@chinasoftinc.com> <91ab9f40-80fc-6e3d-e13b-95c0147734da@intel.com> From: "Wei Hu (Xavier)" Message-ID: Date: Wed, 12 Feb 2020 08:25:36 +0800 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:68.0) Gecko/20100101 Thunderbird/68.3.0 MIME-Version: 1.0 In-Reply-To: <91ab9f40-80fc-6e3d-e13b-95c0147734da@intel.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-Originating-IP: [139.159.243.11] X-Barracuda-Connect: inccas001.ito.icss[10.168.0.51] X-Barracuda-Start-Time: 1581467138 X-Barracuda-Encrypted: ECDHE-RSA-AES256-SHA X-Barracuda-URL: https://spam.chinasoftinc.com:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at chinasoftinc.com X-Barracuda-Scan-Msg-Size: 3047 Subject: Re: [dpdk-dev] [PATCH 1/3] app/testpmd: update Rx offload after setting MTU sccessfully X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 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" Hi, Ferruh Yigit On 2020/1/28 19:27, Ferruh Yigit wrote: > On 1/21/2020 11:44 AM, Wei Hu (Xavier) wrote: >> From: "Wei Hu (Xavier)" >> >> Currently, Rx offload capabilities and max_rx_pkt_len in the struct >> variable named rte_port are not updated after setting mtu successfully >> in port_mtu_set function by 'port config mtu ' command. >> This may lead to reconfig mtu to the initial value in the driver when >> recalling rte_eth_dev_configure API interface. >> >> This patch updates Rx offload capabilities and max_rx_pkt_len after >> setting mtu successfully when configuring mtu. >> >> Fixes: ae03d0d18adf ("app/testpmd: command to configure MTU") >> Cc: stable@dpdk.org >> >> Signed-off-by: Huisong Li >> Signed-off-by: Wei Hu (Xavier) >> --- >> app/test-pmd/config.c | 18 +++++++++++++++++- >> 1 file changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/app/test-pmd/config.c b/app/test-pmd/config.c >> index 9669cbd4c..09a1579f5 100644 >> --- a/app/test-pmd/config.c >> +++ b/app/test-pmd/config.c >> @@ -1216,7 +1216,9 @@ void >> port_mtu_set(portid_t port_id, uint16_t mtu) >> { >> int diag; >> + struct rte_port *rte_port = &ports[port_id]; >> struct rte_eth_dev_info dev_info; >> + uint16_t eth_overhead; >> int ret; >> >> if (port_id_is_invalid(port_id, ENABLED_WARN)) >> @@ -1232,8 +1234,22 @@ port_mtu_set(portid_t port_id, uint16_t mtu) >> return; >> } >> diag = rte_eth_dev_set_mtu(port_id, mtu); >> - if (diag == 0) >> + if (diag == 0) { >> + /* >> + * Ether overhead in driver is equal to the difference of >> + * max_rx_pktlen and max_mtu in rte_eth_dev_info. >> + */ >> + eth_overhead = dev_info.max_rx_pktlen - dev_info.max_mtu; >> + if (mtu > RTE_ETHER_MAX_LEN - eth_overhead) >> + rte_port->dev_conf.rxmode.offloads |= >> + DEV_RX_OFFLOAD_JUMBO_FRAME; >> + else >> + rte_port->dev_conf.rxmode.offloads &= >> + ~DEV_RX_OFFLOAD_JUMBO_FRAME; > > If the jumbo frame capability supported or not should be tested before setting it. > >> + rte_port->dev_conf.rxmode.max_rx_pkt_len = mtu + eth_overhead; > > May need to check against 'dev_info.max_rx_pktlen', if the 'max_rx_pkt_len' is > bigger than this, it will fail in next configure. > > Also some divers already does this in PMD code, should we clean that code or not > is a question. > The snippset is adjusted as follows: if (mtu > RTE_ETHER_MAX_LEN - eth_overhead && dev_info.rx_offload_capa & DEV_RX_OFFLOAD_JUMBO_FRAME) { rte_port->dev_conf.rxmode.offloads |= DEV_RX_OFFLOAD_JUMBO_FRAME; rte_port->dev_conf.rxmode.max_rx_pkt_len = mtu + eth_overhead; } else rte_port->dev_conf.rxmode.offloads &= ~DEV_RX_OFFLOAD_JUMBO_FRAME; We only modifies the internal variables of testpmd, don't impact on the implementation of the driver. Thanks for more suggestions. Xavier