From mboxrd@z Thu Jan 1 00:00:00 1970 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) Received: from orsmga004.jf.intel.com ([10.7.209.38]) by orsmga104.jf.intel.com with ESMTP; 20 Jul 2017 06:22:13 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.40,384,1496127600"; d="scan'208";a="110073823" Received: from rhorton-mobl1.ger.corp.intel.com (HELO [163.33.230.130]) ([163.33.230.130]) by orsmga004.jf.intel.com with ESMTP; 20 Jul 2017 06:22:11 -0700 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 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> Cc: dev@dpdk.org From: Remy Horton Organization: Intel Shannon Limited Message-ID: <50b8592d-c651-6e2e-4b85-5d717ee95bc5@intel.com> Date: Thu, 20 Jul 2017 14:22:11 +0100 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.7.1 MIME-Version: 1.0 In-Reply-To: <1500304503-41592-6-git-send-email-wei.dai@intel.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Subject: Re: [dpdk-dev] [PATCH v8 5/5] doc: add description of the NIC reset API 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, 20 Jul 2017 13:22:14 -0000 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