From mboxrd@z Thu Jan 1 00:00:00 1970 From: Bruce Richardson Subject: Re: Unable to configure ethdev in secondary process using ring PMD Date: Tue, 1 Dec 2015 17:45:34 +0000 Message-ID: <20151201174534.GA34256@bricha3-MOBL3> References: <565C7684.2090901@ecotelecom.ru> <59AF69C657FD0841A61C55336867B5B03598ABFB@IRSMSX103.ger.corp.intel.com> <565DD927.6030403@ecotelecom.ru> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: dev@dpdk.org To: Alexey Bogdanenko Return-path: Received: from mga02.intel.com (mga02.intel.com [134.134.136.20]) by dpdk.org (Postfix) with ESMTP id 367EE12A8 for ; Tue, 1 Dec 2015 18:45:47 +0100 (CET) Content-Disposition: inline In-Reply-To: <565DD927.6030403@ecotelecom.ru> List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Sender: "dev" On Tue, Dec 01, 2015 at 08:30:15PM +0300, Alexey Bogdanenko wrote: > On 11/30/2015 07:53 PM, Richardson, Bruce wrote: > > > > > >>-----Original Message----- > >>From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Alexey Bogdanenko > >>Sent: Monday, November 30, 2015 4:17 PM > >>To: dev@dpdk.org > >>Subject: [dpdk-dev] Unable to configure ethdev in secondary process using > >>ring PMD > >> > >>Hello, > >> > >>I would like to setup communication between two existing DPDK applications > >>and run them on the same host. > >> > >>"Connecting their ports" in some way in order not to rewrite the > >>applications would be very desirable. Specifically, I would like one > >>process to send packets and the second process to receive the packets > >>using rte_eth_tx_burst() and rte_eth_rx_burst() respectively. > >> > >>The most straightforward way to accomplish this seems to be by using ring > >>based PMD API as described in the documentation [1] and email [2]. > >>To adapt the example from the documentation to multi-process scenario, I > >>call rte_ring_create() and rte_eth_from_rings() in the primary process, > >>rte_ring_lookup() and rte_eth_from_rings() in the secondary process. > >>After that each process calls rte_eth_dev_configure(). > >> > >>Unfortunately, the function returns -1001 in the secondary process, which > >>is explained in debug log: > >> > >>PMD: rte_eth_dev_configure: Cannot run in secondary processes > >> > >>Is it possible to connect the applications as described above? Any advice > >>would be appreciated. > >> > >>References: > >> > >>1. Network Interface Controller Drivers. Chapter 8. > >>Libpcap and Ring Based Poll Mode Drivers. > >> > >>2. DPDK ML. Fri Dec 6 07:22:06 CET 2013. How to know corresponding device > >>from port number. Tetsuya.Mukawa > >> > >>Thanks, > >> > >>Alexey Bogdanenko > > > >Hi Alexey, > > > >The ring PMDs returned from eth_from_rings should be all ready to be used without having to explicitly configure it or set up the queues. > > > >/Bruce > > > > Thanks for the quick reply, > > I updated dpdk from v2.1.0 to a more recent version (near v2.2.0-rc2), > removed calls to rte_eth_dev_configure(), rte_eth_rx_queue_setup(). It > solved the problem. > > Your advice was very helpful. > > However, I encountered a rather minor but similar issue, which is that > rte_eth_dev_start() returns -1001 in the secondary processes. The message I > get is: > > rte_eth_dev_start: Cannot run in secondary processes > > Now, I could avoid calling the function altogether, however in this case > rte_eth_link_get_nowait() reports that the link status is down which is a > bit inconvenient. > > Did I miss anything or is it just a limitation of ring PMD? > > Alexey Bogdanenko Sounds like a limitation that shouldn't be there. Possibly a bug. /Bruce