From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from NAM01-BN3-obe.outbound.protection.outlook.com (mail-bn3nam01on0066.outbound.protection.outlook.com [104.47.33.66]) by dpdk.org (Postfix) with ESMTP id E84D92935 for ; Wed, 20 Sep 2017 15:28:16 +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=lHNoNdfdBSOChtT4FenzAlPJReqcbCAEmkUl8cch3WQ=; b=dk5GEWtQY0W92joZ1lMjjImbtpH635uKLvSAx2M97rVspSWSfzzav542xc66YGV4wWLGPavsAQ+UGFMDjCzxWYqRYOgIdXndRaKvxKQz6ycilQQStY7LjIB6g4BDY22duaVQKuNyrGQa4Lq9/QBelabhkuYfI+JNodj9QQLwZns= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Pavan.Bhagavatula@cavium.com; Received: from PBHAGAVATULA-LT (111.93.218.67) by MWHPR07MB3470.namprd07.prod.outlook.com (10.164.192.21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id 15.20.56.11; Wed, 20 Sep 2017 13:28:13 +0000 Date: Wed, 20 Sep 2017 18:57:47 +0530 From: Pavan Nikhilesh Bhagavatula To: "Dumitrescu, Cristian" , stephen@networkplumber.org Cc: dev@dpdk.org Message-ID: <20170920132717.GA13570@PBHAGAVATULA-LT> References: <1504693294-2100-1-git-send-email-pbhagavatula@caviumnetworks.com> <3EB4FA525960D640B5BDFFD6A3D891267BABD0BA@IRSMSX108.ger.corp.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <3EB4FA525960D640B5BDFFD6A3D891267BABD0BA@IRSMSX108.ger.corp.intel.com> User-Agent: Mutt/1.5.24 (2015-08-30) X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: BM1PR01CA0072.INDPRD01.PROD.OUTLOOK.COM (10.174.208.140) To MWHPR07MB3470.namprd07.prod.outlook.com (10.164.192.21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: d1da58de-d46d-4628-745f-08d5002b72b1 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:MWHPR07MB3470; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470; 3:Tll096q4evPU/vZ4+a7gQ5wmIfwnfDJBC5+mRbkOxozJRrkPDkFZmGP7u3iCvhsZlH9ylLS0tQHLwZXTOsSyVGBbhkjeJ0kwrlVfGIOUgj75nuy87mDs3RMMy86ylwVyVI62q5FX9YeUW/0AZPSqMAD2GNkdRuvseVpq0WHQC+qAbd7iYyVarHHCswbZ7qc7Y4KzqpXj83X1dVgR84nRqz95pmcjujiJ9acGmn310KFW1o7Mgcxe+EG3T57l0RXP; 25:wPRnYKbbRurLSHggvuz89P8eSqcjlf2A9N0aPLNw7EQYW5DpzEByQyzC3P5a/+BDvADD+OiViK+okT3jsxVUNKl1rMRnVawzIWnSRwkbeKHH0stf6csBo8rk296DNf7HBinzUK00soqLS8XO3koNuCBUv/fx27Nkc7cZL2ywYq0+b5we6naqS+hjgYCdlYY/ok6owNf6ERPHSvWNwC8cTZQtYWM+RP2cqKVkF87pTKRC8Mal3hwmq/QCqba/QAcXIX8z1owM5Zu7Sjj4SCDg3YtqRbwRRWxh9BfT7oCBL7SXiQAW4ty+3sXqKN3eTw43aUWfMSyHn2xtm6i6bSNDzA==; 31:l7l0J4+EJQOI17xwaGFNA0yqJEfkcqGhs0h9ZbUyHXpo4z2Y37s7a+FRVwlHP1kAvLldOE18ysRtzcFxLsbI5PNZNg4TOxdOKo0NTBaUIGwxYbV+Hq+/0IypLzJ1z1ED7fUe2GzH80W5CY1d6kuVcJqGwobAA1p424beHcjgzJQYBXxiM8l6u7ebgEYuxUQvG0sF1x4rWoeqKB78OZs2NesI8lyqbOc+4ihE7USpzdQ= X-MS-TrafficTypeDiagnostic: MWHPR07MB3470: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470; 20:mtOcKrxJ4Tc7bV7klw5x6ltPzP3ahxI+zCbO14xzcy7cDMkV6fz90wyFwhHOa8ifGwIcUsQZcqgCLWoHKI1c2eD5cOC3CJdbqzR9lFxOLZaNchn+HSeT4LVog936Zhst58yES+t7dHUA3FWhX94xAuMDxKXAv8+SA2iwTZKuVcGgUxOoau9mqix+zkx+k9mOiAgqzRg/3kKjzLwOHlVt2TlqP9EDSObVV7NjvSPFxzwdN6/FW2sCYJN8RTFz9dgyIrKBwKWACssAZ0jmralnLBJ3Li2jWD8OY+ucFqZ05+pvIrBFNddaolsLMcOwdjSNrn06wacoRI2n4/4uAsC1gbiwFHGC8Dvg6OA8GFWdb83h6Tt5/tM/jmsta29sL4MFN2N0/5IienqAepiuMRm5z76elCZ8PmluQkj8RxVP17ViIYZPlmBWQqRIO+xiU0kN91Y4UR/5WX4XkKi6isvGJ0yo13GeAyc2Wx/LnUVSPleNj+ABjTsdk2uTxLmWeZBztF5C6blO+VTKY2IM6afW7iG3R02L0EIv7CKHhRC4rz2Fomfj+BNvWHSTzWyOl1eU52nZJxh87bnNWfbI70cUygty03R3KDciEH272n/pjVQ= X-Exchange-Antispam-Report-Test: UriScan:(278428928389397)(228905959029699); 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)(100000703101)(100105400095)(93006095)(3002001)(10201501046)(6041248)(20161123564025)(20161123562025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123560025)(20161123558100)(6072148)(201708071742011)(100000704101)(100105200095)(100000705101)(100105500095); SRVR:MWHPR07MB3470; BCL:0; PCL:0; RULEID:(100000800101)(100110000095)(100000801101)(100110300095)(100000802101)(100110100095)(100000803101)(100110400095)(100000804101)(100110200095)(100000805101)(100110500095); SRVR:MWHPR07MB3470; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470; 4:7LSCO/qqZhTYdeUhhgvg3M9dL8u0ZrMq583lQmKhTbBRFN8D7a2+OuvPa2w1PqprOG1hJ/vu33AF3s3KW1WXrkhlz+QlvGW4wCoc7KrzFhUl+/vRwHFT2f+dJdc1ingTryjRpwEEg5DfV+U5SOIGgsy5egJbU9stF6mQZVYwLLCyaPLkPmvGRz2a7T0hcken9O12HugBijgeBDOlDejFb4oUq9kOC4zBpUEZ6E2gEf+RlAlatvDUsy+G1FbSeI7eC5IeePEmrChGYEIARbuCM+vOae+TA04uQnJJFRFnWZa/Naak37pKKPbMxb9bhoTu+heEZvvtyx8IA7RbBkWwIA== X-Forefront-PRVS: 04362AC73B X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(189002)(199003)(24454002)(13464003)(377454003)(6666003)(42882006)(478600001)(229853002)(33656002)(72206003)(2950100002)(54356999)(33716001)(2906002)(76176999)(101416001)(47776003)(9686003)(55016002)(53936002)(4326008)(50986999)(6496005)(6246003)(189998001)(25786009)(66066001)(16526017)(68736007)(106356001)(105586002)(50466002)(305945005)(3846002)(6116002)(97736004)(53546010)(83506001)(316002)(5660300001)(5009440100003)(7736002)(81166006)(58126008)(1076002)(81156014)(23726003)(8676002)(8936002)(16586007)(18370500001)(107986001); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3470; H:PBHAGAVATULA-LT; 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; MWHPR07MB3470; 23:rOwZIVRakW4OIMPvXGOc/oRjE3TR3PGhHuehFaiNp?= =?us-ascii?Q?ioDfN29WBr8WSLDR2AXp4fmkTay9gj4eruGsjfD2hZbTML4hdNp2XEVN1muY?= =?us-ascii?Q?FaReNK/ZKlcYP55r1kapTTHG+24cssXHE2pecLQ5iekTDV87PMx6enA7V3nq?= =?us-ascii?Q?uovhXwHS9b+Mq9Q1wEmvpdZwQGuRV+RBW8kICmjNBseb4ButjkWd9p6AVrpt?= =?us-ascii?Q?AxfNXMQf/juPJV+t8tT46q29aqASINbTEVIh9EUQcpSQf/yrJZHbENTR5muF?= =?us-ascii?Q?xRcgPbNOS0aDy8nqIuQS+PVNjxrDUZa+UpoQnw5N/BoL2SnetKPCDvntdUI2?= =?us-ascii?Q?oklwfitVLUQVxgNTGet+Rs/HLxGD4Vd2/PHw76oqvqxjw84+8plOtM7UDhAS?= =?us-ascii?Q?THb9I/ubzfIvqUjZHfrZGFn26q7UIVmkWjNayCWCxTboiE3z45rTzGev95o0?= =?us-ascii?Q?BIe8RbIr3X/R2lYdalnjlljtaAVyAkW2jgurjeE9LQb+2fAA6MOvX7c1hJ4W?= =?us-ascii?Q?ByhOHwAyWrDWXTdMKG1DBCGAQa3SjMoCGIwn02vi0CkhB1AoCx0cOXz5wY4g?= =?us-ascii?Q?oD4cqWkTtvLCvg91u2Bw9GWj+wW+Gn3syh0t+F4VhXjNMC6ML8X+jLS2O1hs?= =?us-ascii?Q?NEIBOnMNhMtNsf4zZKFGyFq0aK9RhzXvfQ2zdXhMeIowHXOdDgvmjAYwTfK2?= =?us-ascii?Q?FjYpn1Ei3/2n27HAP3OmYYpdFDO6IKss5tilaSewmhNFDLDRaeK9o+hccjH0?= =?us-ascii?Q?9oQ/Yb/Fu7J++FXiO06zQvxGhydV7xCop1glZAPT428MPkdGb3/c54Frk18H?= =?us-ascii?Q?qz4MH2UGJVpLEGeaQUyfwPHUVbdi6QTuAAGKzLfod3eKwHFZwOB5bQUe7sO6?= =?us-ascii?Q?OIFBo2EfTYHTfcHtiqzWHfYtFeR6UHp2YZKLeMAlII0GETmWs8DFEoOPNoJZ?= =?us-ascii?Q?87q2Ncm9L0wE0dI3DoSMmbII3qg/LKsiWFeoGtk3FGRnpBGPkl/eKPMJvUmn?= =?us-ascii?Q?0Bz6G3+0f5POrOxDxpO39+czSzGNZbyBdCJlfbB1kOraGqnYDiM//EmlJlG+?= =?us-ascii?Q?5D3aJh5QgdcNDbgy99Ln3SzX0zEPa/3W74nAXlXTNCut3qOmqvMtPVJy5tvi?= =?us-ascii?Q?p/oTv98mg2SMVd0MiEwp9Dy3Z9rd9duDzMFPVqBxKwbHSrWQhsN5CWdjRMAK?= =?us-ascii?Q?J7hwBYyY52CxNHncjUg6o04RWMIvg1A2kzWuKm4hV8zT81g2O0zCOE+qLaHb?= =?us-ascii?Q?pk9KYWc48bxYRTfq0M1XAtrGgobezSMRfitPK2qQ2wYjU984MtVQfUu6KIib?= =?us-ascii?Q?B5tIQWStNG2gqDK6+uxHsI=3D?= X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470; 6:4nr3823pEMlihR3flboGa+sH7xia1MbmILjVFpYLdex/l1t4pkWkB7ROX6/5NxmqLTCxo100EL4Ny4GQMRSdG2d5ZqV12UYh7q49Lsrdiw1aSpnGEgVt1XOBEGPp+73Yj8lOZa1S6ibcal57+U9eqtLn2Uk/71BkM0j1Z/OuCT45r4Yhrvl5H6NBF7PNpDJVk4gFEv5td62fIwu9CHiu3M5RISizQxDbsYMF1CqhpFKXWRPf/6JskLlSoR5qqp3QFrnbYbwsHuljNlxUsXQ2qJeC04V9p+E+z7+fgLjTeE+JYUPB8mLo+PqQd6+9idReSO75RGEKFcwfkSz3zxfGSw==; 5:zuhX+KtXwOvYdO1XMcWNoh/i/8Uy9baosqcmaG93p1kLygJT0fka5qjwmWx+060MMKbHmz+0HI5t/2YFOCab/ySFNLjrFuctznF2sQRH1mt2HoK90draZobVVY7h56/yJp8kWcOfdsaBh1PfcdCn4A==; 24:ttJN/4G4SrdzWW5jRl3HdwZ4rWz0CW01FiJeqOxDs2BZb3BsIboQPpsnYEyfqRE4EK9eVWsmV7CWkckuhGvzYLTnoC25dOc3SeYxm8X4tAE=; 7:+fj4+lrKVyAJAMOtMHVT0vlOlNxQPaWD0qat7sx0Um/xjn2HlCS3Uci8/1tTQXh6eR+yvfg37wHmJdM8H5OHGoYO70M6ZM2dUCutnhdKKMRrz3MmyO9Uh7QId102K9g8vxEx7nClgK+mXZlYDrpMpUW2bfj+Snzudarf6TZ8wWxsdNLqv87kD+kWB5Wrx1F6znG3rD3eqqvlb73d8dTKEfkPDyS4SxZOGfnJURrcVr8= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 20 Sep 2017 13:28:13.7337 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3470 Subject: Re: [dpdk-dev] [PATCH v6 1/3] eal: introduce integer divide through reciprocal 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, 20 Sep 2017 13:28:17 -0000 On Wed, Sep 20, 2017 at 01:10:53PM +0000, Dumitrescu, Cristian wrote: > Hi Pavan, Hi Cristian, > > I think moving rte_reciprocal.[hc] to a common code area like EAL is a very good idea, so thanks for doing this work! > > One ask from my side: please do not change the existing code. > 1. Keep the existing name for the 32-bit API functions and data structures (no _u32 name suffix), add the _u64 suffix just for the new API functions that you add. > - If you want, you can create aliases with _32 name suffix for the existing 32-bit API > - The only change to rte_sched.c should be header include line: #include "rte_reciprocal.h" -> #include > 2. Do not do any cosmetic changes in existing code in rte_reciprocal.[hc] (such as adding CR+LF), as they result in lots of code churn for no real value > > Once these changes are done, the size of your patch set is reduced considerably. > Will do the changes once the licencing issues get sorted out(v7). -Pavan > > > -----Original Message----- > > From: Pavan Nikhilesh [mailto:pbhagavatula@caviumnetworks.com] > > Sent: Wednesday, September 6, 2017 11:22 AM > > To: Dumitrescu, Cristian ; > > stephen@networkplumber.org > > Cc: dev@dpdk.org; Pavan Bhagavatula > > > > Subject: [dpdk-dev] [PATCH v6 1/3] eal: introduce integer divide through > > reciprocal > > > > From: Pavan Bhagavatula > > > > In some use cases of integer division, denominator remains constant and > > numerator varies. It is possible to optimize division for such specific > > scenarios. > > > > The librte_sched uses rte_reciprocal to optimize division so, moving it to > > eal/common would allow other libraries and applications to use it. > > > > Signed-off-by: Pavan Nikhilesh > > Reviewed-by: Anatoly Burakov > > --- > > > > v6 changes: > > - remove cache alignment from rte_reciprocal_u{32/64}structures as they > > would > > be embedded in other structures. > > > > v5 changes: > > - fix test print strings > > > > v4 changes: > > - minor fix for test cases > > - fix u32 divisor generation > > > > v3 changes: > > - fix x86_32 compilation issue > > - fix improper licence in test > > > > v2 changes: > > - fix compilation issues with .map files > > - add test cases for correctness and performance > > - remove extra licence inclusion > > - fix coding style issues > > > > lib/librte_eal/bsdapp/eal/Makefile | 1 + > > lib/librte_eal/bsdapp/eal/rte_eal_version.map | 7 +++++++ > > lib/librte_eal/common/Makefile | 1 + > > lib/{librte_sched => librte_eal/common/include}/rte_reciprocal.h | 6 ++++-- > > lib/{librte_sched => librte_eal/common}/rte_reciprocal.c | 6 ++++-- > > lib/librte_eal/linuxapp/eal/Makefile | 1 + > > lib/librte_eal/linuxapp/eal/rte_eal_version.map | 7 +++++++ > > lib/librte_sched/Makefile | 2 -- > > lib/librte_sched/rte_sched.c | 2 +- > > 9 files changed, 26 insertions(+), 7 deletions(-) > > rename lib/{librte_sched => librte_eal/common/include}/rte_reciprocal.h > > (87%) > > rename lib/{librte_sched => librte_eal/common}/rte_reciprocal.c (96%) > > > > diff --git a/lib/librte_eal/bsdapp/eal/Makefile > > b/lib/librte_eal/bsdapp/eal/Makefile > > index 005019e..56f9804 100644 > > --- a/lib/librte_eal/bsdapp/eal/Makefile > > +++ b/lib/librte_eal/bsdapp/eal/Makefile > > @@ -88,6 +88,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += > > malloc_elem.c > > SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += malloc_heap.c > > SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_keepalive.c > > SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_service.c > > +SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_reciprocal.c > > > > # from arch dir > > SRCS-$(CONFIG_RTE_EXEC_ENV_BSDAPP) += rte_cpuflags.c > > diff --git a/lib/librte_eal/bsdapp/eal/rte_eal_version.map > > b/lib/librte_eal/bsdapp/eal/rte_eal_version.map > > index aac6fd7..90d7258 100644 > > --- a/lib/librte_eal/bsdapp/eal/rte_eal_version.map > > +++ b/lib/librte_eal/bsdapp/eal/rte_eal_version.map > > @@ -237,3 +237,10 @@ EXPERIMENTAL { > > rte_service_unregister; > > > > } DPDK_17.08; > > + > > +DPDK_17.11 { > > + global: > > + > > + rte_reciprocal_value; > > + > > +} DPDK_17.08; > > diff --git a/lib/librte_eal/common/Makefile > > b/lib/librte_eal/common/Makefile > > index e8fd67a..a680b2d 100644 > > --- a/lib/librte_eal/common/Makefile > > +++ b/lib/librte_eal/common/Makefile > > @@ -42,6 +42,7 @@ INC += rte_hexdump.h rte_devargs.h rte_bus.h > > rte_dev.h rte_vdev.h > > INC += rte_pci_dev_feature_defs.h rte_pci_dev_features.h > > INC += rte_malloc.h rte_keepalive.h rte_time.h > > INC += rte_service.h rte_service_component.h > > +INC += rte_reciprocal.h > > > > GENERIC_INC := rte_atomic.h rte_byteorder.h rte_cycles.h rte_prefetch.h > > GENERIC_INC += rte_spinlock.h rte_memcpy.h rte_cpuflags.h rte_rwlock.h > > diff --git a/lib/librte_sched/rte_reciprocal.h > > b/lib/librte_eal/common/include/rte_reciprocal.h > > similarity index 87% > > rename from lib/librte_sched/rte_reciprocal.h > > rename to lib/librte_eal/common/include/rte_reciprocal.h > > index 5e21f09..b6d752f 100644 > > --- a/lib/librte_sched/rte_reciprocal.h > > +++ b/lib/librte_eal/common/include/rte_reciprocal.h > > @@ -29,13 +29,15 @@ struct rte_reciprocal { > > uint8_t sh1, sh2; > > }; > > > > -static inline uint32_t rte_reciprocal_divide(uint32_t a, struct rte_reciprocal > > R) > > +static inline uint32_t > > +rte_reciprocal_divide(uint32_t a, struct rte_reciprocal R) > > { > > uint32_t t = (uint32_t)(((uint64_t)a * R.m) >> 32); > > > > return (t + ((a - t) >> R.sh1)) >> R.sh2; > > } > > > > -struct rte_reciprocal rte_reciprocal_value(uint32_t d); > > +struct rte_reciprocal > > +rte_reciprocal_value(uint32_t d); > > > > Please remove these cosmetic changes that result in code churn for no real value. > > > #endif /* _RTE_RECIPROCAL_H_ */ > > diff --git a/lib/librte_sched/rte_reciprocal.c > > b/lib/librte_eal/common/rte_reciprocal.c > > similarity index 96% > > rename from lib/librte_sched/rte_reciprocal.c > > rename to lib/librte_eal/common/rte_reciprocal.c > > index 652f023..7ab99b4 100644 > > --- a/lib/librte_sched/rte_reciprocal.c > > +++ b/lib/librte_eal/common/rte_reciprocal.c > > @@ -41,7 +41,8 @@ > > /* find largest set bit. > > * portable and slow but does not matter for this usage. > > */ > > -static inline int fls(uint32_t x) > > +static inline int > > +fls(uint32_t x) > > { > > int b; > > > > @@ -53,7 +54,8 @@ static inline int fls(uint32_t x) > > return 0; > > } > > > > -struct rte_reciprocal rte_reciprocal_value(uint32_t d) > > +struct rte_reciprocal > > +rte_reciprocal_value(uint32_t d) > > { > > struct rte_reciprocal R; > > uint64_t m; > > Please remove these cosmetic changes that result in code churn for no real value. > > > diff --git a/lib/librte_eal/linuxapp/eal/Makefile > > b/lib/librte_eal/linuxapp/eal/Makefile > > index 90bca4d..98f3b8e 100644 > > --- a/lib/librte_eal/linuxapp/eal/Makefile > > +++ b/lib/librte_eal/linuxapp/eal/Makefile > > @@ -100,6 +100,7 @@ SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += > > malloc_elem.c > > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += malloc_heap.c > > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_keepalive.c > > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_service.c > > +SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_reciprocal.c > > > > # from arch dir > > SRCS-$(CONFIG_RTE_EXEC_ENV_LINUXAPP) += rte_cpuflags.c > > diff --git a/lib/librte_eal/linuxapp/eal/rte_eal_version.map > > b/lib/librte_eal/linuxapp/eal/rte_eal_version.map > > index 3a8f154..2070cba 100644 > > --- a/lib/librte_eal/linuxapp/eal/rte_eal_version.map > > +++ b/lib/librte_eal/linuxapp/eal/rte_eal_version.map > > @@ -242,3 +242,10 @@ EXPERIMENTAL { > > rte_service_unregister; > > > > } DPDK_17.08; > > + > > +DPDK_17.11 { > > + global: > > + > > + rte_reciprocal_value; > > + > > +} DPDK_17.08; > > diff --git a/lib/librte_sched/Makefile b/lib/librte_sched/Makefile > > index 18274e7..569656b 100644 > > --- a/lib/librte_sched/Makefile > > +++ b/lib/librte_sched/Makefile > > @@ -52,10 +52,8 @@ LIBABIVER := 1 > > # all source are stored in SRCS-y > > # > > SRCS-$(CONFIG_RTE_LIBRTE_SCHED) += rte_sched.c rte_red.c rte_approx.c > > -SRCS-$(CONFIG_RTE_LIBRTE_SCHED) += rte_reciprocal.c > > > > # install includes > > SYMLINK-$(CONFIG_RTE_LIBRTE_SCHED)-include := rte_sched.h > > rte_bitmap.h rte_sched_common.h rte_red.h rte_approx.h > > -SYMLINK-$(CONFIG_RTE_LIBRTE_SCHED)-include += rte_reciprocal.h > > > > include $(RTE_SDK)/mk/rte.lib.mk > > diff --git a/lib/librte_sched/rte_sched.c b/lib/librte_sched/rte_sched.c > > index b7cba11..3b8ccaa 100644 > > --- a/lib/librte_sched/rte_sched.c > > +++ b/lib/librte_sched/rte_sched.c > > @@ -42,12 +42,12 @@ > > #include > > #include > > #include > > +#include > > > > #include "rte_sched.h" > > #include "rte_bitmap.h" > > #include "rte_sched_common.h" > > #include "rte_approx.h" > > -#include "rte_reciprocal.h" > > > > #ifdef __INTEL_COMPILER > > #pragma warning(disable:2259) /* conversion may lose significant bits */ > > -- > > 2.7.4 > > Regards, > Cristian >