From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from dpdk.org (dpdk.org [92.243.14.124]) by dpdk.space (Postfix) with ESMTP id C0CC3A00E6 for ; Tue, 11 Jun 2019 10:59:15 +0200 (CEST) Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 8B50B1C354; Tue, 11 Jun 2019 10:58:43 +0200 (CEST) Received: from mx0b-0016f401.pphosted.com (mx0a-0016f401.pphosted.com [67.231.148.174]) by dpdk.org (Postfix) with ESMTP id 07C8E1C35E for ; Tue, 11 Jun 2019 10:58:41 +0200 (CEST) Received: from pps.filterd (m0045849.ppops.net [127.0.0.1]) by mx0a-0016f401.pphosted.com (8.16.0.27/8.16.0.27) with SMTP id x5B8u5dg021432; Tue, 11 Jun 2019 01:58:41 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-transfer-encoding : mime-version; s=pfpt0818; bh=QIjvVILXmbjpONQQKsFV4IZLimWwUTBYIvl07OulUpo=; b=sT8vbRZrEr57Tpurw+vSJzXZYAK91v6ga3zm/vE6CpefuH2pFaN+bwgQ9Zo/mTfxhmcz x9+BXceMAvquCNkBK5L+I6cfwLjCvUDVkCGlyQnlC04a6ScmgGeUF3MyKV1NGG4qIBe7 hxMjY/9P4nCkP4onDf2ETq9rZZ+NW3tOWddgZ9ozAknqlpUYLwbDslicfrSejeBpX/IW yBkuxBr78bSqXf701H0SXQJrITW/VHouBG81mur9aLll8H6FsScYFH04uPhd2AWnqA6B O+SKPauitZzOonT71ZI6WJDVbs64QrLRj4SLQkD6REHPmp3zP5CPJVE8N+ttTG8iiLJR pA== Received: from sc-exch01.marvell.com ([199.233.58.181]) by mx0a-0016f401.pphosted.com with ESMTP id 2t20h321dt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-SHA384 bits=256 verify=NOT); Tue, 11 Jun 2019 01:58:41 -0700 Received: from SC-EXCH01.marvell.com (10.93.176.81) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3; Tue, 11 Jun 2019 01:58:40 -0700 Received: from NAM04-BN3-obe.outbound.protection.outlook.com (104.47.46.52) by SC-EXCH01.marvell.com (10.93.176.81) with Microsoft SMTP Server (TLS) id 15.0.1367.3 via Frontend Transport; Tue, 11 Jun 2019 01:58:40 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=marvell.onmicrosoft.com; s=selector2-marvell-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=QIjvVILXmbjpONQQKsFV4IZLimWwUTBYIvl07OulUpo=; b=ibRLL0d9k7FP0G8kz9C6jC1yGcbjQzffxZ5fw+R5n1aTFrLg9MDC6Dh5x6jN51d+Sm4tq3l4sAKjCrT1hVbz0pWZbbn4XWO+8HujF/YUZFaG/Jw7S5ZtLxuTumprrO0AFUBW6pvp3IXfh1B1lAkMe5qPlqc1MqcYR2TtLxRlQ+o= Received: from BN8PR18MB2691.namprd18.prod.outlook.com (20.179.72.94) by BN8PR18MB2835.namprd18.prod.outlook.com (20.179.74.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.1965.17; Tue, 11 Jun 2019 08:58:35 +0000 Received: from BN8PR18MB2691.namprd18.prod.outlook.com ([fe80::b86e:d3b3:34b4:377e]) by BN8PR18MB2691.namprd18.prod.outlook.com ([fe80::b86e:d3b3:34b4:377e%5]) with mapi id 15.20.1965.017; Tue, 11 Jun 2019 08:58:35 +0000 From: Sunil Kumar Kori To: Anoob Joseph , Jerin Jacob Kollanukkaran , Nikhil Rao , "Erik Gabriel Carrillo" , Abhinandan Gujjar , Bruce Richardson , Pablo de Lara CC: Narayana Prasad Raju Athreya , "dev@dpdk.org" , Lukas Bartosik , "Pavan Nikhilesh Bhagavatula" , Hemant Agrawal , Nipun Gupta , Harry van Haaren , =?iso-8859-1?Q?Mattias_R=F6nnblom?= , Liang Ma , "Anoob Joseph" Thread-Topic: [EXT] [dpdk-dev] [PATCH 24/39] eventdev: add Rx adapter init in eventmode Thread-Index: AQHVGi0JnoWLu7ENnEimo7XR4XNf16aWMMXg Date: Tue, 11 Jun 2019 08:58:35 +0000 Message-ID: References: <1559580584-5728-1-git-send-email-anoobj@marvell.com> <1559580584-5728-25-git-send-email-anoobj@marvell.com> In-Reply-To: <1559580584-5728-25-git-send-email-anoobj@marvell.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-originating-ip: [14.140.231.66] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 805292c8-9b97-48a3-4d9d-08d6ee4afd03 x-microsoft-antispam: BCL:0; PCL:0; RULEID:(2390118)(7020095)(4652040)(8989299)(4534185)(7168020)(4627221)(201703031133081)(201702281549075)(8990200)(5600148)(711020)(4605104)(1401327)(2017052603328)(7193020); SRVR:BN8PR18MB2835; x-ms-traffictypediagnostic: BN8PR18MB2835: x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:3513; x-forefront-prvs: 006546F32A x-forefront-antispam-report: SFV:NSPM; SFS:(10009020)(136003)(366004)(396003)(376002)(39860400002)(346002)(189003)(199004)(13464003)(446003)(186003)(52536014)(74316002)(476003)(107886003)(99286004)(53936002)(26005)(7736002)(11346002)(25786009)(6506007)(7696005)(76116006)(305945005)(8676002)(6116002)(4326008)(64756008)(81156014)(76176011)(3846002)(71200400001)(102836004)(66946007)(81166006)(71190400001)(66446008)(6246003)(66556008)(66476007)(256004)(73956011)(9686003)(55236004)(478600001)(2906002)(5660300002)(86362001)(486006)(8936002)(68736007)(33656002)(110136005)(14454004)(54906003)(7416002)(229853002)(55016002)(66066001)(6436002)(316002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN8PR18MB2835; H:BN8PR18MB2691.namprd18.prod.outlook.com; FPR:; SPF:None; LANG:en; PTR:InfoNoRecords; MX:1; A:1; received-spf: None (protection.outlook.com: marvell.com does not designate permitted sender hosts) x-ms-exchange-senderadcheck: 1 x-microsoft-antispam-message-info: VP+8Vyzvf7Scq7ZYEIR72eC5N0V0YejAePZ7T3NiT+6ZIyPrkOBRkgcTzBDs0zVj0T1BRwRBlen9GxceBcQnaHCdlJGQtvd04gX3sUvmWLFX5OFn5gjWAriAripFyD+eS/6c9+YiVHIPjZHDsNgygUkOmvi3Bog2fLoBBmh4DqIjsFo6AEGOTPtuTO/OYeJRAD+MzmmoFw4JQgZXTxdM1DBi3WdTSv+g9E87OEgU8kwt1ovz+CT8HlVWwuS2vbpVq2TxESU8rVRO2LfvqevtquY1NEAdkR8mZIkpEcJ64FD/SmLm29eGzO2HWeE/WScCH3qkNoJJxiT2oUJ6VM4uz+O/N7gAq0kljwKsyDoM2I2p6phI/X+SCueNmSu61Q5DR1KEcqL/l6TNjHS6TzAOdTipueXpUU+Sa2mGuIhb6Iw= Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-MS-Exchange-CrossTenant-Network-Message-Id: 805292c8-9b97-48a3-4d9d-08d6ee4afd03 X-MS-Exchange-CrossTenant-originalarrivaltime: 11 Jun 2019 08:58:35.8027 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 70e1fb47-1155-421d-87fc-2e58f638b6e0 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: skori@marvell.com X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN8PR18MB2835 X-OriginatorOrg: marvell.com X-Proofpoint-Virus-Version: vendor=fsecure engine=2.50.10434:, , definitions=2019-06-11_04:, , signatures=0 Subject: Re: [dpdk-dev] [EXT] [PATCH 24/39] eventdev: add Rx adapter init in eventmode 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" Regards Sunil Kumar Kori >-----Original Message----- >From: dev On Behalf Of Anoob Joseph >Sent: Monday, June 3, 2019 10:19 PM >To: Jerin Jacob Kollanukkaran ; Nikhil Rao >; Erik Gabriel Carrillo ; >Abhinandan Gujjar ; Bruce Richardson >; Pablo de Lara > >Cc: Narayana Prasad Raju Athreya ; dev@dpdk.org; >Lukas Bartosik ; Pavan Nikhilesh Bhagavatula >; Hemant Agrawal >; Nipun Gupta ; Harry >van Haaren ; Mattias R=F6nnblom >; Liang Ma ; Anoob >Joseph >Subject: [EXT] [dpdk-dev] [PATCH 24/39] eventdev: add Rx adapter init in >eventmode > >External Email > >---------------------------------------------------------------------- >Adding rx adapter conf. The helper init routine would be initializing the = rx >adapter according to the conf. > >Signed-off-by: Anoob Joseph >Signed-off-by: Lukasz Bartosik >--- > lib/librte_eventdev/rte_eventmode_helper.c | 123 >+++++++++++++++++++++ > .../rte_eventmode_helper_internal.h | 27 +++++ > 2 files changed, 150 insertions(+) > >diff --git a/lib/librte_eventdev/rte_eventmode_helper.c >b/lib/librte_eventdev/rte_eventmode_helper.c >index 8faa4ea..a57f837 100644 >--- a/lib/librte_eventdev/rte_eventmode_helper.c >+++ b/lib/librte_eventdev/rte_eventmode_helper.c >@@ -6,6 +6,7 @@ > #include > #include > #include >+#include > #include > > #include "rte_eventmode_helper_internal.h" >@@ -326,6 +327,123 @@ rte_eventmode_helper_initialize_ethdev(struct >eventmode_conf *em_conf) > return 0; > } > >+static int >+rx_adapter_configure(struct eventmode_conf *em_conf, >+ struct rx_adapter_conf *adapter) >+{ >+ int j; >+ int ret; >+ uint8_t eventdev_id; >+ uint32_t service_id; >+ struct adapter_connection_info *conn; >+ struct rte_event_port_conf port_conf =3D {0}; >+ struct rte_event_eth_rx_adapter_queue_conf queue_conf =3D {0}; >+ struct rte_event_dev_info evdev_default_conf =3D {0}; >+ >+ /* Get event dev ID */ >+ eventdev_id =3D adapter->eventdev_id; >+ >+ /* Create rx_adapter */ >+ >+ /* Get default configuration of event dev */ >+ ret =3D rte_event_dev_info_get(eventdev_id, &evdev_default_conf); >+ if (ret < 0) { >+ RTE_EM_HLPR_LOG_ERR( >+ "Error in getting event device info[devID:%d]", >+ eventdev_id); >+ return ret; >+ } >+ >+ /* Setup port conf */ >+ port_conf.new_event_threshold =3D 1200; >+ port_conf.dequeue_depth =3D >+ > evdev_default_conf.max_event_port_dequeue_depth; >+ port_conf.enqueue_depth =3D >+ > evdev_default_conf.max_event_port_enqueue_depth; >+ >+ /* Create Rx adapter */ >+ ret =3D rte_event_eth_rx_adapter_create(adapter->adapter_id, >+ adapter->eventdev_id, >+ &port_conf); >+ if (ret < 0) { >+ RTE_EM_HLPR_LOG_ERR("Error in rx adapter creation"); >+ return ret; >+ } >+ >+ /* Setup various connections in the adapter */ >+ >+ queue_conf.rx_queue_flags =3D >+ > RTE_EVENT_ETH_RX_ADAPTER_QUEUE_FLOW_ID_VALID; >+ >+ for (j =3D 0; j < adapter->nb_connections; j++) { >+ /* Get connection */ >+ conn =3D &(adapter->conn[j]); >+ >+ /* Setup queue conf */ >+ queue_conf.ev.queue_id =3D conn->eventq_id; >+ queue_conf.ev.sched_type =3D em_conf- >>ext_params.sched_type; >+ >+ /* Set flow ID as ethdev ID */ >+ queue_conf.ev.flow_id =3D conn->ethdev_id; >+ >+ /* Add queue to the adapter */ >+ ret =3D rte_event_eth_rx_adapter_queue_add( >+ adapter->adapter_id, >+ conn->ethdev_id, >+ conn->ethdev_rx_qid, >+ &queue_conf); >+ if (ret < 0) { >+ RTE_EM_HLPR_LOG_ERR( >+ "Error in adding eth queue in Rx adapter"); >+ return ret; >+ } >+ } >+ >+ /* Get the service ID used by rx adapter */ >+ ret =3D rte_event_eth_rx_adapter_service_id_get(adapter->adapter_id, >+ &service_id); >+ if (ret !=3D -ESRCH && ret !=3D 0) { >+ RTE_EM_HLPR_LOG_ERR( >+ "Error getting service ID used by Rx adapter"); >+ return ret; >+ } >+ >+ /* >+ * TODO >+ * Rx core will invoke the service when required. The runstate check >+ * is not required. >+ * >+ */ >+ rte_service_set_runstate_mapped_check(service_id, 0); >+ >+ /* Start adapter */ >+ ret =3D rte_event_eth_rx_adapter_start(adapter->adapter_id); >+ if (ret) { >+ RTE_EM_HLPR_LOG_ERR("Error in starting rx adapter"); >+ return ret; >+ } >+ >+ return 0; >+} >+ >+static int >+rte_eventmode_helper_initialize_rx_adapter(struct eventmode_conf >+*em_conf) { >+ int i, ret; >+ struct rx_adapter_conf *adapter; >+ >+ /* Configure rx adapters */ >+ for (i =3D 0; i < em_conf->nb_rx_adapter; i++) { >+ adapter =3D &(em_conf->rx_adapter[i]); >+ ret =3D rx_adapter_configure(em_conf, adapter); >+ if (ret < 0) { >+ RTE_EM_HLPR_LOG_ERR("Rx adapter configuration >failed"); >+ return ret; If rx_adapter_configure gets failed for second adapter (say em_conf->nb_rx_= adapter =3D 2) then cleanup for first adapter is required or not ? What will be application's view in this case ? Check for others components= too. >+ } >+ } >+ return 0; >+} >+ > int32_t __rte_experimental > rte_eventmode_helper_initialize_devs( > struct rte_eventmode_helper_conf *mode_conf) @@ -370,6 >+488,11 @@ rte_eventmode_helper_initialize_devs( > if (ret !=3D 0) > return ret; > >+ /* Setup Rx adapter */ >+ ret =3D rte_eventmode_helper_initialize_rx_adapter(em_conf); >+ if (ret !=3D 0) >+ return ret; >+ > /* Start eth devices after setting up adapter */ > RTE_ETH_FOREACH_DEV(portid) { > >diff --git a/lib/librte_eventdev/rte_eventmode_helper_internal.h >b/lib/librte_eventdev/rte_eventmode_helper_internal.h >index 2a6cd90..9c68605 100644 >--- a/lib/librte_eventdev/rte_eventmode_helper_internal.h >+++ b/lib/librte_eventdev/rte_eventmode_helper_internal.h >@@ -35,6 +35,12 @@ > /* Max event devices supported */ > #define EVENT_MODE_MAX_EVENT_DEVS RTE_EVENT_MAX_DEVS > >+/* Max Rx adapters supported */ >+#define EVENT_MODE_MAX_RX_ADAPTERS RTE_EVENT_MAX_DEVS >+ >+/* Max Rx adapter connections */ >+#define EVENT_MODE_MAX_CONNECTIONS_PER_ADAPTER 16 >+ > /* Max event queues supported per event device */ #define >EVENT_MODE_MAX_EVENT_QUEUES_PER_DEV >RTE_EVENT_MAX_QUEUES_PER_DEV > >@@ -50,12 +56,33 @@ struct eventdev_params { > uint8_t ev_queue_mode; > }; > >+/* Rx adapter connection info */ >+struct adapter_connection_info { >+ uint8_t ethdev_id; >+ uint8_t eventq_id; >+ int32_t ethdev_rx_qid; >+}; >+ >+/* Rx adapter conf */ >+struct rx_adapter_conf { >+ int32_t eventdev_id; >+ int32_t adapter_id; >+ uint32_t rx_core_id; >+ uint8_t nb_connections; >+ struct adapter_connection_info >+ > conn[EVENT_MODE_MAX_CONNECTIONS_PER_ADAPTER]; >+}; >+ > /* Eventmode conf data */ > struct eventmode_conf { > int nb_eventdev; > /**< No of event devs */ > struct eventdev_params >eventdev_config[EVENT_MODE_MAX_EVENT_DEVS]; > /**< Per event dev conf */ >+ uint8_t nb_rx_adapter; >+ /**< No of Rx adapters */ >+ struct rx_adapter_conf >rx_adapter[EVENT_MODE_MAX_RX_ADAPTERS]; >+ /**< Rx adapter conf */ > uint8_t nb_link; > /**< No of links */ > struct rte_eventmode_helper_event_link_info >-- >2.7.4