From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from rcdn-iport-1.cisco.com (rcdn-iport-1.cisco.com [173.37.86.72]) by dpdk.org (Postfix) with ESMTP id 6675C7D0B for ; Fri, 25 Aug 2017 17:22:13 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=cisco.com; i=@cisco.com; l=1228; q=dns/txt; s=iport; t=1503674534; x=1504884134; h=from:to:cc:subject:date:message-id; bh=yMTLo8Q5rUQB/hGooPFR2OsdI3jeJvHoDVyq3YrrjYA=; b=Mz0tzJsF/vWg4N+jToq1YtRx0AS/QjvZXuzje8RtbgHZMLbIvpI1SJeC LhsGgLCdlrp3t39ek0/I53qfv4xyCaWcJWbiK4yfkKEhZGn/EGxdtAxu2 mIYBQyQ7fjifynHf9OdhDV/IeXxKbqRQMEyUboQSlbs4ZYaWCamNSPCfO U=; X-IronPort-AV: E=Sophos;i="5.41,426,1498521600"; d="scan'208";a="290945165" Received: from alln-core-12.cisco.com ([173.36.13.134]) by rcdn-iport-1.cisco.com with ESMTP/TLS/DHE-RSA-AES256-SHA; 25 Aug 2017 15:22:13 +0000 Received: from cpp-rtpbld-31.cisco.com (cpp-rtpbld-31.cisco.com [172.18.5.114]) by alln-core-12.cisco.com (8.14.5/8.14.5) with ESMTP id v7PFMD8U001845; Fri, 25 Aug 2017 15:22:13 GMT Received: by cpp-rtpbld-31.cisco.com (Postfix, from userid 140087) id C70D55AB; Fri, 25 Aug 2017 11:22:12 -0400 (EDT) From: David Harton To: skhare@vmware.com Cc: dev@dpdk.org, David Harton Date: Fri, 25 Aug 2017 11:22:11 -0400 Message-Id: <20170825152211.10911-1-dharton@cisco.com> X-Mailer: git-send-email 2.10.3.dirty Subject: [dpdk-dev] [PATCH] vmxnet3: replenish ring buffers in rx processing 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: Fri, 25 Aug 2017 15:22:14 -0000 vmxnet3 rx processing should replenish ring buffers after new buffers are available to prevent the interface from getting stuck in a state that no new work is processed. Signed-off-by: David Harton --- drivers/net/vmxnet3/vmxnet3_rxtx.c | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/drivers/net/vmxnet3/vmxnet3_rxtx.c b/drivers/net/vmxnet3/vmxnet3_rxtx.c index d9cf437..9861d35 100644 --- a/drivers/net/vmxnet3/vmxnet3_rxtx.c +++ b/drivers/net/vmxnet3/vmxnet3_rxtx.c @@ -880,6 +880,23 @@ } } + if (unlikely(nb_rxd == 0)) { + uint32_t avail; + for (ring_idx = 0; ring_idx < VMXNET3_RX_CMDRING_SIZE; ring_idx++) { + avail = vmxnet3_cmd_ring_desc_avail(&rxq->cmd_ring[ring_idx]); + if (unlikely(avail > 0)) { + /* try to alloc new buf and renew descriptors */ + vmxnet3_post_rx_bufs(rxq, ring_idx); + } + } + if (unlikely(rxq->shared->ctrl.updateRxProd)) { + for (ring_idx = 0; ring_idx < VMXNET3_RX_CMDRING_SIZE; ring_idx++) { + VMXNET3_WRITE_BAR0_REG(hw, rxprod_reg[ring_idx] + (rxq->queue_id * VMXNET3_REG_ALIGN), + rxq->cmd_ring[ring_idx].next2fill); + } + } + } + return nb_rx; } -- 1.8.3.1