Hi, Thomas Would you please have a look at this patch set ? If any question, please let me know .
Thanks -Wei -----Original Message----- From: Wu, Jingjing Sent: Friday, June 30, 2017 6:50 PM To: Dai, Wei <wei....@intel.com>; tho...@monjalon.net; Lu, Wenzhuo <wenzhuo...@intel.com>; Ananyev, Konstantin <konstantin.anan...@intel.com>; Zhang, Helin <helin.zh...@intel.com>; Peng, Yuan <yuan.p...@intel.com> Cc: dev@dpdk.org Subject: RE: [PATCH v5 0/4] Support NIC reset and keep same port id > -----Original Message----- > From: Dai, Wei > Sent: Friday, June 30, 2017 6:13 PM > To: tho...@monjalon.net; Lu, Wenzhuo <wenzhuo...@intel.com>; Ananyev, > Konstantin <konstantin.anan...@intel.com>; Wu, Jingjing > <jingjing...@intel.com>; Zhang, Helin <helin.zh...@intel.com>; Peng, > Yuan <yuan.p...@intel.com> > Cc: dev@dpdk.org; Dai, Wei <wei....@intel.com> > Subject: [PATCH v5 0/4] Support NIC reset and keep same port id > > 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( ). > > 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. > > 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. > > 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 > > 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 > > Signed-off-by: Wei Dai <wei....@intel.com> > Tested-by: Yuan Peng <yuan.p...@intel.com> Acked-by: Jingjing Wu <jingjing...@intel.com>