From patchwork Tue Oct 5 17:19:14 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Havl=C3=ADk_Martin?= X-Patchwork-Id: 100547 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id C34BFA0C4D; Tue, 5 Oct 2021 19:30:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 916AA4140D; Tue, 5 Oct 2021 19:30:02 +0200 (CEST) Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.176.14]) by mails.dpdk.org (Postfix) with ESMTP id BEE9041407 for ; Tue, 5 Oct 2021 19:30:01 +0200 (CEST) Received: from dpdk-test7.liberouter.org (rt-tmc-kou.liberouter.org [195.113.172.126]) (authenticated bits=0) by eva.fit.vutbr.cz (8.16.1/8.16.1) with ESMTPSA id 195HJNlY050467 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Tue, 5 Oct 2021 19:19:27 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stud.fit.vutbr.cz; s=studfit; t=1633454368; bh=BCTAJ8QZZFJew4TuBTDx7SQdchVF+zGKPYWfiLGSMSQ=; h=From:To:Cc:Subject:Date; b=UfaqSI88NRcHK3S1E8h+73GEwZ4eCWBGTHh40yp/LwItmelJ5aaXdq6D8BORkEFK8 l3U+v5BRtmb1/0JYEkjwnTHo+9vOKaapom0COwWQ0iODD7bQYSMBNmPEzeoDX6KWc0 IOT9G0Fa5tlMhmxcAOFIcU62d7EUFttqkdGeVh/0= From: Martin Havlik To: xhavli56@stud.fit.vutbr.cz, Thomas Monjalon , Ferruh Yigit , Andrew Rybchenko , "Min Hu (Connor)" , Ajit Khaparde , Xueming Li , Bing Zhao , Chengchang Tang Cc: Jan Viktorin , dev@dpdk.org, chas3@att.com, haiyue.wang@intel.com, ivan.ilchenko@oktetlabs.ru, aman.deep.singh@intel.com, kirankn@juniper.net, lirongqing@baidu.com Date: Tue, 5 Oct 2021 19:19:14 +0200 Message-Id: <20211005171914.2936-1-xhavli56@stud.fit.vutbr.cz> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 1/2] lib/ethdev: introduce RTE_ETH_DEV_CAPA_FLOW_CREATE_BEFORE_START X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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" Not all PMDs allow RTE flow rules to be created before start. This capability will be set for the ones that allow it. Signed-off-by: Martin Havlik Acked-by: Ajit Khaparde --- lib/ethdev/rte_ethdev.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/ethdev/rte_ethdev.h b/lib/ethdev/rte_ethdev.h index bef24173cf..3115a6fccf 100644 --- a/lib/ethdev/rte_ethdev.h +++ b/lib/ethdev/rte_ethdev.h @@ -1448,6 +1448,8 @@ struct rte_eth_conf { #define RTE_ETH_DEV_CAPA_RUNTIME_RX_QUEUE_SETUP 0x00000001 /** Device supports Tx queue setup after device started. */ #define RTE_ETH_DEV_CAPA_RUNTIME_TX_QUEUE_SETUP 0x00000002 +/** Device supports RTE Flow rule creation before device start. */ +#define RTE_ETH_DEV_CAPA_FLOW_CREATE_BEFORE_START 0x00000004 /**@}*/ /* From patchwork Tue Oct 5 17:19:39 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Havl=C3=ADk_Martin?= X-Patchwork-Id: 100540 X-Patchwork-Delegate: ferruh.yigit@amd.com Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 3FB81A0C4C; Tue, 5 Oct 2021 19:20:02 +0200 (CEST) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 2E1AA41401; Tue, 5 Oct 2021 19:20:02 +0200 (CEST) Received: from eva.fit.vutbr.cz (eva.fit.vutbr.cz [147.229.176.14]) by mails.dpdk.org (Postfix) with ESMTP id 7CA1C413FB for ; Tue, 5 Oct 2021 19:20:00 +0200 (CEST) Received: from dpdk-test7.liberouter.org (rt-tmc-kou.liberouter.org [195.113.172.126]) (authenticated bits=0) by eva.fit.vutbr.cz (8.16.1/8.16.1) with ESMTPSA id 195HJiOc050691 (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NO); Tue, 5 Oct 2021 19:19:48 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stud.fit.vutbr.cz; s=studfit; t=1633454388; bh=7fwWFed/S8rQ85Ez6ZgalhP5mu+2w46NtssSg9pYo7c=; h=From:To:Cc:Subject:Date; b=HcTpS5dW0n0g9zy6feYhUFZLM8cDXvsFxT43ggQ1lnLtqxly5IiGuccjGxOrpSDp2 fN3pT7S0sRRU6swkzIKzA5vW5wZQLqBwgTm/lXWuoN8znTo9Iue17x+jz4qIBgpA9q n5u7/hrYHnBUr34evse/ag2m7gHYyQaLhpZhxAOM= From: Martin Havlik To: xhavli56@stud.fit.vutbr.cz, Chas Williams , "Min Hu (Connor)" , Ferruh Yigit , Thomas Monjalon , Andrew Rybchenko , Ajit Khaparde , Ivan Ilchenko , Aman Deep Singh , Chengwen Feng , Kiran KN , RongQing Li Cc: Jan Viktorin , dev@dpdk.org, haiyue.wang@intel.com Date: Tue, 5 Oct 2021 19:19:39 +0200 Message-Id: <20211005171939.2989-1-xhavli56@stud.fit.vutbr.cz> X-Mailer: git-send-email 2.27.0 MIME-Version: 1.0 Subject: [dpdk-dev] [PATCH 2/2] net/bonding: ensure device is started for dedicated queues setup X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 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 flow rule governing dedicated queues is now created when the slave allows it. That is before or after the start of the slave device, as the PMD is able to. Signed-off-by: Martin Havlik --- drivers/net/bonding/rte_eth_bond_pmd.c | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/drivers/net/bonding/rte_eth_bond_pmd.c b/drivers/net/bonding/rte_eth_bond_pmd.c index 8ed9e036f4..66b38610f8 100644 --- a/drivers/net/bonding/rte_eth_bond_pmd.c +++ b/drivers/net/bonding/rte_eth_bond_pmd.c @@ -1685,6 +1685,7 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, int errval; uint16_t q_id; + bool device_started = false; struct rte_flow_error flow_error; struct bond_dev_private *internals = bonded_eth_dev->data->dev_private; @@ -1815,6 +1816,16 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, internals->mode4.dedicated_queues.flow[slave_eth_dev->data->port_id], &flow_error); + if (slave_eth_dev->dev_capa & RTE_ETH_DEV_CAPA_FLOW_CREATE_BEFORE_START == 0) { + errval = rte_eth_dev_start(slave_eth_dev->data->port_id); + if (errval != 0) { + RTE_BOND_LOG(ERR, "rte_eth_dev_start: port=%u, err (%d)", + slave_eth_dev->data->port_id, errval); + return errval; + } + } + device_started = true; + errval = bond_ethdev_8023ad_flow_set(bonded_eth_dev, slave_eth_dev->data->port_id); if (errval != 0) { @@ -1825,12 +1836,14 @@ slave_configure(struct rte_eth_dev *bonded_eth_dev, } } - /* Start device */ - errval = rte_eth_dev_start(slave_eth_dev->data->port_id); - if (errval != 0) { - RTE_BOND_LOG(ERR, "rte_eth_dev_start: port=%u, err (%d)", - slave_eth_dev->data->port_id, errval); - return -1; + if (!device_started) { + /* Start device */ + errval = rte_eth_dev_start(slave_eth_dev->data->port_id); + if (errval != 0) { + RTE_BOND_LOG(ERR, "rte_eth_dev_start: port=%u, err (%d)", + slave_eth_dev->data->port_id, errval); + return -1; + } } /* If RSS is enabled for bonding, synchronize RETA */