From patchwork Fri Apr 7 10:48:55 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Marcin Wojtas X-Patchwork-Id: 23318 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [IPv6:::1]) by dpdk.org (Postfix) with ESMTP id 5DEA937B3; Fri, 7 Apr 2017 12:41:17 +0200 (CEST) Received: from mail-lf0-f50.google.com (mail-lf0-f50.google.com [209.85.215.50]) by dpdk.org (Postfix) with ESMTP id E37392B87 for ; Fri, 7 Apr 2017 12:41:14 +0200 (CEST) Received: by mail-lf0-f50.google.com with SMTP id z15so40023763lfd.1 for ; Fri, 07 Apr 2017 03:41:14 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=semihalf-com.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=cgHFK0loO3MqieRTBsYZom/Etl9vPJgvhHm3E112tfU=; b=yV6t+ALK7p0S8TjIBoJLv0kTHzAdE22nsw6uoCWAjQMu6VSADT2t1upkdKHCYcnMs7 WC4v4W8lYssXkanwTtV90tYr3EAcMqtpyGsfX4HU/E7kcgI+UkfN5Thdx9genUfo/XqW o+iozFgklOOZiwqRenebmcEVdI4oueZM4ZAzQXm2017DnABLB57azI+y9blrI2ldIExX SdLrmsIUxw++nj+gEXb7zXaoG2oHvFJ3X1FWDOe2sF/Z4fJiTVUvPc2TP2b5D+zipJb9 Kpc4FJTN+7m/clYLPxX81gT4rFy4N8fVL/eb+PKQ8c5X+TspsSvhBgXAdacMi8D67Uow roSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=cgHFK0loO3MqieRTBsYZom/Etl9vPJgvhHm3E112tfU=; b=JSpa5KW+Qakgom0Adsw9QG/1/kip8daXQOFEdZBOiY9B86plpK39Fi5TRUv6amsWUt yQIsFChep8uzrq3RdgbC3/IrbQq+LVYEt/9Ehe4NvgLNeQ1cXSyszLbZIwJlQv9S4KtY 91CK+CSpaeG6xa+ZHHZy66W7au6KnT6ZsmYXYEBbGV49M7YEKAqvG0cOEvGF8iPCzAdl 6opD+zRzeJD8ZGaAAI3eULy8UVLK/Wb2k0o8lsAGrmqTr/6sioNmNJ+6Epa5E2jBL9yO OWUIKnZwrJWBYqVrOPkdoAs4MZtnf0lF5pshTYuaFRr9yMeA9wUcfJVv14KvckKl8nhH 1UPg== X-Gm-Message-State: AFeK/H3IgyiHU4Sp2isqqfOMMtIsSnJ9rwVj/n85VTz5cBCVseb92DnVvogrxKw6psguVQ== X-Received: by 10.46.88.79 with SMTP id x15mr11382349ljd.39.1491561674509; Fri, 07 Apr 2017 03:41:14 -0700 (PDT) Received: from enkidu.local (31-172-191-173.noc.fibertech.net.pl. [31.172.191.173]) by smtp.gmail.com with ESMTPSA id g3sm873290lfe.34.2017.04.07.03.41.13 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 07 Apr 2017 03:41:13 -0700 (PDT) From: Marcin Wojtas To: dev@dpdk.org Cc: jan.medala@outlook.com, jpalider@gmail.com, netanel@amazon.com, evgenys@amazon.com, matua@amazon.com, gtzalik@amazon.com, mw@semihalf.com, mk@semihalf.com Date: Fri, 7 Apr 2017 12:48:55 +0200 Message-Id: <1491562138-2178-2-git-send-email-mw@semihalf.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1491562138-2178-1-git-send-email-mw@semihalf.com> References: <1491562138-2178-1-git-send-email-mw@semihalf.com> Subject: [dpdk-dev] [PATCH 1/4] net/ena: fix incorrect Rx descriptors allocation 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" From: Michal Krawczyk When application tried to allocate 1024 descriptors, device was not initializing properly. This patch solves it by avoiding allocation of all descriptors in the ring in one attempt. At least one descriptor must remain unused in the HW ring. Fixes: 1173fca25af9 ("ena: add polling-mode driver") Signed-off-by: Michal Krawczyk --- drivers/net/ena/ena_ethdev.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/drivers/net/ena/ena_ethdev.c b/drivers/net/ena/ena_ethdev.c index b5e6db6..2345bab 100644 --- a/drivers/net/ena/ena_ethdev.c +++ b/drivers/net/ena/ena_ethdev.c @@ -919,7 +919,7 @@ static int ena_start(struct rte_eth_dev *dev) static int ena_queue_restart(struct ena_ring *ring) { - int rc; + int rc, bufs_num; ena_assert_msg(ring->configured == 1, "Trying to restart unconfigured queue\n"); @@ -930,8 +930,9 @@ static int ena_queue_restart(struct ena_ring *ring) if (ring->type == ENA_RING_TYPE_TX) return 0; - rc = ena_populate_rx_queue(ring, ring->ring_size); - if ((unsigned int)rc != ring->ring_size) { + bufs_num = ring->ring_size - 1; + rc = ena_populate_rx_queue(ring, bufs_num); + if (rc != bufs_num) { PMD_INIT_LOG(ERR, "Failed to populate rx ring !"); return (-1); }