From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by dpdk.org (Postfix) with ESMTP id 8287E235 for ; Thu, 29 Jun 2017 08:29:52 +0200 (CEST) Received: from orsmga003.jf.intel.com ([10.7.209.27]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 28 Jun 2017 23:29:51 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,279,1496127600"; d="scan'208";a="986548622" Received: from pgsmsx105.gar.corp.intel.com ([10.221.44.96]) by orsmga003.jf.intel.com with ESMTP; 28 Jun 2017 23:29:50 -0700 Received: from kmsmsx153.gar.corp.intel.com ([169.254.5.24]) by PGSMSX105.gar.corp.intel.com ([10.221.44.96]) with mapi id 14.03.0319.002; Thu, 29 Jun 2017 14:29:50 +0800 From: "Dai, Wei" To: "Peng, Yuan" , "thomas@monjalon.net" , "Lu, Wenzhuo" , "Ananyev, Konstantin" , "Zhang, Helin" , "Wu, Jingjing" CC: "dev@dpdk.org" Thread-Topic: [dpdk-dev] [PATCH v2 0/5] Support NIC reset and keep same port id Thread-Index: AQHS71Au1UHRmn11BU2FwT2kfb/dNqI6sUMAgACxoxA= Date: Thu, 29 Jun 2017 06:29:49 +0000 Message-ID: <49759EB36A64CF4892C1AFEC9231E8D650B4A7ED@KMSMSX153.gar.corp.intel.com> References: <1495873329-43303-1-git-send-email-wei.dai@intel.com> <1498572438-25125-1-git-send-email-wei.dai@intel.com> <67D543A150B29E4CAAE53918F64EDAEA373E63D7@SHSMSX103.ccr.corp.intel.com> In-Reply-To: <67D543A150B29E4CAAE53918F64EDAEA373E63D7@SHSMSX103.ccr.corp.intel.com> Accept-Language: zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-titus-metadata-40: eyJDYXRlZ29yeUxhYmVscyI6IiIsIk1ldGFkYXRhIjp7Im5zIjoiaHR0cDpcL1wvd3d3LnRpdHVzLmNvbVwvbnNcL0ludGVsMyIsImlkIjoiNTE0ZjQ2ZGUtMTgwMS00ZmZjLWE2ZDItMmVkNTdiNDE4ZjBhIiwicHJvcHMiOlt7Im4iOiJDVFBDbGFzc2lmaWNhdGlvbiIsInZhbHMiOlt7InZhbHVlIjoiQ1RQX0lDIn1dfV19LCJTdWJqZWN0TGFiZWxzIjpbXSwiVE1DVmVyc2lvbiI6IjE2LjUuOS4zIiwiVHJ1c3RlZExhYmVsSGFzaCI6Inc5UUVEaTVqdWdXTGhPVm1XZzlnckh0OVZyaTg0Tmw2S0FoZzhGaXBEeXM9In0= x-ctpclassification: CTP_IC dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [172.30.20.206] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v2 0/5] Support NIC reset and keep same port id 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: , X-List-Received-Date: Thu, 29 Jun 2017 06:29:54 -0000 Many thanks to Yuan for your test support. Your test show the code changes for rte_ether and driver/net can work as ex= pected. I'll update a v3 patch set according to feedback from Wu Jingjing and your = test. In v3 patch, only code in testpmd will be changed but with similar test met= hod. > -----Original Message----- > From: Peng, Yuan > Sent: Thursday, June 29, 2017 11:52 AM > To: Dai, Wei ; thomas@monjalon.net; Lu, Wenzhuo > ; Ananyev, Konstantin > ; Zhang, Helin ; Wu, > Jingjing > Cc: dev@dpdk.org; Dai, Wei > Subject: RE: [dpdk-dev] [PATCH v2 0/5] Support NIC reset and keep same po= rt id >=20 > Tested-by: Peng, Yuan >=20 > - Tested commit c1923afc0999b5b6f109190bc5b69b6c3d334635+the 5 > patches. > - OS: 4.5.5-300.fc24.x86_64 > - GCC: gcc version 6.1.1 20160510 (Red Hat 6.1.1-2) (GCC) > - CPU: Intel(R) Xeon(R) CPU E5-2699 v4 @ 2.20GHz > - NIC: Ethernet controller [0200]: Intel Corporation 82599ES 10-Gigabit S= FI/SFP+ > Network Connection [8086:10fb] (rev 01) > - Default x86_64-native-linuxapp-gcc configuration > - Prerequisites: > - Total 1cases, 1 passed, 0 failed >=20 > Steps: > DUT: > 1. run testpmd with ixgbe VF > echo 1 >/sys/bus/pci/devices/0000:07:00.0/sriov_numvfs > ip link set ens786f0 vf 0 mac 00:11:22:33:44:11 ./usertools/dpdk-devbind.= py -b > vfio-pci 07:10.0 ./x86_64-native-linuxapp-gcc/app/testpmd -c 0x3 -n 4 -- = -i >=20 > 2. testpmd > set verbose 1 > testpmd> set fwd rxonly > testpmd> start > tester: > scapy > >>> pkt1 =3D Ether(dst=3D"00:11:22:33:44:11")/IP()/UDP()/Raw('x' * 20) > >>> sendp(pkt1, iface=3D"ens786f1", count=3D1) > Vf can receive the packet correctly. >=20 > 3. ifconfig ens786f0 down > A message is shown in testmd to indicate PF reset: > Port 0: Interrupt reset event >=20 > 4. ifconfig ens786f0 up >=20 > 5. testpmd > stop >=20 > 6. testpmd > reset_port 0 >=20 > 7. testpmd> reconfig_port 0 > PMD: ixgbevf_dev_configure(): VF can't disable HW CRC Strip Port 0 MAC: 0= 0 > 11 22 33 44 11 Begin to forward at least 100 packets to test reconfigurat= ion >=20 > 8. tester: > >>> sendp(pkt1, iface=3D"ens786f1", count=3D100) >=20 > 9. Finish forwarding 100 packets to test reconfiguration > testpmd> show port stats all >=20 > ######################## NIC statistics for port 0 > ######################## > RX-packets: 100 RX-missed: 0 RX-bytes: 6200 > RX-errors: 0 > RX-nombuf: 0 > TX-packets: 0 TX-errors: 0 TX-bytes: 0 >=20 > Throughput (since last show) > Rx-pps: 0 > Tx-pps: 0 >=20 > ################################################################ > ############ >=20 > The vf can be reconfigured successfully after pf reset. >=20 > -----Original Message----- > From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Wei Dai > Sent: Tuesday, June 27, 2017 10:07 PM > To: thomas@monjalon.net; Lu, Wenzhuo ; Ananyev, > Konstantin ; Zhang, Helin > ; Wu, Jingjing > Cc: dev@dpdk.org; Dai, Wei > Subject: [dpdk-dev] [PATCH v2 0/5] Support NIC reset and keep same port i= d >=20 > Sometimes a port have to be reset. After reset, if the port goes through = PCI > remove() and then PCI probe() for restoration, its port id may be changed= and > this is not expected by some customer DPDK application. > Normally, PCI probe() includes two parts: one is in rte_ethdev layer and = the > other is calling PMD dev_init(). PCI remove( ) release all resource alloc= ated > from rte_ethdev layer in PCI probe( ) and calls PMD dev_unit( ). > To keep same port id and reset the port, only dev_uninit() and dev_init( = ) in > PMD can be called and keep all resources allocated from rte_ethdev layer = poart > in PCI probe( ). >=20 > New rte_eth_dev_reset( ) calls rte_eth_dev_stop( ), PMD dev_uninit( ) and > then PMD dev_init( ) to reset a port and keep same port id. > And then application can go through rte_eth_dev_configure( ), > rte_eth_rx_queue_setup( ), rte_eth_tx_queue_setup( ) and > rte_eth_dev_start( ) again to restore its previous settings or to reconfi= gure > itself with different settings. >=20 > To test this new feature, 2 testpmd commands are introduced. > The first command "reset_port port_id" calls rte_eth_dev_reset( ). > The second command "reconfig_port port_id" is used to test if the port ca= n be > reconfigured successfully. This command configure the port with the simpl= est > settings include only 1 Rx queue, only 1 Tx queue, Rx mode =3D None and T= x mode > =3D None. It check port by receving at least > 100 packets and then forward these packets from itself. >=20 > A typical test steps are listed as follows: > For example, run "ifconfig PF-name down" will trigger a reset to its VF. > 1. run testpmd with ixgbe vF > 2. testpmd > set verbose 1 //to observe VF working 3. ifconfig name-of-PF= down > 4. A message is shown in testmd to indicate PF reset 5. ifconfig name-of-= PF up 6. > testpmd > stop // stop forwarding to avoid crash during reset 7. testpmd = > > reset_port port_id_of_VF 8. testpmd > reconfig_port port_id_of_VF >=20 >=20 > Wei Dai (5): > ethdev: add support of NIC reset > net/ixgbe: add support of reset > net/i40e: add support of reset > app/testpmd: add command to test NIC reset > app/testpmd: add command to test NIC restoration >=20 > app/test-pmd/cmdline.c | 62 ++++++++++++++++++ > app/test-pmd/config.c | 111 > +++++++++++++++++++++++++++++++++ > app/test-pmd/testpmd.h | 2 + > drivers/net/i40e/i40e_ethdev.c | 16 +++++ > drivers/net/i40e/i40e_ethdev_vf.c | 16 +++++ > drivers/net/ixgbe/ixgbe_ethdev.c | 38 +++++++++++ > lib/librte_ether/rte_ethdev.c | 17 +++++ > lib/librte_ether/rte_ethdev.h | 12 ++++ > lib/librte_ether/rte_ether_version.map | 2 +- > 9 files changed, 275 insertions(+), 1 deletion(-) >=20 > -- > 2.7.4