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 9804C2C37 for ; Fri, 30 Jun 2017 12:50:10 +0200 (CEST) Received: from fmsmga006.fm.intel.com ([10.253.24.20]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 30 Jun 2017 03:50:10 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,286,1496127600"; d="scan'208";a="121254209" Received: from fmsmsx103.amr.corp.intel.com ([10.18.124.201]) by fmsmga006.fm.intel.com with ESMTP; 30 Jun 2017 03:50:10 -0700 Received: from fmsmsx156.amr.corp.intel.com (10.18.116.74) by FMSMSX103.amr.corp.intel.com (10.18.124.201) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 30 Jun 2017 03:50:09 -0700 Received: from shsmsx104.ccr.corp.intel.com (10.239.4.70) by fmsmsx156.amr.corp.intel.com (10.18.116.74) with Microsoft SMTP Server (TLS) id 14.3.319.2; Fri, 30 Jun 2017 03:50:09 -0700 Received: from shsmsx103.ccr.corp.intel.com ([169.254.4.116]) by SHSMSX104.ccr.corp.intel.com ([10.239.4.70]) with mapi id 14.03.0319.002; Fri, 30 Jun 2017 18:50:07 +0800 From: "Wu, Jingjing" To: "Dai, Wei" , "thomas@monjalon.net" , "Lu, Wenzhuo" , "Ananyev, Konstantin" , "Zhang, Helin" , "Peng, Yuan" CC: "dev@dpdk.org" Thread-Topic: [PATCH v5 0/4] Support NIC reset and keep same port id Thread-Index: AQHS8YrZf5ecw+MswU2U4X8H4stpS6I9OKtw Date: Fri, 30 Jun 2017 10:50:07 +0000 Message-ID: <9BB6961774997848B5B42BEC655768F810DB77C8@SHSMSX103.ccr.corp.intel.com> References: <1498748282-69914-1-git-send-email-wei.dai@intel.com> <1498817556-64379-1-git-send-email-wei.dai@intel.com> In-Reply-To: <1498817556-64379-1-git-send-email-wei.dai@intel.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.239.127.40] Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Subject: Re: [dpdk-dev] [PATCH v5 0/4] 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: Fri, 30 Jun 2017 10:50:12 -0000 > -----Original Message----- > From: Dai, Wei > Sent: Friday, June 30, 2017 6:13 PM > To: thomas@monjalon.net; Lu, Wenzhuo ; Ananyev, Kon= stantin > ; Wu, Jingjing ; Zha= ng, Helin > ; Peng, Yuan > Cc: dev@dpdk.org; Dai, Wei > Subject: [PATCH v5 0/4] Support NIC reset and keep same port id >=20 > Sometimes a port have to be reset. For example PF is reset, all its > VF should also 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 allocated 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 reconfigure itself with different settings. >=20 > To test this new feature, a testpmd command "port reset port_id" is added= . > The mapping between port number and its PCI address can be monitored to > confirm its port number is kept. > And following test case can also be used to confirm the port can work > again after reset. >=20 > A typical test steps are listed as follows: > For example, run "ifconfig PF-name down" will trigger a reset to VF. > 1. run testpmd with 2 ixgbe VF ports belonging to same PF > 2. testpmd > set verbose 1 //to observe VF working > 3. testpmd > show port info all //show port number and MAC addr > 4. testpmd > start > 5. let all ports forwarding work for a while > 6. testpmd > show port stats all > 7. ifconfig name-of-PF down > 8. A message is shown in testmd to indicate PF reset > 9. ifconfig name-of-PF up > 10. testpmd > stop // stop forwarding to avoid crash during reset > 11. testpmd > port reset all > 12. testpmd > port stop all > 13. testpmd > port start all //recofnig all ports > 14. testpmd > show port info all > //get mapping of port id and MAC addr for forwarding > 15. testpmd > start // restore forwarding > 14. let all ports forwarding work for a while > 15. testpmd > show port stats all //confirm all port can work again > 16. repeat above step 7 - 15 >=20 > chagnes: > v5: > remove PCI address output to align with other modification which > will output it in other way > disable PF reset when its VF is ative to avoid unexpected VF behavior > v4: > add PCI address to confirm its port number keep same > correct test method in cover letter > v3: > update testpmd command > v2: > only reset PMD layer resource and keep same port id, but > not restore settings >=20 > Signed-off-by: Wei Dai > Tested-by: Yuan Peng Acked-by: Jingjing Wu