From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga18.intel.com (mga18.intel.com [134.134.136.126]) by dpdk.org (Postfix) with ESMTP id E2DEA4CBD; Sun, 3 Jun 2018 13:32:05 +0200 (CEST) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga001.jf.intel.com ([10.7.209.18]) by orsmga106.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 03 Jun 2018 04:32:03 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,472,1520924400"; d="scan'208";a="61374098" Received: from unknown (HELO localhost.localdomain.localdomain) ([10.224.122.193]) by orsmga001.jf.intel.com with ESMTP; 03 Jun 2018 04:32:02 -0700 From: Nikhil Rao To: jerin.jacob@caviumnetworks.com Cc: dev@dpdk.org, Nikhil Rao , stable@dpdk.org Date: Sun, 3 Jun 2018 17:11:08 +0530 Message-Id: <1528026068-45239-1-git-send-email-nikhil.rao@intel.com> X-Mailer: git-send-email 1.8.3.1 Subject: [dpdk-dev] [PATCH] eventdev: fix missing update to Rx adaper WRR position 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: Sun, 03 Jun 2018 11:32:06 -0000 After dequeuing Rx packets and enqueueing them to the temporary buffer towards eventdev, the packet Rx loop exits if the temporary buffer is full but the current WRR position is not saved. Save away the current value of the WRR position, so packets are dequeued from the correct Rx queue in the next invocation. Fixes: 9c38b704d280 ("eventdev: add eth Rx adapter implementation") Suggested-by: Gage Eads Signed-off-by: Nikhil Rao Cc: stable@dpdk.org --- lib/librte_eventdev/rte_event_eth_rx_adapter.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c index 6f70509..53a3788 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c @@ -517,8 +517,10 @@ static uint16_t gcd_u16(uint16_t a, uint16_t b) */ if (buf->count >= BATCH_SIZE) flush_event_buffer(rx_adapter); - if (BATCH_SIZE > (ETH_EVENT_BUFFER_SIZE - buf->count)) + if (BATCH_SIZE > (ETH_EVENT_BUFFER_SIZE - buf->count)) { + rx_adapter->wrr_pos = wrr_pos; break; + } stats->rx_poll_count++; n = rte_eth_rx_burst(d, qid, mbufs, BATCH_SIZE); -- 1.8.3.1