> > > > > > When including the rte_ether.h header in applications with warnings > > > enabled, a warning was given because of the assumption of 2-byte alignment > > > of ethernet addresses when processing them. > > > > > > .../include/rte_ether.h:149:2: warning: converting a packed ‘const > > > struct ether_addr’ pointer (alignment 1) to a ‘unaligned_uint16_t’ > > > {aka ‘const short unsigned int’} pointer (alignment 2) may result in > > > an unaligned pointer value [-Waddress-of-packed-member] > > > 149 | const unaligned_uint16_t *ea_words = (const unaligned_uint16_t > > > *)ea; > > > | ^~~~~ > > > > > > Since ethernet addresses should always be aligned on a two-byte boundary, > > > we can just inform the compiler of this assumption to remove the warnings > > > and allow us to always access the addresses using 16-bit operations. > > > > > > Signed-off-by: Bruce Richardson <bruce.richard...@intel.com> > > > Signed-off-by: Stephen Hemminger <step...@networkplumber.org> > > > Reviewed-by: Andrew Rybchenko <arybche...@solarflare.com> > > > --- > > > lib/librte_net/rte_ether.h | 11 ++++++----- > > > 1 file changed, 6 insertions(+), 5 deletions(-) > > > > > > diff --git a/lib/librte_net/rte_ether.h b/lib/librte_net/rte_ether.h > > > index feb35a33c94b..d7b76ddf63eb 100644 > > > --- a/lib/librte_net/rte_ether.h > > > +++ b/lib/librte_net/rte_ether.h > > > @@ -58,7 +58,8 @@ extern "C" { > > > * See http://standards.ieee.org/regauth/groupmac/tutorial.html > > > */ > > > struct rte_ether_addr { > > > - uint8_t addr_bytes[RTE_ETHER_ADDR_LEN]; /**< Addr bytes in tx order */ > > > + uint8_t addr_bytes[RTE_ETHER_ADDR_LEN] __rte_aligned(2); > > > + /**< Addr bytes in tx order */ > > > } __attribute__((__packed__)); > > > > Hmm, that would change layout of any struct/union that has struct > > rte_ether_addr inside. > > So seems like implicit ABI breakage to me. > > Konstantin > > There was no rte_ether_addr in previous releases.
I suppose you refer to the fact that struct ether_addr was renamed to rte_ether_addr by: https://git.dpdk.org/dpdk/commit/?id=6d13ea8e8e49ab957deae2bba5ecf4a4bfe747d1 As I understand, Olivier patches in that rework introduce API change only, keeping ABI unchanged. While your patch makes ABI breakage possible. Konstantin