From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 6DAFAA034F for ; Tue, 1 Mar 2022 11:44:44 +0100 (CET) Received: from [217.70.189.124] (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 6230C407FF; Tue, 1 Mar 2022 11:44:44 +0100 (CET) Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by mails.dpdk.org (Postfix) with ESMTP id 0C0AA407FF for ; Tue, 1 Mar 2022 11:44:42 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1646131482; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=W0o1ToBvno3syLJcAvJnFAgZEaT2qlZUIV7unnm3UF4=; b=DTVYhq3wOdVPmDfC1sjL0OPQ7AoWwz7+QPrGnKVbywfmX6PD7SVm4YLwsbe17oHFkC4PcC WDo6b09mSKjyyOWJ/ydcSKXjk7AI98JTvmO0HPIOLs1DBcw92+q4VegqAlLDuEvJC+aAUb xhMI10jcVKtZRjwT6wKcEEWdd87E10Y= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id us-mta-15-ia1GixFgNbKlSxhZz0ClbQ-1; Tue, 01 Mar 2022 05:44:37 -0500 X-MC-Unique: ia1GixFgNbKlSxhZz0ClbQ-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 67A3D1091DA0; Tue, 1 Mar 2022 10:44:36 +0000 (UTC) Received: from rh.Home (unknown [10.39.194.142]) by smtp.corp.redhat.com (Postfix) with ESMTP id 5884A752D2; Tue, 1 Mar 2022 10:44:35 +0000 (UTC) From: Kevin Traynor To: Rahul Bhansali Cc: Jerin Jacob , dpdk stable Subject: patch 'net/cnxk: fix mbuf data length' has been queued to stable release 21.11.1 Date: Tue, 1 Mar 2022 10:41:58 +0000 Message-Id: <20220301104300.334382-42-ktraynor@redhat.com> In-Reply-To: <20220301104300.334382-1-ktraynor@redhat.com> References: <20220301104300.334382-1-ktraynor@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.14 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=ktraynor@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Transfer-Encoding: 8bit Content-Type: text/plain; charset="US-ASCII" X-BeenThere: stable@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: patches for DPDK stable branches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: stable-bounces@dpdk.org Hi, FYI, your patch has been queued to stable release 21.11.1 Note it hasn't been pushed to http://dpdk.org/browse/dpdk-stable yet. It will be pushed if I get no objections before 03/06/22. So please shout if anyone has objections. Also note that after the patch there's a diff of the upstream commit vs the patch applied to the branch. This will indicate if there was any rebasing needed to apply to the stable branch. If there were code changes for rebasing (ie: not only metadata diffs), please double check that the rebase was correctly done. Queued patches are on a temporary branch at: https://github.com/kevintraynor/dpdk-stable This queued commit can be viewed at: https://github.com/kevintraynor/dpdk-stable/commit/c93302dd4f481d60a53fc03298dda05ab3a719e7 Thanks. Kevin --- >From c93302dd4f481d60a53fc03298dda05ab3a719e7 Mon Sep 17 00:00:00 2001 From: Rahul Bhansali Date: Wed, 19 Jan 2022 16:22:03 +0530 Subject: [PATCH] net/cnxk: fix mbuf data length [ upstream commit 4e00823dcc66c64e9462f7af09af22276ca36cce ] If multi-segment is enabled and single segment/packet is received, then mbuf data_len is not updated in cn9k_nix_cqe_to_mbuf() function. Also, in case of timestamp is enabled, mbuf data_len and pkt_len will be updated for all packets including multi segmented packets. Fixes: 7c6bee34064f ("net/cnxk: enable PTP processing in vector Rx") Signed-off-by: Rahul Bhansali Acked-by: Jerin Jacob --- drivers/event/cnxk/cn10k_worker.h | 2 -- drivers/event/cnxk/cn9k_worker.h | 2 -- drivers/net/cnxk/cn10k_rx.h | 9 +++++++-- drivers/net/cnxk/cn9k_rx.h | 14 +++++++++----- drivers/net/cnxk/cnxk_ethdev.h | 9 +++------ 5 files changed, 19 insertions(+), 17 deletions(-) diff --git a/drivers/event/cnxk/cn10k_worker.h b/drivers/event/cnxk/cn10k_worker.h index f8331e88d7..340708aae5 100644 --- a/drivers/event/cnxk/cn10k_worker.h +++ b/drivers/event/cnxk/cn10k_worker.h @@ -170,5 +170,4 @@ cn10k_process_vwqe(uintptr_t vwqe, uint16_t port_id, const uint32_t flags, cnxk_nix_mbuf_to_tstamp((struct rte_mbuf *)mbuf, tstamp, flags & NIX_RX_OFFLOAD_TSTAMP_F, - flags & NIX_RX_MULTI_SEG_F, (uint64_t *)tstamp_ptr); wqe[0] = (uint64_t *)mbuf; @@ -262,5 +261,4 @@ cn10k_sso_hws_get_work(struct cn10k_sso_hws *ws, struct rte_event *ev, ws->tstamp, flags & NIX_RX_OFFLOAD_TSTAMP_F, - flags & NIX_RX_MULTI_SEG_F, (uint64_t *)tstamp_ptr); gw.u64[1] = mbuf; diff --git a/drivers/event/cnxk/cn9k_worker.h b/drivers/event/cnxk/cn9k_worker.h index 9377fa50e7..8abdd13b66 100644 --- a/drivers/event/cnxk/cn9k_worker.h +++ b/drivers/event/cnxk/cn9k_worker.h @@ -210,5 +210,4 @@ cn9k_sso_hws_dual_get_work(uint64_t base, uint64_t pair_base, cnxk_nix_mbuf_to_tstamp((struct rte_mbuf *)mbuf, tstamp, flags & NIX_RX_OFFLOAD_TSTAMP_F, - flags & NIX_RX_MULTI_SEG_F, (uint64_t *)tstamp_ptr); gw.u64[1] = mbuf; @@ -289,5 +288,4 @@ cn9k_sso_hws_get_work(struct cn9k_sso_hws *ws, struct rte_event *ev, ws->tstamp, flags & NIX_RX_OFFLOAD_TSTAMP_F, - flags & NIX_RX_MULTI_SEG_F, (uint64_t *)tstamp_ptr); gw.u64[1] = mbuf; diff --git a/drivers/net/cnxk/cn10k_rx.h b/drivers/net/cnxk/cn10k_rx.h index fe408907a6..9d969cee87 100644 --- a/drivers/net/cnxk/cn10k_rx.h +++ b/drivers/net/cnxk/cn10k_rx.h @@ -364,5 +364,11 @@ cn10k_nix_cqe_to_mbuf(const struct nix_cqe_hdr_s *cq, const uint32_t tag, if (flag & NIX_RX_MULTI_SEG_F) - nix_cqe_xtract_mseg(rx, mbuf, val, flag); + /* + * For multi segment packets, mbuf length correction according + * to Rx timestamp length will be handled later during + * timestamp data process. + * Hence, flag argument is not required. + */ + nix_cqe_xtract_mseg(rx, mbuf, val, 0); else mbuf->next = NULL; @@ -452,5 +458,4 @@ cn10k_nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts, cnxk_nix_mbuf_to_tstamp(mbuf, rxq->tstamp, (flags & NIX_RX_OFFLOAD_TSTAMP_F), - (flags & NIX_RX_MULTI_SEG_F), (uint64_t *)((uint8_t *)mbuf + data_off)); diff --git a/drivers/net/cnxk/cn9k_rx.h b/drivers/net/cnxk/cn9k_rx.h index 225bb4197c..848df4190c 100644 --- a/drivers/net/cnxk/cn9k_rx.h +++ b/drivers/net/cnxk/cn9k_rx.h @@ -342,12 +342,17 @@ skip_parse: nix_update_match_id(rx->cn9k.match_id, ol_flags, mbuf); + mbuf->ol_flags = ol_flags; + *(uint64_t *)(&mbuf->rearm_data) = val; mbuf->pkt_len = len; mbuf->data_len = len; - *(uint64_t *)(&mbuf->rearm_data) = val; - - mbuf->ol_flags = ol_flags; if (flag & NIX_RX_MULTI_SEG_F) - nix_cqe_xtract_mseg(rx, mbuf, val, flag); + /* + * For multi segment packets, mbuf length correction according + * to Rx timestamp length will be handled later during + * timestamp data process. + * Hence, flag argument is not required. + */ + nix_cqe_xtract_mseg(rx, mbuf, val, 0); else mbuf->next = NULL; @@ -414,5 +419,4 @@ cn9k_nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts, cnxk_nix_mbuf_to_tstamp(mbuf, rxq->tstamp, (flags & NIX_RX_OFFLOAD_TSTAMP_F), - (flags & NIX_RX_MULTI_SEG_F), (uint64_t *)((uint8_t *)mbuf + data_off)); diff --git a/drivers/net/cnxk/cnxk_ethdev.h b/drivers/net/cnxk/cnxk_ethdev.h index 5bfda3d815..480cc6dfa4 100644 --- a/drivers/net/cnxk/cnxk_ethdev.h +++ b/drivers/net/cnxk/cnxk_ethdev.h @@ -686,12 +686,9 @@ static __rte_always_inline void cnxk_nix_mbuf_to_tstamp(struct rte_mbuf *mbuf, struct cnxk_timesync_info *tstamp, - const uint8_t ts_enable, const uint8_t mseg_enable, - uint64_t *tstamp_ptr) + const uint8_t ts_enable, uint64_t *tstamp_ptr) { if (ts_enable) { - if (!mseg_enable) { - mbuf->pkt_len -= CNXK_NIX_TIMESYNC_RX_OFFSET; - mbuf->data_len -= CNXK_NIX_TIMESYNC_RX_OFFSET; - } + mbuf->pkt_len -= CNXK_NIX_TIMESYNC_RX_OFFSET; + mbuf->data_len -= CNXK_NIX_TIMESYNC_RX_OFFSET; /* Reading the rx timestamp inserted by CGX, viz at -- 2.34.1 --- Diff of the applied patch vs upstream commit (please double-check if non-empty: --- --- - 2022-03-01 10:41:02.448728856 +0000 +++ 0042-net-cnxk-fix-mbuf-data-length.patch 2022-03-01 10:41:01.312244099 +0000 @@ -1 +1 @@ -From 4e00823dcc66c64e9462f7af09af22276ca36cce Mon Sep 17 00:00:00 2001 +From c93302dd4f481d60a53fc03298dda05ab3a719e7 Mon Sep 17 00:00:00 2001 @@ -5,0 +6,2 @@ +[ upstream commit 4e00823dcc66c64e9462f7af09af22276ca36cce ] + @@ -14 +15,0 @@ -Cc: stable@dpdk.org @@ -22 +23 @@ - drivers/net/cnxk/cn9k_rx.h | 16 ++++++++++------ + drivers/net/cnxk/cn9k_rx.h | 14 +++++++++----- @@ -24 +25 @@ - 5 files changed, 20 insertions(+), 18 deletions(-) + 5 files changed, 19 insertions(+), 17 deletions(-) @@ -27 +28 @@ -index bb32ef75ef..56e84bd599 100644 +index f8331e88d7..340708aae5 100644 @@ -30 +31 @@ -@@ -175,5 +175,4 @@ cn10k_process_vwqe(uintptr_t vwqe, uint16_t port_id, const uint32_t flags, +@@ -170,5 +170,4 @@ cn10k_process_vwqe(uintptr_t vwqe, uint16_t port_id, const uint32_t flags, @@ -36 +37 @@ -@@ -267,5 +266,4 @@ cn10k_sso_hws_get_work(struct cn10k_sso_hws *ws, struct rte_event *ev, +@@ -262,5 +261,4 @@ cn10k_sso_hws_get_work(struct cn10k_sso_hws *ws, struct rte_event *ev, @@ -43 +44 @@ -index 79b2b3809f..385cc656cb 100644 +index 9377fa50e7..8abdd13b66 100644 @@ -46,2 +47,2 @@ -@@ -232,5 +232,4 @@ cn9k_sso_hws_dual_get_work(uint64_t base, uint64_t pair_base, - dws->tstamp, +@@ -210,5 +210,4 @@ cn9k_sso_hws_dual_get_work(uint64_t base, uint64_t pair_base, + cnxk_nix_mbuf_to_tstamp((struct rte_mbuf *)mbuf, tstamp, @@ -52 +53 @@ -@@ -309,5 +308,4 @@ cn9k_sso_hws_get_work(struct cn9k_sso_hws *ws, struct rte_event *ev, +@@ -289,5 +288,4 @@ cn9k_sso_hws_get_work(struct cn9k_sso_hws *ws, struct rte_event *ev, @@ -59 +60 @@ -index 564e50f0af..0c9fe4af6d 100644 +index fe408907a6..9d969cee87 100644 @@ -62 +63 @@ -@@ -365,5 +365,11 @@ cn10k_nix_cqe_to_mbuf(const struct nix_cqe_hdr_s *cq, const uint32_t tag, +@@ -364,5 +364,11 @@ cn10k_nix_cqe_to_mbuf(const struct nix_cqe_hdr_s *cq, const uint32_t tag, @@ -75 +76 @@ -@@ -453,5 +459,4 @@ cn10k_nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts, +@@ -452,5 +458,4 @@ cn10k_nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts, @@ -82 +83 @@ -index d36f292c95..6b6c5bfbc2 100644 +index 225bb4197c..848df4190c 100644 @@ -85,2 +86,5 @@ -@@ -392,11 +392,16 @@ skip_parse: - *(uint64_t *)(&mbuf->rearm_data) = val; +@@ -342,12 +342,17 @@ skip_parse: + nix_update_match_id(rx->cn9k.match_id, ol_flags, mbuf); + ++ mbuf->ol_flags = ol_flags; ++ *(uint64_t *)(&mbuf->rearm_data) = val; @@ -88 +92,4 @@ -+ mbuf->data_len = len; + mbuf->data_len = len; +- *(uint64_t *)(&mbuf->rearm_data) = val; +- +- mbuf->ol_flags = ol_flags; @@ -90 +97 @@ -- if (flag & NIX_RX_MULTI_SEG_F) { + if (flag & NIX_RX_MULTI_SEG_F) @@ -92,3 +98,0 @@ -- } else { -- mbuf->data_len = len; -+ if (flag & NIX_RX_MULTI_SEG_F) @@ -102 +106 @@ -+ else + else @@ -104,4 +108 @@ -- } - } - -@@ -461,5 +466,4 @@ cn9k_nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts, +@@ -414,5 +419,4 @@ cn9k_nix_recv_pkts(void *rx_queue, struct rte_mbuf **rx_pkts, uint16_t pkts, @@ -114 +115 @@ -index fadc8aaf45..ad568c9fcd 100644 +index 5bfda3d815..480cc6dfa4 100644 @@ -117 +118 @@ -@@ -697,12 +697,9 @@ static __rte_always_inline void +@@ -686,12 +686,9 @@ static __rte_always_inline void