From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0063.outbound.protection.outlook.com [104.47.33.63]) by dpdk.org (Postfix) with ESMTP id 2A2675688 for ; Wed, 6 Sep 2017 13:29:29 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=CAVIUMNETWORKS.onmicrosoft.com; s=selector1-cavium-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version; bh=1qi1frky8AihKSS+rSrWwHnKfcAczS8xjvA6HSZmdt0=; b=IvGm7Re3LgRruFyC0Wmpjq9cltCQBjoQYXgZh7icqtYd/bJtba68JrzmxVB9qQ8C9oBIZiGOnEvtMdJLGsl5BOcj4CA9pDbUYiNfepkqwP/nYA9XoUiTS9IVQE/aNCyuhVO/rlnBw8osDSMdAwAKqQ4/bhOrMzT0uSJLVeWq1L8= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Santosh.Shukla@cavium.com; Received: from localhost.localdomain (14.140.2.178) by DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.20.35.12; Wed, 6 Sep 2017 11:29:25 +0000 From: Santosh Shukla To: olivier.matz@6wind.com, dev@dpdk.org Cc: thomas@monjalon.net, jerin.jacob@caviumnetworks.com, hemant.agrawal@nxp.com, Santosh Shukla Date: Wed, 6 Sep 2017 16:58:31 +0530 Message-Id: <20170906112834.32378-6-santosh.shukla@caviumnetworks.com> X-Mailer: git-send-email 2.11.0 In-Reply-To: <20170906112834.32378-1-santosh.shukla@caviumnetworks.com> References: <20170815060743.21076-1-santosh.shukla@caviumnetworks.com> <20170906112834.32378-1-santosh.shukla@caviumnetworks.com> MIME-Version: 1.0 Content-Type: text/plain X-Originating-IP: [14.140.2.178] X-ClientProxiedBy: BM1PR01CA0080.INDPRD01.PROD.OUTLOOK.COM (10.174.208.148) To DM5PR07MB3098.namprd07.prod.outlook.com (10.172.85.8) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 016b603e-eb57-4be4-1709-08d4f51a88e4 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(300000500095)(300135000095)(300000501095)(300135300095)(22001)(300000502095)(300135100095)(2017030254152)(300000503095)(300135400095)(2017052603199)(201703131423075)(201703031133081)(201702281549075)(300000504095)(300135200095)(300000505095)(300135600095)(300000506095)(300135500095); SRVR:DM5PR07MB3098; X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 3:Qts86AXJLXg+hC4lHI/Wfg+BPAQPa5HVeROXZVUZcA68FVTe9S5fp3UCnRrI484fcVnAJCtXb0+5rqY/Z33VmJ32dIqCcu/qG/VOrsAbdzvp/3pxkhk86rkRc1fjXm+tNxrPxviUn95Hdr0SU69do6Z9q2QlR4A8d4cUMGS2faTcB24H0mUtv4WTROm0MDoyPCS6Ox+bzuPZEpvl2bKhScWvwbIwrnNXG6Y0Hjv7lD4i01yuIjW37JDnMaLkMCI7; 25:+lKqdlJ8fwVggHcJMvB2XEgzjTFAw7sZ3Xun+ZZzQiIf6OChRM0HQh2VIHkv9nft3MA7h1c2Mh3XYtxS+JIOrbSlgoArCwy6l4p9/LyH50IF4LqlYXGi3KFRve9kpkuk3hib7bDkVM1tjnm3Vfcvm6907QZxRhYKZAw4pG5LOjhHc9ThZpRzEPuHNLNSTeE8UErYurPt2ovKAr/ePEppLT13+wz+95s+iyG1tw7JQq5yvpqRbjh+4xEZDomA4uZ3x51w52/dry+4GBZnIh5cBLNOseXRrXrST2nES1DF7PlYL1KIqtSMqSJ2qCpK3Y/mG+b8/7cOAyO7l9gP3+hqaA==; 31:Rg/ueGDMeO3YEbsC1Iwo1ibLn4wEC/VPk02C/IFqU3AGYYPSlZRNcxP46IUuw9Kke0t6mdpFfM/6fH4dHw/4BBFet36zeJTp/g5SrmPH3i/Llum4ITS4UZNfQil2uSvB77ZS1Q91mP8U/hgvdlycybu+mvgHmbyS8jqFmzsp96IvabH6PAzPShsj5YtP8fW6yo9EIcSuLHzDkgHE5SqUWeKYSJeaE+b4AcAHLkfcWuc= X-MS-TrafficTypeDiagnostic: DM5PR07MB3098: X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 20:2xPVSAxGFkwEN3abCO1iG+pjIAr8v9hXrtxnJ71cdWTkkitJPogz7oofEYQlm7Rfsly5qqPI3NzetU3+lWXCCpMKBWlm2cMnFT1LS3RKZQJJsvKwXD+KL4ssn2wq4oTC5FahZlNgefFm7yuNjdLcu1DoeIJIx4EKP6tCVpfDgkMv3/v8rkBsof3in5503jR82MlgH/bk9Ew4D3uo1VCpJ4yy684e0V86XEbMKjwTw+P9MFA+RZYvq44vetug/T3Xz6Pq0NuIPTALtS2YwQlUaYW2x+urop8iJUF1sAkbHUZFMsF3w+Qeqh4KPDLG8UGpYXAv/Sv///stSu7+L/5xpYbGWVonDzUv2FC1NCMAYAdiO8Rn5O+H9iOOFl8RPj+DJ0siskEJk2UeZXAZAsI5vg6l0Sm8U0WSA7PjvefsVGKWNxnyYCxkR7T/cPa51gNZvtwT4D4Urx/MY7DMbh4JZu0AOJtD2S2rc3PCiCbNN/UI8G4MNKpgZxmtXZvy9nOzveCXlYxnnXU7gFTB8o0D3B4uDtw1E8E/jo5qKTY/JJUTbrqYSK/JzaqXGBSqubhHZ5AX9+f7n6mFKSlDD0zik1LuSzcX5n8+M7tmqDA7gRs=; 4:QY6pXtzrwLsLJEDh9DECN8bySDeU+xhwDxcNhm/IkniKQXnauQ+PJK0wS77wrfU4AhjWnrK9JdfGiNiXOXxOgjvpH+2kIYLKGyCtXNUx67dRW+SxqEwXKh+NmRXx5iusEjKr4BQEYmHFH+U52KSLatC5JScwjF5zS6eodhXiyliOhQLWa9BvNe619Xe9Z5gN1/7Z3d0wRTBzc+r3eo6yeziU60eusZPeCZQb0RpGATEnshmfaOSs751pJjLaGaj0 X-Exchange-Antispam-Report-Test: UriScan:; X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(100000700101)(100105000095)(100000701101)(100105300095)(100000702101)(100105100095)(6040450)(2401047)(8121501046)(5005006)(93006095)(10201501046)(100000703101)(100105400095)(3002001)(6041248)(20161123560025)(20161123558100)(20161123564025)(20161123555025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:DM5PR07MB3098; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:DM5PR07MB3098; X-Forefront-PRVS: 0422860ED4 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(979002)(6009001)(6069001)(189002)(199003)(53936002)(42882006)(2950100002)(6666003)(6506006)(6486002)(6306002)(6512007)(50986999)(76176999)(106356001)(36756003)(189998001)(42186005)(105586002)(50466002)(8936002)(50226002)(48376002)(33646002)(8676002)(81156014)(81166006)(7736002)(101416001)(305945005)(966005)(68736007)(6116002)(3846002)(5003940100001)(1076002)(478600001)(5660300001)(72206003)(2906002)(25786009)(97736004)(4326008)(8656003)(5009440100003)(110136004)(107886003)(66066001)(53376002)(47776003)(110426004)(15583001)(969003)(989001)(999001)(1009001)(1019001); DIR:OUT; SFP:1101; SCL:1; SRVR:DM5PR07MB3098; H:localhost.localdomain; FPR:; SPF:None; PTR:InfoNoRecords; MX:1; A:1; LANG:en; Received-SPF: None (protection.outlook.com: cavium.com does not designate permitted sender hosts) X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DM5PR07MB3098; 23:SGVcyruBKYOf309Qd9ZhDVhmGorJ+beqTgX08sXjN?= =?us-ascii?Q?dn96saO3di3edqcNU4iU1lENLO7SN42uuaF3z9o6cMlQH7wKTi0KAwOgg0+C?= =?us-ascii?Q?ycZxTKVjWOZ0fzC/pc+XsLrM/bhRaxt33jlJryD6IB15urT73vWI3GzRaiCb?= =?us-ascii?Q?+EAco2nMTO3Mvn+M/oPTist9i+fiGvSLGth9xYV37sfyfKyjdn0Hrbt4hb+9?= =?us-ascii?Q?uUxFlq5UeWzi/U0J2XHemDj/L1qYflR2MTIb0PfGP74ELbd4jl/Y7f7I3VlH?= =?us-ascii?Q?Gpf4p/H8py9VFfyWFL16o2JlkB1n3PLNKJvOT1zPbGn1RxZ+BaOe66vEn/Qm?= =?us-ascii?Q?3V19UBZ/QYIq6UjxlJfSHDPOJjNnHCoG6CiC66re8pNC4bZZTi1npjJmZRtY?= =?us-ascii?Q?lk+vNFDayuYGpFuAecCyASRgPYe1fGMbr4yviRUIVEg+C6OXA6R9qY++sd4V?= =?us-ascii?Q?PDERmBzHPfEFhwtH+04SWkVgrqlIbsXMYk7HkuXDSFeJEBVA5kHiMBNNTqMt?= =?us-ascii?Q?6VlSxOSRgSjR68Alp2mSDTrnWtJqWSI25EFXR9/3Fe32DmabQ42IkLW1YVCc?= =?us-ascii?Q?5zNCaL28tg8jc+2T+5FNR9VQED4cNjLbNZQV2tG91Uc4divCWFSXSe5wmIm8?= =?us-ascii?Q?PsN4Cux6r4bRHjLvsmZFPBy9SlHQIqmu3Qxvbh9SeMxf+n/GTJEry55CLmzp?= =?us-ascii?Q?/vdDAOpfxoEp+JQ1j/r5M3LJc7UUvxrW1T5vbuOlspsPCVPLJgl0KGEc2eCq?= =?us-ascii?Q?22RfOXFAgbufuCAJdHPnqIQUKKShcsNtTjYKK60j3p3S+5fSBrkCU9GY10qI?= =?us-ascii?Q?kEjsNzcRdluVvCIy48HcQQVZtLfMEzzp1DROJvtnDqA+zCFaHRCfMNhVN3Wf?= =?us-ascii?Q?RYVlyUp7J8nJN/hhglK6FmQ+3VCiRRWREwZ2IbLGzmjR2rhxgfrBf/aKSwlh?= =?us-ascii?Q?tNgOniV0yVTwEao3kqzUd7aP7i9jJRXiuXQ6VgbjgGZL27BwrNfrzHL/5yaK?= =?us-ascii?Q?YrIEY+rIME9QKcILSxtraGRjWULhMgi196gHj97f45P2aebgbO5F5oiEUbw+?= =?us-ascii?Q?FL/V+5VqU5sfuKyvEmjnEHUjTTSLy8chA/zjoZ1D1D4802tuZrYx4GuTV0Sc?= =?us-ascii?Q?4h3BmeR+yePIwcjuovCn+h5ZX2AruxnEaJYrrzdnMIdlz3pwbbx024CO4ubM?= =?us-ascii?Q?xeZgaUodEzqsfyMiaBBWFtI/FBNgDe0ys7hJnukT/eTnMzRqKt/YmDuNCgrQ?= =?us-ascii?Q?lHziobhRK4fw/vVs6X07UbBtqYKpe2o1tXXGrsiokD4CoN3r9RpZH90UhFuz?= =?us-ascii?Q?33/3C2hKAJTrto5AkXNDuS/C94ExzIphyLB48t2XkXS?= X-Microsoft-Exchange-Diagnostics: 1; DM5PR07MB3098; 6:+spXhzzTJiBzTg4n7capNvK8rbzedmFZlmzN97UumSueJgPlU2jaq0lFaz+KdyA1muQ6Hmndk+++P+Xh6sU9zPFS8NnliFEgGeUnbRQGRGNS0UKkWI4qppc5gkOlDTvW/pJp/s1ewk1Ru7076Yp7vGl0JN7iUqpbT6WZXU2UTEH2VuBVcHBxNf2l/8j4FqAfVal1Q4smDyvWEWiTBC+kKqvZ5klCACB366iljHhxENj0EmoRohQfawES+Q+tpPpy8B8X4q2HqWQkVqHOhTqbPh2NggF1UlbcKF6he9ebtZRs+/1q2/HXmeM5PKhv34J8d+i6DJaAQ+zCKgiMyA0XoA==; 5:HpZyQbLRBkfnVb4GPzAcZcVzOxYSHWd5ecVtnrY6Y8zhvd+iAkZlhWgqfvC91Hx7wwMvIF5wLEp6Hr8+GCLA9Y0SOypU97+QMXSv852bv0cvFilMsgrTX1kKIE9QD3xeJGX2Vt8eV98WHdVeNTNThQ8IZRCDgsiS0I++MdVZEjE=; 24:9luia/5uPuv+ZtTEjneWgThyRUDd7aorIz/ZO+S7EF7aPyTVQC5oQkCHDOgTudmDQvJJmMUvBJSxOplNiSQs5V3GL6xdvC3mrvylMHYIxzc=; 7:piEL8kFNbVX02bwtDvHqnVyEuUzf3G5RtMb4KAKjLacvObGARwIAPt8hjVTJfa0xZUPFBVC1Ct7PGuYueq+Nv9Hcg0x9V95QwoKrNVBeEBOjkOXpYO/bj2UlrMBoitcfUwktNLn1mQN3ACq5psewW2zh1lkW/T+J/P5akLUidRZIhM+s5QR4y1OCkItFrj1H5Z765YfMTO2ZpqGyVEUcRAvcFjy4v1R3B0gPozSkaPU= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 Sep 2017 11:29:25.6936 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR07MB3098 Subject: [dpdk-dev] [PATCH v5 5/8] mempool: get the mempool capability 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: Wed, 06 Sep 2017 11:29:29 -0000 Allow mempool driver to advertise his pool capability. For that pupose, an api(rte_mempool_ops_get_capabilities) and ->get_capability() handler has been introduced. - Upon ->get_capabilities() call, mempool driver will advertise his capability by oring to mempool 'flags'. Signed-off-by: Santosh Shukla Signed-off-by: Jerin Jacob --- v4 --> v5: - Added flags as second param in get_capability api (suggested by Olivier) - Removed 80 char warning. (suggested by Olivier) - Upadted API description, now explicitly mentioning that update as a Or'ed operation by mempool handle. (suggested by Olivier) refer [1]. [1] http://dpdk.org/dev/patchwork/patch/27598/ lib/librte_mempool/rte_mempool.c | 6 ++++++ lib/librte_mempool/rte_mempool.h | 26 ++++++++++++++++++++++++++ lib/librte_mempool/rte_mempool_ops.c | 15 +++++++++++++++ lib/librte_mempool/rte_mempool_version.map | 7 +++++++ 4 files changed, 54 insertions(+) diff --git a/lib/librte_mempool/rte_mempool.c b/lib/librte_mempool/rte_mempool.c index 005240042..3c4a096b7 100644 --- a/lib/librte_mempool/rte_mempool.c +++ b/lib/librte_mempool/rte_mempool.c @@ -528,6 +528,12 @@ rte_mempool_populate_default(struct rte_mempool *mp) if (mp->nb_mem_chunks != 0) return -EEXIST; + /* Get mempool capability */ + ret = rte_mempool_ops_get_capabilities(mp, &mp->flags); + if (ret < 0) + RTE_LOG(DEBUG, MEMPOOL, "get_capability not supported for %s\n", + mp->name); + if (rte_xen_dom0_supported()) { pg_sz = RTE_PGSIZE_2M; pg_shift = rte_bsf32(pg_sz); diff --git a/lib/librte_mempool/rte_mempool.h b/lib/librte_mempool/rte_mempool.h index 202854f30..4fb538962 100644 --- a/lib/librte_mempool/rte_mempool.h +++ b/lib/librte_mempool/rte_mempool.h @@ -389,6 +389,12 @@ typedef int (*rte_mempool_dequeue_t)(struct rte_mempool *mp, */ typedef unsigned (*rte_mempool_get_count)(const struct rte_mempool *mp); +/** + * Get the mempool capability. + */ +typedef int (*rte_mempool_get_capabilities_t)(const struct rte_mempool *mp, + unsigned int *flags); + /** Structure defining mempool operations structure */ struct rte_mempool_ops { char name[RTE_MEMPOOL_OPS_NAMESIZE]; /**< Name of mempool ops struct. */ @@ -397,6 +403,10 @@ struct rte_mempool_ops { rte_mempool_enqueue_t enqueue; /**< Enqueue an object. */ rte_mempool_dequeue_t dequeue; /**< Dequeue an object. */ rte_mempool_get_count get_count; /**< Get qty of available objs. */ + /** + * Get the pool capability + */ + rte_mempool_get_capabilities_t get_capabilities; } __rte_cache_aligned; #define RTE_MEMPOOL_MAX_OPS_IDX 16 /**< Max registered ops structs */ @@ -509,6 +519,22 @@ unsigned rte_mempool_ops_get_count(const struct rte_mempool *mp); /** + * @internal wrapper for mempool_ops get_capabilities callback. + * + * @param mp [in] + * Pointer to the memory pool. + * @param flags [out] + * Pointer to the mempool flag. + * @return + * - 0: Success; mempool driver has advetised his pool capability by Oring to + * flags param. + * - <0: Error; code of capability function. + */ +int +rte_mempool_ops_get_capabilities(const struct rte_mempool *mp, + unsigned int *flags); + +/** * @internal wrapper for mempool_ops free callback. * * @param mp diff --git a/lib/librte_mempool/rte_mempool_ops.c b/lib/librte_mempool/rte_mempool_ops.c index 5f24de250..9f605ae2d 100644 --- a/lib/librte_mempool/rte_mempool_ops.c +++ b/lib/librte_mempool/rte_mempool_ops.c @@ -37,6 +37,7 @@ #include #include +#include /* indirect jump table to support external memory pools. */ struct rte_mempool_ops_table rte_mempool_ops_table = { @@ -85,6 +86,7 @@ rte_mempool_register_ops(const struct rte_mempool_ops *h) ops->enqueue = h->enqueue; ops->dequeue = h->dequeue; ops->get_count = h->get_count; + ops->get_capabilities = h->get_capabilities; rte_spinlock_unlock(&rte_mempool_ops_table.sl); @@ -123,6 +125,19 @@ rte_mempool_ops_get_count(const struct rte_mempool *mp) return ops->get_count(mp); } +/* wrapper to get external mempool capability. */ +int +rte_mempool_ops_get_capabilities(const struct rte_mempool *mp, + unsigned int *flags) +{ + struct rte_mempool_ops *ops; + + ops = rte_mempool_get_ops(mp->ops_index); + + RTE_FUNC_PTR_OR_ERR_RET(ops->get_capabilities, -ENOTSUP); + return ops->get_capabilities(mp, flags); +} + /* sets mempool ops previously registered by rte_mempool_register_ops. */ int rte_mempool_set_ops_byname(struct rte_mempool *mp, const char *name, diff --git a/lib/librte_mempool/rte_mempool_version.map b/lib/librte_mempool/rte_mempool_version.map index f9c079447..3c3471507 100644 --- a/lib/librte_mempool/rte_mempool_version.map +++ b/lib/librte_mempool/rte_mempool_version.map @@ -41,3 +41,10 @@ DPDK_16.07 { rte_mempool_set_ops_byname; } DPDK_2.0; + +DPDK_17.11 { + global: + + rte_mempool_ops_get_capabilities; + +} DPDK_16.07; -- 2.11.0