[dpdk-dev] [PATCH v5 0/4] Support NIC reset and keep same port id

Dai, Wei wei.dai at intel.com
Wed Jul 5 07:48:51 CEST 2017


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.dai at intel.com>; thomas at monjalon.net; Lu, Wenzhuo <wenzhuo.lu at intel.com>; Ananyev, Konstantin <konstantin.ananyev at intel.com>; Zhang, Helin <helin.zhang at intel.com>; Peng, Yuan <yuan.peng at intel.com>
Cc: dev at 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: thomas at monjalon.net; Lu, Wenzhuo <wenzhuo.lu at intel.com>; Ananyev, 
> Konstantin <konstantin.ananyev at intel.com>; Wu, Jingjing 
> <jingjing.wu at intel.com>; Zhang, Helin <helin.zhang at intel.com>; Peng, 
> Yuan <yuan.peng at intel.com>
> Cc: dev at dpdk.org; Dai, Wei <wei.dai at 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.dai at intel.com>
> Tested-by: Yuan Peng <yuan.peng at intel.com>


Acked-by: Jingjing Wu <jingjing.wu at intel.com>


More information about the dev mailing list