From patchwork Tue Apr 2 20:08:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 139031 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 0DBEB43DCA; Tue, 2 Apr 2024 22:08:59 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 89DBB40272; Tue, 2 Apr 2024 22:08:58 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 4C9B34025D for ; Tue, 2 Apr 2024 22:08:57 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 5E8FE20E8BFC; Tue, 2 Apr 2024 13:08:56 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 5E8FE20E8BFC DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1712088536; bh=a7Nq3iqesXL0iH5JtTWY+HD+sRrAw8LC3br8A8hk/Bo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kuV48OWP4Pt9sbpKUX4EeDbnuDbY/HS3ruSThVPEWGQA0XNJ8ewYnTd1s/uYnxWZj VLrpVptxF93dAEpcd7EHitZTzUfZedjF3FcrOpe5GZEigCwRxOBfz14YKt95nundzZ HS6/+Tog8qbJYQVGuSgQpco7SN2CUw6Kxs5x4DbU= From: Tyler Retzlaff To: dev@dpdk.org Cc: Ajit Khaparde , Andrew Boyer , Andrew Rybchenko , Bruce Richardson , Chenbo Xia , Chengwen Feng , Dariusz Sosnowski , David Christensen , Hyong Youb Kim , Jerin Jacob , Jie Hai , Jingjing Wu , John Daley , Kevin Laatz , Kiran Kumar K , Konstantin Ananyev , Maciej Czekaj , Matan Azrad , Maxime Coquelin , Nithin Dabilpuram , Ori Kam , Ruifeng Wang , Satha Rao , Somnath Kotur , Suanming Mou , Sunil Kumar Kori , Viacheslav Ovsiienko , Yisen Zhuang , Yuying Zhang , mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v9 1/4] net/i40e: use inline prefetch function Date: Tue, 2 Apr 2024 13:08:47 -0700 Message-Id: <1712088530-24948-2-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> References: <1706657173-26166-1-git-send-email-roretzla@linux.microsoft.com> <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org Don't directly access the cacheline1 field in rte_mbuf struct for prefetch instead just use rte_mbuf_prefetch_part2() to prefetch. Signed-off-by: Tyler Retzlaff Reviewed-by: Morten Brørup --- drivers/net/i40e/i40e_rxtx_vec_avx512.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/drivers/net/i40e/i40e_rxtx_vec_avx512.c b/drivers/net/i40e/i40e_rxtx_vec_avx512.c index f3050cd..0238b03 100644 --- a/drivers/net/i40e/i40e_rxtx_vec_avx512.c +++ b/drivers/net/i40e/i40e_rxtx_vec_avx512.c @@ -826,7 +826,7 @@ free[0] = m; nb_free = 1; for (i = 1; i < n; i++) { - rte_prefetch0(&txep[i + 3].mbuf->cacheline1); + rte_mbuf_prefetch_part2(txep[i + 3].mbuf); m = rte_pktmbuf_prefree_seg(txep[i].mbuf); if (likely(m)) { if (likely(m->pool == free[0]->pool)) { From patchwork Tue Apr 2 20:08:48 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 139032 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 503E343DCA; Tue, 2 Apr 2024 22:09:12 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id DFA96402E8; Tue, 2 Apr 2024 22:09:00 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 71C0A4028C for ; Tue, 2 Apr 2024 22:08:57 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 6F0B020E8BFF; Tue, 2 Apr 2024 13:08:56 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 6F0B020E8BFF DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1712088536; bh=8hP+FujZyTN03kmxDQRb3XWM++AbUHKa+oZbuClpqRQ=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=duTfmFMLk70mdopI5MZgJ/Z3I6wMXWxvh68JMX92gHfiDWOStQSwtpM8+ahOiygZS Tpt+bI0aSwDX19OgElUoIHjyxdjYG9eP8DC1yEJ0peZOmN7yhH08pM9Ehdizx9h54S rk56dB5VPwoAABLUcKzMRqzIfZvmp5rMUaYDheXM= From: Tyler Retzlaff To: dev@dpdk.org Cc: Ajit Khaparde , Andrew Boyer , Andrew Rybchenko , Bruce Richardson , Chenbo Xia , Chengwen Feng , Dariusz Sosnowski , David Christensen , Hyong Youb Kim , Jerin Jacob , Jie Hai , Jingjing Wu , John Daley , Kevin Laatz , Kiran Kumar K , Konstantin Ananyev , Maciej Czekaj , Matan Azrad , Maxime Coquelin , Nithin Dabilpuram , Ori Kam , Ruifeng Wang , Satha Rao , Somnath Kotur , Suanming Mou , Sunil Kumar Kori , Viacheslav Ovsiienko , Yisen Zhuang , Yuying Zhang , mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v9 2/4] mbuf: remove rte marker fields Date: Tue, 2 Apr 2024 13:08:48 -0700 Message-Id: <1712088530-24948-3-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> References: <1706657173-26166-1-git-send-email-roretzla@linux.microsoft.com> <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org RTE_MARKER typedefs are a GCC extension unsupported by MSVC. Remove RTE_MARKER fields from rte_mbuf struct. Maintain alignment of fields after removed cacheline1 marker by placing C11 alignas(RTE_CACHE_LINE_MIN_SIZE). Provide new rearm_data and rx_descriptor_fields1 fields in anonymous unions as single element arrays of with types matching the original markers to maintain API compatibility. This change breaks the API for cacheline{0,1} fields that have been removed from rte_mbuf but it does not break the ABI, to address the false positives of the removed (but 0 size fields) provide the minimum libabigail.abignore for type = rte_mbuf. Signed-off-by: Tyler Retzlaff --- devtools/libabigail.abignore | 6 + doc/guides/rel_notes/release_24_03.rst | 2 + lib/mbuf/rte_mbuf.h | 4 +- lib/mbuf/rte_mbuf_core.h | 200 +++++++++++++++++---------------- 4 files changed, 114 insertions(+), 98 deletions(-) diff --git a/devtools/libabigail.abignore b/devtools/libabigail.abignore index 645d289..ad13179 100644 --- a/devtools/libabigail.abignore +++ b/devtools/libabigail.abignore @@ -37,3 +37,9 @@ [suppress_type] name = rte_eth_fp_ops has_data_member_inserted_between = {offset_of(reserved2), end} + +[suppress_type] + name = rte_mbuf + type_kind = struct + has_size_change = no + has_data_member = {cacheline0, rearm_data, rx_descriptor_fields1, cacheline1} diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index 013c12f..ffc0d62 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -161,6 +161,8 @@ Removed Items * acc101: Removed obsolete code for non productized HW variant. +* mbuf: ``RTE_MARKER`` fields ``cacheline0`` and ``cacheline1`` + have been removed from ``struct rte_mbuf``. API Changes ----------- diff --git a/lib/mbuf/rte_mbuf.h b/lib/mbuf/rte_mbuf.h index 286b32b..4c4722e 100644 --- a/lib/mbuf/rte_mbuf.h +++ b/lib/mbuf/rte_mbuf.h @@ -108,7 +108,7 @@ static inline void rte_mbuf_prefetch_part1(struct rte_mbuf *m) { - rte_prefetch0(&m->cacheline0); + rte_prefetch0(m); } /** @@ -126,7 +126,7 @@ rte_mbuf_prefetch_part2(struct rte_mbuf *m) { #if RTE_CACHE_LINE_SIZE == 64 - rte_prefetch0(&m->cacheline1); + rte_prefetch0(RTE_PTR_ADD(m, RTE_CACHE_LINE_MIN_SIZE)); #else RTE_SET_USED(m); #endif diff --git a/lib/mbuf/rte_mbuf_core.h b/lib/mbuf/rte_mbuf_core.h index 9f58076..9d838b8 100644 --- a/lib/mbuf/rte_mbuf_core.h +++ b/lib/mbuf/rte_mbuf_core.h @@ -465,8 +465,6 @@ enum { * The generic rte_mbuf, containing a packet mbuf. */ struct __rte_cache_aligned rte_mbuf { - RTE_MARKER cacheline0; - void *buf_addr; /**< Virtual address of segment buffer. */ #if RTE_IOVA_IN_MBUF /** @@ -488,127 +486,138 @@ struct __rte_cache_aligned rte_mbuf { #endif /* next 8 bytes are initialised on RX descriptor rearm */ - RTE_MARKER64 rearm_data; - uint16_t data_off; - - /** - * Reference counter. Its size should at least equal to the size - * of port field (16 bits), to support zero-copy broadcast. - * It should only be accessed using the following functions: - * rte_mbuf_refcnt_update(), rte_mbuf_refcnt_read(), and - * rte_mbuf_refcnt_set(). The functionality of these functions (atomic, - * or non-atomic) is controlled by the RTE_MBUF_REFCNT_ATOMIC flag. - */ - RTE_ATOMIC(uint16_t) refcnt; + union { + uint64_t rearm_data[1]; + __extension__ + struct { + uint16_t data_off; + + /** + * Reference counter. Its size should at least equal to the size + * of port field (16 bits), to support zero-copy broadcast. + * It should only be accessed using the following functions: + * rte_mbuf_refcnt_update(), rte_mbuf_refcnt_read(), and + * rte_mbuf_refcnt_set(). The functionality of these functions (atomic, + * or non-atomic) is controlled by the RTE_MBUF_REFCNT_ATOMIC flag. + */ + RTE_ATOMIC(uint16_t) refcnt; - /** - * Number of segments. Only valid for the first segment of an mbuf - * chain. - */ - uint16_t nb_segs; + /** + * Number of segments. Only valid for the first segment of an mbuf + * chain. + */ + uint16_t nb_segs; - /** Input port (16 bits to support more than 256 virtual ports). - * The event eth Tx adapter uses this field to specify the output port. - */ - uint16_t port; + /** Input port (16 bits to support more than 256 virtual ports). + * The event eth Tx adapter uses this field to specify the output port. + */ + uint16_t port; + }; + }; uint64_t ol_flags; /**< Offload features. */ - /* remaining bytes are set on RX when pulling packet from descriptor */ - RTE_MARKER rx_descriptor_fields1; - - /* - * The packet type, which is the combination of outer/inner L2, L3, L4 - * and tunnel types. The packet_type is about data really present in the - * mbuf. Example: if vlan stripping is enabled, a received vlan packet - * would have RTE_PTYPE_L2_ETHER and not RTE_PTYPE_L2_VLAN because the - * vlan is stripped from the data. - */ + /* remaining 24 bytes are set on RX when pulling packet from descriptor */ union { - uint32_t packet_type; /**< L2/L3/L4 and tunnel information. */ + /* void * type of the array elements is retained for driver compatibility. */ + void *rx_descriptor_fields1[24 / sizeof(void *)]; __extension__ struct { - uint8_t l2_type:4; /**< (Outer) L2 type. */ - uint8_t l3_type:4; /**< (Outer) L3 type. */ - uint8_t l4_type:4; /**< (Outer) L4 type. */ - uint8_t tun_type:4; /**< Tunnel type. */ + /* + * The packet type, which is the combination of outer/inner L2, L3, L4 + * and tunnel types. The packet_type is about data really present in the + * mbuf. Example: if vlan stripping is enabled, a received vlan packet + * would have RTE_PTYPE_L2_ETHER and not RTE_PTYPE_L2_VLAN because the + * vlan is stripped from the data. + */ union { - uint8_t inner_esp_next_proto; - /**< ESP next protocol type, valid if - * RTE_PTYPE_TUNNEL_ESP tunnel type is set - * on both Tx and Rx. - */ + uint32_t packet_type; /**< L2/L3/L4 and tunnel information. */ __extension__ struct { - uint8_t inner_l2_type:4; - /**< Inner L2 type. */ - uint8_t inner_l3_type:4; - /**< Inner L3 type. */ + uint8_t l2_type:4; /**< (Outer) L2 type. */ + uint8_t l3_type:4; /**< (Outer) L3 type. */ + uint8_t l4_type:4; /**< (Outer) L4 type. */ + uint8_t tun_type:4; /**< Tunnel type. */ + union { + /**< ESP next protocol type, valid if + * RTE_PTYPE_TUNNEL_ESP tunnel type is set + * on both Tx and Rx. + */ + uint8_t inner_esp_next_proto; + __extension__ + struct { + /**< Inner L2 type. */ + uint8_t inner_l2_type:4; + /**< Inner L3 type. */ + uint8_t inner_l3_type:4; + }; + }; + uint8_t inner_l4_type:4; /**< Inner L4 type. */ }; }; - uint8_t inner_l4_type:4; /**< Inner L4 type. */ - }; - }; - uint32_t pkt_len; /**< Total pkt len: sum of all segments. */ - uint16_t data_len; /**< Amount of data in segment buffer. */ - /** VLAN TCI (CPU order), valid if RTE_MBUF_F_RX_VLAN is set. */ - uint16_t vlan_tci; + uint32_t pkt_len; /**< Total pkt len: sum of all segments. */ - union { - union { - uint32_t rss; /**< RSS hash result if RSS enabled */ - struct { + uint16_t data_len; /**< Amount of data in segment buffer. */ + /** VLAN TCI (CPU order), valid if RTE_MBUF_F_RX_VLAN is set. */ + uint16_t vlan_tci; + + union { union { + uint32_t rss; /**< RSS hash result if RSS enabled */ struct { - uint16_t hash; - uint16_t id; - }; - uint32_t lo; - /**< Second 4 flexible bytes */ - }; - uint32_t hi; - /**< First 4 flexible bytes or FD ID, dependent - * on RTE_MBUF_F_RX_FDIR_* flag in ol_flags. - */ - } fdir; /**< Filter identifier if FDIR enabled */ - struct rte_mbuf_sched sched; - /**< Hierarchical scheduler : 8 bytes */ - struct { - uint32_t reserved1; - uint16_t reserved2; - uint16_t txq; - /**< The event eth Tx adapter uses this field - * to store Tx queue id. - * @see rte_event_eth_tx_adapter_txq_set() - */ - } txadapter; /**< Eventdev ethdev Tx adapter */ - uint32_t usr; - /**< User defined tags. See rte_distributor_process() */ - } hash; /**< hash information */ - }; + union { + struct { + uint16_t hash; + uint16_t id; + }; + /**< Second 4 flexible bytes */ + uint32_t lo; + }; + /**< First 4 flexible bytes or FD ID, dependent + * on RTE_MBUF_F_RX_FDIR_* flag in ol_flags. + */ + uint32_t hi; + } fdir; /**< Filter identifier if FDIR enabled */ + struct rte_mbuf_sched sched; + /**< Hierarchical scheduler : 8 bytes */ + struct { + uint32_t reserved1; + uint16_t reserved2; + /**< The event eth Tx adapter uses this field + * to store Tx queue id. + * @see rte_event_eth_tx_adapter_txq_set() + */ + uint16_t txq; + } txadapter; /**< Eventdev ethdev Tx adapter */ + /**< User defined tags. See rte_distributor_process() */ + uint32_t usr; + } hash; /**< hash information */ + }; - /** Outer VLAN TCI (CPU order), valid if RTE_MBUF_F_RX_QINQ is set. */ - uint16_t vlan_tci_outer; + /** Outer VLAN TCI (CPU order), valid if RTE_MBUF_F_RX_QINQ is set. */ + uint16_t vlan_tci_outer; - uint16_t buf_len; /**< Length of segment buffer. */ + uint16_t buf_len; /**< Length of segment buffer. */ + }; + }; struct rte_mempool *pool; /**< Pool from which mbuf was allocated. */ /* second cache line - fields only used in slow path or on TX */ - alignas(RTE_CACHE_LINE_MIN_SIZE) RTE_MARKER cacheline1; - #if RTE_IOVA_IN_MBUF /** * Next segment of scattered packet. Must be NULL in the last * segment or in case of non-segmented packet. */ + alignas(RTE_CACHE_LINE_MIN_SIZE) struct rte_mbuf *next; #else /** * Reserved for dynamic fields * when the next pointer is in first cache line (i.e. RTE_IOVA_IN_MBUF is 0). */ + alignas(RTE_CACHE_LINE_MIN_SIZE) uint64_t dynfield2; #endif @@ -617,17 +626,16 @@ struct __rte_cache_aligned rte_mbuf { uint64_t tx_offload; /**< combined for easy fetch */ __extension__ struct { - uint64_t l2_len:RTE_MBUF_L2_LEN_BITS; /**< L2 (MAC) Header Length for non-tunneling pkt. * Outer_L4_len + ... + Inner_L2_len for tunneling pkt. */ - uint64_t l3_len:RTE_MBUF_L3_LEN_BITS; + uint64_t l2_len:RTE_MBUF_L2_LEN_BITS; /**< L3 (IP) Header Length. */ - uint64_t l4_len:RTE_MBUF_L4_LEN_BITS; + uint64_t l3_len:RTE_MBUF_L3_LEN_BITS; /**< L4 (TCP/UDP) Header Length. */ - uint64_t tso_segsz:RTE_MBUF_TSO_SEGSZ_BITS; + uint64_t l4_len:RTE_MBUF_L4_LEN_BITS; /**< TCP TSO segment size */ - + uint64_t tso_segsz:RTE_MBUF_TSO_SEGSZ_BITS; /* * Fields for Tx offloading of tunnels. * These are undefined for packets which don't request @@ -640,10 +648,10 @@ struct __rte_cache_aligned rte_mbuf { * Applications are expected to set appropriate tunnel * offload flags when they fill in these fields. */ - uint64_t outer_l3_len:RTE_MBUF_OUTL3_LEN_BITS; /**< Outer L3 (IP) Hdr Length. */ - uint64_t outer_l2_len:RTE_MBUF_OUTL2_LEN_BITS; + uint64_t outer_l3_len:RTE_MBUF_OUTL3_LEN_BITS; /**< Outer L2 (MAC) Hdr Length. */ + uint64_t outer_l2_len:RTE_MBUF_OUTL2_LEN_BITS; /* uint64_t unused:RTE_MBUF_TXOFLD_UNUSED_BITS; */ }; From patchwork Tue Apr 2 20:08:49 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 139033 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id CF33F43DCA; Tue, 2 Apr 2024 22:09:20 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id E103B402EC; Tue, 2 Apr 2024 22:09:01 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 7CCFC402D5 for ; Tue, 2 Apr 2024 22:08:57 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 809F120E8C83; Tue, 2 Apr 2024 13:08:56 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 809F120E8C83 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1712088536; bh=KVxqlxdLnlvR8KQvNSrWwR30hfxBTzZp9puwlZpLcJg=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=XkMJgph2/uERt5sFOeC2qdfPLM/9BW2PNP10ZoMkwS7O2Qof+02FX0fqVYsvr/Mpc i4G+mBmqp94nmMschimReQXP1S2AN+Dn7UA+tDqHfeJBK1fXJvYKQHXo8P2op0TqOk a+x4qE3jWLHjQKrAOpS/5v3dvkauq5gbH5DiWjXI= From: Tyler Retzlaff To: dev@dpdk.org Cc: Ajit Khaparde , Andrew Boyer , Andrew Rybchenko , Bruce Richardson , Chenbo Xia , Chengwen Feng , Dariusz Sosnowski , David Christensen , Hyong Youb Kim , Jerin Jacob , Jie Hai , Jingjing Wu , John Daley , Kevin Laatz , Kiran Kumar K , Konstantin Ananyev , Maciej Czekaj , Matan Azrad , Maxime Coquelin , Nithin Dabilpuram , Ori Kam , Ruifeng Wang , Satha Rao , Somnath Kotur , Suanming Mou , Sunil Kumar Kori , Viacheslav Ovsiienko , Yisen Zhuang , Yuying Zhang , mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v9 3/4] security: remove rte marker fields Date: Tue, 2 Apr 2024 13:08:49 -0700 Message-Id: <1712088530-24948-4-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> References: <1706657173-26166-1-git-send-email-roretzla@linux.microsoft.com> <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org RTE_MARKER typedefs are a GCC extension unsupported by MSVC. Remove RTE_MARKER fields from rte_mbuf struct. Maintain alignment of fields after removed cacheline1 marker by placing C11 alignas(RTE_CACHE_LINE_MIN_SIZE). Signed-off-by: Tyler Retzlaff Reviewed-by: Morten Brørup --- doc/guides/rel_notes/release_24_03.rst | 3 +++ lib/security/rte_security_driver.h | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index ffc0d62..b0d53b6 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -164,6 +164,9 @@ Removed Items * mbuf: ``RTE_MARKER`` fields ``cacheline0`` and ``cacheline1`` have been removed from ``struct rte_mbuf``. +* security: ``RTE_MARKER`` fields ``cacheline0`` and ``cacheline1`` + have been removed from ``struct rte_security_session``. + API Changes ----------- diff --git a/lib/security/rte_security_driver.h b/lib/security/rte_security_driver.h index 09829ab..18a1e3c 100644 --- a/lib/security/rte_security_driver.h +++ b/lib/security/rte_security_driver.h @@ -12,6 +12,8 @@ * RTE Security Common Definitions */ +#include + #ifdef __cplusplus extern "C" { #endif @@ -24,7 +26,6 @@ * Security session to be used by library for internal usage */ struct rte_security_session { - RTE_MARKER cacheline0; uint64_t opaque_data; /**< Opaque user defined data */ uint64_t fast_mdata; @@ -32,7 +33,7 @@ struct rte_security_session { rte_iova_t driver_priv_data_iova; /**< session private data IOVA address */ - alignas(RTE_CACHE_LINE_MIN_SIZE) RTE_MARKER cacheline1; + alignas(RTE_CACHE_LINE_MIN_SIZE) uint8_t driver_priv_data[]; /**< Private session material, variable size (depends on driver) */ }; From patchwork Tue Apr 2 20:08:50 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Tyler Retzlaff X-Patchwork-Id: 139034 X-Patchwork-Delegate: thomas@monjalon.net Return-Path: X-Original-To: patchwork@inbox.dpdk.org Delivered-To: patchwork@inbox.dpdk.org Received: from mails.dpdk.org (mails.dpdk.org [217.70.189.124]) by inbox.dpdk.org (Postfix) with ESMTP id 5348B43DCB; Tue, 2 Apr 2024 22:09:28 +0200 (CEST) Received: from mails.dpdk.org (localhost [127.0.0.1]) by mails.dpdk.org (Postfix) with ESMTP id 0742740633; Tue, 2 Apr 2024 22:09:03 +0200 (CEST) Received: from linux.microsoft.com (linux.microsoft.com [13.77.154.182]) by mails.dpdk.org (Postfix) with ESMTP id 89E41402D8 for ; Tue, 2 Apr 2024 22:08:57 +0200 (CEST) Received: by linux.microsoft.com (Postfix, from userid 1086) id 90B5120E8C84; Tue, 2 Apr 2024 13:08:56 -0700 (PDT) DKIM-Filter: OpenDKIM Filter v2.11.0 linux.microsoft.com 90B5120E8C84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com; s=default; t=1712088536; bh=oT6nGffVcNDbDMCkzlCxy01KbXpp3O/TlzdjngqrG1U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=lk7a0EgwUji676E0m2LK2pqGH2XLC8U2to2HODDRNkDxyNMWy38L3UNw3GcrtSgsf mIb44yK3rVeeQ10R+VcbZX1y9mfi49ZqOJbBUI6Eh6KezPI0IvMtGLCy0f1LS1OF1c KQmWmEeHFWt+5oNdC9fj9IW1BKnl9V81rjSPXt5c= From: Tyler Retzlaff To: dev@dpdk.org Cc: Ajit Khaparde , Andrew Boyer , Andrew Rybchenko , Bruce Richardson , Chenbo Xia , Chengwen Feng , Dariusz Sosnowski , David Christensen , Hyong Youb Kim , Jerin Jacob , Jie Hai , Jingjing Wu , John Daley , Kevin Laatz , Kiran Kumar K , Konstantin Ananyev , Maciej Czekaj , Matan Azrad , Maxime Coquelin , Nithin Dabilpuram , Ori Kam , Ruifeng Wang , Satha Rao , Somnath Kotur , Suanming Mou , Sunil Kumar Kori , Viacheslav Ovsiienko , Yisen Zhuang , Yuying Zhang , mb@smartsharesystems.com, Tyler Retzlaff Subject: [PATCH v9 4/4] cryptodev: remove rte marker fields Date: Tue, 2 Apr 2024 13:08:50 -0700 Message-Id: <1712088530-24948-5-git-send-email-roretzla@linux.microsoft.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> References: <1706657173-26166-1-git-send-email-roretzla@linux.microsoft.com> <1712088530-24948-1-git-send-email-roretzla@linux.microsoft.com> MIME-Version: 1.0 X-BeenThere: dev@dpdk.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: DPDK patches and discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dev-bounces@dpdk.org RTE_MARKER typedefs are a GCC extension unsupported by MSVC. Remove RTE_MARKER fields from rte_mbuf struct. Maintain alignment of fields after removed cacheline1 marker by placing C11 alignas(RTE_CACHE_LINE_MIN_SIZE). Signed-off-by: Tyler Retzlaff Reviewed-by: Morten Brørup --- doc/guides/rel_notes/release_24_03.rst | 3 +++ lib/cryptodev/cryptodev_pmd.h | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/guides/rel_notes/release_24_03.rst b/doc/guides/rel_notes/release_24_03.rst index b0d53b6..dfa326a 100644 --- a/doc/guides/rel_notes/release_24_03.rst +++ b/doc/guides/rel_notes/release_24_03.rst @@ -167,6 +167,9 @@ Removed Items * security: ``RTE_MARKER`` fields ``cacheline0`` and ``cacheline1`` have been removed from ``struct rte_security_session``. +* cryptodev: ``RTE_MARKER`` fields ``cacheline0`` and ``cacheline1`` + have been removed from ``struct cryptodev_driver``. + API Changes ----------- diff --git a/lib/cryptodev/cryptodev_pmd.h b/lib/cryptodev/cryptodev_pmd.h index d195b81..9daf129 100644 --- a/lib/cryptodev/cryptodev_pmd.h +++ b/lib/cryptodev/cryptodev_pmd.h @@ -5,6 +5,8 @@ #ifndef _CRYPTODEV_PMD_H_ #define _CRYPTODEV_PMD_H_ +#include + #ifdef __cplusplus extern "C" { #endif @@ -139,7 +141,6 @@ struct cryptodev_driver { * has a fixed algo, key, op-type, digest_len etc. */ struct rte_cryptodev_sym_session { - RTE_MARKER cacheline0; uint64_t opaque_data; /**< Can be used for external metadata */ uint32_t sess_data_sz; @@ -151,7 +152,7 @@ struct rte_cryptodev_sym_session { rte_iova_t driver_priv_data_iova; /**< Session driver data IOVA address */ - alignas(RTE_CACHE_LINE_MIN_SIZE) RTE_MARKER cacheline1; + alignas(RTE_CACHE_LINE_MIN_SIZE) /**< Second cache line - start of the driver session data */ uint8_t driver_priv_data[]; /**< Driver specific session data, variable size */