From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-SN1-obe.outbound.protection.outlook.com (mail-sn1nam01on0062.outbound.protection.outlook.com [104.47.32.62]) by dpdk.org (Postfix) with ESMTP id 135A2293B for ; Mon, 11 Dec 2017 12:46:44 +0100 (CET) Received: from MWHPR03CA0056.namprd03.prod.outlook.com (10.174.173.173) by BN3PR03MB2355.namprd03.prod.outlook.com (10.166.74.150) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.302.9; Mon, 11 Dec 2017 11:46:42 +0000 Received: from BL2FFO11FD042.protection.gbl (2a01:111:f400:7c09::191) by MWHPR03CA0056.outlook.office365.com (2603:10b6:301:3b::45) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id 15.20.302.9 via Frontend Transport; Mon, 11 Dec 2017 11:46:42 +0000 Authentication-Results: spf=fail (sender IP is 192.88.168.50) smtp.mailfrom=nxp.com; 6wind.com; dkim=none (message not signed) header.d=none;6wind.com; dmarc=fail action=none header.from=nxp.com; Received-SPF: Fail (protection.outlook.com: domain of nxp.com does not designate 192.88.168.50 as permitted sender) receiver=protection.outlook.com; client-ip=192.88.168.50; helo=tx30smr01.am.freescale.net; Received: from tx30smr01.am.freescale.net (192.88.168.50) by BL2FFO11FD042.mail.protection.outlook.com (10.173.161.138) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.20.282.5 via Frontend Transport; Mon, 11 Dec 2017 11:46:36 +0000 Received: from [10.232.14.39] ([10.232.14.39]) by tx30smr01.am.freescale.net (8.14.3/8.14.0) with ESMTP id vBBBkeKG006924; Mon, 11 Dec 2017 04:46:40 -0700 To: Gaetan Rivet References: <91106540c460d22dd23a30dc2903d7e238ff9a3b.1507796085.git.gaetan.rivet@6wind.com> From: Shreyansh Jain CC: Message-ID: <088de7d2-9bd4-4a49-44ba-9df9c52b72d1@nxp.com> Date: Mon, 11 Dec 2017 17:30:16 +0530 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <91106540c460d22dd23a30dc2903d7e238ff9a3b.1507796085.git.gaetan.rivet@6wind.com> Content-Type: text/plain; charset="utf-8"; format=flowed Content-Language: en-US Content-Transfer-Encoding: 7bit X-EOPAttributedMessage: 0 X-Matching-Connectors: 131574663970029239; (91ab9b29-cfa4-454e-5278-08d120cd25b8); () X-Forefront-Antispam-Report: CIP:192.88.168.50; IPV:NLI; CTRY:US; EFV:NLI; SFV:NSPM; SFS:(10009020)(336005)(346002)(39860400002)(39380400002)(376002)(2980300002)(1109001)(1110001)(339900001)(24454002)(199004)(189003)(105606002)(106466001)(8936002)(50466002)(68736007)(2906002)(67846002)(104016004)(230700001)(31696002)(356003)(64126003)(229853002)(6916009)(2950100002)(31686004)(6666003)(77096006)(86362001)(305945005)(65826007)(83506002)(8676002)(81166006)(81156014)(5660300001)(53936002)(4326008)(33646002)(36756003)(47776003)(65806001)(65956001)(316002)(6246003)(85426001)(58126008)(97736004)(2486003)(76176011)(23676004)(59450400001)(498600001)(21314002); DIR:OUT; SFP:1101; SCL:1; SRVR:BN3PR03MB2355; H:tx30smr01.am.freescale.net; FPR:; SPF:Fail; PTR:InfoDomainNonexistent; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; BL2FFO11FD042; 1:dxsiZw1CR0g8SrZhTPrx9S02bZ61ZN3WZIH2bG7JzT0r8mq5/VRJhMbe1W9xKdcrTsHucu/xoP97S5NXiB+kNIuVSC5TwoL++7srz513P93OuUxqaNxC/oTWl4nTYjHz X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 420f3b8d-43ae-4049-feb7-08d5408cd5d6 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(5600026)(4604075)(4534020)(4628075)(201703131517081)(2017052603307); SRVR:BN3PR03MB2355; X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2355; 3:MuutmK2KMqnNBR2IXl5Ec7ANJtnW9j/AXEVv2hZep3FuwJecFGAGJwk7BpOja+c55OA6Ds0vqZdi4ec/UEvN9stPRBWffR82TUKosRCMeQiDi5WjJG38NBYM5Ptvu4MM3hf9PYEZNrBCBKOAI42T7dv7HJWW/rXrQkJ1i/izX2fgkt7epV36ZN5dAHp9K0p5HuvXhAWibugEIrsOAXTISOy/rJQLMLR00IhKgNNJXWhliMK6bc8Y8H/ofbKN+lEiaBsQ6Nl9tmZEXfDsuK8hsB7B09ZFVqZvPcajLFCpOfOFW6LL+gooDI4puqZNdWGaYhzhcmt9B6gBEkhohjPoJiGwAlgw7HqhnEBwgfn4Gts=; 25:44sLec81pii0MNUTC3lnC1uPA8OpwTVjVFYtn4eavlGmk2nB7xFPRwmOOb2TcHe5DuyJVpqF4dUy1i3i7Wi8efUlWJdkxo6HaNtHnILmU9Xt3lYo8yxM3aOMO5BM5T0Cv47xegCw6KhFcKrjv43I6sXlWGFxN86Y74Ev/s5IAsPJZVK06WB4Q1IqKF2sLN5lfR/saHNwiMQhWgaS6Fb0WNXjtkU3lpe1+MXThG7LOG6kdIgpxE+Nj73igkRNieO/RTMRoU1jqoZIOCVtqInH02MswgX718r5Cj/6v8iWe2VYcCCCWP4UHeyBM1wey69bSCnMNA79yT44IbsHVvtDihk3Elo3RNNcIQrCDm0uSHM= X-MS-TrafficTypeDiagnostic: BN3PR03MB2355: X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2355; 31:DzzgU5l3w9ed8np7CDL29E3XQInGSWJGYYL1Dx8XZ6L9SOMgVBRskmvjVgb3YVQDYc5InvbF5Vp0XO1YbsWN5JQixjFsSqwJkr2JC5as0PMLGfvTxP9jiUzIg8zulSk+fn4u4U+WIs51SeZ18AESwVgXnzYnZz27JbxX+MhDbhT3EdHAUWaImqOcvIsJtFmP6QY0WFAKZaUExR54I9oWHPapr+vXqT7o0tKgk+FFMYk=; 4:H9Ih6rr5bWOIQRbZPI2i9FMYSMjLRxVJQ67Sa6se4ieIXVKZesyIZVKUYkKqE9Vtk5KvhIvgElG0vZLBe6u0HeXLzmt97VnjQwevkSH/P5MIbQcfZVxAU4xTovpwPluxGYCVo8pCabvFfpRFhzAr2JKIxI8Rxr9UtCDdnGlbr2ATt5RyGM/LYDsYbekw3TUEUiKK5Q2Hcgib2PxkTRCCEP7cAqtIh6obgeyCS0OcPHLZH90b3Df4aSGh/z6jB6lFx1KQdqjh1FUulUQSswJM/bZfFooHfzSsWKInu7kJGA8qIBmmjDCV4FYzqa3s6rj5 X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(131327999870524); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6095135)(2401047)(5005006)(8121501046)(93006095)(93001095)(3002001)(10201501046)(3231022)(6055026)(6096035)(20161123565025)(20161123556025)(20161123561025)(20161123563025)(20161123559100)(201703131430075)(201703131448075)(201703131433075)(201703161259150)(201703151042153)(201708071742011); SRVR:BN3PR03MB2355; BCL:0; PCL:0; RULEID:(100000803101)(100110400095)(400006); SRVR:BN3PR03MB2355; X-Forefront-PRVS: 0518EEFB48 X-Microsoft-Exchange-Diagnostics: =?utf-8?B?MTtCTjNQUjAzTUIyMzU1OzIzOis0TVJWU3llbzFWN3RDNHp1OFo1L0ZuNUR2?= =?utf-8?B?aWY1OGJ1OVErTW1WdHh5YWM3N1VBeGhCbGNVUUtxYllOMGJ0TW1iVDRlWG45?= =?utf-8?B?S1FrSzY0UWNmM0NrRlNzZXFoSjVtMlE5SXNqamNKSGJobFFGOXJGZVRoc1hG?= =?utf-8?B?dWlxd2R2TlhndWRXOGF2NFBRbWZHdzMzM0xoN3FwL0FBQi9NVVhsZVVlbWZB?= =?utf-8?B?d0V0RGJlbkx5RGdzSi8yclIzZGM2UTc2STNEa1lkTEttajNlRlFXOHRUdWdj?= =?utf-8?B?UHBjTEc4WkFJQXhIZTdFQjFXYUd2NzczTklTa2lTUHRhbEtQK091SnZ5SjVY?= =?utf-8?B?OGVtZDhEaGg0RzN3OXY0ZUJJZEVyZGNoT3pvS1owZ2VKSUFqOWNhYkR5aHNY?= =?utf-8?B?RXpPYkc2aDBEZHU1WFVwTUt4eWVPMURIb3BNNGU0bjM3dDJQWTJYZG00eVlC?= =?utf-8?B?MGFDb2xIektMVS9rMmJoRWVaNXE1ZHBRdnB1dmVJSVFEM3ZHTGRmbFBiM0hi?= =?utf-8?B?bTE4SjlmMk1xSmMxdXQ3bDA0RVJVT1JSRk92MUovLzJjUEFUZ2xWeStDdm1K?= =?utf-8?B?RnkrLyswTmdIVCtQcStQb2hCL0pocmhSUHJnVWNxdmVuMDRYY2U5ZVV0NlRJ?= =?utf-8?B?NlVZMkF4VEg2TVhwOVh2T3AzbFlZRjhJc2ZUcitiK242OUFla1ZLR1VMeGxL?= =?utf-8?B?KzZTNkJ1T1l2V05mWk5jdkFMUzJISzE3KzhOWXdNNUFaWTlQUEdLL3VMZDhz?= =?utf-8?B?YUZkcFNrdStsYVR5dWdqOUo0dDlCOENIemJjaDFuM1NuSHN3Um55ejZDS1V4?= =?utf-8?B?ZUs3VXVQNGl0Rk8zS3pCbmRmL0ZIVTdTWGs1OTlLRVNCR0lqRDYySU9CaDF1?= =?utf-8?B?Ujk5MWI1Z2xCSzdVeHJqRXg4UHNnTnZkd3dzYjRoSktPQmFFYkhrQWI2eC9v?= =?utf-8?B?U0pVYkVVRmtiVHdxQko5MVY4S1lnZVFhZnA2aUdmL1A3VStLbWdZY25laXU5?= =?utf-8?B?WXBrRE5BWU1pekJwQ0hWaHc1enlmTHQ1QmVha2hmSGJjWitZbHZiTndTWGFz?= =?utf-8?B?WjdQTlMvRnNGblAzTGZabzZ4eHhtUGZXbDFweisrdUhUTzBGejNENEUzeTlD?= =?utf-8?B?YjkvSWlIUVRlZWhkbnNGLzhLU0VkMEZ1TjdMUlluYnBMS1ZvWEYxeHpqcDdt?= =?utf-8?B?Skc1eUlrR0ZBZVluVEFPeWJXaS91SGRnZHZFaXVnS3hRK2ZaVjJvR0t2MGlC?= =?utf-8?B?QTdnNFdybUNnNW1zYkt0OEIyb0VvbzlsS2gxSE9PVTJRbUUzQUpWTzFJcXY3?= =?utf-8?B?Z1JBc3o5bDM4TDhMVFJxK2t4NGQvakNueVJwc3lkdDhuQldJQVo0aHNHNUIv?= =?utf-8?B?YkN5eDkrbExlaEh3aWZWYk9BRk9SK2srSlRJZXltbzZFMldtOU0zc1pTU3pS?= =?utf-8?B?NUV1U3huWU5yTWZlKy91UDVFVVVveDN2Wkd6d1NlTVRaTlpra1VObXI4S3l5?= =?utf-8?B?Ujl2Y2YwK2JnK1U0UVdsU1I1YXhycE5vUG41NVdxZUZhc3RRZVpWSVc5RXdK?= =?utf-8?B?bXRoT2VzV3pBV1hhUm1QSzJYSE1lQnVPdG5TZDFDNTBhZXp1c3JaNlZiQy9G?= =?utf-8?B?Uzd5eTJWZHJ4V3YxMUJadTZnMGpiKzNYeW1KMWxvOXRUVmxyWG54VkdybVJK?= =?utf-8?B?UDArTlVrUHZ4OXlzSWhFVTdaODBvNEMzZEJKYW9EQnVVUnpEblU2RmhrREU1?= =?utf-8?Q?5P8PuocWYV4efPav197pE2GIKmGINsXpYyiIM=3D?= X-Microsoft-Exchange-Diagnostics: 1; BN3PR03MB2355; 6:XR5dQ+RrQLU9qitlBiGkUp757MJP0KRD6xFf/ehyd4wavpSipfOUjnVDm/e5D9D6XRddskpVQa0WNH73TJmXTGmMaB9tPIdS6hBnd/kMmb/uamG9/mKnd6N+kKi9fIklkMpbhgTvnZiQunVtycvBV/KmrPK8sVk7kIYTZ8mIbx4FG1FtQhjN7l26ArUXzgunLIL4juYdkHREKNz/qxClQh2Gbkw1vic+z7QCsHg5v46U/sSGq6fYeh9L9T7J35tz5rfq+HZNfVEe23tOmZUCNU8FRaQqfQoIrq3V3aHZksRzJbKt32sT0Y8TfK0OlmtKRUV8EQNrK9zIAAarQ6SLw+JRO3bGuM+t2B8crFJWn3s=; 5:UI1QZk5k3Pm3aMVbd2e5UCSAHg43Y8fPG933SuAs4vpMt2KjvThT+xzN3O/uZQJ627wawuqyJ9/yBRyhgXldxO5I6M4T7X18tHHSFddkDWino1bB3D5q+E0CGXhsuXceMBFJmAbUxNMyrDSOkUT01MgQRxjyrgrHfzz28UtRmAw=; 24:LBoz2W2OTuJ7VtnWUMEfM6pjyxdPZJ1fe81ZtGgnCKh/tBsfhmu/9KmWkcCiCAHmQtQrb4M16gIew2/zjgCSzJU0Js90yHZ7CrgdIKqiL0M=; 7:sWk244GwqTx1sfjmMbq13iLJg+gJpaYzHR/lT69VGDKRdVhiaOI/ntDdyd+3OmHBqUHAQR1/5NIxzGKQ2/jL1VmqOwJtmlr4b0UyV8kNy+VkrnqJGxrquRYYl7c2WdMz8gtCxi/nRERMVPLEpY06n7u2taNl9gNPPNJ8fOIokqQUwL/KKaK5KtjLcX1ylBPT8We9Mpm8kv/nHItEZ/1f6czQlSqybatFvh929XLPGRcM7IoRQ94EXC8iyWlTWXC3 SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-MS-Exchange-CrossTenant-OriginalArrivalTime: 11 Dec 2017 11:46:36.8469 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 420f3b8d-43ae-4049-feb7-08d5408cd5d6 X-MS-Exchange-CrossTenant-Id: 5afe0b00-7697-4969-b663-5eab37d5f47e X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5afe0b00-7697-4969-b663-5eab37d5f47e; Ip=[192.88.168.50]; Helo=[tx30smr01.am.freescale.net] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN3PR03MB2355 Subject: Re: [dpdk-dev] [PATCH v1 2/8] bus: introduce opaque control framework 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: Mon, 11 Dec 2017 11:46:44 -0000 On Thursday 12 October 2017 01:48 PM, Gaetan Rivet wrote: > New configuration elements are added to the buses. They make the ABI > unstable and will continue to do so. > > This new control scheme allows to add new bus operators without > breaking the ABI and by only expanding the API. > > This helps having more stability in core EAL subsystems, while allowing > flexibility for future evolutions. > > Signed-off-by: Gaetan Rivet > --- > lib/librte_eal/common/eal_common_bus.c | 9 +++++++ > lib/librte_eal/common/include/rte_bus.h | 46 +++++++++++++++++++++++++++++++++ > 2 files changed, 55 insertions(+) > > diff --git a/lib/librte_eal/common/eal_common_bus.c b/lib/librte_eal/common/eal_common_bus.c > index 3c66a02..65d7229 100644 > --- a/lib/librte_eal/common/eal_common_bus.c > +++ b/lib/librte_eal/common/eal_common_bus.c > @@ -42,6 +42,13 @@ > struct rte_bus_list rte_bus_list = > TAILQ_HEAD_INITIALIZER(rte_bus_list); > > +static rte_bus_ctrl_t > +rte_bus_default_ctrl(enum rte_bus_ctrl_op op __rte_unused, > + enum rte_bus_ctrl_item item __rte_unused) > +{ > + return NULL; > +} > + > void > rte_bus_register(struct rte_bus *bus) > { > @@ -53,6 +60,8 @@ rte_bus_register(struct rte_bus *bus) > RTE_VERIFY(bus->find_device); > /* Buses supporting driver plug also require unplug. */ > RTE_VERIFY(!bus->plug || bus->unplug); > + if (bus->ctrl == NULL) > + bus->ctrl = &rte_bus_default_ctrl; > > TAILQ_INSERT_TAIL(&rte_bus_list, bus, next); > RTE_LOG(DEBUG, EAL, "Registered [%s] bus.\n", bus->name); > diff --git a/lib/librte_eal/common/include/rte_bus.h b/lib/librte_eal/common/include/rte_bus.h > index 331d954..bd3c28e 100644 > --- a/lib/librte_eal/common/include/rte_bus.h > +++ b/lib/librte_eal/common/include/rte_bus.h > @@ -183,6 +183,51 @@ struct rte_bus_conf { > enum rte_bus_probe_mode probe_mode; /**< Probe policy. */ > }; > > +/** > + * Bus configuration items. > + */ > +enum rte_bus_ctrl_item { > + RTE_BUS_CTRL_PROBE_MODE = 0, > + RTE_BUS_CTRL_ITEM_MAX, > +}; I am assuming that a driver implementation can take more than ITEM_MAX control knobs. It is opaque to the library. Are we on same page? For example, a bus driver can implement: rte_bus_XXX_ctrl_item { RTE_BUS_XYZ_KNOB_1 = 100, RTE_BUS_XYZ_KNOB_2, RTE_BUS_XYZ_KNOB_3, }; without the library knowing or restricting the API to RTE_BUS_CTRL_ITEM_MAX. I see that in your code for PCI (Patch 5/8: pci_ctrl) you have restricted the control knob to RTE_BUS_CTRL_ITEM_MAX. I hope that such restrictions would not float to library layer. If we are on same page, should this be documented as a code comment somewhere? if not, do you think what I am stating makes sense? > + > +/** > + * Bus configuration operations. > + */ > +enum rte_bus_ctrl_op { > + RTE_BUS_CTRL_GET = 0, > + RTE_BUS_CTRL_SET, > + RTE_BUS_CTRL_RESET, > + RTE_BUS_CTRL_OP_MAX, > +}; Similarly, the driver implementation can choose to implement a operation which is not defined in the above structures. Obviously, the application is expected to know - it being a custom knob. [...]