get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 139297,
    "url": "http://patches.dpdk.org/api/patches/139297/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/patch/1713211485-9021-2-git-send-email-roretzla@linux.microsoft.com/",
    "project": {
        "id": 1,
        "url": "http://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": "<1713211485-9021-2-git-send-email-roretzla@linux.microsoft.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/1713211485-9021-2-git-send-email-roretzla@linux.microsoft.com",
    "date": "2024-04-15T20:03:23",
    "name": "[v2,01/83] examples: move alignment attribute on types",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": false,
    "hash": "f86520e9632dd79ad4210419be8b5e4923fc3cdd",
    "submitter": {
        "id": 2077,
        "url": "http://patches.dpdk.org/api/people/2077/?format=api",
        "name": "Tyler Retzlaff",
        "email": "roretzla@linux.microsoft.com"
    },
    "delegate": {
        "id": 24651,
        "url": "http://patches.dpdk.org/api/users/24651/?format=api",
        "username": "dmarchand",
        "first_name": "David",
        "last_name": "Marchand",
        "email": "david.marchand@redhat.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/patch/1713211485-9021-2-git-send-email-roretzla@linux.microsoft.com/mbox/",
    "series": [
        {
            "id": 31746,
            "url": "http://patches.dpdk.org/api/series/31746/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=31746",
            "date": "2024-04-15T20:03:22",
            "name": "move alignment attribute on types",
            "version": 2,
            "mbox": "http://patches.dpdk.org/series/31746/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/patches/139297/comments/",
    "check": "success",
    "checks": "http://patches.dpdk.org/api/patches/139297/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "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])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 5DE0643E7E;\n\tMon, 15 Apr 2024 22:05:03 +0200 (CEST)",
            "from mails.dpdk.org (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id E345C40695;\n\tMon, 15 Apr 2024 22:04:51 +0200 (CEST)",
            "from linux.microsoft.com (linux.microsoft.com [13.77.154.182])\n by mails.dpdk.org (Postfix) with ESMTP id 570044028B\n for <dev@dpdk.org>; Mon, 15 Apr 2024 22:04:47 +0200 (CEST)",
            "by linux.microsoft.com (Postfix, from userid 1086)\n id 3552720FC5F7; Mon, 15 Apr 2024 13:04:46 -0700 (PDT)"
        ],
        "DKIM-Filter": "OpenDKIM Filter v2.11.0 linux.microsoft.com 3552720FC5F7",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.microsoft.com;\n s=default; t=1713211486;\n bh=vSEkmI3Fwuk3WfrsBYNTyzwadHkWUuqZ+vh5DNf+DSQ=;\n h=From:To:Cc:Subject:Date:In-Reply-To:References:From;\n b=Cm2Su4Kz8UWU2dKAkpIT8BsY0WS6ac9V69m6gYg3ZhubSn6cG7qdiB2lYzUzRN98J\n F32W7sH85bmRz/2giIvdAqzVBqXzXYZ0/zrm3HxV5NEDFGapdMbCQcV+o4DDOVe/cS\n pUqjgfXRY2k84n4netC6oCZUy54uPEHGySDbufX8=",
        "From": "Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "To": "dev@dpdk.org",
        "Cc": "=?utf-8?q?Mattias_R=C3=B6nnblom?= <mattias.ronnblom@ericsson.com>,\n \"Min Hu (Connor)\" <humin29@huawei.com>,\n =?utf-8?q?Morten_Br=C3=B8rup?= <mb@smartsharesystems.com>,\n Abdullah Sevincer <abdullah.sevincer@intel.com>,\n Ajit Khaparde <ajit.khaparde@broadcom.com>, Akhil Goyal <gakhil@marvell.com>,\n Alok Prasad <palok@marvell.com>, Amit Bernstein <amitbern@amazon.com>,\n Anatoly Burakov <anatoly.burakov@intel.com>,\n Andrew Boyer <andrew.boyer@amd.com>,\n Andrew Rybchenko <andrew.rybchenko@oktetlabs.ru>,\n Ankur Dwivedi <adwivedi@marvell.com>, Anoob Joseph <anoobj@marvell.com>,\n Ashish Gupta <ashish.gupta@marvell.com>,\n Ashwin Sekhar T K <asekhar@marvell.com>,\n Bruce Richardson <bruce.richardson@intel.com>,\n Byron Marohn <byron.marohn@intel.com>,\n Chaoyong He <chaoyong.he@corigine.com>, Chas Williams <chas3@att.com>,\n Chenbo Xia <chenbox@nvidia.com>, Chengwen Feng <fengchengwen@huawei.com>,\n Conor Walsh <conor.walsh@intel.com>,\n Cristian Dumitrescu <cristian.dumitrescu@intel.com>,\n Dariusz Sosnowski <dsosnowski@nvidia.com>, David Hunt <david.hunt@intel.com>,\n Devendra Singh Rawat <dsinghrawat@marvell.com>,\n Ed Czeck <ed.czeck@atomicrules.com>, Evgeny Schemeilin <evgenys@amazon.com>,\n Fan Zhang <fanzhang.oss@gmail.com>, Gagandeep Singh <g.singh@nxp.com>,\n Guoyang Zhou <zhouguoyang@huawei.com>, Harman Kalra <hkalra@marvell.com>,\n Harry van Haaren <harry.van.haaren@intel.com>,\n Hemant Agrawal <hemant.agrawal@nxp.com>,\n Honnappa Nagarahalli <honnappa.nagarahalli@arm.com>,\n Hyong Youb Kim <hyonkim@cisco.com>, Jakub Grajciar <jgrajcia@cisco.com>,\n Jerin Jacob <jerinj@marvell.com>, Jian Wang <jianwang@trustnetic.com>,\n Jiawen Wu <jiawenwu@trustnetic.com>, Jie Hai <haijie1@huawei.com>,\n Jingjing Wu <jingjing.wu@intel.com>, John Daley <johndale@cisco.com>,\n John Miller <john.miller@atomicrules.com>, Joyce Kong <joyce.kong@arm.com>,\n Kai Ji <kai.ji@intel.com>, Kevin Laatz <kevin.laatz@intel.com>,\n Kiran Kumar K <kirankumark@marvell.com>,\n Konstantin Ananyev <konstantin.v.ananyev@yandex.ru>,\n Lee Daly <lee.daly@intel.com>, Liang Ma <liangma@liangbit.com>,\n Liron Himi <lironh@marvell.com>, Long Li <longli@microsoft.com>,\n Maciej Czekaj <mczekaj@marvell.com>, Matan Azrad <matan@nvidia.com>,\n Matt Peters <matt.peters@windriver.com>,\n Maxime Coquelin <maxime.coquelin@redhat.com>,\n Michael Shamis <michaelsh@marvell.com>,\n Nagadheeraj Rottela <rnagadheeraj@marvell.com>,\n Nicolas Chautru <nicolas.chautru@intel.com>,\n Nithin Dabilpuram <ndabilpuram@marvell.com>, Ori Kam <orika@nvidia.com>,\n Pablo de Lara <pablo.de.lara.guarch@intel.com>,\n Pavan Nikhilesh <pbhagavatula@marvell.com>,\n Peter Mccarthy <peter.mccarthy@intel.com>,\n Radu Nicolau <radu.nicolau@intel.com>,\n Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>,\n Rakesh Kudurumalla <rkudurumalla@marvell.com>,\n Raveendra Padasalagi <raveendra.padasalagi@broadcom.com>,\n Reshma Pattan <reshma.pattan@intel.com>, Ron Beider <rbeider@amazon.com>,\n Ruifeng Wang <ruifeng.wang@arm.com>, Sachin Saxena <sachin.saxena@nxp.com>,\n Selwin Sebastian <selwin.sebastian@amd.com>,\n Shai Brandes <shaibran@amazon.com>,\n Shepard Siegel <shepard.siegel@atomicrules.com>,\n Shijith Thotton <sthotton@marvell.com>,\n Sivaprasad Tummala <sivaprasad.tummala@amd.com>,\n Somnath Kotur <somnath.kotur@broadcom.com>,\n Srikanth Yalavarthi <syalavarthi@marvell.com>,\n Stephen Hemminger <stephen@networkplumber.org>,\n Steven Webster <steven.webster@windriver.com>,\n Suanming Mou <suanmingm@nvidia.com>, Sunil Kumar Kori <skori@marvell.com>,\n Sunil Uttarwar <sunilprakashrao.uttarwar@amd.com>,\n Sunila Sahu <ssahu@marvell.com>, Tejasree Kondoj <ktejasree@marvell.com>,\n Viacheslav Ovsiienko <viacheslavo@nvidia.com>,\n Vikas Gupta <vikas.gupta@broadcom.com>,\n Volodymyr Fialko <vfialko@marvell.com>, Wajeeh Atrash <atrwajee@amazon.com>,\n Wisam Jaddo <wisamm@nvidia.com>, Xiaoyun Wang <cloud.wangxiaoyun@huawei.com>,\n Yipeng Wang <yipeng1.wang@intel.com>, Yisen Zhuang <yisen.zhuang@huawei.com>,\n Yuying Zhang <Yuying.Zhang@intel.com>,\n Zhangfei Gao <zhangfei.gao@linaro.org>, Zhirun Yan <yanzhirun_163@163.com>,\n Ziyang Xuan <xuanziyang2@huawei.com>,\n Tyler Retzlaff <roretzla@linux.microsoft.com>",
        "Subject": "[PATCH v2 01/83] examples: move alignment attribute on types",
        "Date": "Mon, 15 Apr 2024 13:03:23 -0700",
        "Message-Id": "<1713211485-9021-2-git-send-email-roretzla@linux.microsoft.com>",
        "X-Mailer": "git-send-email 1.8.3.1",
        "In-Reply-To": "<1713211485-9021-1-git-send-email-roretzla@linux.microsoft.com>",
        "References": "<1710949096-5786-1-git-send-email-roretzla@linux.microsoft.com>\n <1713211485-9021-1-git-send-email-roretzla@linux.microsoft.com>",
        "MIME-Version": "1.0",
        "Content-Type": "text/plain; charset=UTF-8",
        "Content-Transfer-Encoding": "8bit",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Move location of __rte_aligned(a) to new conventional location. The new\nplacement between {struct,union} and the tag allows the desired\nalignment to be imparted on the type regardless of the toolchain being\nused for both C and C++. Additionally, it avoids confusion by Doxygen\nwhen generating documentation.\n\nSigned-off-by: Tyler Retzlaff <roretzla@linux.microsoft.com>\nReviewed-by: Morten Brørup <mb@smartsharesystems.com>\nAcked-by: Morten Brørup <mb@smartsharesystems.com>\n---\n examples/bbdev_app/main.c                          |  8 +++---\n examples/bond/main.c                               |  2 +-\n examples/distributor/main.c                        | 32 +++++++++++-----------\n examples/eventdev_pipeline/pipeline_common.h       |  8 +++---\n examples/ip_fragmentation/main.c                   |  4 +--\n examples/ip_pipeline/thread.c                      |  4 +--\n examples/ip_reassembly/main.c                      |  4 +--\n examples/ipsec-secgw/ipsec-secgw.c                 |  4 +--\n examples/ipsec-secgw/ipsec-secgw.h                 |  8 +++---\n examples/ipsec-secgw/ipsec.h                       | 22 +++++++--------\n examples/ipsec-secgw/ipsec_worker.h                |  4 +--\n examples/ipv4_multicast/main.c                     |  4 +--\n examples/l2fwd-crypto/main.c                       | 12 ++++----\n examples/l2fwd-event/l2fwd_common.h                |  8 +++---\n examples/l2fwd-event/l2fwd_poll.h                  |  4 +--\n examples/l2fwd-jobstats/main.c                     |  8 +++---\n examples/l2fwd-keepalive/main.c                    |  8 +++---\n examples/l2fwd-macsec/main.c                       | 12 ++++----\n examples/l2fwd/main.c                              | 12 ++++----\n examples/l3fwd-graph/main.c                        |  8 +++---\n examples/l3fwd-power/main.c                        | 24 ++++++++--------\n examples/l3fwd-power/main.h                        |  4 +--\n examples/l3fwd-power/perf_core.c                   |  4 +--\n examples/l3fwd/l3fwd.h                             |  8 +++---\n examples/l3fwd/l3fwd_em.c                          |  4 +--\n examples/l3fwd/main.c                              |  4 +--\n examples/link_status_interrupt/main.c              |  8 +++---\n .../multi_process/client_server_mp/shared/common.h |  8 +++---\n examples/multi_process/symmetric_mp/main.c         |  4 +--\n examples/ntb/ntb_fwd.c                             |  4 +--\n examples/packet_ordering/main.c                    | 16 +++++------\n examples/pipeline/thread.c                         |  4 +--\n examples/qos_sched/app_thread.c                    |  2 +-\n examples/qos_sched/main.h                          |  4 +--\n examples/server_node_efd/shared/common.h           | 12 ++++----\n examples/vhost/main.h                              |  4 +--\n examples/vhost_blk/vhost_blk.h                     |  4 +--\n examples/vhost_crypto/main.c                       |  4 +--\n examples/vm_power_manager/power_manager.c          |  4 +--\n 39 files changed, 151 insertions(+), 151 deletions(-)",
    "diff": "diff --git a/examples/bbdev_app/main.c b/examples/bbdev_app/main.c\nindex 16599ae..d4c686c 100644\n--- a/examples/bbdev_app/main.c\n+++ b/examples/bbdev_app/main.c\n@@ -120,16 +120,16 @@ struct app_config_params {\n \tuint16_t num_dec_cores;\n };\n \n-struct lcore_statistics {\n+struct __rte_cache_aligned lcore_statistics {\n \tunsigned int enqueued;\n \tunsigned int dequeued;\n \tunsigned int rx_lost_packets;\n \tunsigned int enc_to_dec_lost_packets;\n \tunsigned int tx_lost_packets;\n-} __rte_cache_aligned;\n+};\n \n /** each lcore configuration */\n-struct lcore_conf {\n+struct __rte_cache_aligned lcore_conf {\n \tuint64_t core_type;\n \n \tunsigned int port_id;\n@@ -148,7 +148,7 @@ struct lcore_conf {\n \tstruct rte_ring *enc_to_dec_ring;\n \n \tstruct lcore_statistics *lcore_stats;\n-} __rte_cache_aligned;\n+};\n \n struct stats_lcore_params {\n \tstruct lcore_conf *lconf;\ndiff --git a/examples/bond/main.c b/examples/bond/main.c\nindex 8528abf..9f38b63 100644\n--- a/examples/bond/main.c\n+++ b/examples/bond/main.c\n@@ -346,7 +346,7 @@ struct global_flag_stru_t {\n  */\n static int lcore_main(__rte_unused void *arg1)\n {\n-\tstruct rte_mbuf *pkts[MAX_PKT_BURST] __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) struct rte_mbuf *pkts[MAX_PKT_BURST];\n \tstruct rte_ether_addr dst_addr;\n \n \tstruct rte_ether_addr bond_mac_addr;\ndiff --git a/examples/distributor/main.c b/examples/distributor/main.c\nindex 542f76c..ddbc387 100644\n--- a/examples/distributor/main.c\n+++ b/examples/distributor/main.c\n@@ -44,39 +44,39 @@\n unsigned int num_workers;\n \n static volatile struct app_stats {\n-\tstruct {\n+\talignas(RTE_CACHE_LINE_SIZE) struct {\n \t\tuint64_t rx_pkts;\n \t\tuint64_t returned_pkts;\n \t\tuint64_t enqueued_pkts;\n \t\tuint64_t enqdrop_pkts;\n-\t} rx __rte_cache_aligned;\n-\tint pad1 __rte_cache_aligned;\n+\t} rx;\n+\talignas(RTE_CACHE_LINE_SIZE) int pad1;\n \n-\tstruct {\n+\talignas(RTE_CACHE_LINE_SIZE) struct {\n \t\tuint64_t in_pkts;\n \t\tuint64_t ret_pkts;\n \t\tuint64_t sent_pkts;\n \t\tuint64_t enqdrop_pkts;\n-\t} dist __rte_cache_aligned;\n-\tint pad2 __rte_cache_aligned;\n+\t} dist;\n+\talignas(RTE_CACHE_LINE_SIZE) int pad2;\n \n-\tstruct {\n+\talignas(RTE_CACHE_LINE_SIZE) struct {\n \t\tuint64_t dequeue_pkts;\n \t\tuint64_t tx_pkts;\n \t\tuint64_t enqdrop_pkts;\n-\t} tx __rte_cache_aligned;\n-\tint pad3 __rte_cache_aligned;\n+\t} tx;\n+\talignas(RTE_CACHE_LINE_SIZE) int pad3;\n \n-\tuint64_t worker_pkts[64] __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) uint64_t worker_pkts[64];\n \n-\tint pad4 __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) int pad4;\n \n-\tuint64_t worker_bursts[64][8] __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) uint64_t worker_bursts[64][8];\n \n-\tint pad5 __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) int pad5;\n \n-\tuint64_t port_rx_pkts[64] __rte_cache_aligned;\n-\tuint64_t port_tx_pkts[64] __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) uint64_t port_rx_pkts[64];\n+\talignas(RTE_CACHE_LINE_SIZE) uint64_t port_tx_pkts[64];\n } app_stats;\n \n struct app_stats prev_app_stats;\n@@ -642,7 +642,7 @@ struct lcore_params {\n \t * port, otherwise we send traffic from 0 to 1, 2 to 3, and vice versa\n \t */\n \tconst unsigned xor_val = (rte_eth_dev_count_avail() > 1);\n-\tstruct rte_mbuf *buf[8] __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) struct rte_mbuf *buf[8];\n \n \tfor (i = 0; i < 8; i++)\n \t\tbuf[i] = NULL;\ndiff --git a/examples/eventdev_pipeline/pipeline_common.h b/examples/eventdev_pipeline/pipeline_common.h\nindex 28b6ab8..21b4c7e 100644\n--- a/examples/eventdev_pipeline/pipeline_common.h\n+++ b/examples/eventdev_pipeline/pipeline_common.h\n@@ -24,10 +24,10 @@\n #define BATCH_SIZE 16\n #define MAX_NUM_CORE 64\n \n-struct worker_data {\n+struct __rte_cache_aligned worker_data {\n \tuint8_t dev_id;\n \tuint8_t port_id;\n-} __rte_cache_aligned;\n+};\n \n typedef int (*worker_loop)(void *);\n typedef void (*schedule_loop)(unsigned int);\n@@ -43,7 +43,7 @@ struct setup_data {\n \topt_check check_opt;\n };\n \n-struct fastpath_data {\n+struct __rte_cache_aligned fastpath_data {\n \tvolatile int done;\n \tuint32_t evdev_service_id;\n \tuint32_t rxadptr_service_id;\n@@ -56,7 +56,7 @@ struct fastpath_data {\n \tuint64_t sched_core[MAX_NUM_CORE];\n \tuint64_t worker_core[MAX_NUM_CORE];\n \tstruct setup_data cap;\n-} __rte_cache_aligned;\n+};\n \n struct config_data {\n \tunsigned int active_cores;\ndiff --git a/examples/ip_fragmentation/main.c b/examples/ip_fragmentation/main.c\nindex 744a1aa..736eae6 100644\n--- a/examples/ip_fragmentation/main.c\n+++ b/examples/ip_fragmentation/main.c\n@@ -135,12 +135,12 @@ struct rx_queue {\n \n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT 16\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tuint16_t n_rx_queue;\n \tuint16_t tx_queue_id[RTE_MAX_ETHPORTS];\n \tstruct rx_queue rx_queue_list[MAX_RX_QUEUE_PER_LCORE];\n \tstruct mbuf_table tx_mbufs[RTE_MAX_ETHPORTS];\n-} __rte_cache_aligned;\n+};\n struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n \n static struct rte_eth_conf port_conf = {\ndiff --git a/examples/ip_pipeline/thread.c b/examples/ip_pipeline/thread.c\nindex b46f64b..8a912dc 100644\n--- a/examples/ip_pipeline/thread.c\n+++ b/examples/ip_pipeline/thread.c\n@@ -63,7 +63,7 @@ struct pipeline_data {\n \tuint8_t buffer[TABLE_RULE_ACTION_SIZE_MAX];\n };\n \n-struct thread_data {\n+struct __rte_cache_aligned thread_data {\n \tstruct rte_pipeline *p[THREAD_PIPELINES_MAX];\n \tuint32_t n_pipelines;\n \n@@ -73,7 +73,7 @@ struct thread_data {\n \tuint64_t timer_period; /* Measured in CPU cycles. */\n \tuint64_t time_next;\n \tuint64_t time_next_min;\n-} __rte_cache_aligned;\n+};\n \n static struct thread_data thread_data[RTE_MAX_LCORE];\n \ndiff --git a/examples/ip_reassembly/main.c b/examples/ip_reassembly/main.c\nindex bd0b1d3..c701907 100644\n--- a/examples/ip_reassembly/main.c\n+++ b/examples/ip_reassembly/main.c\n@@ -148,14 +148,14 @@ struct tx_lcore_stat {\n #define MAX_TX_QUEUE_PER_PORT 16\n #define MAX_RX_QUEUE_PER_PORT 128\n \n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tuint16_t n_rx_queue;\n \tstruct rx_queue rx_queue_list[MAX_RX_QUEUE_PER_LCORE];\n \tuint16_t tx_queue_id[RTE_MAX_ETHPORTS];\n \tstruct rte_ip_frag_death_row death_row;\n \tstruct mbuf_table *tx_mbufs[RTE_MAX_ETHPORTS];\n \tstruct tx_lcore_stat tx_stat;\n-} __rte_cache_aligned;\n+};\n static struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n \n static struct rte_eth_conf port_conf = {\ndiff --git a/examples/ipsec-secgw/ipsec-secgw.c b/examples/ipsec-secgw/ipsec-secgw.c\nindex 45a3038..d7c18be 100644\n--- a/examples/ipsec-secgw/ipsec-secgw.c\n+++ b/examples/ipsec-secgw/ipsec-secgw.c\n@@ -218,11 +218,11 @@ struct app_sa_prm app_sa_prm = {\n \t\t};\n static const char *cfgfile;\n \n-struct lcore_params {\n+struct __rte_cache_aligned lcore_params {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n \tuint8_t lcore_id;\n-} __rte_cache_aligned;\n+};\n \n static struct lcore_params lcore_params_array[MAX_LCORE_PARAMS];\n \ndiff --git a/examples/ipsec-secgw/ipsec-secgw.h b/examples/ipsec-secgw/ipsec-secgw.h\nindex ec33a98..b4ef4b6 100644\n--- a/examples/ipsec-secgw/ipsec-secgw.h\n+++ b/examples/ipsec-secgw/ipsec-secgw.h\n@@ -54,13 +54,13 @@\n #define IPSEC_NAT_T_PORT 4500\n #define MBUF_PTYPE_TUNNEL_ESP_IN_UDP (RTE_PTYPE_TUNNEL_ESP | RTE_PTYPE_L4_UDP)\n \n-struct traffic_type {\n+struct __rte_cache_aligned traffic_type {\n \tuint32_t num;\n \tstruct rte_mbuf *pkts[MAX_PKTS];\n \tconst uint8_t *data[MAX_PKTS];\n \tvoid *saptr[MAX_PKTS];\n \tuint32_t res[MAX_PKTS];\n-} __rte_cache_aligned;\n+};\n \n struct ipsec_traffic {\n \tstruct traffic_type ipsec;\n@@ -98,7 +98,7 @@ struct ipsec_sa_stats {\n \tuint64_t miss;\n };\n \n-struct ipsec_core_statistics {\n+struct __rte_cache_aligned ipsec_core_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n \tuint64_t rx_call;\n@@ -126,7 +126,7 @@ struct ipsec_core_statistics {\n \tstruct {\n \t\tuint64_t miss;\n \t} lpm6;\n-} __rte_cache_aligned;\n+};\n \n extern struct ipsec_core_statistics core_statistics[RTE_MAX_LCORE];\n \ndiff --git a/examples/ipsec-secgw/ipsec.h b/examples/ipsec-secgw/ipsec.h\nindex bdcada1..36b6164 100644\n--- a/examples/ipsec-secgw/ipsec.h\n+++ b/examples/ipsec-secgw/ipsec.h\n@@ -112,7 +112,7 @@ enum {\n \treturn (struct ipsec_sa *)i;\n }\n \n-struct ipsec_sa {\n+struct __rte_cache_aligned ipsec_sa {\n \tstruct rte_ipsec_session sessions[IPSEC_SESSION_MAX];\n \tuint32_t spi;\n \tstruct cdev_qp *cqp[RTE_MAX_LCORE];\n@@ -170,7 +170,7 @@ struct ipsec_sa {\n \tstruct rte_flow_item_esp esp_spec;\n \tstruct rte_flow *flow;\n \tstruct rte_security_session_conf sess_conf;\n-} __rte_cache_aligned;\n+};\n \n struct ipsec_xf {\n \tstruct rte_crypto_sym_xform a;\n@@ -190,12 +190,12 @@ struct sa_ctx {\n \tstruct ipsec_sa sa[];\n };\n \n-struct ipsec_mbuf_metadata {\n+struct __rte_cache_aligned ipsec_mbuf_metadata {\n \tstruct ipsec_sa *sa;\n \tstruct rte_crypto_op cop;\n \tstruct rte_crypto_sym_op sym_cop;\n \tuint8_t buf[32];\n-} __rte_cache_aligned;\n+};\n \n #define IS_TRANSPORT(flags) ((flags) & TRANSPORT)\n \n@@ -224,7 +224,7 @@ struct cdev_qp {\n \tuint16_t qp;\n \tuint16_t in_flight;\n \tuint16_t len;\n-\tstruct rte_crypto_op *buf[MAX_PKT_BURST] __rte_aligned(sizeof(void *));\n+\tstruct rte_crypto_op *buf[MAX_PKT_BURST];\n };\n \n struct ipsec_ctx {\n@@ -235,7 +235,7 @@ struct ipsec_ctx {\n \tuint16_t nb_qps;\n \tuint16_t last_qp;\n \tstruct cdev_qp tbl[MAX_QP_PER_LCORE];\n-\tstruct rte_mbuf *ol_pkts[MAX_PKT_BURST] __rte_aligned(sizeof(void *));\n+\tstruct rte_mbuf *ol_pkts[MAX_PKT_BURST];\n \tuint16_t ol_pkts_cnt;\n \tuint64_t ipv4_offloads;\n \tuint64_t ipv6_offloads;\n@@ -283,18 +283,18 @@ struct cnt_blk {\n \tuint32_t cnt;\n } __rte_packed;\n \n-struct lcore_rx_queue {\n+struct __rte_cache_aligned lcore_rx_queue {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n \tvoid *sec_ctx;\n-} __rte_cache_aligned;\n+};\n \n struct buffer {\n \tuint16_t len;\n-\tstruct rte_mbuf *m_table[MAX_PKT_BURST] __rte_aligned(sizeof(void *));\n+\tstruct rte_mbuf *m_table[MAX_PKT_BURST];\n };\n \n-struct lcore_conf {\n+struct __rte_cache_aligned lcore_conf {\n \tuint16_t nb_rx_queue;\n \tstruct lcore_rx_queue rx_queue_list[MAX_RX_QUEUE_PER_LCORE];\n \tuint16_t tx_queue_id[RTE_MAX_ETHPORTS];\n@@ -308,7 +308,7 @@ struct lcore_conf {\n \t\tstruct rte_mempool *pool_indir;\n \t\tstruct rte_ip_frag_death_row dr;\n \t} frag;\n-} __rte_cache_aligned;\n+};\n \n extern struct lcore_conf lcore_conf[RTE_MAX_LCORE];\n \ndiff --git a/examples/ipsec-secgw/ipsec_worker.h b/examples/ipsec-secgw/ipsec_worker.h\nindex 8e937fd..8f6a1c0 100644\n--- a/examples/ipsec-secgw/ipsec_worker.h\n+++ b/examples/ipsec-secgw/ipsec_worker.h\n@@ -37,11 +37,11 @@ struct route_table {\n /*\n  * Conf required by event mode worker with tx internal port\n  */\n-struct lcore_conf_ev_tx_int_port_wrkr {\n+struct __rte_cache_aligned lcore_conf_ev_tx_int_port_wrkr {\n \tstruct ipsec_ctx inbound;\n \tstruct ipsec_ctx outbound;\n \tstruct route_table rt;\n-} __rte_cache_aligned;\n+};\n \n void ipsec_poll_mode_worker(void);\n void ipsec_poll_mode_wrkr_inl_pr(void);\ndiff --git a/examples/ipv4_multicast/main.c b/examples/ipv4_multicast/main.c\nindex 6d0a850..1eed645 100644\n--- a/examples/ipv4_multicast/main.c\n+++ b/examples/ipv4_multicast/main.c\n@@ -98,13 +98,13 @@ struct mbuf_table {\n \n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT 16\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tuint64_t tx_tsc;\n \tuint16_t n_rx_queue;\n \tuint8_t rx_queue_list[MAX_RX_QUEUE_PER_LCORE];\n \tuint16_t tx_queue_id[MAX_PORTS];\n \tstruct mbuf_table tx_mbufs[MAX_PORTS];\n-} __rte_cache_aligned;\n+};\n static struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n \n static struct rte_eth_conf port_conf = {\ndiff --git a/examples/l2fwd-crypto/main.c b/examples/l2fwd-crypto/main.c\nindex 19db0a2..a441312 100644\n--- a/examples/l2fwd-crypto/main.c\n+++ b/examples/l2fwd-crypto/main.c\n@@ -201,7 +201,7 @@ struct l2fwd_crypto_params {\n };\n \n /** lcore configuration */\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tunsigned nb_rx_ports;\n \tuint16_t rx_port_list[MAX_RX_QUEUE_PER_LCORE];\n \n@@ -210,7 +210,7 @@ struct lcore_queue_conf {\n \n \tstruct op_buffer op_buf[RTE_CRYPTO_MAX_DEVS];\n \tstruct pkt_buffer pkt_buf[RTE_MAX_ETHPORTS];\n-} __rte_cache_aligned;\n+};\n \n struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n \n@@ -230,7 +230,7 @@ struct lcore_queue_conf {\n } session_pool_socket[RTE_MAX_NUMA_NODES];\n \n /* Per-port statistics struct */\n-struct l2fwd_port_statistics {\n+struct __rte_cache_aligned l2fwd_port_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n \n@@ -238,14 +238,14 @@ struct l2fwd_port_statistics {\n \tuint64_t crypto_dequeued;\n \n \tuint64_t dropped;\n-} __rte_cache_aligned;\n+};\n \n-struct l2fwd_crypto_statistics {\n+struct __rte_cache_aligned l2fwd_crypto_statistics {\n \tuint64_t enqueued;\n \tuint64_t dequeued;\n \n \tuint64_t errors;\n-} __rte_cache_aligned;\n+};\n \n struct l2fwd_port_statistics port_statistics[RTE_MAX_ETHPORTS];\n struct l2fwd_crypto_statistics crypto_statistics[RTE_CRYPTO_MAX_DEVS];\ndiff --git a/examples/l2fwd-event/l2fwd_common.h b/examples/l2fwd-event/l2fwd_common.h\nindex 07f84cb..c56b3e7 100644\n--- a/examples/l2fwd-event/l2fwd_common.h\n+++ b/examples/l2fwd-event/l2fwd_common.h\n@@ -59,11 +59,11 @@\n #define VECTOR_TMO_NS_DEFAULT 1E6 /* 1ms */\n \n /* Per-port statistics struct */\n-struct l2fwd_port_statistics {\n+struct __rte_cache_aligned l2fwd_port_statistics {\n \tuint64_t dropped;\n \tuint64_t tx;\n \tuint64_t rx;\n-} __rte_cache_aligned;\n+};\n \n /* Event vector attributes */\n struct l2fwd_event_vector_params {\n@@ -72,7 +72,7 @@ struct l2fwd_event_vector_params {\n \tuint64_t timeout_ns;\n };\n \n-struct l2fwd_resources {\n+struct __rte_cache_aligned l2fwd_resources {\n \tvolatile uint8_t force_quit;\n \tuint8_t event_mode;\n \tuint8_t sched_type;\n@@ -91,7 +91,7 @@ struct l2fwd_resources {\n \tstruct l2fwd_event_vector_params evt_vec;\n \tvoid *evt_rsrc;\n \tvoid *poll_rsrc;\n-} __rte_cache_aligned;\n+};\n \n static __rte_always_inline void\n l2fwd_mac_updating(struct rte_mbuf *m, uint32_t dest_port_id,\ndiff --git a/examples/l2fwd-event/l2fwd_poll.h b/examples/l2fwd-event/l2fwd_poll.h\nindex d59b0c8..9d72008 100644\n--- a/examples/l2fwd-event/l2fwd_poll.h\n+++ b/examples/l2fwd-event/l2fwd_poll.h\n@@ -9,10 +9,10 @@\n \n typedef void (*poll_main_loop_cb)(struct l2fwd_resources *rsrc);\n \n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tuint32_t rx_port_list[MAX_RX_QUEUE_PER_LCORE];\n \tuint32_t n_rx_port;\n-} __rte_cache_aligned;\n+};\n \n struct l2fwd_poll_resources {\n \tpoll_main_loop_cb poll_main_loop;\ndiff --git a/examples/l2fwd-jobstats/main.c b/examples/l2fwd-jobstats/main.c\nindex 2653db4..cb7582a 100644\n--- a/examples/l2fwd-jobstats/main.c\n+++ b/examples/l2fwd-jobstats/main.c\n@@ -67,7 +67,7 @@\n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT 16\n /* List of queues to be polled for given lcore. 8< */\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tunsigned n_rx_port;\n \tunsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE];\n \tuint64_t next_flush_time[RTE_MAX_ETHPORTS];\n@@ -82,7 +82,7 @@ struct lcore_queue_conf {\n \n \tuint16_t stats_read_pending;\n \trte_spinlock_t lock;\n-} __rte_cache_aligned;\n+};\n /* >8 End of list of queues to be polled for given lcore. */\n struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n \n@@ -97,11 +97,11 @@ struct lcore_queue_conf {\n struct rte_mempool *l2fwd_pktmbuf_pool = NULL;\n \n /* Per-port statistics struct */\n-struct l2fwd_port_statistics {\n+struct __rte_cache_aligned l2fwd_port_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n \tuint64_t dropped;\n-} __rte_cache_aligned;\n+};\n struct l2fwd_port_statistics port_statistics[RTE_MAX_ETHPORTS];\n \n /* 1 day max */\ndiff --git a/examples/l2fwd-keepalive/main.c b/examples/l2fwd-keepalive/main.c\nindex 1463cef..c3ead9e 100644\n--- a/examples/l2fwd-keepalive/main.c\n+++ b/examples/l2fwd-keepalive/main.c\n@@ -69,10 +69,10 @@\n \n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT 16\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tunsigned n_rx_port;\n \tunsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE];\n-} __rte_cache_aligned;\n+};\n struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n \n struct rte_eth_dev_tx_buffer *tx_buffer[RTE_MAX_ETHPORTS];\n@@ -86,11 +86,11 @@ struct lcore_queue_conf {\n struct rte_mempool *l2fwd_pktmbuf_pool = NULL;\n \n /* Per-port statistics struct */\n-struct l2fwd_port_statistics {\n+struct __rte_cache_aligned l2fwd_port_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n \tuint64_t dropped;\n-} __rte_cache_aligned;\n+};\n struct l2fwd_port_statistics port_statistics[RTE_MAX_ETHPORTS];\n \n /* A tsc-based timer responsible for triggering statistics printout */\ndiff --git a/examples/l2fwd-macsec/main.c b/examples/l2fwd-macsec/main.c\nindex a5d7a84..294ee11 100644\n--- a/examples/l2fwd-macsec/main.c\n+++ b/examples/l2fwd-macsec/main.c\n@@ -72,10 +72,10 @@\n /* list of enabled ports */\n static uint32_t l2fwd_dst_ports[RTE_MAX_ETHPORTS];\n \n-struct port_pair_params {\n+struct __rte_cache_aligned port_pair_params {\n #define NUM_PORTS\t2\n \tuint16_t port[NUM_PORTS];\n-} __rte_cache_aligned;\n+};\n \n static struct port_pair_params port_pair_params_array[RTE_MAX_ETHPORTS / 2];\n static struct port_pair_params *port_pair_params;\n@@ -86,10 +86,10 @@ struct port_pair_params {\n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT 16\n /* List of queues to be polled for a given lcore. 8< */\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tunsigned int n_rx_port;\n \tunsigned int rx_port_list[MAX_RX_QUEUE_PER_LCORE];\n-} __rte_cache_aligned;\n+};\n struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n /* >8 End of list of queues to be polled for a given lcore. */\n \n@@ -105,11 +105,11 @@ struct lcore_queue_conf {\n struct rte_mempool *l2fwd_pktmbuf_pool;\n \n /* Per-port statistics struct */\n-struct l2fwd_port_statistics {\n+struct __rte_cache_aligned l2fwd_port_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n \tuint64_t dropped;\n-} __rte_cache_aligned;\n+};\n struct l2fwd_port_statistics port_statistics[RTE_MAX_ETHPORTS];\n \n #define MAX_TIMER_PERIOD 86400 /* 1 day max */\ndiff --git a/examples/l2fwd/main.c b/examples/l2fwd/main.c\nindex 96fb331..c6fafdd 100644\n--- a/examples/l2fwd/main.c\n+++ b/examples/l2fwd/main.c\n@@ -69,10 +69,10 @@\n /* list of enabled ports */\n static uint32_t l2fwd_dst_ports[RTE_MAX_ETHPORTS];\n \n-struct port_pair_params {\n+struct __rte_cache_aligned port_pair_params {\n #define NUM_PORTS\t2\n \tuint16_t port[NUM_PORTS];\n-} __rte_cache_aligned;\n+};\n \n static struct port_pair_params port_pair_params_array[RTE_MAX_ETHPORTS / 2];\n static struct port_pair_params *port_pair_params;\n@@ -83,10 +83,10 @@ struct port_pair_params {\n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT 16\n /* List of queues to be polled for a given lcore. 8< */\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tunsigned n_rx_port;\n \tunsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE];\n-} __rte_cache_aligned;\n+};\n struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n /* >8 End of list of queues to be polled for a given lcore. */\n \n@@ -101,11 +101,11 @@ struct lcore_queue_conf {\n struct rte_mempool * l2fwd_pktmbuf_pool = NULL;\n \n /* Per-port statistics struct */\n-struct l2fwd_port_statistics {\n+struct __rte_cache_aligned l2fwd_port_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n \tuint64_t dropped;\n-} __rte_cache_aligned;\n+};\n struct l2fwd_port_statistics port_statistics[RTE_MAX_ETHPORTS];\n \n #define MAX_TIMER_PERIOD 86400 /* 1 day max */\ndiff --git a/examples/l3fwd-graph/main.c b/examples/l3fwd-graph/main.c\nindex 96cb1c8..ec4d8c9 100644\n--- a/examples/l3fwd-graph/main.c\n+++ b/examples/l3fwd-graph/main.c\n@@ -97,22 +97,22 @@ struct lcore_rx_queue {\n static uint8_t model_conf = RTE_GRAPH_MODEL_DEFAULT;\n \n /* Lcore conf */\n-struct lcore_conf {\n+struct __rte_cache_aligned lcore_conf {\n \tuint16_t n_rx_queue;\n \tstruct lcore_rx_queue rx_queue_list[MAX_RX_QUEUE_PER_LCORE];\n \n \tstruct rte_graph *graph;\n \tchar name[RTE_GRAPH_NAMESIZE];\n \trte_graph_t graph_id;\n-} __rte_cache_aligned;\n+};\n \n static struct lcore_conf lcore_conf[RTE_MAX_LCORE];\n \n-struct lcore_params {\n+struct __rte_cache_aligned lcore_params {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n \tuint8_t lcore_id;\n-} __rte_cache_aligned;\n+};\n \n static struct lcore_params lcore_params_array[MAX_LCORE_PARAMS];\n static struct lcore_params lcore_params_array_default[] = {\ndiff --git a/examples/l3fwd-power/main.c b/examples/l3fwd-power/main.c\nindex f4adcf4..fba11da 100644\n--- a/examples/l3fwd-power/main.c\n+++ b/examples/l3fwd-power/main.c\n@@ -212,13 +212,13 @@ enum freq_scale_hint_t\n \tFREQ_HIGHEST  =       2\n };\n \n-struct lcore_rx_queue {\n+struct __rte_cache_aligned lcore_rx_queue {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n \tenum freq_scale_hint_t freq_up_hint;\n \tuint32_t zero_rx_packet_count;\n \tuint32_t idle_hint;\n-} __rte_cache_aligned;\n+};\n \n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT RTE_MAX_ETHPORTS\n@@ -329,8 +329,8 @@ struct ipv6_l3fwd_route {\n \n #define L3FWD_HASH_ENTRIES\t1024\n \n-static uint16_t ipv4_l3fwd_out_if[L3FWD_HASH_ENTRIES] __rte_cache_aligned;\n-static uint16_t ipv6_l3fwd_out_if[L3FWD_HASH_ENTRIES] __rte_cache_aligned;\n+static alignas(RTE_CACHE_LINE_SIZE) uint16_t ipv4_l3fwd_out_if[L3FWD_HASH_ENTRIES];\n+static alignas(RTE_CACHE_LINE_SIZE) uint16_t ipv6_l3fwd_out_if[L3FWD_HASH_ENTRIES];\n #endif\n \n #if (APP_LOOKUP_METHOD == APP_LOOKUP_LPM)\n@@ -357,7 +357,7 @@ struct ipv4_l3fwd_route {\n static lookup_struct_t *ipv4_l3fwd_lookup_struct[NB_SOCKETS];\n #endif\n \n-struct lcore_conf {\n+struct __rte_cache_aligned lcore_conf {\n \tuint16_t n_rx_queue;\n \tstruct lcore_rx_queue rx_queue_list[MAX_RX_QUEUE_PER_LCORE];\n \tuint16_t n_tx_port;\n@@ -366,9 +366,9 @@ struct lcore_conf {\n \tstruct rte_eth_dev_tx_buffer *tx_buffer[RTE_MAX_ETHPORTS];\n \tlookup_struct_t * ipv4_lookup_struct;\n \tlookup_struct_t * ipv6_lookup_struct;\n-} __rte_cache_aligned;\n+};\n \n-struct lcore_stats {\n+struct __rte_cache_aligned lcore_stats {\n \t/* total sleep time in ms since last frequency scaling down */\n \tuint32_t sleep_time;\n \t/* number of long sleep recently */\n@@ -399,10 +399,10 @@ struct lcore_stats {\n \tuint64_t fp_nfp[2];\n \tenum busy_rate br;\n \trte_spinlock_t telemetry_lock;\n-} __rte_cache_aligned;\n+};\n \n-static struct lcore_conf lcore_conf[RTE_MAX_LCORE] __rte_cache_aligned;\n-static struct lcore_stats stats[RTE_MAX_LCORE] __rte_cache_aligned;\n+static alignas(RTE_CACHE_LINE_SIZE) struct lcore_conf lcore_conf[RTE_MAX_LCORE];\n+static alignas(RTE_CACHE_LINE_SIZE) struct lcore_stats stats[RTE_MAX_LCORE];\n static struct rte_timer power_timers[RTE_MAX_LCORE];\n \n static inline uint32_t power_idle_heuristic(uint32_t zero_rx_packet_count);\n@@ -832,9 +832,9 @@ static int is_done(void)\n \t * back to sleep again without log spamming. Avoid cache line sharing\n \t * to prevent threads stepping on each others' toes.\n \t */\n-\tstatic struct {\n+\tstatic alignas(RTE_CACHE_LINE_SIZE) struct {\n \t\tbool wakeup;\n-\t} __rte_cache_aligned status[RTE_MAX_LCORE];\n+\t} status[RTE_MAX_LCORE];\n \tstruct rte_epoll_event event[num];\n \tint n, i;\n \tuint16_t port_id;\ndiff --git a/examples/l3fwd-power/main.h b/examples/l3fwd-power/main.h\nindex 258de98..e85e14b 100644\n--- a/examples/l3fwd-power/main.h\n+++ b/examples/l3fwd-power/main.h\n@@ -7,11 +7,11 @@\n \n \n #define MAX_LCORE_PARAMS 1024\n-struct lcore_params {\n+struct __rte_cache_aligned lcore_params {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n \tuint8_t lcore_id;\n-} __rte_cache_aligned;\n+};\n \n extern struct lcore_params *lcore_params;\n extern uint16_t nb_lcore_params;\ndiff --git a/examples/l3fwd-power/perf_core.c b/examples/l3fwd-power/perf_core.c\nindex 41ef6d0..c8fc69e 100644\n--- a/examples/l3fwd-power/perf_core.c\n+++ b/examples/l3fwd-power/perf_core.c\n@@ -20,12 +20,12 @@\n static uint16_t hp_lcores[RTE_MAX_LCORE];\n static uint16_t nb_hp_lcores;\n \n-struct perf_lcore_params {\n+struct __rte_cache_aligned perf_lcore_params {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n \tuint8_t high_perf;\n \tuint8_t lcore_idx;\n-} __rte_cache_aligned;\n+};\n \n static struct perf_lcore_params prf_lc_prms[MAX_LCORE_PARAMS];\n static uint16_t nb_prf_lc_prms;\ndiff --git a/examples/l3fwd/l3fwd.h b/examples/l3fwd/l3fwd.h\nindex e7ae0e5..f51da43 100644\n--- a/examples/l3fwd/l3fwd.h\n+++ b/examples/l3fwd/l3fwd.h\n@@ -72,12 +72,12 @@ struct mbuf_table {\n \tstruct rte_mbuf *m_table[MAX_PKT_BURST];\n };\n \n-struct lcore_rx_queue {\n+struct __rte_cache_aligned lcore_rx_queue {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n-} __rte_cache_aligned;\n+};\n \n-struct lcore_conf {\n+struct __rte_cache_aligned lcore_conf {\n \tuint16_t n_rx_queue;\n \tstruct lcore_rx_queue rx_queue_list[MAX_RX_QUEUE_PER_LCORE];\n \tuint16_t n_tx_port;\n@@ -86,7 +86,7 @@ struct lcore_conf {\n \tstruct mbuf_table tx_mbufs[RTE_MAX_ETHPORTS];\n \tvoid *ipv4_lookup_struct;\n \tvoid *ipv6_lookup_struct;\n-} __rte_cache_aligned;\n+};\n \n extern volatile bool force_quit;\n \ndiff --git a/examples/l3fwd/l3fwd_em.c b/examples/l3fwd/l3fwd_em.c\nindex 40e102b..d98e66e 100644\n--- a/examples/l3fwd/l3fwd_em.c\n+++ b/examples/l3fwd/l3fwd_em.c\n@@ -208,8 +208,8 @@\n \treturn init_val;\n }\n \n-static uint8_t ipv4_l3fwd_out_if[L3FWD_HASH_ENTRIES] __rte_cache_aligned;\n-static uint8_t ipv6_l3fwd_out_if[L3FWD_HASH_ENTRIES] __rte_cache_aligned;\n+static alignas(RTE_CACHE_LINE_SIZE) uint8_t ipv4_l3fwd_out_if[L3FWD_HASH_ENTRIES];\n+static alignas(RTE_CACHE_LINE_SIZE) uint8_t ipv6_l3fwd_out_if[L3FWD_HASH_ENTRIES];\n \n static rte_xmm_t mask0;\n static rte_xmm_t mask1;\ndiff --git a/examples/l3fwd/main.c b/examples/l3fwd/main.c\nindex 8d32ae1..ad28ba9 100644\n--- a/examples/l3fwd/main.c\n+++ b/examples/l3fwd/main.c\n@@ -96,11 +96,11 @@ enum L3FWD_LOOKUP_MODE {\n \n struct parm_cfg parm_config;\n \n-struct lcore_params {\n+struct __rte_cache_aligned lcore_params {\n \tuint16_t port_id;\n \tuint8_t queue_id;\n \tuint8_t lcore_id;\n-} __rte_cache_aligned;\n+};\n \n static struct lcore_params lcore_params_array[MAX_LCORE_PARAMS];\n static struct lcore_params lcore_params_array_default[] = {\ndiff --git a/examples/link_status_interrupt/main.c b/examples/link_status_interrupt/main.c\nindex a8423d5..ac9c7f6 100644\n--- a/examples/link_status_interrupt/main.c\n+++ b/examples/link_status_interrupt/main.c\n@@ -66,11 +66,11 @@\n #define MAX_RX_QUEUE_PER_LCORE 16\n #define MAX_TX_QUEUE_PER_PORT 16\n /* List of queues must be polled for a give lcore. 8< */\n-struct lcore_queue_conf {\n+struct __rte_cache_aligned lcore_queue_conf {\n \tunsigned n_rx_port;\n \tunsigned rx_port_list[MAX_RX_QUEUE_PER_LCORE];\n \tunsigned tx_queue_id;\n-} __rte_cache_aligned;\n+};\n struct lcore_queue_conf lcore_queue_conf[RTE_MAX_LCORE];\n /* >8 End of list of queues to be polled. */\n \n@@ -90,11 +90,11 @@ struct lcore_queue_conf {\n struct rte_mempool * lsi_pktmbuf_pool = NULL;\n \n /* Per-port statistics struct */\n-struct lsi_port_statistics {\n+struct __rte_cache_aligned lsi_port_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n \tuint64_t dropped;\n-} __rte_cache_aligned;\n+};\n struct lsi_port_statistics port_statistics[RTE_MAX_ETHPORTS];\n \n /* A tsc-based timer responsible for triggering statistics printout */\ndiff --git a/examples/multi_process/client_server_mp/shared/common.h b/examples/multi_process/client_server_mp/shared/common.h\nindex 76beca0..b3f3a41 100644\n--- a/examples/multi_process/client_server_mp/shared/common.h\n+++ b/examples/multi_process/client_server_mp/shared/common.h\n@@ -18,14 +18,14 @@\n  * themselves are written by the clients, so we have a distinct set, on different\n  * cache lines for each client to use.\n  */\n-struct rx_stats{\n+struct __rte_cache_aligned rx_stats {\n \tuint64_t rx[RTE_MAX_ETHPORTS];\n-} __rte_cache_aligned;\n+};\n \n-struct tx_stats{\n+struct __rte_cache_aligned tx_stats {\n \tuint64_t tx[RTE_MAX_ETHPORTS];\n \tuint64_t tx_drop[RTE_MAX_ETHPORTS];\n-} __rte_cache_aligned;\n+};\n \n struct port_info {\n \tuint16_t num_ports;\ndiff --git a/examples/multi_process/symmetric_mp/main.c b/examples/multi_process/symmetric_mp/main.c\nindex 1ff8587..f7d8439 100644\n--- a/examples/multi_process/symmetric_mp/main.c\n+++ b/examples/multi_process/symmetric_mp/main.c\n@@ -61,11 +61,11 @@ struct lcore_ports{\n \n /* structure to record the rx and tx packets. Put two per cache line as ports\n  * used in pairs */\n-struct port_stats{\n+struct __rte_aligned(RTE_CACHE_LINE_SIZE / 2) port_stats{\n \tunsigned rx;\n \tunsigned tx;\n \tunsigned drop;\n-} __rte_aligned(RTE_CACHE_LINE_SIZE / 2);\n+};\n \n static int proc_id = -1;\n static unsigned num_procs = 0;\ndiff --git a/examples/ntb/ntb_fwd.c b/examples/ntb/ntb_fwd.c\nindex 95a6148..56c7672 100644\n--- a/examples/ntb/ntb_fwd.c\n+++ b/examples/ntb/ntb_fwd.c\n@@ -24,10 +24,10 @@\n #include \"commands.h\"\n \n /* Per-port statistics struct */\n-struct ntb_port_statistics {\n+struct __rte_cache_aligned ntb_port_statistics {\n \tuint64_t tx;\n \tuint64_t rx;\n-} __rte_cache_aligned;\n+};\n /* Port 0: NTB dev, Port 1: ethdev when iofwd. */\n struct ntb_port_statistics ntb_port_stats[2];\n \ndiff --git a/examples/packet_ordering/main.c b/examples/packet_ordering/main.c\nindex f839db9..5ffdf72 100644\n--- a/examples/packet_ordering/main.c\n+++ b/examples/packet_ordering/main.c\n@@ -58,19 +58,19 @@ struct send_thread_args {\n };\n \n volatile struct app_stats {\n-\tstruct {\n+\talignas(RTE_CACHE_LINE_SIZE) struct {\n \t\tuint64_t rx_pkts;\n \t\tuint64_t enqueue_pkts;\n \t\tuint64_t enqueue_failed_pkts;\n-\t} rx __rte_cache_aligned;\n+\t} rx;\n \n-\tstruct {\n+\talignas(RTE_CACHE_LINE_SIZE) struct {\n \t\tuint64_t dequeue_pkts;\n \t\tuint64_t enqueue_pkts;\n \t\tuint64_t enqueue_failed_pkts;\n-\t} wkr __rte_cache_aligned;\n+\t} wkr;\n \n-\tstruct {\n+\talignas(RTE_CACHE_LINE_SIZE) struct {\n \t\tuint64_t dequeue_pkts;\n \t\t/* Too early pkts transmitted directly w/o reordering */\n \t\tuint64_t early_pkts_txtd_woro;\n@@ -78,15 +78,15 @@ struct send_thread_args {\n \t\tuint64_t early_pkts_tx_failed_woro;\n \t\tuint64_t ro_tx_pkts;\n \t\tuint64_t ro_tx_failed_pkts;\n-\t} tx __rte_cache_aligned;\n+\t} tx;\n } app_stats;\n \n /* per worker lcore stats */\n-struct wkr_stats_per {\n+struct __rte_cache_aligned wkr_stats_per {\n \t\tuint64_t deq_pkts;\n \t\tuint64_t enq_pkts;\n \t\tuint64_t enq_failed_pkts;\n-} __rte_cache_aligned;\n+};\n \n static struct wkr_stats_per wkr_stats[RTE_MAX_LCORE] = { {0} };\n /**\ndiff --git a/examples/pipeline/thread.c b/examples/pipeline/thread.c\nindex dc3ea73..cf2af55 100644\n--- a/examples/pipeline/thread.c\n+++ b/examples/pipeline/thread.c\n@@ -47,13 +47,13 @@ struct block {\n \tvoid *block;\n };\n \n-struct thread {\n+struct __rte_cache_aligned thread {\n \tstruct rte_swx_pipeline *pipelines[THREAD_PIPELINES_MAX];\n \tstruct block *blocks[THREAD_BLOCKS_MAX];\n \tvolatile uint64_t n_pipelines;\n \tvolatile uint64_t n_blocks;\n \tint enabled;\n-} __rte_cache_aligned;\n+};\n \n static struct thread threads[RTE_MAX_LCORE];\n \ndiff --git a/examples/qos_sched/app_thread.c b/examples/qos_sched/app_thread.c\nindex 059c470..e50cc33 100644\n--- a/examples/qos_sched/app_thread.c\n+++ b/examples/qos_sched/app_thread.c\n@@ -62,7 +62,7 @@\n app_rx_thread(struct thread_conf **confs)\n {\n \tuint32_t i, nb_rx;\n-\tstruct rte_mbuf *rx_mbufs[burst_conf.rx_burst] __rte_cache_aligned;\n+\talignas(RTE_CACHE_LINE_SIZE) struct rte_mbuf *rx_mbufs[burst_conf.rx_burst];\n \tstruct thread_conf *conf;\n \tint conf_idx = 0;\n \ndiff --git a/examples/qos_sched/main.h b/examples/qos_sched/main.h\nindex bc647ec..04e77a4 100644\n--- a/examples/qos_sched/main.h\n+++ b/examples/qos_sched/main.h\n@@ -63,7 +63,7 @@ struct thread_stat\n };\n \n \n-struct thread_conf\n+struct __rte_cache_aligned thread_conf\n {\n \tuint16_t rx_port;\n \tuint16_t tx_port;\n@@ -76,7 +76,7 @@ struct thread_conf\n #if APP_COLLECT_STAT\n \tstruct thread_stat stat;\n #endif\n-} __rte_cache_aligned;\n+};\n \n \n struct flow_conf\ndiff --git a/examples/server_node_efd/shared/common.h b/examples/server_node_efd/shared/common.h\nindex 130fd4f..e1ab7e6 100644\n--- a/examples/server_node_efd/shared/common.h\n+++ b/examples/server_node_efd/shared/common.h\n@@ -20,19 +20,19 @@\n  * themselves are written by the nodes, so we have a distinct set, on different\n  * cache lines for each node to use.\n  */\n-struct rx_stats {\n+struct __rte_cache_aligned rx_stats {\n \tuint64_t rx[RTE_MAX_ETHPORTS];\n-} __rte_cache_aligned;\n+};\n \n-struct tx_stats {\n+struct __rte_cache_aligned tx_stats {\n \tuint64_t tx[RTE_MAX_ETHPORTS];\n \tuint64_t tx_drop[RTE_MAX_ETHPORTS];\n-} __rte_cache_aligned;\n+};\n \n-struct filter_stats {\n+struct __rte_cache_aligned filter_stats {\n \tuint64_t drop;\n \tuint64_t passed;\n-} __rte_cache_aligned;\n+};\n \n struct shared_info {\n \tuint8_t num_nodes;\ndiff --git a/examples/vhost/main.h b/examples/vhost/main.h\nindex 2fcb837..c1c9a42 100644\n--- a/examples/vhost/main.h\n+++ b/examples/vhost/main.h\n@@ -32,7 +32,7 @@ struct vhost_queue {\n \tuint16_t\t\tlast_used_idx;\n };\n \n-struct vhost_dev {\n+struct __rte_cache_aligned vhost_dev {\n \t/**< Number of memory regions for gpa to hpa translation. */\n \tuint32_t nregions_hpa;\n \t/**< Device MAC address (Obtained on first TX packet). */\n@@ -59,7 +59,7 @@ struct vhost_dev {\n \n #define MAX_QUEUE_PAIRS\t4\n \tstruct vhost_queue queues[MAX_QUEUE_PAIRS * 2];\n-} __rte_cache_aligned;\n+};\n \n typedef uint16_t (*vhost_enqueue_burst_t)(struct vhost_dev *dev,\n \t\t\tuint16_t queue_id, struct rte_mbuf **pkts,\ndiff --git a/examples/vhost_blk/vhost_blk.h b/examples/vhost_blk/vhost_blk.h\nindex 975f0b4..649a52b 100644\n--- a/examples/vhost_blk/vhost_blk.h\n+++ b/examples/vhost_blk/vhost_blk.h\n@@ -66,7 +66,7 @@ struct vhost_block_dev {\n \tuint8_t *data;\n };\n \n-struct vhost_blk_ctrlr {\n+struct __rte_cache_aligned vhost_blk_ctrlr {\n \tuint8_t started;\n \t/** ID for vhost library. */\n \tint vid;\n@@ -76,7 +76,7 @@ struct vhost_blk_ctrlr {\n \tstruct vhost_block_dev *bdev;\n \t/** VM memory region */\n \tstruct rte_vhost_memory *mem;\n-} __rte_cache_aligned;\n+};\n \n #define VHOST_BLK_MAX_IOVS 128\n \ndiff --git a/examples/vhost_crypto/main.c b/examples/vhost_crypto/main.c\nindex 02987eb..558c09a 100644\n--- a/examples/vhost_crypto/main.c\n+++ b/examples/vhost_crypto/main.c\n@@ -42,7 +42,7 @@ struct lcore_option {\n \tuint16_t qid;\n };\n \n-struct vhost_crypto_info {\n+struct __rte_cache_aligned vhost_crypto_info {\n \tint vids[MAX_NB_SOCKETS];\n \tuint32_t nb_vids;\n \tstruct rte_mempool *sess_pool;\n@@ -51,7 +51,7 @@ struct vhost_crypto_info {\n \tuint32_t qid;\n \tuint32_t nb_inflight_ops;\n \tvolatile uint32_t initialized[MAX_NB_SOCKETS];\n-} __rte_cache_aligned;\n+};\n \n struct vhost_crypto_options {\n \tstruct lcore_option los[MAX_NB_WORKER_CORES];\ndiff --git a/examples/vm_power_manager/power_manager.c b/examples/vm_power_manager/power_manager.c\nindex 739372d..0355a7f 100644\n--- a/examples/vm_power_manager/power_manager.c\n+++ b/examples/vm_power_manager/power_manager.c\n@@ -32,11 +32,11 @@\n \trte_spinlock_unlock(&global_core_freq_info[core_num].power_sl); \\\n } while (0)\n \n-struct freq_info {\n+struct __rte_cache_aligned freq_info {\n \trte_spinlock_t power_sl;\n \tuint32_t freqs[RTE_MAX_LCORE_FREQS];\n \tunsigned num_freqs;\n-} __rte_cache_aligned;\n+};\n \n static struct freq_info global_core_freq_info[RTE_MAX_LCORE];\n \n",
    "prefixes": [
        "v2",
        "01/83"
    ]
}