get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/patches/40074/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 40074,
    "url": "https://patches.dpdk.org/api/patches/40074/?format=api",
    "web_url": "https://patches.dpdk.org/project/dpdk/patch/DB7PR08MB31637C042CB07826BE425E5F8F920@DB7PR08MB3163.eurprd08.prod.outlook.com/",
    "project": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<DB7PR08MB31637C042CB07826BE425E5F8F920@DB7PR08MB3163.eurprd08.prod.outlook.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/DB7PR08MB31637C042CB07826BE425E5F8F920@DB7PR08MB3163.eurprd08.prod.outlook.com",
    "date": "2018-05-16T02:08:48",
    "name": "[dpdk-dev] dev Digest, Vol 195, Issue 45",
    "commit_ref": null,
    "pull_url": null,
    "state": "not-applicable",
    "archived": true,
    "hash": "e03e89c1a2b8a86578359fa58a747447a67585fc",
    "submitter": {
        "id": 1018,
        "url": "https://patches.dpdk.org/api/people/1018/?format=api",
        "name": "Gavin Hu",
        "email": "gavin.hu@arm.com"
    },
    "delegate": {
        "id": 1,
        "url": "https://patches.dpdk.org/api/users/1/?format=api",
        "username": "tmonjalo",
        "first_name": "Thomas",
        "last_name": "Monjalon",
        "email": "thomas@monjalon.net"
    },
    "mbox": "https://patches.dpdk.org/project/dpdk/patch/DB7PR08MB31637C042CB07826BE425E5F8F920@DB7PR08MB3163.eurprd08.prod.outlook.com/mbox/",
    "series": [],
    "comments": "https://patches.dpdk.org/api/patches/40074/comments/",
    "check": "fail",
    "checks": "https://patches.dpdk.org/api/patches/40074/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 4C32D1B70F;\n\tWed, 16 May 2018 04:08:52 +0200 (CEST)",
            "from EUR01-HE1-obe.outbound.protection.outlook.com\n\t(mail-he1eur01on0058.outbound.protection.outlook.com [104.47.0.58])\n\tby dpdk.org (Postfix) with ESMTP id 0BA121B70D\n\tfor <dev@dpdk.org>; Wed, 16 May 2018 04:08:49 +0200 (CEST)",
            "from DB7PR08MB3163.eurprd08.prod.outlook.com (52.134.110.149) by\n\tDB7PR08MB3227.eurprd08.prod.outlook.com (52.134.111.13) with\n\tMicrosoft SMTP Server (version=TLS1_2,\n\tcipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384_P256) id\n\t15.20.755.16; Wed, 16 May 2018 02:08:48 +0000",
            "from DB7PR08MB3163.eurprd08.prod.outlook.com\n\t([fe80::59d5:f556:4bdb:bd30]) by\n\tDB7PR08MB3163.eurprd08.prod.outlook.com\n\t([fe80::59d5:f556:4bdb:bd30%13]) with mapi id 15.20.0755.018;\n\tWed, 16 May 2018 02:08:48 +0000"
        ],
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com;\n\ts=selector1-arm-com;\n\th=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n\tbh=1aii+sCYRU5udyT/OPMGV1MHDqmBss2VoJ+q87sArDg=;\n\tb=eQhrZyvAptME3ge/gUPHmjeOukzXaesxPGY3SNlsNU5uH0O9hR876olq/XHCROyheT2ySLe4BmuOhzQsN7M5phF6uBj0RXYjd3ZQbHeoqGwVnsxcMBPwW7i3wPkTpHJ28DdIdtFR+P5VOqGwP/0bFzgtAt1OvS0r7hEhbRQ3BUU=",
        "From": "Gavin Hu <Gavin.Hu@arm.com>",
        "To": "\"dev@dpdk.org\" <dev@dpdk.org>, \"Jacob,  Jerin\"\n\t<Jerin.JacobKollanukkaran@cavium.com>",
        "Thread-Topic": "dev Digest, Vol 195, Issue 45",
        "Thread-Index": "AQHT7CzPc9GD39WiGEeUgMYk/NQAg6QxjR0g",
        "Date": "Wed, 16 May 2018 02:08:48 +0000",
        "Message-ID": "<DB7PR08MB31637C042CB07826BE425E5F8F920@DB7PR08MB3163.eurprd08.prod.outlook.com>",
        "References": "<mailman.3990.1526375522.30695.dev@dpdk.org>",
        "In-Reply-To": "<mailman.3990.1526375522.30695.dev@dpdk.org>",
        "Accept-Language": "en-US",
        "Content-Language": "en-US",
        "X-MS-Has-Attach": "",
        "X-MS-TNEF-Correlator": "",
        "authentication-results": "spf=none (sender IP is )\n\tsmtp.mailfrom=Gavin.Hu@arm.com; ",
        "x-originating-ip": "[113.29.88.7]",
        "x-ms-publictraffictype": "Email",
        "x-microsoft-exchange-diagnostics": "1; DB7PR08MB3227;\n\t7:VMcne57urRwVy78k7wwMvMhqWSbA8bwdVln8yFT/m5alg+hc0PRmwW5+cZNqN6jIgL5OM6NrTaLApSNBQQe+CyjGRBAxOHJN/VJnRDANUZJw/nAP1l7FW7w7f7P5yGhZyhh7aexS4VRkBDek3xubl0BHpIE5PfzlH5TKRRjXZYjacrJzjqQUtdpfyg+TeV6egj0hyjNQ5NlnPITQPpcTuYfaqTP5E1FkeH2WSvkp/YScANve5pfUlXbVwPiLlzXM",
        "x-ms-exchange-antispam-srfa-diagnostics": "SOS;",
        "x-ms-office365-filtering-ht": "Tenant",
        "x-microsoft-antispam": "UriScan:; BCL:0; PCL:0;\n\tRULEID:(7020095)(4652020)(5600026)(48565401081)(4534165)(7168020)(4627221)(201703031133081)(201702281549075)(2017052603328)(7153060)(7193020);\n\tSRVR:DB7PR08MB3227; ",
        "x-ms-traffictypediagnostic": "DB7PR08MB3227:",
        "x-microsoft-antispam-prvs": "<DB7PR08MB3227CFB7ACFA22B543CC93FD8F920@DB7PR08MB3227.eurprd08.prod.outlook.com>",
        "x-exchange-antispam-report-test": "UriScan:(180628864354917)(262104967686372)(66839620246622)(228905959029699);",
        "x-ms-exchange-senderadcheck": "1",
        "x-exchange-antispam-report-cfa-test": "BCL:0; PCL:0;\n\tRULEID:(8211001083)(6040522)(2401047)(8121501046)(5005006)(93006095)(93001095)(3002001)(10201501046)(3231254)(2232076)(944501410)(52105095)(6055026)(149027)(150027)(6041310)(20161123564045)(20161123562045)(20161123560045)(20161123558120)(201703131423095)(201702281528075)(20161123555045)(201703061421075)(201703061406153)(6072148)(201708071742011);\n\tSRVR:DB7PR08MB3227; BCL:0; PCL:0; RULEID:; SRVR:DB7PR08MB3227; ",
        "x-forefront-prvs": "0674DC6DD3",
        "x-forefront-antispam-report": "SFV:NSPM;\n\tSFS:(10009020)(346002)(376002)(396003)(39380400002)(39860400002)(366004)(18543002)(199004)(189003)(27574002)(40434004)(5403001)(13464003)(10533003)(11346002)(476003)(446003)(5250100002)(5890100001)(2501003)(33656002)(7736002)(305945005)(8676002)(81166006)(81156014)(74316002)(68736007)(2906002)(8936002)(5660300001)(110136005)(66066001)(3280700002)(3660700001)(55236004)(316002)(14454004)(6506007)(97736004)(53546011)(102836004)(6246003)(6116002)(3846002)(6436002)(229853002)(7696005)(86362001)(575784001)(59450400001)(25786009)(76176011)(53936002)(72206003)(486006)(105586002)(26005)(6306002)(966005)(53946003)(2900100001)(478600001)(99286004)(55016002)(186003)(9686003)(106356001)(59010400001);\n\tDIR:OUT; SFP:1101; SCL:1; SRVR:DB7PR08MB3227;\n\tH:DB7PR08MB3163.eurprd08.prod.outlook.com; FPR:; SPF:None; LANG:en;\n\tPTR:InfoNoRecords; A:1; MX:1; ",
        "received-spf": "None (protection.outlook.com: arm.com does not designate\n\tpermitted sender hosts)",
        "x-microsoft-antispam-message-info": "8VIf26WgjIqS7/X+g98kC0Z88gr/nSMKSzmfVGYpPGQCKhP4FLoIaS9mgff+qX5U1fdPBV9s+MXeA0iENO7DIn3/PwNOwqSpQmtnvnOi34IWyN75dFBxBiq1bWWhRn1InHGbrUneMq9EyXx+rHu1/1Q1TZtwSJQzPf/ATub5469E3Sbk3uQFMxGgUo5ne+bR6qhBJ8WrKD/WamezVoWvKOeBoArb424FYq9hXLzeIwyLo6h3I4eADJjZyvJIuKNqcrh+5XSt8CLYflRleJTUbO+vFgBeHhWeMYCM7B7Jpe0DdDQIvoEijJxMuGes/cVI",
        "spamdiagnosticoutput": "1:99",
        "spamdiagnosticmetadata": "NSPM",
        "Content-Type": "text/plain; charset=\"us-ascii\"",
        "Content-Transfer-Encoding": "quoted-printable",
        "MIME-Version": "1.0",
        "X-MS-Office365-Filtering-Correlation-Id": "b049ce0f-3d41-4812-cf7e-08d5bad1f621",
        "X-OriginatorOrg": "arm.com",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "b049ce0f-3d41-4812-cf7e-08d5bad1f621",
        "X-MS-Exchange-CrossTenant-originalarrivaltime": "16 May 2018 02:08:48.2354\n\t(UTC)",
        "X-MS-Exchange-CrossTenant-fromentityheader": "Hosted",
        "X-MS-Exchange-CrossTenant-id": "f34e5979-57d9-4aaa-ad4d-b122a662184d",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "DB7PR08MB3227",
        "Subject": "Re: [dpdk-dev] dev Digest, Vol 195, Issue 45",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://dpdk.org/ml/options/dev>,\n\t<mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://dpdk.org/ml/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://dpdk.org/ml/listinfo/dev>,\n\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "-----Original Message-----\nFrom: dev <dev-bounces@dpdk.org> On Behalf Of dev-request@dpdk.org\nSent: Tuesday, May 15, 2018 5:12 PM\nTo: dev@dpdk.org\nSubject: dev Digest, Vol 195, Issue 45\n\nSend dev mailing list submissions to\ndev@dpdk.org\n\nTo subscribe or unsubscribe via the World Wide Web, visit\nhttps://dpdk.org/ml/listinfo/dev\nor, via email, send a message with subject or body 'help' to\ndev-request@dpdk.org\n\nYou can reach the person managing the list at\ndev-owner@dpdk.org\n\nWhen replying, please edit your Subject line so it is more specific than \"Re: Contents of dev digest...\"\n\n\nToday's Topics:\n\n   1. Re: [PATCH 1/4] app: add LDFLAGS -latomic to link atomic lib\n      (Jerin Jacob)\n   2. [PATCH v2] net/tap: perform proto field update for tunonly\n      (Vipin Varghese)\n   3. Re: [PATCH] net/tap: perform proto field update for tun only\n      (Varghese, Vipin)\n   4. Re: [PATCH 2/4] Driver/Mellanox: fix PMD compiling issue\n      (Jerin Jacob)\n\n\n----------------------------------------------------------------------\n\nMessage: 1\nDate: Tue, 15 May 2018 14:37:01 +0530\nFrom: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nTo: Gavin Hu <gavin.hu@arm.com>\nCc: dev@dpdk.org\nSubject: Re: [dpdk-dev] [PATCH 1/4] app: add LDFLAGS -latomic to link\natomic lib\nMessage-ID: <20180515090700.GA10539@jerin>\nContent-Type: text/plain; charset=us-ascii\n\n-----Original Message-----\n> Date: Tue, 15 May 2018 04:28:41 -0400\n> From: Gavin Hu <gavin.hu@arm.com>\n> To: dev@dpdk.org\n> Subject: [dpdk-dev] [PATCH 1/4] app: add LDFLAGS -latomic to link\n> atomic lib\n> X-Mailer: git-send-email 2.1.4\n>\n> For ARM64 platform, libdpdk.a includes the\n> librte_pmd_octeontx_ssovf.a, which requires the libatomic.a\n> support.The atomic lib is built-in in the gcc toolchain, but for clang it has to be explicitly linked.\n> For more details, please refer to\n> https://clang.llvm.org/docs/Toolchain.html\n>\n> ~/dpdk/build/lib/librte_pmd_octeontx_ssovf.a(timvf_worker.o): In function `timvf_timer_cancel_burst':\n> timvf_worker.c:(.text+0x80): undefined reference to `__atomic_fetch_add_8'\n> /home/gavin/arm_repo/dpdk/build/lib/librte_pmd_octeontx_ssovf.a(timvf_worker.o): In function `timvf_timer_arm_burst_sp':\n> timvf_worker.c:(.text+0x200): undefined reference to `__atomic_fetch_add_8'\n> timvf_worker.c:(.text+0x244): undefined reference to `__atomic_store_2'\n> timvf_worker.c:(.text+0x278): undefined reference to `__atomic_fetch_add_4'\n> timvf_worker.c:(.text+0x30c): undefined reference to `__atomic_store_2'\n>\n> Signed-off-by: Gavin Hu <gavin.hu@arm.com>\n> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>\n\n\n\nFollowing patch is part of upstream. Are you testing with following patch/upstream.\n\nWith this patch from Nikhilesh, this __ atomic__ compiling issue was gone.\nThe two patches fix the same issue.\nShould I abandon my patch?\n\nI see this note on: https://clang.llvm.org/docs/Toolchain.html\nNote\nClang does not currently automatically link against libatomic when using libgcc_s. You may need to manually add -latomic to support this configuration when using non-native atomic operations (if you see link errors referring to __atomic_* functions).\n\ncommit 55fbc92d7800100628579643c9ee2770614fef10\nAuthor: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>\nDate:   Wed May 9 02:56:00 2018 +0530\n\n    event/octeontx: fix build with clang 6\n\n    Clang 6 & 7 fail to naturally align packed structs due to this clang\n    can't use 8byte atomic primitives and splits them into lesser atomic\n    primitives. To use lesser atomic primitives we need to link libatomic\n    (-latomic), instead supply alignment attribute to the compiler.\n\n    timvf_worker.c:(.text+0x498): undefined reference to `__atomic_fetch_add_8'\n    timvf_worker.c:(.text+0x525): undefined reference to `__atomic_store_2'\n    timvf_worker.c:(.text+0x557): undefined reference to `__atomic_fetch_add_4'\n    timvf_worker.c:(.text+0x5de): undefined reference to `__atomic_store_2'\n\n    Fixes: f874c1eb1519 (\"event/octeontx: create and free timer\nadapter\")\n\n    Reported-by: Andrew Rybchenko <arybchenko@solarflare.com>\n    Signed-off-by: Pavan Nikhilesh <pbhagavatula@caviumnetworks.com>\n    Acked-by: Jerin Jacob <jerin.jacob@caviumnetworks.com>\n\n\n> ---\n>  mk/rte.app.mk | 1 +\n>  1 file changed, 1 insertion(+)\n>\n> diff --git a/mk/rte.app.mk b/mk/rte.app.mk index 438f99d..bca8325\n> 100644\n> --- a/mk/rte.app.mk\n> +++ b/mk/rte.app.mk\n> @@ -51,6 +51,7 @@ endif\n>\n>  # Link only the libraries used in the application  LDFLAGS +=\n> --as-needed\n> +LDFLAGS += -latomic\n>\n>  # default path for libs\n>  _LDLIBS-y += -L$(RTE_SDK_BIN)/lib\n> --\n> 2.1.4\n>\n\n\n------------------------------\n\nMessage: 2\nDate: Tue, 15 May 2018 20:19:40 +0530\nFrom: Vipin Varghese <vipin.varghese@intel.com>\nTo: dev@dpdk.org, keith.wiles@intel.com, ferruh.yigit@intel.com,\nophirmu@mellanox.com\nCc: Vipin Varghese <vipin.varghese@intel.com>\nSubject: [dpdk-dev] [PATCH v2] net/tap: perform proto field update for\ntunonly\nMessage-ID:\n<1526395780-105792-1-git-send-email-vipin.varghese@intel.com>\n\nThe TX function is shared between TAP and TUN PMD. Checking TUN-TAP\ntype field will ensure the TAP PMD will always have protocol field\nas 0.\n\nSigned-off-by: Vipin Varghese <vipin.varghese@intel.com>\nSuggested-by: Ferruh Yigit <ferruh.yigit@intel.com>\n---\n\nChanges in V2:\nupdated in comment wording - Keith Wiles\nremove debug print from tx code - Keith Wiles\n---\n drivers/net/tap/rte_eth_tap.c | 48 ++++++++++++++++++++++++++-----------------\n drivers/net/tap/rte_eth_tap.h | 10 +++++++++\n 2 files changed, 39 insertions(+), 19 deletions(-)\n\n--\n2.7.4\n\n\n\n------------------------------\n\nMessage: 3\nDate: Tue, 15 May 2018 09:08:49 +0000\nFrom: \"Varghese, Vipin\" <vipin.varghese@intel.com>\nTo: \"Wiles, Keith\" <keith.wiles@intel.com>\nCc: \"dev@dpdk.org\" <dev@dpdk.org>, \"ophirmu@mellanox.com\"\n<ophirmu@mellanox.com>, \"Yigit, Ferruh\" <ferruh.yigit@intel.com>\nSubject: Re: [dpdk-dev] [PATCH] net/tap: perform proto field update\nfor tun only\nMessage-ID:\n<4C9E0AB70F954A408CC4ADDBF0F8FA7D4D1EB6B2@BGSMSX101.gar.corp.intel.com>\n\nContent-Type: text/plain; charset=\"utf-8\"\n\nThanks Keith,\n\nI have made changes and shared v2 patch for both the suggestions.\n\nThanks\nVipin Varghese\n\n<snipped>\n\n> > +/*\n> > + * TUN and TAP are created with IFF_NO_PI disabled.\n> > + * For TUN PMD this mandatory as fields are used by\n> > + * Kernel tun.c to determine whether its IP or non IP\n> > + * packets.\n> > + *\n> > + * The logic fetches the first byte of data from mbuf.\n> > + * compares whether its v4 or v6. If none match default\n> > + * value 0x00 is taken for protocol field.\n>\n> Little reword and remove the ?.? at end of first line.\n>\n> The logic fetches the first byte of data from mbuf then compares whether it is v4\n> or v6. If not equal to zero then it must be a protocol field.\n>\n>\n>\n> > + */\n> > +char *buff_data = rte_pktmbuf_mtod(seg, void *);\n> > +j = (*buff_data & 0xf0);\n> > +pi.proto = (j == 0x40) ? 0x0008 :\n> > +(j == 0x60) ? 0xdd86 : 0x00;\n> > +printf(\"j %x pi proto %x\\n\", j, pi.proto);\n>\n> Should this not be a LOG message or is this debug that was not removed? If log\n> message then add move text to explain the output better.\n>\n\n<snipped>\n\n\n------------------------------\n\nMessage: 4\nDate: Tue, 15 May 2018 14:41:42 +0530\nFrom: Jerin Jacob <jerin.jacob@caviumnetworks.com>\nTo: Gavin Hu <gavin.hu@arm.com>\nCc: dev@dpdk.org, Sirshak Das <sirshak.das@arm.com>\nSubject: Re: [dpdk-dev] [PATCH 2/4] Driver/Mellanox: fix PMD compiling\nissue\nMessage-ID: <20180515091141.GB10539@jerin>\nContent-Type: text/plain; charset=us-ascii\n\n-----Original Message-----\n> Date: Tue, 15 May 2018 04:28:42 -0400\n> From: Gavin Hu <gavin.hu@arm.com>\n> To: dev@dpdk.org\n> CC: Sirshak Das <sirshak.das@arm.com>\n> Subject: [dpdk-dev] [PATCH 2/4] Driver/Mellanox: fix PMD compiling issue\n> X-Mailer: git-send-email 2.1.4\n\nPlease add the reason and compilation error log.\nand make sure to fix check patch.sh and check-gitlog.sh errors.\n\nSure I will rework and submit a V3 patch. Thanks for your comments.\n\n>\n> Signed-off-by: Gavin Hu <gavin.hu@arm.com>\n> Signed-off-by: Sirshak Das <sirshak.das@arm.com>\n> Reviewed-by: Phil Yang <Phil.Yang@arm.com>\n> Reviewed-by: Honnappa Nagarahalli <Honnappa.Nagarahalli@arm.com>\n> ---\n>  drivers/net/mlx5/mlx5_rxtx_vec_neon.h | 12 ++++++------\n>  1 file changed, 6 insertions(+), 6 deletions(-)\n>\n> diff --git a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h\n> index 2673d6b..71a5eaf 100644\n> --- a/drivers/net/mlx5/mlx5_rxtx_vec_neon.h\n> +++ b/drivers/net/mlx5/mlx5_rxtx_vec_neon.h\n> @@ -167,8 +167,8 @@ txq_scatter_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts,\n>  vst1q_u8((void *)t_wqe, ctrl);\n>  /* Fill ESEG in the header. */\n>  vst1q_u16((void *)(t_wqe + 1),\n> -  (uint16x8_t) { 0, 0, cs_flags, rte_cpu_to_be_16(len),\n> - 0, 0, 0, 0 });\n> +  ((uint16x8_t) { 0, 0, cs_flags, rte_cpu_to_be_16(len),\n> +  0, 0, 0, 0 }));\n>  txq->wqe_ci = wqe_ci;\n>  }\n>  if (!n)\n> @@ -300,10 +300,10 @@ txq_burst_v(struct mlx5_txq_data *txq, struct rte_mbuf **pkts, uint16_t pkts_n,\n>  vst1q_u8((void *)t_wqe, ctrl);\n>  /* Fill ESEG in the header. */\n>  vst1q_u8((void *)(t_wqe + 1),\n> - (uint8x16_t) { 0, 0, 0, 0,\n> -cs_flags, 0, 0, 0,\n> -0, 0, 0, 0,\n> -0, 0, 0, 0 });\n> + ((uint8x16_t) { 0, 0, 0, 0,\n> + cs_flags, 0, 0, 0,\n> + 0, 0, 0, 0,\n> + 0, 0, 0, 0 }));\n>  #ifdef MLX5_PMD_SOFT_COUNTERS\n>  txq->stats.opackets += pkts_n;\n>  #endif\n> --\n> 2.1.4\n>\n\n\nEnd of dev Digest, Vol 195, Issue 45\n************************************\nIMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you.",
    "diff": "diff --git a/drivers/net/tap/rte_eth_tap.c b/drivers/net/tap/rte_eth_tap.c\nindex ea6d899..fafd557 100644\n--- a/drivers/net/tap/rte_eth_tap.c\n+++ b/drivers/net/tap/rte_eth_tap.c\n@@ -115,7 +115,8 @@ tun_alloc(struct pmd_internals *pmd)\n  * Do not set IFF_NO_PI as packet information header will be needed\n  * to check if a received packet has been truncated.\n  */\n-ifr.ifr_flags = (tap_type) ? IFF_TAP : IFF_TUN | IFF_POINTOPOINT;\n+ifr.ifr_flags = (pmd->type == ETH_TUNTAP_TYPE_TAP) ?\n+IFF_TAP : IFF_TUN | IFF_POINTOPOINT;\n snprintf(ifr.ifr_name, IFNAMSIZ, \"%s\", pmd->name);\n\n TAP_LOG(DEBUG, \"ifr_name '%s'\", ifr.ifr_name);\n@@ -502,20 +503,22 @@ pmd_tx_burst(void *queue, struct rte_mbuf **bufs, uint16_t nb_pkts)\n if (rte_pktmbuf_pkt_len(mbuf) > max_size)\n break;\n\n-/*\n- * TUN and TAP are created with IFF_NO_PI disabled.\n- * For TUN PMD this mandatory as fields are used by\n- * Kernel tun.c to determine whether its IP or non IP\n- * packets.\n- *\n- * The logic fetches the first byte of data from mbuf.\n- * compares whether its v4 or v6. If none matches default\n- * value 0x00 is taken for protocol field.\n- */\n-char *buff_data = rte_pktmbuf_mtod(seg, void *);\n-j = (*buff_data & 0xf0);\n-pi.proto = (j == 0x40) ? 0x0008 :\n-(j == 0x60) ? 0xdd86 : 0x00;\n+if (txq->type == ETH_TUNTAP_TYPE_TUN) {\n+/*\n+ * TUN and TAP are created with IFF_NO_PI disabled.\n+ * For TUN PMD this mandatory as fields are used by\n+ * Kernel tun.c to determine whether its IP or non IP\n+ * packets.\n+ *\n+ * The logic fetches the first byte of data from mbuf\n+ * then compares whether its v4 or v6. If first byte\n+ * is 4 or 6, then protocol field is updated.\n+ */\n+char *buff_data = rte_pktmbuf_mtod(seg, void *);\n+j = (*buff_data & 0xf0);\n+pi.proto = (j == 0x40) ? 0x0008 :\n+(j == 0x60) ? 0xdd86 : 0x00;\n+}\n\n iovecs[0].iov_base = &pi;\n iovecs[0].iov_len = sizeof(pi);\n@@ -1052,6 +1055,9 @@ tap_setup_queue(struct rte_eth_dev *dev,\n tx->mtu = &dev->data->mtu;\n rx->rxmode = &dev->data->dev_conf.rxmode;\n\n+tx->type = pmd->type;\n+rx->type = pmd->type;\n+\n return *fd;\n }\n\n@@ -1386,6 +1392,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n pmd = dev->data->dev_private;\n pmd->dev = dev;\n snprintf(pmd->name, sizeof(pmd->name), \"%s\", tap_name);\n+pmd->type = ETH_TUNTAP_TYPE_UNKNOWN;\n\n pmd->ioctl_sock = socket(AF_INET, SOCK_DGRAM, 0);\n if (pmd->ioctl_sock == -1) {\n@@ -1421,7 +1428,9 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n pmd->txq[i].fd = -1;\n }\n\n-if (tap_type) {\n+pmd->type = (tap_type) ? ETH_TUNTAP_TYPE_TAP : ETH_TUNTAP_TYPE_TUN;\n+\n+if (pmd->type == ETH_TUNTAP_TYPE_TAP) {\n if (is_zero_ether_addr(mac_addr))\n eth_random_addr((uint8_t *)&pmd->eth_addr);\n else\n@@ -1440,7 +1449,7 @@ eth_dev_tap_create(struct rte_vdev_device *vdev, char *tap_name,\n if (tap_ioctl(pmd, SIOCSIFMTU, &ifr, 1, LOCAL_AND_REMOTE) < 0)\n goto error_exit;\n\n-if (tap_type) {\n+if (pmd->type == ETH_TUNTAP_TYPE_TAP) {\n memset(&ifr, 0, sizeof(struct ifreq));\n ifr.ifr_hwaddr.sa_family = AF_LOCAL;\n rte_memcpy(ifr.ifr_hwaddr.sa_data, &pmd->eth_addr,\n@@ -1812,7 +1821,9 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev)\n struct pmd_internals *internals;\n int i;\n\n-TAP_LOG(DEBUG, \"Closing TUN/TAP Ethernet device on numa %u\",\n+internals = eth_dev->data->dev_private;\n+TAP_LOG(DEBUG, \"Closing %s Ethernet device on numa %u\",\n+(internals->type == ETH_TUNTAP_TYPE_TAP) ? \"TAP\" : \"TUN\",\n rte_socket_id());\n\n /* find the ethdev entry */\n@@ -1820,7 +1831,6 @@ rte_pmd_tap_remove(struct rte_vdev_device *dev)\n if (!eth_dev)\n return 0;\n\n-internals = eth_dev->data->dev_private;\n if (internals->nlsk_fd) {\n tap_flow_flush(eth_dev, NULL);\n tap_flow_implicit_flush(internals, NULL);\ndiff --git a/drivers/net/tap/rte_eth_tap.h b/drivers/net/tap/rte_eth_tap.h\nindex 67c9d4b..8b0da5a 100644\n--- a/drivers/net/tap/rte_eth_tap.h\n+++ b/drivers/net/tap/rte_eth_tap.h\n@@ -23,6 +23,13 @@\n #define RTE_PMD_TAP_MAX_QUEUES1\n #endif\n\n+enum rte_tuntap_type {\n+ETH_TUNTAP_TYPE_UNKNOWN,\n+ETH_TUNTAP_TYPE_TUN,\n+ETH_TUNTAP_TYPE_TAP,\n+ETH_TUNTAP_TYPE_MAX,\n+};\n+\n struct pkt_stats {\n uint64_t opackets;              /* Number of output packets */\n uint64_t ipackets;              /* Number of input packets */\n@@ -38,6 +45,7 @@ struct rx_queue {\n uint32_t trigger_seen;          /* Last seen Rx trigger value */\n uint16_t in_port;               /* Port ID */\n int fd;\n+int type;  /* Type field - TUN|TAP */\n struct pkt_stats stats;         /* Stats for this RX queue */\n uint16_t nb_rx_desc;            /* max number of mbufs available */\n struct rte_eth_rxmode *rxmode;  /* RX features */\n@@ -48,6 +56,7 @@ struct rx_queue {\n\n struct tx_queue {\n int fd;\n+int type;  /* Type field - TUN|TAP */\n uint16_t *mtu;                  /* Pointer to MTU from dev_data */\n uint16_t csum:1;                /* Enable checksum offloading */\n struct pkt_stats stats;         /* Stats for this TX queue */\n@@ -57,6 +66,7 @@ struct pmd_internals {\n struct rte_eth_dev *dev;          /* Ethernet device. */\n char remote_iface[RTE_ETH_NAME_MAX_LEN]; /* Remote netdevice name */\n char name[RTE_ETH_NAME_MAX_LEN];  /* Internal Tap device name */\n+int type;  /* Type field - TUN|TAP */\n struct ether_addr eth_addr;       /* Mac address of the device port */\n struct ifreq remote_initial_flags;   /* Remote netdevice flags on init */\n int remote_if_index;              /* remote netdevice IF_INDEX */\n",
    "prefixes": [
        "dpdk-dev"
    ]
}