From patchwork Thu May 4 14:24:00 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Petri Savolainen X-Patchwork-Id: 98543 Delivered-To: patch@linaro.org Received: by 10.140.89.200 with SMTP id v66csp617083qgd; Thu, 4 May 2017 07:24:30 -0700 (PDT) X-Received: by 10.55.14.11 with SMTP id 11mr7567219qko.209.1493907870331; Thu, 04 May 2017 07:24:30 -0700 (PDT) Return-Path: Received: from lists.linaro.org (lists.linaro.org. [54.225.227.206]) by mx.google.com with ESMTP id b145si1951699qkc.241.2017.05.04.07.24.29; Thu, 04 May 2017 07:24:30 -0700 (PDT) Received-SPF: pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) client-ip=54.225.227.206; Authentication-Results: mx.google.com; spf=pass (google.com: domain of lng-odp-bounces@lists.linaro.org designates 54.225.227.206 as permitted sender) smtp.mailfrom=lng-odp-bounces@lists.linaro.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id B60BE60A1A; Thu, 4 May 2017 14:24:29 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on ip-10-142-244-252 X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAD_ENC_HEADER,BAYES_00, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H4, RCVD_IN_MSPIKE_WL, SPF_HELO_PASS autolearn=disabled version=3.4.0 Received: from [127.0.0.1] (localhost [127.0.0.1]) by lists.linaro.org (Postfix) with ESMTP id 728B8607EC; Thu, 4 May 2017 14:24:23 +0000 (UTC) X-Original-To: lng-odp@lists.linaro.org Delivered-To: lng-odp@lists.linaro.org Received: by lists.linaro.org (Postfix, from userid 109) id 7E485607F7; Thu, 4 May 2017 14:24:20 +0000 (UTC) Received: from EUR03-DB5-obe.outbound.protection.outlook.com (mail-eopbgr40092.outbound.protection.outlook.com [40.107.4.92]) by lists.linaro.org (Postfix) with ESMTPS id 0A9EA607E0 for ; Thu, 4 May 2017 14:24:19 +0000 (UTC) Received: from VI1PR07CA0016.eurprd07.prod.outlook.com (10.163.160.154) by DB6PR0701MB2119.eurprd07.prod.outlook.com (10.168.58.10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1075.1; Thu, 4 May 2017 14:24:17 +0000 Received: from DB5EUR03FT035.eop-EUR03.prod.protection.outlook.com (2a01:111:f400:7e0a::200) by VI1PR07CA0016.outlook.office365.com (2a01:111:e400:533d::26) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1084.7 via Frontend Transport; Thu, 4 May 2017 14:24:17 +0000 Received-SPF: SoftFail (protection.outlook.com: domain of transitioning linaro.org discourages use of 131.228.2.241 as permitted sender) Received: from mailrelay.int.nokia.com (131.228.2.241) by DB5EUR03FT035.mail.protection.outlook.com (10.152.20.65) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P384) id 15.1.1047.9 via Frontend Transport; Thu, 4 May 2017 14:24:16 +0000 Received: from fihe3nok0735.emea.nsn-net.net (localhost [127.0.0.1]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v44EO06B027936 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NOT) for ; Thu, 4 May 2017 17:24:00 +0300 Received: from 10.144.19.15 ([10.144.104.219]) by fihe3nok0735.emea.nsn-net.net (8.14.9/8.14.5) with ESMTP id v44EO0Wj027933 (version=TLSv1/SSLv3 cipher=AES128-SHA256 bits=128 verify=NOT) for ; Thu, 4 May 2017 17:24:00 +0300 X-HPESVCS-Source-Ip: 10.144.104.219 From: Petri Savolainen To: Date: Thu, 4 May 2017 17:24:00 +0300 Message-ID: <20170504142400.23189-1-petri.savolainen@linaro.org> X-Mailer: git-send-email 2.11.0 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:131.228.2.241; IPV:CAL; CTRY:FI; EFV:NLI; SFV:NSPM; SFS:(10019020)(6009001)(39850400002)(39450400003)(39860400002)(39840400002)(39410400002)(39400400002)(2980300002)(199003)(189002)(9170700003)(5003940100001)(36756003)(50226002)(2351001)(5660300001)(356003)(77096006)(105596002)(6916009)(86362001)(33646002)(1076002)(8936002)(81166006)(106466001)(8676002)(2906002)(22756006)(50986999)(189998001)(38730400002)(53936002)(110136004)(305945005)(47776003)(48376002)(50466002)(498600001); DIR:OUT; SFP:1102; SCL:1; SRVR:DB6PR0701MB2119; H:mailrelay.int.nokia.com; FPR:; SPF:SoftFail; MLV:sfv; A:1; MX:1; LANG:en; X-Microsoft-Exchange-Diagnostics: 1; DB5EUR03FT035; 1:CGe7HMduogbnTXQWFbyNLn/KgjmokSyymxLHx4BtlDoHWvjWu2U5iQNaCJtNJGtP6ABnICwZELZbse38z9auqnM56CM1/tkXoRx0gjNQ36671ZpImkU2rCLXvZ/HGHGkEB0oiPit59Z2/AAG5tUuRv+FYW3E8ycWmJrFwJFtLCOrCUzAG27nUPbY+4kzjrIjMcYB1xdbtgNFqtzGOsRdv08KqmAft/UcHYX0rBpq2u6TZMkIEKLQIcZB+25qIa3MdHvAWOQ7nNzTIxg7wHCAw2og5qGDPyepYbamo7mZwpoErDxgISpk2lZYtyLe26XN7qu+ayhjneyNk/iV4SsvPGsZOYaGrFPFSHkTC9DgrePSK+25y0+fNQnLw14Le3uniJkcQ12qSJ5BbEGG1XIExNkBOnTlIO+aixnwXL98VbcQCXyOFaElcIv2yKbr3dGhbmoaBwtVltICWWZ+I5esh1KJpH+PspjSzZQE1k9LrTgu4lrRJOPKWg9NLEo+SiXee4TJp7I1kcPiIUP44NrHXQ== MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 58028ba1-1636-4259-ffdb-08d492f93f29 X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254075)(201703131423075)(201703031133081); SRVR:DB6PR0701MB2119; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2119; 3:oHfpa3qLdM1RmUBXh7kmA1aBT8BNg/MeCxnWY1xGXZ+0+QXWT1WycGhZ+ZEl5g5MxiA0TV3KceoSEjurQ9A3Tp+E/QSjqh05qv1AR7jFNR/ysyQFK5qXXah/nii7B6iU0X8E4N0JMHB/8JBx5dkuwozn1kgp3fa4rm3n4TrOO7uGCOD7OT+LObinTplmx/M8zM/TpCRdLcVZGf+9NTMVXQNPHP1U1itZKkEi3LPQP7eSE7jkFNPGRxtP7qeA0weugDTvVnmUWOrXrWCKlQdyvug/JMZYP9D3ry4fjrH6NCQeFHWCLZePLjMPE7M96yaOGT1+17vY5jrTHb/nTpDR//BNBq5hrp4/s8PjtAyxGJTOlPJsNhdpfL9iR86XOFNKZu+rr+cB72BgVlsw2sQ8alEE8GlKyEB47ZbFmVtvFOx4+5kHFBHTcTUiBau+5mGd8+SzQOLhbqKeKUKO6fjbHQ== X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2119; 25:O1dVt0lSHke859XFSSVSuOlVOheLpNmt95mKGn5qIAVewvHg8mBXsiefGIYWtTkxcId4rUfYHGgwhfaPgcejysgoogbovWsHyBXVbPCsE0cYMsBBy75Y/s8iyFAYE4M6DEXgl59UCQ6R0CJtRHV3xsXZiuNF0/ciiGX64Q0W+hMbiLPzr2r6EYkXF2/ryoms8ksTj01G8OKAtYkCScvWEjfkYFkZys5THCnLUvCz5IKMhbgvcKr8Zs08LL9uTMOvPepelguRqYrtDTbj1O1h3C2Pj38gTdrNa9ktYuudIMuvsJ/sZ6kxBd5UwCUxfGykX8sccEoa4Xdf56ekSVIwWQXbRaGO+pFFpUpENTCBBuEzLfds+eyDf9EOLaHJzEXM6ZZh8GdEIX5I1gKu/b497moCPUpQjci4xi/aQQCP14rgny9LPh4rK5EZBJYxAN8J6FfXN8HZrShrBHZ4i3Gu4nvx9pt2miirJ7JFlMNf10o=; 31:L4AOJaqysrOmWcisyfDuZ59a3wfRihha4RE9a0+qT5SGLLdKR1em2+bhGZnnIHDyy6P32qsNhq3VIgwob5A2K5FasciqAvAQNaRrX8tQtLZp7bw/w8Ly1R0kbmctTn9FxrjTErLQbM0sV7dJL+aehappCMcJ0lStGNA7G+cDCgk6HTO9dzwSDH5MOSofjPYN4PYmqTYWMo/o2TltsUkJPYlogtqn0n+7xDvdxk+KRnWgcQcl99O8/xZcCHcSSS+hPkz3WhZMOts2UkQoYN8JH7mcyeI2rS2xma1SvD7xS/0= X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2119; 20:lmd2JAKiYgLe6HtiU6QupFsHCxYx3+VO5InSwe5K0S0bBTX4x+df9RFs6JnrhbVhnMWqL1y9VmD96bgNcH9LtqLQwSSgrN7pAJevkE3j6ULj6JMv+cFHm97sHjqHaCqyevHyoE/RcC/48cIsSrw47J03q3foAp0KZt+VttCyPZwJnzHDTO0EF29oJygVVmoad4ED2sdhaiZM2PPYZhRHdmqU191sgqX2TSJdLO3WIMNQGgR15q7gu78Alspur6fYxCbFMlI65ljtnFD7QIQm7H/Vfj+gIGMxtqJwJ/fLpNcrbKqJzqmLbiQ85CZCCd2H7jzIHPpPnLb0Bc2tT0re6uY8sAbUhou1nM1Ld+pYnX5VpeCP2PFia7akVb0pLD3H12yFQFMgXrA/H4WJOnzS4P1HIX+wN67c26Gw4VFqyU/nbJ/b2Vfmun+dNZ9yFkCpwNFD6+Dpmqwz+UVSYjms/2SKPm3/6NEo0EtBm1jqYijH3GiIQFlQam0M+p5APjMFTbzBuuIeee6KPcfWwpwP8eBVCfgSPqYmPixnViWnMyBVu8erkhwt5w+fcGKyiZZfWQWdyCqpAa8FEAs85CVzOZdFdE7bOL2IYPRn31GrJh0= X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(131327999870524); X-Exchange-Antispam-Report-CFA-Test: BCL:0; PCL:0; RULEID:(6040450)(601004)(2401047)(13021025)(13023025)(13013025)(8121501046)(5005006)(93006095)(93003095)(10201501046)(3002001)(6055026)(6041248)(201703131423075)(201702281528075)(201703061421075)(201703061750153)(20161123560025)(20161123562025)(20161123564025)(20161123558100)(20161123555025)(6072148); SRVR:DB6PR0701MB2119; BCL:0; PCL:0; RULEID:; SRVR:DB6PR0701MB2119; X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2119; 4:BAnmbiTA9oKf1EarP+FuLc8FWg1mAWHbfnfipYanZQa0kFOVS6bxG7Y1XW8pOErWRjALpmEgKwlT2az806RrO/aS/YWeX0cxNTd3fL4fRw8kfot9WxisyIzGPiOGqqRzwTGSecCc/LDbaF2bRn91x4Mg1VKR62W84r8e/unypr9Vll+/bIhhU1bXo5vPOSOjRagWN1x2+9ShTCwxUGORl6oxBh3MbqfmJHWrMV5KqkzIWJm+Nv5d1c7tDqtGpiFLq8I4WK8WgyNdDqcLmDl+hewKp9pH3nZN3w6zHkx13Lqfu3K5dEQyN8mXZHHJY18txhRMZe219199AA8Jj8bR8FVrdJiqj7ANcW8RCawSbNk0ILrnRmK7TEWuTGZUaI0wcKwLcDLsx7BvKiNQFOB7qdcRAQg1EN7wQNKOKuVp5Bnu6nLdYSFPx42ZKqbwL2M807R4mZ1FDAiSrDmCVjc7UIinMvQasz4bPHIl7x3IqveDhjHjfWjkxgDqPLrT3vnRwbagaimBk/RjbIovd43bVx1g6AnqmAmoqkSRIlHa/Te45fejXIV1V8/cisSOTbx/XgSzpfDy/s4rMQDtkkxAXJ0wO0Gu2Le5c8LU3uJxb8YGYoVVId4AvkOhSkPSd78bmh0R/FFUTFf2YrVrq9+LxMQS7nOnCeY52gA79hwTUPp0SHAuPJTNkMPrYMsxwLTh8KAFMFuKkUoBqSoXHvT11bFhpNtcy5LuOWBRcxmFJnAkc8tfKgGmysnMpeM4EFmpKPSFTB22Nu0lMldP29K20cC6hH8z/We2kprkyDESu4kiAvMPW0Qnn2OYc1t5MY0hGzXU833uZF8YAWSGAe34zAZlcD9S8/tNCO+LkukodwrGINPoCckwMCjZxKU1jBo4HpOZKKk1vli0zByoNJm+2Q== X-Forefront-PRVS: 02973C87BC X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1; DB6PR0701MB2119; 23:t+Yud5DiYeV8QRSgqRN3UUh3SrTP2kxmSFBvQ8C?= ZAAJzK1r7aEsYiqb75X1N55yr0tXLkRbq2lyNPeAJFsnIC+I3LaB4RVXyN7f3NTj1nYx8jyU6MQaPr46RPpK6r0/vzGKMCi9WctW+e2ftwdIoGyQLBjMPtLDB34WVpzfMRwBnM2Q1JsaId8sSlc5GPaJf48DO1Tv4XjAeAhIdxXSoFE4kImbJfzN3Vz3wrYy4cDL5kp7KOob0s4lq39ov1BrPluFRiilBAhqX1UoH7Weqhi/YaZZOedvGuQxuIdk89cp31mGqk2BNfFYHMqP4HnrqubAtRZ58wYvHbYWQtietJycJBf0w8zua/wHNEzDWJ8Nrc/Mv+nRlPNaOw/ApxDjBOiWFiGw8wbGy2wOatpazX42rJO7KRrpD0NdcdtzQh6SduarSmkbEIjn7nAcMjo9STONiKpmbVMaVjjk7Kw02Mubh0CVjMpYbOLWrG1mQL+IPlcI9xyN1iS9tq5LTNVM/0JeTxGOFPILoQ4BaqLYKkft7ov96iPCBh5Ju/Fn/nkzeW6ndCVPl2fNkknpz55UsdWrpaYG0xoX9re4B1ncKdw9JmkJfOIU1coxGyZYMjtCSuvHZQdqHHFbLeaHGYl0f8xlvaLKjs9JIstU0iRWkYN+2+xH0Vb7vHdHmCLCIcoeT56gLi89Z7D4jEDHJODDvqNZbDEYfVm1OPl55Vw8gS6zD4ahHwn2+SydjvzGlctJRAijQTxD4I+ltVlqYVEwVi/x7BnCyDfkBA+wgrS4IaEqCq61rGNNlZn1GeHMD0J2NR6LX9Sf9MQ9g3bpASGwDjReYWW8fZb9UGK3bWN1WvRQkPCtewGWlJxbhikHfM8KHQTpGd99yIK2gciB1bD46TjNsI7LTiHEPdPOH2QH0ynCh6gBse0afnvJy1jsSRUNvSMgUS0ddzcylZzpRLfiRoeiBeWsDrWUDHM8Fgfym/22Yh3ObzbUAOnXXx7dCUCTDg2fFs23ZAUHKb7CM1al6 X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2119; 6:aafZXufkIeSgL71UxZ3+lnzoEdvjs2eDsSiF28SIARL3/kr6cqzjjc0gaWjf7uyso+xBTBzbA5G652u6WGn85i9kDmJhWxErqB+MDGP5WRqJEDDwD02PHt5Jai8NaZOSDIsAC0hhrhiZBBUJHPsyOTRte5fM0B7Piu4nUSTK7oID2QXPvp1w7i7oV343BuPreQrTbnOBKOFUARZoDxiEkVCu3LBd+4fzMmNdGAa3h5UjEvQ/F1d8J2qWKDL0nZPvSD0RTJdGfWHYCRw3hasaIDM/3ydYyIl/LLj19xkduHM3MdvUbCc//r/ydYJPwDVe/a0vWkQaCixdu0KS/9i5U1VUfOxmeTV10lynATq/pM4EwLNFA2+gQYdmBpr3mN6BUqZ/4WfVGZwk8M68qAjOxUJSQtmlc4DRFoPgRX5pL7g71UdPhDIyJHHW+fgpaX1FRHyAvg0FqwGmOe30SA7z8Ev4Ru1/mOsuac61A9Rs4Pa5R1tB6Z8e2QwFOO/QtWrYaAF2Y5i/DK7DtNWMCe7rIcjv360ykK/cEDAfS5Lf8778MiFsiGZv+A+iVkJDioWmUVkfApMwGMd8SJmM1xv4AA==; 5:gQ9rAXkcf0i0f/T6XARzQ3zkqZ2wrYB7IZgypU9hMGNc/XGALUDStj0QBlU4NHYFXI94CsFYdxCA2s9gZ0vz+XCKcDudUXK/pnprOcT0f9NilR2BtHHqy3iHYpOLcLHMdDSh7MMwIyyH+m+kspqsow==; 24:4qSqCk5iyGKkOqCATThHdBSFBC8glPQxw5O6dEE9/Q3+ElzMHquC3Z1vnyP20vtfYyVei2rwG4gEig4ZA9uCvWNG+Qp2otOnil/0y8DykJQ= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1; DB6PR0701MB2119; 7:drN0JTEjo0+pgL1MltOSjdbC3yjuNeztoqLzS2xwzjPmEkl1VJ87qO22GvdrdSrhq5iSYedx/UFKxwuGBs8J55fVhn5eXN97qBB205EK3m9vvMaKQ4IOGXHuMLQYq1VWm8mHhI2KE+3AZkf9APC1IWADAHP2q9qaZK02L2Q0fJr2wWwqWHN1d9k9NmT87YQS1dVBUyypdaqUa2nhUElnt86MYJIp5s6ARhC11z2nFqyR2op8YUGZHPO4+BnKocrhux1BXv+bjGASqTItgsORAvUnHg2MePtturVKfb+5SSRyET00DJRhWdRqGp7HGRGetw4vRS11uA8YpXYIYnFEkQ== X-OriginatorOrg: nokia.onmicrosoft.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 May 2017 14:24:16.8436 (UTC) X-MS-Exchange-CrossTenant-Id: 5d471751-9675-428d-917b-70f44f9630b0 X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=5d471751-9675-428d-917b-70f44f9630b0; Ip=[131.228.2.241]; Helo=[mailrelay.int.nokia.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB6PR0701MB2119 Subject: [lng-odp] [API-NEXT RFC] api: pool: additional packet length configuration X-BeenThere: lng-odp@lists.linaro.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: "The OpenDataPlane \(ODP\) List" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: lng-odp-bounces@lists.linaro.org Sender: "lng-odp" Added packet pool parameters for more fine grained pool configuration. The basic usage of the parameters is not changed, except that implementation may now round up 'num' by default. Application can limit the round up with new 'max_num' parameter. Another new parameter (prio) allows application to prioritize some pools (or parts of pools) over others. Implementation may use this information to decide e.g. on HW resource usage. Additionally, pool configuration may be extended with a table of num/len/prio values. This gives application more flexibility to specify requirements for various packet sizes. Signed-off-by: Petri Savolainen --- include/odp/api/spec/pool.h | 117 +++++++++++++++++++-- include/odp/arch/default/api/abi/pool.h | 2 + .../include/odp/api/plat/pool_types.h | 2 + 3 files changed, 110 insertions(+), 11 deletions(-) -- 2.11.0 Signed-off-by: Petri Savolainen diff --git a/include/odp/api/spec/pool.h b/include/odp/api/spec/pool.h index 6fc5b6b4..2bf37e5d 100644 --- a/include/odp/api/spec/pool.h +++ b/include/odp/api/spec/pool.h @@ -41,6 +41,9 @@ extern "C" { * Maximum pool name length in chars including null char */ +/** Maximum number of additional packet pool parameters */ +#define ODP_POOL_PKT_ADD_MAX 7 + /** * Pool capabilities */ @@ -127,6 +130,9 @@ typedef struct odp_pool_capability_t { * The value of zero means that limited only by the available * memory size for the pool. */ uint32_t max_uarea_size; + + /** Number of priority levels */ + uint8_t num_prio; } pkt; /** Timeout pool capabilities */ @@ -156,6 +162,28 @@ typedef struct odp_pool_capability_t { int odp_pool_capability(odp_pool_capability_t *capa); /** + * @def ODP_POOL_PRIO_DEFAULT + * + * Default pool priority. User does not care about the selected priority + * level. + */ + +/** + * Additional parameters for packet pool creation + */ +typedef struct odp_pool_param_pkt_add_t { + /** Number of packets */ + uint32_t num; + + /** Packet length in bytes */ + uint32_t len; + + /** Priority level */ + uint8_t prio; + +} odp_pool_param_pkt_add_t; + +/** * Pool parameters * Used to communicate pool creation options. * @note A single thread may not be able to allocate all 'num' elements @@ -185,25 +213,56 @@ typedef struct odp_pool_param_t { /** Parameters for packet pools */ struct { - /** The number of packets that the pool must provide - that are packet length 'len' bytes or smaller. - The maximum value is defined by pool capability - pkt.max_num. */ + /** The minimum number of packets that are packet length + * 'len' bytes or smaller. The maximum value is defined + * by pool capability pkt.max_num. An implementation + * may round up the value, as long as the 'max_num' + * parameter below is not violated. + */ uint32_t num; - /** Minimum packet length that the pool must provide - 'num' packets. The number of packets may be less - than 'num' when packets are larger than 'len'. - The maximum value is defined by pool capability - pkt.max_len. Use 0 for default. */ + /** The minimum packet length that at least 'num' + * packets are required. The maximum value is defined + * by pool capability pkt.max_len. Use 0 for default. + */ uint32_t len; + /** Priority level + * + * Priority indicates the relative service level + * between pools and packet length configuration + * within a pool. The highest priority level is zero. + * Number of priorities is defined by pool capability + * pkt.num_prio. Thus the lowest priority level is + * pkt.num_prio - 1. The default value is + * ODP_POOL_PRIO_DEFAULT. + */ + uint8_t prio; + + /** Number of additional packet pool parameters + * + * The number of pkt.add[] table entries filled. The + * value must not exceed ODP_POOL_PKT_ADD_MAX. + * The default value is 0. + */ + uint8_t num_add; + /** Maximum packet length that will be allocated from the pool. The maximum value is defined by pool capability pkt.max_len. Use 0 for default (the pool maximum). */ uint32_t max_len; + /** Maximum number of packets + * + * This is the maximum number of packets of any length + * that can be allocated from the pool. The maximum + * value is defined by pool capability pkt.max_num. + * Use 0 for no requirement for maximum number. + * The default value is 0. + */ + uint32_t max_num; + /** Minimum number of packet data bytes that are stored in the first segment of a packet. The maximum value is defined by pool capability pkt.max_seg_len. @@ -214,6 +273,26 @@ typedef struct odp_pool_param_t { defined by pool capability pkt.max_uarea_size. Specify as 0 if no user area is needed. */ uint32_t uarea_size; + + /** Additional packet pool parameters + * + * This table gives more fine grained requirements for + * pool configuration. The table continues from + * num/len/prio specification above. Therefore, + * pkt.add[0].len must be greater than pkt.len, and + * pkt.add[0].num refers to packet lengths between + * pkt.len + 1 and pkt.add[0].len. + * + * Table enties must be ordered by the packet length. + * A number of packets figure (pkt.add[N].num) refers + * to packet lengths between pkt.add[N-1].len + 1 and + * pkt.add[N].len. Each number of packets requirement + * may be rounded up, as long as the 'max_num' + * parameter is not violated. Also, more than one + * number of packets requirement may not be fulfilled + * simultaneously. + */ + odp_pool_param_pkt_add_t add[ODP_POOL_PKT_ADD_MAX]; } pkt; /** Parameters for timeout pools */ @@ -278,8 +357,24 @@ odp_pool_t odp_pool_lookup(const char *name); * Used to get information about a pool. */ typedef struct odp_pool_info_t { - const char *name; /**< pool name */ - odp_pool_param_t params; /**< pool parameters */ + /** Pool name */ + const char *name; + + /** Copy of the pool parameters */ + odp_pool_param_t params; + + /** Packet pool info */ + struct { + /** Maximum number of packets of any length + * + * This many packets in maximum can be allocated from the pool. + * Application can use this e.g. to prepare enough per packet + * contexts. + */ + uint32_t max_num; + + } pkt; + } odp_pool_info_t; /** diff --git a/include/odp/arch/default/api/abi/pool.h b/include/odp/arch/default/api/abi/pool.h index 4637d19f..2e2eaf07 100644 --- a/include/odp/arch/default/api/abi/pool.h +++ b/include/odp/arch/default/api/abi/pool.h @@ -26,6 +26,8 @@ typedef _odp_abi_pool_t *odp_pool_t; #define ODP_POOL_NAME_LEN 32 +#define ODP_POOL_PRIO_DEFAULT 0 + typedef enum odp_pool_type_t { ODP_POOL_BUFFER = ODP_EVENT_BUFFER, ODP_POOL_PACKET = ODP_EVENT_PACKET, diff --git a/platform/linux-generic/include/odp/api/plat/pool_types.h b/platform/linux-generic/include/odp/api/plat/pool_types.h index 8bc816d4..7bab2fd6 100644 --- a/platform/linux-generic/include/odp/api/plat/pool_types.h +++ b/platform/linux-generic/include/odp/api/plat/pool_types.h @@ -36,6 +36,8 @@ typedef ODP_HANDLE_T(odp_pool_t); #define ODP_POOL_NAME_LEN 32 +#define ODP_POOL_PRIO_DEFAULT 0 + typedef enum odp_pool_type_t { ODP_POOL_BUFFER = ODP_EVENT_BUFFER, ODP_POOL_PACKET = ODP_EVENT_PACKET,