From patchwork Tue Oct 17 08:53:12 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Pavan Nikhilesh X-Patchwork-Id: 30462 X-Patchwork-Delegate: jerinj@marvell.com Return-Path: X-Original-To: patchwork@dpdk.org Delivered-To: patchwork@dpdk.org Received: from [92.243.14.124] (localhost [127.0.0.1]) by dpdk.org (Postfix) with ESMTP id 1E6701B7B1; Tue, 17 Oct 2017 10:53:36 +0200 (CEST) Received: from NAM03-DM3-obe.outbound.protection.outlook.com (mail-dm3nam03on0071.outbound.protection.outlook.com [104.47.41.71]) by dpdk.org (Postfix) with ESMTP id EDDC81B7D4 for ; Tue, 17 Oct 2017 10:53:32 +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=9K/7tghpmsENJU7mGNrj49M4sy1AFhIJwoKsyZD8tls=; b=UKt6qOWsBhGpe0htp86ljBEBKR/AV893EZAmqpMhESg59o0ZtWSzgtydIaikP2hKDOgkIIXTuzefI383225gslZQuGvYixUUbDzZa9IulTAICLCYmcZrbTtINgSn1wARo5tLSaEmP4qO8mCF2WCgWq6G8Wkbyed+EktPjiQbjFo= Authentication-Results: spf=none (sender IP is ) smtp.mailfrom=Pavan.Bhagavatula@cavium.com; Received: from PBHAGAVATULA-LT.caveonetworks.com (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.77.7; Tue, 17 Oct 2017 08:53:29 +0000 From: Pavan Nikhilesh To: santosh.shukla@caviumnetworks.com, jerin.jacob@caviumnetworks.com Cc: dev@dpdk.org, Pavan Nikhilesh Date: Tue, 17 Oct 2017 14:23:12 +0530 Message-Id: <1508230393-27018-2-git-send-email-pbhagavatula@caviumnetworks.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1508230393-27018-1-git-send-email-pbhagavatula@caviumnetworks.com> References: <1508230393-27018-1-git-send-email-pbhagavatula@caviumnetworks.com> MIME-Version: 1.0 X-Originating-IP: [111.93.218.67] X-ClientProxiedBy: MWHPR12CA0029.namprd12.prod.outlook.com (10.172.49.15) To MWHPR07MB3470.namprd07.prod.outlook.com (10.164.192.21) X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 71a86d58-454e-4bd6-e08f-08d5153c8abd X-Microsoft-Antispam: UriScan:; BCL:0; PCL:0; RULEID:(22001)(2017030254152)(2017052603199)(201703131423075)(201703031133081)(201702281549075); SRVR:MWHPR07MB3470; X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470; 3:1luNdVmDcB3gS9uPOSm3UF30Vbw3FqVIJe6KJL88ciGcyIP0a+Rsbh68ZbCFR4TrcGUSrTBI69vofElCHpkbl6Gr7tR/MV7Zt7wQshmbvHSNdS27+bMurB4J3KR7R/0m9Se/xzAvmfza2STvSsDfXx7CmDEyeHyd7l2jGHV7Ln392twuo5THaQ8t8lBPnZ89t+CTLO2Blq6HYv9tH94SVqNe3uy53fQvj5qp211V8OQw8j4CQV4BjmfrKS53nK4T; 25:qKCsA79cX/UpBBcz3tvNvLzSVVsiLAEcJ6MNLejakuE/FIraOLCUn6pFCi4XDOTUCOVmq9DOmuOkhgYVGerm1p5W9Fj7jsL6MnZMuqKBhFwEIXp3e82VXA1P8ZDp9RtxxrYX0DZA64GIYpEV61aG0TWTloRqnjrU5g+JIWj1t25oHfEz4Di+nyXSKiiWN7LPkKDZQHHJWv1rP4cEwYneRUab6e93UNlcQ5bavRMjnQZFkEsKs69nAvOkumms56m8BsChxURiuLRi7POL4seEXCjc96Pb/DStWf5D9vQRBznMNjvDWe4b/2Szwnw+f6+dSmyz3g9EkvFkvHMkKcWrgQ==; 31:f9DMC54tYDxbV3IRs9T/RAH1kf8dT8iQY4GFUPUEVOW6Eys7p/rmHajRMaQ3OhyT+O/JMF+tuIZLPyqDKBH/v0IYm74/k8ecB3Ibk7kCRn9kTslEEQ91YcNsmbZcH73lPO2AJjOjRffYgXzokIm+/DoRtYDOcKhPIHAvJWYmaz3c8COzdU68oGomQZ7Uk5ycmkKFDkM4PUs0QJCXvORc+hEpjPDtHCB1yge6tlfAYlw= X-MS-TrafficTypeDiagnostic: MWHPR07MB3470: X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470; 20:RQ/t36++0Glo00ZDlqBbd9ZmsVAnTjvfQOJ70bPrHXRYqaYSKYjhEYLpr6tYaepNIDmnXFdlkDG0B/3ZrUcRt+BO+1PdPcitSNO0G330b4zhRpfXrUl+h7mTiqMSzY6nnWwpIRiLA24JEX1Ayp6lWqEj+HfpeijTHubOVkotqXgMsla+v5CYBZbJPeqr2xBW59ZXTjTzs27vDBuvk5uSOuXnX28Q4Rk9yD1ML9M7evXQDz8j2IrL/75WZ7m6c/rOguNlz80MIJFIZKXhKyPC1HAVYLeT/HMsEL3FxGET7dP8xFZ5zY7XILB8XVgdUdcQyZQpgrnWH8XVDjxhuzK3M1vnD00VT0CCBfIYI9L0mO6QxoZGB7zXyo6amEGU/2PaSWeV/uhfLKlxGCf3qXJSla4QtPghejKXT14vp6VNRBNAeUycAStSE3wGnN6JdiuUlZfUHRmsRVyCzHzAwvxKVGk14CBwPyn7ouHQ05Q/g5qvmOnjNqKfXJ8NcwDqRYo/lIPkkTl28/ZC0HoR890VcppfMZm2u/2gklYc60ODyEGhA6mJ39vPT8tSwjv6UHL6KLkrKOs6qpZkUhz4EtmIMKBRO0mRa37Py049I8cKbjw=; 4:ZGvslc4P3duH+MEx8sHUq35Np0K+gLg+r5UIizTMINRm0U7rKGQNbMo7IeyAUfnTin4/QK/qgb3IAWeZBrq/ZVU7Pvww11bjo9woW4fPDiI3opafYEtIeW3A9nLypuSZCgUwYQXj6GR0QgUmos1R7ARHh1p4GLKgKASghpZxfrMkSs3QZX8dzSWJHRWLucOAxskdwiutxvZBwpcBJw5iCcWi6TKU1zvG83Ml4G1kXHZc5du8d5ySagH3by5tNSTd 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)(5005006)(8121501046)(93006095)(10201501046)(3002001)(100000703101)(100105400095)(6041248)(20161123555025)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123560025)(20161123564025)(20161123562025)(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-Forefront-PRVS: 04631F8F77 X-Forefront-Antispam-Report: SFV:NSPM; SFS:(10009020)(6009001)(376002)(346002)(199003)(189002)(50466002)(68736007)(5009440100003)(3846002)(48376002)(16586007)(2906002)(105586002)(53416004)(101416001)(8936002)(106356001)(6116002)(5660300001)(81166006)(305945005)(81156014)(50226002)(5003940100001)(69596002)(33646002)(8676002)(7736002)(2950100002)(25786009)(6512007)(107886003)(6506006)(4326008)(53936002)(42882006)(36756003)(189998001)(6486002)(478600001)(6666003)(47776003)(50986999)(76176999)(316002)(66066001)(97736004)(6636002)(85306007)(16526018)(72206003)(42262002)(309714004); DIR:OUT; SFP:1101; SCL:1; SRVR:MWHPR07MB3470; H:PBHAGAVATULA-LT.caveonetworks.com; FPR:; SPF:None; PTR:InfoNoRecords; A:1; MX: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:4F0eNu5U95pI4NrCgRh0imlk3U2s6jR9Mrtj+8L5M?= ulJgwTAkTI/++71WGl18RiNwvZg7Sly014w1UcTSGnZduJ1Cs8bScSuBmVY/rrkhxUQ1Lq8lDJq1nelIIUwqsUT6u7n1zCS2OwEYa3NKqgA/TsafngsJHS583E1ibwCtyOJEqwY1M1OGUOJEpg+W9eEGEUinvtaoyyA7AuCb2WTNsrURdDn88T9+xex2Zk+0izKY42DwpJ/R/QPBXSXZWchC9YvaofJf6roV2iA8i06/jXOaQ5CXiZ8wc2k24u5xbBBoVk/A11F+eVG8MjcaRnIGjNtz4ynxC6XbVEa6ryOvkIJ9Wr4LDHS1CJEr/pl2pJKHEm/3oxrMk4MqaGx3k36jkO4i2ad290cPrEJRcc9WLHo1717ms1Dp2iifOJYpprqndSXDePiCQg1t6AGZmjgVdcftea24NpCGvhDx/f+L/oyJvRXtGGN390pM7onQpX3e32yu5pI3oSATD0sOkQwq3d3a4TOnAMhumRE0CrHpU55i4TOuEyzBZKollw2MI5AIJp/oEaSnyDpGAMAvtX33qsJ6h/2XARykexiqv8tpJjNti3AC5vsoz9Fc6XjOPEEQHQQULH8rzICY32jwVz8uoL3SIymlJmOGbWkdNL3WtP18t2G0s+dAhd1ZVu7aATOdIQa3Bd7Q33PKwseCwJGI8qcRIinFwfquhFYgLrlSlSOSU/vKDwYtFVOrKwHslYYbjSsZq3S5hbOr00Gdn8KJmpjFna0eIJpJ3+HMDTEvxMozL1O3lfnmV39WV2nDyRAd3cmPTEh6KRW+ckAlOmS/GyIwAUrJSbIj87QAKKEULcPO9aofMPAjPck5/HoTXj/B6Ndd/RglLFSge2sDuLzBTU9t8aONeQkJnNWcMXGopuicK/RIY3QnJeX3YblwluoHKDjmu78GVQnp0sMjbX4yMr0F8I2Pyyiljj4sVhGORFmvDVpG4AZN1a9JJD21/+f32wcVo14KSY6btMzXZH70+hVLeQkZ4zKC6gDlNqF6aGwMzgEvMPwtzBAqTtYlS7nXOzWrUh2dAIF0u09fXElepURwnXOYYbU3Zyz1XcYx2zF4qxCHPBQUBnoQqjcDFxVfm6OK9pwy/4Xl5IncZLOAb/D1drmNVgiQne88wDa/PCvVAujk8CUO9gk2u5GyrCCJU2Uaba5VwP+E2Q72K2bP7Zt0STDTSU11JU4IN4jhr1iC7c8V8iQpp0wAfK85EQ= X-Microsoft-Exchange-Diagnostics: 1; MWHPR07MB3470; 6:fB0iRGH5hQxg9Ag4BgqNiJwQe51EgWjPvmyCPzyPldz/RPps0nDqe3Hlswzq0sJ8bKLB1B+2ExvN3i5hD2ZUvv5xpVYV7+ZD46rOaWmzeRVNEnckyrjlgsZvpiyGyUKHSfJIgnCgZETFcGWMCLEDhYpgNl+xZ56dUJhDFshvj+O/I0z9WJQ5ro+XLNco/jNufysikvwCi8yaYrTLSnx+0bc0tCRhcmV+XNlRSD2Qpzf3q61DA7bOoaI4kuXt6AzZcLHq5+hzo1rQB+okgMAQL55EszzfEYdxA9wZ2sjBKcn73nwaU9OYxd8NCtOLOjWO2DUrDjvlv74JlE/ffY8aJw==; 5:q5AmxMxdFZPCosiocoGnnaH/bbeyWwawY+15MwNpcZA0mex2L2IdPT4t3dCkOOZ3FbS/t/4bIe8eaIuPiLrtmbDDVQNsjp/3SjeiT8xREyT2KTQ2Xr3XfS2YCewS6l7qFZKATcLBZeVicoSmYrGp6w==; 24:q2BCHf7lhJK2aB0MyKFEilBuY/0ZOBRe0Ef4OF5jXK5cs5b6W+YeR9S6WmrrOdIDxpFifh0tgAVWudS4y6108cqGYudrhyEbpV0fhQsTS8k=; 7:SU6kIVpyuKmTYojgDTI5AVbKeLE3Dnrq5mhcsSt4N4DGiRzYsRlYVhYTtsPuAkvqlBiiE5olnnI+glQtYPhPS7q/V5TC5naTi8BMSSFhBenAmlujIRCHgSSpopf1bJGThwCXwAU4OY/X5nqRqW5/ndJeXDOlguku0Zgvqy+n/+ob62MUb4BTOZ/1EDYp7rdYcTThemHBM6C/fmojIRp7fHpvKeRbrgLjrFzW79xt568= SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-OriginatorOrg: caviumnetworks.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Oct 2017 08:53:29.9744 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 711e4ccf-2e9b-4bcf-a551-4094005b6194 X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR07MB3470 Subject: [dpdk-dev] [PATCH 2/3] event/octeontx: add support for event Rx adapter 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: , Errors-To: dev-bounces@dpdk.org Sender: "dev" Add Rx adapter queue add and delete API for both generic eth_devices as well as HW backed eth_octeontx which supports direct event injection to event device. The HW injected event needs to be converted into mbuf, previously this was done in eth_octeontx during rx_burst now it is moved to event_octeontx as events from Rx adapter are dequeued directly from event device. Signed-off-by: Pavan Nikhilesh --- drivers/event/octeontx/Makefile | 1 + drivers/event/octeontx/ssovf_evdev.c | 126 ++++++++++++++++++++++++++++++++++ drivers/event/octeontx/ssovf_evdev.h | 1 + drivers/event/octeontx/ssovf_worker.h | 31 ++++++++- 4 files changed, 156 insertions(+), 3 deletions(-) diff --git a/drivers/event/octeontx/Makefile b/drivers/event/octeontx/Makefile index 08fc167..7f7b9b3 100644 --- a/drivers/event/octeontx/Makefile +++ b/drivers/event/octeontx/Makefile @@ -39,6 +39,7 @@ LIB = librte_pmd_octeontx_ssovf.a CFLAGS += $(WERROR_FLAGS) CFLAGS += -I$(RTE_SDK)/drivers/mempool/octeontx/ +CFLAGS += -I$(RTE_SDK)/drivers/net/octeontx/ EXPORT_MAP := rte_pmd_octeontx_ssovf_version.map diff --git a/drivers/event/octeontx/ssovf_evdev.c b/drivers/event/octeontx/ssovf_evdev.c index d829b49..7bdc85d 100644 --- a/drivers/event/octeontx/ssovf_evdev.c +++ b/drivers/event/octeontx/ssovf_evdev.c @@ -36,6 +36,8 @@ #include #include #include +#include +#include #include #include #include @@ -395,6 +397,123 @@ ssows_dump(struct ssows *ws, FILE *f) fprintf(f, "\tpwqp=0x%"PRIx64"\n", val); } +static int +ssovf_eth_rx_adapter_caps_get(const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, uint32_t *caps) +{ + int ret; + RTE_SET_USED(dev); + + ret = strncmp(eth_dev->data->name, "eth_octeontx", 12); + if (ret) + *caps = RTE_EVENT_ETH_RX_ADAPTER_SW_CAP; + else + *caps = RTE_EVENT_ETH_RX_ADAPTER_CAP_INTERNAL_PORT; + + return 0; +} + +static int +ssovf_eth_rx_adapter_queue_add(const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, int32_t rx_queue_id, + const struct rte_event_eth_rx_adapter_queue_conf *queue_conf) +{ + int ret = 0; + const struct octeontx_nic *nic = eth_dev->data->dev_private; + pki_mod_qos_t pki_qos; + RTE_SET_USED(dev); + + ret = strncmp(eth_dev->data->name, "eth_octeontx", 12); + if (ret) + return -EINVAL; + + if (rx_queue_id >= 0) + return -EINVAL; + + if (queue_conf->ev.sched_type == RTE_SCHED_TYPE_PARALLEL) + return -ENOTSUP; + + memset(&pki_qos, 0, sizeof(pki_mod_qos_t)); + + pki_qos.port_type = 0; + pki_qos.index = 0; + pki_qos.mmask.f_tag_type = 1; + pki_qos.mmask.f_port_add = 1; + pki_qos.mmask.f_grp_ok = 1; + pki_qos.mmask.f_grp_bad = 1; + pki_qos.mmask.f_grptag_ok = 1; + pki_qos.mmask.f_grptag_bad = 1; + + pki_qos.tag_type = queue_conf->ev.sched_type; + pki_qos.qos_entry.port_add = 0; + pki_qos.qos_entry.ggrp_ok = queue_conf->ev.queue_id; + pki_qos.qos_entry.ggrp_bad = queue_conf->ev.queue_id; + pki_qos.qos_entry.grptag_bad = 0; + pki_qos.qos_entry.grptag_ok = 0; + + ret = octeontx_pki_port_modify_qos(nic->port_id, &pki_qos); + if (ret < 0) + ssovf_log_err("failed to modify QOS, port=%d, q=%d", + nic->port_id, queue_conf->ev.queue_id); + + return ret; +} + +static int +ssovf_eth_rx_adapter_queue_del(const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev, int32_t rx_queue_id) +{ + int ret = 0; + const struct octeontx_nic *nic = eth_dev->data->dev_private; + pki_del_qos_t pki_qos; + RTE_SET_USED(dev); + RTE_SET_USED(rx_queue_id); + + ret = strncmp(eth_dev->data->name, "eth_octeontx", 12); + if (ret) + return -EINVAL; + + pki_qos.port_type = 0; + pki_qos.index = 0; + memset(&pki_qos, 0, sizeof(pki_del_qos_t)); + ret = octeontx_pki_port_delete_qos(nic->port_id, &pki_qos); + if (ret < 0) + ssovf_log_err("Failed to delete QOS port=%d, q=%d", + nic->port_id, queue_conf->ev.queue_id); + return ret; +} + +static int +ssovf_eth_rx_adapter_start(const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev) +{ + int ret; + const struct octeontx_nic *nic = eth_dev->data->dev_private; + RTE_SET_USED(dev); + + ret = strncmp(eth_dev->data->name, "eth_octeontx", 12); + if (ret) + return 0; + octeontx_pki_port_start(nic->port_id); + return 0; +} + + +static int +ssovf_eth_rx_adapter_stop(const struct rte_eventdev *dev, + const struct rte_eth_dev *eth_dev) +{ + int ret; + const struct octeontx_nic *nic = eth_dev->data->dev_private; + RTE_SET_USED(dev); + + ret = strncmp(eth_dev->data->name, "eth_octeontx", 12); + if (ret) + return 0; + octeontx_pki_port_stop(nic->port_id); + return 0; +} + static void ssovf_dump(struct rte_eventdev *dev, FILE *f) { @@ -488,6 +607,13 @@ static const struct rte_eventdev_ops ssovf_ops = { .port_link = ssovf_port_link, .port_unlink = ssovf_port_unlink, .timeout_ticks = ssovf_timeout_ticks, + + .eth_rx_adapter_caps_get = ssovf_eth_rx_adapter_caps_get, + .eth_rx_adapter_queue_add = ssovf_eth_rx_adapter_queue_add, + .eth_rx_adapter_queue_del = ssovf_eth_rx_adapter_queue_del, + .eth_rx_adapter_start = ssovf_eth_rx_adapter_start, + .eth_rx_adapter_stop = ssovf_eth_rx_adapter_stop, + .dump = ssovf_dump, .dev_start = ssovf_start, .dev_stop = ssovf_stop, diff --git a/drivers/event/octeontx/ssovf_evdev.h b/drivers/event/octeontx/ssovf_evdev.h index 933c5a3..bbce492 100644 --- a/drivers/event/octeontx/ssovf_evdev.h +++ b/drivers/event/octeontx/ssovf_evdev.h @@ -38,6 +38,7 @@ #include #include +#include #define EVENTDEV_NAME_OCTEONTX_PMD event_octeontx diff --git a/drivers/event/octeontx/ssovf_worker.h b/drivers/event/octeontx/ssovf_worker.h index 8dc1264..bd3d71a 100644 --- a/drivers/event/octeontx/ssovf_worker.h +++ b/drivers/event/octeontx/ssovf_worker.h @@ -34,9 +34,11 @@ #include #include -#include "ssovf_evdev.h" #include +#include "ssovf_evdev.h" +#include "octeontx_rxtx.h" + enum { SSO_SYNC_ORDERED, SSO_SYNC_ATOMIC, @@ -50,6 +52,28 @@ enum { /* SSO Operations */ +static __rte_always_inline struct rte_mbuf * +ssovf_octeontx_wqe_to_pkt(uint64_t work, uint16_t port_id) +{ + struct rte_mbuf *mbuf; + octtx_wqe_t *wqe = (octtx_wqe_t *)(uintptr_t)work; + rte_prefetch_non_temporal(wqe); + + /* Get mbuf from wqe */ + mbuf = (struct rte_mbuf *)((uintptr_t)wqe - + OCTTX_PACKET_WQE_SKIP); + mbuf->packet_type = + ptype_table[wqe->s.w2.lcty][wqe->s.w2.lety][wqe->s.w2.lfty]; + mbuf->data_off = RTE_PTR_DIFF(wqe->s.w3.addr, mbuf->buf_addr); + mbuf->pkt_len = wqe->s.w1.len; + mbuf->data_len = mbuf->pkt_len; + mbuf->nb_segs = 1; + mbuf->ol_flags = 0; + mbuf->port = port_id; + rte_mbuf_refcnt_set(mbuf, 1); + return mbuf; +} + static __rte_always_inline uint16_t ssows_get_work(struct ssows *ws, struct rte_event *ev) { @@ -62,9 +86,10 @@ ssows_get_work(struct ssows *ws, struct rte_event *ev) ws->cur_tt = sched_type_queue & 0x3; ws->cur_grp = sched_type_queue >> 2; sched_type_queue = sched_type_queue << 38; - ev->event = sched_type_queue | (get_work0 & 0xffffffff); - ev->u64 = get_work1; + ev->u64 = get_work1 && !ev->event_type ? + (uint64_t)ssovf_octeontx_wqe_to_pkt(get_work1, + (ev->event >> 20) & 0xF) : get_work1; return !!get_work1; }