From patchwork Sun Feb 4 18:18:31 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Rao, Nikhil" X-Patchwork-Id: 34928 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id D60461B1D5; Sun, 4 Feb 2018 19:18:06 +0100 (CET) Received: from mga06.intel.com (mga06.intel.com [134.134.136.31]) by dpdk.org (Postfix) with ESMTP id C5E041B1A4 for ; Sun, 4 Feb 2018 19:17:55 +0100 (CET) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga008.fm.intel.com ([10.253.24.58]) by orsmga104.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 04 Feb 2018 10:17:49 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.46,460,1511856000"; d="scan'208";a="15359022" Received: from unknown (HELO localhost.iind.intel.com) ([10.224.122.216]) by fmsmga008.fm.intel.com with ESMTP; 04 Feb 2018 10:17:47 -0800 From: Nikhil Rao To: dev@dpdk.org Cc: nikhil.rao@intel.com, vipin.varghese@intel.com, deepak.k.jain@intel.com, jerin.jacob@caviumnetworks.com Date: Sun, 4 Feb 2018 23:48:31 +0530 Message-Id: <1517768311-827-1-git-send-email-nikhil.rao@intel.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1517352989-11720-1-git-send-email-vipin.varghese@intel.com> References: <1517352989-11720-1-git-send-email-vipin.varghese@intel.com> Subject: [dpdk-dev] [PATCH v2] eventdev: fix unchecked return in default Rx adapter conf cb 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" The default adapter configuration callback is invoked when a Rx queue is added to the adapter and the adapter detects that a SW service is needed. The adapter needs to re-configure the device with an additional port and to do do, it needs to stop the device and restart it after it is done reconfiguring it. This patch adds code to check the return code of rte_event_dev_start() for both when the reconfiguration fails and when it succeeds and introduces a new error code (-EIO) for the first case. Fixes: 9c38b704d280 ("eventdev: add eth Rx adapter implementation") Coverity issue: 257000 Signed-off-by: Nikhil Rao Acked-by: Jerin Jacob --- lib/librte_eventdev/rte_event_eth_rx_adapter.h | 6 ++++++ lib/librte_eventdev/rte_event_eth_rx_adapter.c | 8 +++++--- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.h b/lib/librte_eventdev/rte_event_eth_rx_adapter.h index 6a9e7ed..c20507b 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.h +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.h @@ -321,6 +321,12 @@ int rte_event_eth_rx_adapter_free(uint8_t id); * @return * - 0: Success, Receive queue added correctly. * - <0: Error code on failure. + * - (-EIO) device reconfiguration and restart error. The adapter reconfigures + * the event device with an additional port if it is required to use a service + * function for packet transfer from the ethernet device to the event device. + * If the device had been started before this call, this error code indicates + * an error in restart following an error in reconfiguration, i.e., a + * combination of the two error codes. */ int rte_event_eth_rx_adapter_queue_add(uint8_t id, uint8_t eth_dev_id, diff --git a/lib/librte_eventdev/rte_event_eth_rx_adapter.c b/lib/librte_eventdev/rte_event_eth_rx_adapter.c index 90106e6..9aece9f 100644 --- a/lib/librte_eventdev/rte_event_eth_rx_adapter.c +++ b/lib/librte_eventdev/rte_event_eth_rx_adapter.c @@ -602,8 +602,10 @@ default_conf_cb(uint8_t id, uint8_t dev_id, if (ret) { RTE_EDEV_LOG_ERR("failed to configure event dev %u\n", dev_id); - if (started) - rte_event_dev_start(dev_id); + if (started) { + if (rte_event_dev_start(dev_id)) + return -EIO; + } return ret; } @@ -617,7 +619,7 @@ default_conf_cb(uint8_t id, uint8_t dev_id, conf->event_port_id = port_id; conf->max_nb_rx = 128; if (started) - rte_event_dev_start(dev_id); + ret = rte_event_dev_start(dev_id); rx_adapter->default_cb_arg = 1; return ret; }