List comments

GET /api/patches/74613/comments/
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

[
    {
        "id": 116524,
        "web_url": "https://patches.dpdk.org/comment/116524/",
        "msgid": "<DB6PR0802MB221641972BF66E61186561F298790@DB6PR0802MB2216.eurprd08.prod.outlook.com>",
        "date": "2020-07-22T21:39:22",
        "subject": "Re: [dpdk-dev] [PATCH v3 1/2] service: add API to retrieve service\n\tcore active",
        "submitter": {
            "id": 1045,
            "url": "https://patches.dpdk.org/api/people/1045/",
            "name": "Honnappa Nagarahalli",
            "email": "honnappa.nagarahalli@arm.com"
        },
        "content": "<snip>\n\n> Subject: [PATCH v3 1/2] service: add API to retrieve service core active\n> \n> This commit adds a new experimental API which allows the user to retrieve\n> the active state of an lcore. Knowing when the service lcore is completed its\n> polling loop can be useful to applications to avoid race conditions when e.g.\n> finalizing statistics.\n> \n> The service thread itself now has a variable to indicate if its thread is active.\n> When zero the service thread has completed its service, and has returned\n> from the service_runner_func() function.\n> \n> Suggested-by: Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>\n> Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>\n> Reviewed-by: Phil Yang <phil.yang@arm.com>\n\nOver all looks good, few nits inline.\nReviewed-by: Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>\n\n> \n> ---\n> \n> v3:\n> - Change service lcore stores to SEQ_CST (Honnappa, David)\n> - Change control thread load to ACQ (Honnappa, David)\n> - Comment reasons for SEQ_CST/ACQ (Honnappa, David)\n> - Add comments to Doxygen for _stop() and _lcore_active() (Honnappa, David)\n> - Add Phil's review tag from ML\n> ---\n>  lib/librte_eal/common/rte_service.c  | 23 ++++++++++++++++++++++-\n> lib/librte_eal/include/rte_service.h | 20 +++++++++++++++++++-\n>  lib/librte_eal/rte_eal_version.map   |  1 +\n>  3 files changed, 42 insertions(+), 2 deletions(-)\n> \n> diff --git a/lib/librte_eal/common/rte_service.c\n> b/lib/librte_eal/common/rte_service.c\n> index 6a0e0ff65..b0cf7c4ab 100644\n> --- a/lib/librte_eal/common/rte_service.c\n> +++ b/lib/librte_eal/common/rte_service.c\n> @@ -65,6 +65,7 @@ struct core_state {\n>  \t/* map of services IDs are run on this core */\n>  \tuint64_t service_mask;\n>  \tuint8_t runstate; /* running or stopped */\n> +\tuint8_t thread_active; /* indicates when thread is in service_run() */\n>  \tuint8_t is_service_core; /* set if core is currently a service core */\n>  \tuint8_t service_active_on_lcore[RTE_SERVICE_NUM_MAX];\n>  \tuint64_t loops;\n> @@ -422,7 +423,7 @@ rte_service_may_be_active(uint32_t id)\n>  \t\treturn -EINVAL;\n> \n>  \tfor (i = 0; i < lcore_count; i++) {\n> -\t\tif (lcore_states[ids[i]].service_active_on_lcore[id])\n> +\tif (lcore_states[ids[i]].service_active_on_lcore[id])\nnit, I think the <tab> is required here.\n\n>  \t\t\treturn 1;\n>  \t}\n> \n> @@ -457,6 +458,8 @@ service_runner_func(void *arg)\n>  \tconst int lcore = rte_lcore_id();\n>  \tstruct core_state *cs = &lcore_states[lcore];\n> \n> +\t__atomic_store_n(&cs->thread_active, 1, __ATOMIC_SEQ_CST);\n> +\n>  \t/* runstate act as the guard variable. Use load-acquire\n>  \t * memory order here to synchronize with store-release\n>  \t * in runstate update functions.\n> @@ -475,9 +478,27 @@ service_runner_func(void *arg)\n>  \t\tcs->loops++;\n>  \t}\n> \n> +\t/* Use SEQ CST memory ordering to avoid any re-ordering around\n> +\t * this store, ensuring that once this store is visible, the service\n> +\t * lcore thread really is done in service cores code.\n> +\t */\n> +\t__atomic_store_n(&cs->thread_active, 0, __ATOMIC_SEQ_CST);\n>  \treturn 0;\n>  }\n> \n> +int32_t\n> +rte_service_lcore_active(uint32_t lcore) {\n> +\tif (lcore >= RTE_MAX_LCORE || !lcore_states[lcore].is_service_core)\n> +\t\treturn -EINVAL;\n> +\n> +\t/* Load thread_active using ACQUIRE to avoid instructions dependent\n> on\n> +\t * the result being re-ordered before this load completes.\n> +\t */\n> +\treturn __atomic_load_n(&lcore_states[lcore].thread_active,\n> +\t\t\t       __ATOMIC_ACQUIRE);\n> +}\n> +\n>  int32_t\n>  rte_service_lcore_count(void)\n>  {\n> diff --git a/lib/librte_eal/include/rte_service.h\n> b/lib/librte_eal/include/rte_service.h\n> index e2d0a6dd3..84245020d 100644\n> --- a/lib/librte_eal/include/rte_service.h\n> +++ b/lib/librte_eal/include/rte_service.h\n> @@ -249,7 +249,9 @@ int32_t rte_service_lcore_start(uint32_t lcore_id);\n>   * Stop a service core.\n>   *\n>   * Stopping a core makes the core become idle, but remains  assigned as a\n> - * service core.\n> + * service core. Note that the service lcore thread may not have\n> + returned from\n> + * the service it is running when this API returns. To check if the\n> + service\n> + * lcore is still active, the *rte_service_lcore_active* API is added.\nnit\nInstead of \"To check if the service lcore is still active, the *rte_service_lcore_active* API is added.\", may be \"*rte_service_lcore_active* API can be used to check if the service lcore is still active\"?\n\n>   *\n>   * @retval 0 Success\n>   * @retval -EINVAL Invalid *lcore_id* provided @@ -261,6 +263,22 @@\n> int32_t rte_service_lcore_start(uint32_t lcore_id);\n>   */\n>  int32_t rte_service_lcore_stop(uint32_t lcore_id);\n> \n> +/**\n> + * Reports if a service lcore is currently running.\nnit                                                     ^^^^^^^^^^^^^^^ may be \"currently running mapped services\"? (matching with the documentation for existing APIs)\n\n> + *\n> + * This function returns if the core has finished service cores code,\nnit                                                                     ^^^^^^^^^^^^^^^^^^^^^^ may be \"completed running assigned services\"?\n\n> +and has\n> + * returned to EAL control. If *rte_service_lcore_stop* has been called\n> +but\n> + * the lcore has not returned to EAL yet, it might be required to wait\n> +and call\n> + * this function again. The amount of time to wait before the core\n> +returns\n> + * depends on the duration of the services being run.\n> + *\n> + * @retval 0 Service thread is not active, and has been returned to EAL.\nnit,                                    ^^^^^ lcore?\n> + * @retval 1 Service thread is in the service core polling loop.\nnit, may be \"Service lcore is running assigned services.\"? (matching the terms used in existing APIs)\n\n> + * @retval -EINVAL Invalid *lcore_id* provided.\n> + */\n> +__rte_experimental\n> +int32_t rte_service_lcore_active(uint32_t lcore_id);\n> +\n>  /**\n>   * Adds lcore to the list of service cores.\n>   *\n> diff --git a/lib/librte_eal/rte_eal_version.map\n> b/lib/librte_eal/rte_eal_version.map\n> index bf0c17c23..d53d5d5b9 100644\n> --- a/lib/librte_eal/rte_eal_version.map\n> +++ b/lib/librte_eal/rte_eal_version.map\n> @@ -401,6 +401,7 @@ EXPERIMENTAL {\n>  \trte_lcore_dump;\n>  \trte_lcore_iterate;\n>  \trte_mp_disable;\n> +\trte_service_lcore_active;\n>  \trte_thread_register;\n>  \trte_thread_unregister;\n>  };\n> --\n> 2.17.1",
        "headers": {
            "Accept-Language": "en-US",
            "X-Mailman-Version": "2.1.15",
            "x-ms-oob-tlc-oobclassifiers": "OLM:2399;OLM:2399;",
            "X-CR-MTA-TID": "64aa7808",
            "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
            "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
            "Precedence": "list",
            "X-Forefront-Antispam-Report-Untrusted": "CIP:255.255.255.255; CTRY:; LANG:en;\n SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:DB6PR0802MB2216.eurprd08.prod.outlook.com;\n PTR:; CAT:NONE; SFTY:;\n SFS:(4636009)(376002)(136003)(396003)(366004)(346002)(39860400002)(316002)(9686003)(86362001)(8936002)(6506007)(55016002)(7696005)(71200400001)(186003)(4326008)(66946007)(66556008)(64756008)(66446008)(110136005)(52536014)(5660300002)(76116006)(2906002)(54906003)(8676002)(26005)(478600001)(66476007)(33656002)(83380400001)(87944003);\n DIR:OUT; SFP:1101;",
            "List-Post": "<mailto:dev@dpdk.org>",
            "Date": "Wed, 22 Jul 2020 21:39:22 +0000",
            "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d; Ip=[63.35.35.123];\n Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com]",
            "Subject": "Re: [dpdk-dev] [PATCH v3 1/2] service: add API to retrieve service\n\tcore active",
            "X-MS-Exchange-Transport-CrossTenantHeadersStamped": [
                "DB8PR08MB4105",
                "VI1PR08MB3981"
            ],
            "Content-Transfer-Encoding": "quoted-printable",
            "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
            "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
            "From": "Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>",
            "Received": [
                "from dpdk.org (dpdk.org [92.243.14.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id B5BD7A0526;\n\tWed, 22 Jul 2020 23:39:34 +0200 (CEST)",
                "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id C98B51BFBB;\n\tWed, 22 Jul 2020 23:39:33 +0200 (CEST)",
                "from EUR03-VE1-obe.outbound.protection.outlook.com\n (mail-eopbgr50058.outbound.protection.outlook.com [40.107.5.58])\n by dpdk.org (Postfix) with ESMTP id CDA0C1BF7B\n for <dev@dpdk.org>; Wed, 22 Jul 2020 23:39:32 +0200 (CEST)",
                "from DB6PR0301CA0061.eurprd03.prod.outlook.com (2603:10a6:4:54::29)\n by VI1PR08MB3981.eurprd08.prod.outlook.com (2603:10a6:803:ed::13)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.18; Wed, 22 Jul\n 2020 21:39:30 +0000",
                "from DB5EUR03FT031.eop-EUR03.prod.protection.outlook.com\n (2603:10a6:4:54:cafe::8b) by DB6PR0301CA0061.outlook.office365.com\n (2603:10a6:4:54::29) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3216.22 via Frontend\n Transport; Wed, 22 Jul 2020 21:39:30 +0000",
                "from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by\n DB5EUR03FT031.mail.protection.outlook.com (10.152.20.142) with\n Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.3216.10 via Frontend Transport; Wed, 22 Jul 2020 21:39:30 +0000",
                "(\"Tessian outbound c4059ed8d7bf:v62\");\n Wed, 22 Jul 2020 21:39:30 +0000",
                "from 850e5d3c1928.3\n by 64aa7808-outbound-1.mta.getcheckrecipient.com id\n 7D65B223-33CC-4E1A-B3F8-C93E265E3C09.1;\n Wed, 22 Jul 2020 21:39:25 +0000",
                "from EUR05-VI1-obe.outbound.protection.outlook.com\n by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id\n 850e5d3c1928.3\n (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384);\n Wed, 22 Jul 2020 21:39:25 +0000",
                "from DB6PR0802MB2216.eurprd08.prod.outlook.com (2603:10a6:4:85::9)\n by DB8PR08MB4105.eurprd08.prod.outlook.com (2603:10a6:10:b0::12) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3195.23; Wed, 22 Jul\n 2020 21:39:23 +0000",
                "from DB6PR0802MB2216.eurprd08.prod.outlook.com\n ([fe80::9d1d:207b:e89d:199d]) by DB6PR0802MB2216.eurprd08.prod.outlook.com\n ([fe80::9d1d:207b:e89d:199d%10]) with mapi id 15.20.3195.028; Wed, 22 Jul\n 2020 21:39:23 +0000"
            ],
            "x-originating-ip": "[217.140.111.135]",
            "X-MS-Office365-Filtering-HT": "Tenant",
            "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 63.35.35.123)\n smtp.mailfrom=arm.com; dpdk.org; dkim=pass (signature was verified)\n header.d=armh.onmicrosoft.com;dpdk.org; dmarc=bestguesspass action=none\n header.from=arm.com;",
            "x-ms-exchange-transport-forked": "True",
            "X-MS-Exchange-CrossTenant-AuthSource": "\n DB5EUR03FT031.eop-EUR03.prod.protection.outlook.com",
            "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
            "x-checkrecipientchecked": "true",
            "x-ts-tracking-id": "2a693f79-7381-4c00-b816-233b2380c8f3.0",
            "DKIM-Signature": [
                "v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=V+EJ9MzZ8UcyShvkHOGC5oPYn14KrI4YJ8o/ZQxLn+s=;\n b=r1BidPoC5JXLAOJEhAiWoaph4BxxdOJpMFe5ZpeQ4lauryNI1YoPjzjSFjjVH41HugF3fSe5JBUTZfOja9GL0SnDQ3t22lX2UHML1dRPVIvByNp4+aBbaZkN/TSBUCcrlMF/it3vFaPKrch0veDVISpXtkgpRc5fHMZ8J29bdIk=",
                "v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n s=selector2-armh-onmicrosoft-com;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=V+EJ9MzZ8UcyShvkHOGC5oPYn14KrI4YJ8o/ZQxLn+s=;\n b=r1BidPoC5JXLAOJEhAiWoaph4BxxdOJpMFe5ZpeQ4lauryNI1YoPjzjSFjjVH41HugF3fSe5JBUTZfOja9GL0SnDQ3t22lX2UHML1dRPVIvByNp4+aBbaZkN/TSBUCcrlMF/it3vFaPKrch0veDVISpXtkgpRc5fHMZ8J29bdIk="
            ],
            "Message-ID": "\n <DB6PR0802MB221641972BF66E61186561F298790@DB6PR0802MB2216.eurprd08.prod.outlook.com>",
            "Sender": "\"dev\" <dev-bounces@dpdk.org>",
            "Received-SPF": "Pass (protection.outlook.com: domain of arm.com designates\n 63.35.35.123 as permitted sender) receiver=protection.outlook.com;\n client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com;",
            "To": "Harry van Haaren <harry.van.haaren@intel.com>, \"dev@dpdk.org\"\n <dev@dpdk.org>",
            "Original-Authentication-Results": "intel.com; dkim=none (message not signed)\n header.d=none;intel.com; dmarc=none action=none header.from=arm.com;",
            "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
            "Delivered-To": "patchwork@inbox.dpdk.org",
            "x-checkrecipientrouted": "true",
            "x-ms-publictraffictype": "Email",
            "Content-Language": "en-US",
            "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass\n header.d=arm.com; arc=none",
            "X-MS-TNEF-Correlator": "",
            "X-EOPAttributedMessage": "0",
            "X-Microsoft-Antispam-Untrusted": "BCL:0;",
            "Thread-Index": "AQHWYBP1HnOlVWXjVE2oOAlHdmWMxakUGZhw",
            "CC": "\"david.marchand@redhat.com\" <david.marchand@redhat.com>,\n \"igor.romanov@oktetlabs.ru\" <igor.romanov@oktetlabs.ru>,\n \"ferruh.yigit@intel.com\" <ferruh.yigit@intel.com>, nd <nd@arm.com>,\n \"aconole@redhat.com\" <aconole@redhat.com>, \"l.wojciechow@partner.samsung.com\"\n <l.wojciechow@partner.samsung.com>, Phil Yang <Phil.Yang@arm.com>, Honnappa\n Nagarahalli <Honnappa.Nagarahalli@arm.com>, nd <nd@arm.com>",
            "X-OriginatorOrg": "arm.com",
            "Thread-Topic": "[PATCH v3 1/2] service: add API to retrieve service core active",
            "Authentication-Results-Original": "intel.com; dkim=none (message not signed)\n header.d=none;intel.com; dmarc=none action=none header.from=arm.com;",
            "X-Original-To": "patchwork@inbox.dpdk.org",
            "X-Microsoft-Antispam-PRVS": "\n <VI1PR08MB39813A29C2B6E669BE2C8DC798790@VI1PR08MB3981.eurprd08.prod.outlook.com>",
            "X-MS-Exchange-Transport-CrossTenantHeadersStripped": "\n DB5EUR03FT031.eop-EUR03.prod.protection.outlook.com",
            "x-ms-traffictypediagnostic": "DB8PR08MB4105:|VI1PR08MB3981:",
            "MIME-Version": "1.0",
            "X-MS-Exchange-CrossTenant-Id": "f34e5979-57d9-4aaa-ad4d-b122a662184d",
            "X-BeenThere": "dev@dpdk.org",
            "References": "<20200720143829.46280-1-harry.van.haaren@intel.com>\n <20200722103701.7244-1-harry.van.haaren@intel.com>",
            "Content-Type": "text/plain; charset=\"us-ascii\"",
            "X-Microsoft-Antispam-Message-Info-Original": "\n ipBCTHo14CULFpgVTSSqxw6B1OwOi71Li3wJ11NHT8gGYkDzr13qgitNR2L08i0pdnUY78JHu43itsI4umTreuNcwOtOb3dhrJ4Y8jb0vUHz0HKFURyf1Ita2X2X8KlElRJUEgbl3HBdpWl4MhMAd2v9qUUH+Qc0AxN1vapUayVHa4K9FiakLHl82AReUSKm47B/+38y7VJC1qwsELylY6EjcPH1jGC02iyj8YtIG4ZyCkp65YRjOq9txiX4N+uuJN/p/B3tdEQ1stwT1Cn3WnMwtcbLpWuS3MDVUQmU73Js10jsnHOw0JeQk2lOOyTXVmLg31PWhOmVBNQqssvC+VH0b2yfpdye1qrE2+Tcig0vFx/jQHdsW/cfZca+teEc",
            "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
            "X-Forefront-Antispam-Report": "CIP:63.35.35.123; CTRY:IE; LANG:en; SCL:1; SRV:;\n IPV:CAL; SFV:NSPM; H:64aa7808-outbound-1.mta.getcheckrecipient.com;\n PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com; CAT:NONE; SFTY:;\n SFS:(4636009)(39860400002)(346002)(396003)(136003)(376002)(46966005)(8676002)(110136005)(54906003)(26005)(186003)(82740400003)(70586007)(83380400001)(7696005)(478600001)(70206006)(6506007)(4326008)(47076004)(5660300002)(9686003)(33656002)(2906002)(52536014)(82310400002)(81166007)(316002)(356005)(55016002)(8936002)(336012)(86362001)(87944003);\n DIR:OUT; SFP:1101;",
            "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=V+EJ9MzZ8UcyShvkHOGC5oPYn14KrI4YJ8o/ZQxLn+s=;\n b=CqVQztWOh0luDIMkJfk5W5GFPnCXl4gbVzG3XAtkPAuWJ8coN/AaYGifTVqtR4B2NeWpMu3jS3YA6kcPKsNLoJHV1D84g1NzAk9X2ysJkJG3CdTxPmxq+GxmcfIcef62YK4kFnr99YjYOVZreJ5FfaHf1hrmKOHKOHxobX3RuFgBS4YJlSHlW5ZWgvSJc9LpXXy1en/B6qtXzKZnuMrexFCIIq1oasoes+hvUQZPfzdamBdFyf3/IRjVwe4e53YFhBupP3/IY/l4SmNjF4NwX0sdWNKhH6S8svBPfWH7hiWu/SQLC7iO5eAoITJO3EJvKVPtvHb7GqHapHRW0b/0zg==",
            "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n 9ebd88c7-8b61-44a6-98ea-08d82e87b758",
            "X-MS-Office365-Filtering-Correlation-Id-Prvs": "\n 5ca7242e-b742-40bc-056e-08d82e87b2fe",
            "nodisclaimer": "true",
            "X-MS-Office365-Filtering-Correlation-Id": "9ebd88c7-8b61-44a6-98ea-08d82e87b758",
            "X-MS-Has-Attach": "",
            "X-Microsoft-Antispam-Message-Info": "\n D0jLsalS6BddBxmh9QipJIEjAYmRZG+bU0YOqjZRsVhkhM4II17cSxRXtHlCaE7K1jBXsjee9jhazDN3h0M+nkAFnb27GgjENIUXIrMYLOG+vaZGUOx9smlL+ki+aWE0ShjShkoAfiSGQYF70Ni16BKaZTzPFUAOmXbWlHNq66LX4HPGpc1xC7zlO9trwpca58E9L8YS1oFrho/7kPeIwS78v5ZXLWD9zT9hXzPgla4AWl9p9U8cVXNpF1Sqx2aXis0WheRPlbbSOKWRDbPnO9Bcae6+7XLkPQ/Hubf7rijG0n4o47QxzKOZ5ve7qmC6J08DDmMdWpXnnTy85xHfXNh/LpQIqrutgXyFRo50HXDVe5ABuF0nPcbX0RZAUmzJuFx+Pd6IyJHBRjs/LFLAH/crkpwZeCEYbrA4V96yfHU=",
            "x-ms-exchange-antispam-messagedata": "\n WK+VfNmpmtwjnTPE7IOFZTcGyNwTmGKm9097F6sBtOE5JNSLActo3LncZomlCXWojcjgG/LrbSa7w2JkpQ6vdMHw3l3kaG0OZsSHJjc/2Q0onV5772EE5zCBt33ZV/danBOSJawbr60GJRq47n9vpbdm7ksxSbwwzHUIbP2QRnP0jKhy22tk3gaTQKdpHoF25wlOFKIxwORGS3u41AbFvulhHGO5Zd4SHWUsRy1ZFNGisqxsHHxlYwoDwk5oPCepsDWKqC8ER9oWCB4SFuBnOIYM/1PhMD5xS9olyPAZNKSHmMNrTp9Qfh5K/PfISUyQzVbAXViDsQqA12zhz9F0dQUip5JBBvY4EEI6WiZKYyXirgrIp2ufLU+zi1ICla0M3yQqnwrPrXFxxFrqwI5hM2M9DxhqwYEt2bQfKEJRBU8DRyZljtWn8y/Nu3V7lnzS8UqBgr9hyjxTXEwvmvbUR82FO4My7PSWla0Edoxdhsw0NvV6HuMUsePHL1yqoyBt",
            "X-MS-Exchange-SenderADCheck": "1",
            "In-Reply-To": "<20200722103701.7244-1-harry.van.haaren@intel.com>",
            "X-Microsoft-Antispam": "BCL:0;",
            "Return-Path": "<dev-bounces@dpdk.org>",
            "Errors-To": "dev-bounces@dpdk.org",
            "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=KucW5GvF68c8WgbVbyF5ubzpMOzdVrM2xOuGNyo8kOpDU1dmktGhX181H7WpoyxPCl/XxH9TWiv9hTh2ySck5M/XYetHZub+4mXy1vR2S7JwajXFLPtbq+xPB6gLU8fI11rIKo3XtiSbv5LVcAFVl+/ZMFirCstG0qREjJijRgfjZw99aQnQ4tUuBjSc/Mtt/5xYG1dADyfbhIDOPXOn6Ds65+qB7pIwcWu1upc2VdJ6NV9+WX+TwKg4gBqVT6+NIiWQRC2ui5rahQ0OL9QV/xK2VS9ihIl2Yugfi5KTy/00DK6mgHx3B7pRkYCFMOrvIcJDGfkBYn/eAL1SVGUyZg==",
            "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "22 Jul 2020 21:39:30.4354 (UTC)"
        }
    }
]