From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail.ecotelecom.ru (mail.ecotelecom.ru [193.105.59.24]) by dpdk.org (Postfix) with ESMTP id E2C2B8D99 for ; Tue, 1 Dec 2015 18:30:15 +0100 (CET) Received: from [10.210.0.253] (unknown [10.210.0.253]) by mail.ecotelecom.ru (Postfix) with ESMTPA id 970D2D402D5; Tue, 1 Dec 2015 20:30:15 +0300 (MSK) To: "Richardson, Bruce" References: <565C7684.2090901@ecotelecom.ru> <59AF69C657FD0841A61C55336867B5B03598ABFB@IRSMSX103.ger.corp.intel.com> From: Alexey Bogdanenko Message-ID: <565DD927.6030403@ecotelecom.ru> Date: Tue, 1 Dec 2015 20:30:15 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0 MIME-Version: 1.0 In-Reply-To: <59AF69C657FD0841A61C55336867B5B03598ABFB@IRSMSX103.ger.corp.intel.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Cc: dev@dpdk.org Subject: Re: [dpdk-dev] Unable to configure ethdev in secondary process using ring PMD X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: patches and discussions about DPDK List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 01 Dec 2015 17:30:16 -0000 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