From mboxrd@z Thu Jan 1 00:00:00 1970 From: Remy Horton Subject: Re: [PATCH v8 5/5] doc: add description of the NIC reset API Date: Thu, 20 Jul 2017 14:22:11 +0100 Message-ID: <50b8592d-c651-6e2e-4b85-5d717ee95bc5@intel.com> References: <1499961223-45281-1-git-send-email-wei.dai@intel.com> <1500304503-41592-1-git-send-email-wei.dai@intel.com> <1500304503-41592-6-git-send-email-wei.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org To: Wei Dai , thomas@monjalon.net, wenzhuo.lu@intel.com, konstantin.ananyev@intel.com, beilei.xing@intel.com, jingjing.wu@intel.com, john.mcnamara@intel.com Return-path: Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id 5EC17231E for ; Thu, 20 Jul 2017 15:22:14 +0200 (CEST) In-Reply-To: <1500304503-41592-6-git-send-email-wei.dai@intel.com> List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Unless the plan is for this patch to be squashed, ought to have a brief commit message.. On 17/07/2017 16:15, Wei Dai wrote: > Signed-off-by: Wei Dai > --- > doc/guides/prog_guide/poll_mode_drv.rst | 40 +++++++++++++++++++++++++++++++++ > 1 file changed, 40 insertions(+) Reviewed-by: Remy Horton > +.. code-block:: c > + > + int rte_eth_dev_reset(uint8_t port_id); > + Suggest following text: Sometimes a port has to be reset passively. For example when a PF is reset, all its VFs should also be reset by the application to make them consistent with the PF. A DPDK application also can call this function to trigger a port reset. Normally, a DPDK application would invokes this function when an RTE_ETH_EVENT_INTR_RESET event is detected. It is the duty of the PMD to trigger RTE_ETH_EVENT_INTR_RESET events and the application should register a callback function to handle these events. When a PMD needs to trigger a reset, it can trigger an RTE_ETH_EVENT_INTR_RESET event. On receiving an RTE_ETH_EVENT_INTR_RESET event, applications can handle it as follows: Stop working queues, stop calling Rx and Tx functions, and then call rte_eth_dev_reset( ). For thread safety all these operations should be called from the same thread. For example when PF is reset, the PF sends a message to notify VFs of this event and also trigger an interrupt to VFs. Then in the interrupt service routine the VFs detects this notification message and calls _rte_eth_dev_callback_process(dev, RTE_ETH_EVENT_INTR_RESET, NULL, NULL). This means that a PF reset triggers an RTE_ETH_EVENT_INTR_RESET event within VFs. The function _rte_eth_dev_callback_process( ) will call the registered callback function. The callback function can trigger the application to handle all operations the VF reset requires including stopping Rx/Tx queues and calling rte_eth_dev_reset(). The rte_eth_dev_reset( ) itself is a generic function which only does some hardware reset operations through calling dev_unint() and dev_init(), and itself does not handle synchronization, which is handled by application. The PMD itself should not call rte_eth_dev_reset( ). The PMD can trigger the application to handle reset event. It is duty of application to handle all synchronization before it calls rte_eth_dev_reset( ). ..Remy