@@ -3,6 +3,8 @@
*/
+#include <stdalign.h>
+
#include <rte_common.h>
#include "net_crc.h"
@@ -20,8 +22,8 @@ struct crc_vpclmulqdq_ctx {
__m128i fold_1x128b;
};
-static struct crc_vpclmulqdq_ctx crc32_eth __rte_aligned(64);
-static struct crc_vpclmulqdq_ctx crc16_ccitt __rte_aligned(64);
+static alignas(64) struct crc_vpclmulqdq_ctx crc32_eth;
+static alignas(64) struct crc_vpclmulqdq_ctx crc16_ccitt;
static uint16_t byte_len_to_mask_table[] = {
0x0000, 0x0001, 0x0003, 0x0007,
@@ -30,18 +32,18 @@ struct crc_vpclmulqdq_ctx {
0x0fff, 0x1fff, 0x3fff, 0x7fff,
0xffff};
-static const uint8_t shf_table[32] __rte_aligned(16) = {
+static const alignas(16) uint8_t shf_table[32] = {
0x00, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f
};
-static const uint32_t mask[4] __rte_aligned(16) = {
+static const alignas(16) uint32_t mask[4] = {
0xffffffff, 0xffffffff, 0x00000000, 0x00000000
};
-static const uint32_t mask2[4] __rte_aligned(16) = {
+static const alignas(16) uint32_t mask2[4] = {
0x00000000, 0xffffffff, 0xffffffff, 0xffffffff
};
@@ -93,7 +95,7 @@ struct crc_vpclmulqdq_ctx {
uint32_t offset;
__m128i res2, res3, res4, pshufb_shf;
- const uint32_t mask3[4] __rte_aligned(16) = {
+ const alignas(16) uint32_t mask3[4] = {
0x80808080, 0x80808080, 0x80808080, 0x80808080
};
@@ -2,6 +2,7 @@
* Copyright(c) 2017 Cavium, Inc
*/
+#include <stdalign.h>
#include <string.h>
#include <rte_common.h>
@@ -19,8 +20,8 @@ struct crc_pmull_ctx {
uint64x2_t rk7_rk8;
};
-struct crc_pmull_ctx crc32_eth_pmull __rte_aligned(16);
-struct crc_pmull_ctx crc16_ccitt_pmull __rte_aligned(16);
+alignas(16) struct crc_pmull_ctx crc32_eth_pmull;
+alignas(16) struct crc_pmull_ctx crc16_ccitt_pmull;
/**
* @brief Performs one folding round
@@ -96,10 +97,10 @@ struct crc_pmull_ctx {
crcr32_reduce_64_to_32(uint64x2_t data64,
uint64x2_t precomp)
{
- static uint32_t mask1[4] __rte_aligned(16) = {
+ static alignas(16) uint32_t mask1[4] = {
0xffffffff, 0xffffffff, 0x00000000, 0x00000000
};
- static uint32_t mask2[4] __rte_aligned(16) = {
+ static alignas(16) uint32_t mask2[4] = {
0x00000000, 0xffffffff, 0xffffffff, 0xffffffff
};
uint64x2_t tmp0, tmp1, tmp2;
@@ -148,7 +149,7 @@ struct crc_pmull_ctx {
if (unlikely(data_len < 16)) {
/* 0 to 15 bytes */
- uint8_t buffer[16] __rte_aligned(16);
+ alignas(16) uint8_t buffer[16];
memset(buffer, 0, sizeof(buffer));
memcpy(buffer, data, data_len);
@@ -2,6 +2,7 @@
* Copyright(c) 2017-2020 Intel Corporation
*/
+#include <stdalign.h>
#include <string.h>
#include <rte_common.h>
@@ -18,8 +19,8 @@ struct crc_pclmulqdq_ctx {
__m128i rk7_rk8;
};
-static struct crc_pclmulqdq_ctx crc32_eth_pclmulqdq __rte_aligned(16);
-static struct crc_pclmulqdq_ctx crc16_ccitt_pclmulqdq __rte_aligned(16);
+static alignas(16) struct crc_pclmulqdq_ctx crc32_eth_pclmulqdq;
+static alignas(16) struct crc_pclmulqdq_ctx crc16_ccitt_pclmulqdq;
/**
* @brief Performs one folding round
*
@@ -96,11 +97,11 @@ struct crc_pclmulqdq_ctx {
static __rte_always_inline uint32_t
crcr32_reduce_64_to_32(__m128i data64, __m128i precomp)
{
- static const uint32_t mask1[4] __rte_aligned(16) = {
+ static const alignas(16) uint32_t mask1[4] = {
0xffffffff, 0xffffffff, 0x00000000, 0x00000000
};
- static const uint32_t mask2[4] __rte_aligned(16) = {
+ static const alignas(16) uint32_t mask2[4] = {
0x00000000, 0xffffffff, 0xffffffff, 0xffffffff
};
__m128i tmp0, tmp1, tmp2;
@@ -118,7 +119,7 @@ struct crc_pclmulqdq_ctx {
return _mm_extract_epi32(tmp2, 2);
}
-static const uint8_t crc_xmm_shift_tab[48] __rte_aligned(16) = {
+static const alignas(16) uint8_t crc_xmm_shift_tab[48] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
@@ -175,7 +176,7 @@ struct crc_pclmulqdq_ctx {
if (unlikely(data_len < 16)) {
/* 0 to 15 bytes */
- uint8_t buffer[16] __rte_aligned(16);
+ alignas(16) uint8_t buffer[16];
memset(buffer, 0, sizeof(buffer));
memcpy(buffer, data, data_len);
@@ -212,11 +213,11 @@ struct crc_pclmulqdq_ctx {
partial_bytes:
if (likely(n < data_len)) {
- const uint32_t mask3[4] __rte_aligned(16) = {
+ const alignas(16) uint32_t mask3[4] = {
0x80808080, 0x80808080, 0x80808080, 0x80808080
};
- const uint8_t shf_table[32] __rte_aligned(16) = {
+ const alignas(16) uint8_t shf_table[32] = {
0x00, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
@@ -21,17 +21,17 @@
/**
* ARP header IPv4 payload.
*/
-struct rte_arp_ipv4 {
+struct __rte_aligned(2) rte_arp_ipv4 {
struct rte_ether_addr arp_sha; /**< sender hardware address */
rte_be32_t arp_sip; /**< sender IP address */
struct rte_ether_addr arp_tha; /**< target hardware address */
rte_be32_t arp_tip; /**< target IP address */
-} __rte_packed __rte_aligned(2);
+} __rte_packed;
/**
* ARP header.
*/
-struct rte_arp_hdr {
+struct __rte_aligned(2) rte_arp_hdr {
rte_be16_t arp_hardware; /**< format of hardware address */
#define RTE_ARP_HRD_ETHER 1 /**< ARP Ethernet address format */
@@ -47,7 +47,7 @@ struct rte_arp_hdr {
#define RTE_ARP_OP_INVREPLY 9 /**< response identifying peer */
struct rte_arp_ipv4 arp_data;
-} __rte_packed __rte_aligned(2);
+} __rte_packed;
/**
* Make a RARP packet based on MAC addr.
@@ -57,9 +57,9 @@
* administrator and does not contain OUIs.
* See http://standards.ieee.org/regauth/groupmac/tutorial.html
*/
-struct rte_ether_addr {
+struct __rte_aligned(2) rte_ether_addr {
uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]; /**< Addr bytes in tx order */
-} __rte_aligned(2);
+};
#define RTE_ETHER_LOCAL_ADMIN_ADDR 0x02 /**< Locally assigned Eth. address. */
#define RTE_ETHER_GROUP_ADDR 0x01 /**< Multicast or broadcast Eth. address. */
@@ -276,11 +276,11 @@ static inline int rte_is_valid_assigned_ether_addr(const struct rte_ether_addr *
* Ethernet header: Contains the destination address, source address
* and frame type.
*/
-struct rte_ether_hdr {
+struct __rte_aligned(2) rte_ether_hdr {
struct rte_ether_addr dst_addr; /**< Destination address. */
struct rte_ether_addr src_addr; /**< Source address. */
rte_be16_t ether_type; /**< Frame type. */
-} __rte_aligned(2);
+};
/**
* Ethernet VLAN Header.