Hi Olivier, Could you please review this patch? Apologies. I missed to add you earlier.
Regards, Akhil > Subject: [PATCH 1/3] net: add MACsec header > > Added MACsec protocol header to be used for supporting > MACsec protocol offload in hardware or directly in the application. > > Signed-off-by: Akhil Goyal <gak...@marvell.com> > --- > doc/api/doxy-api-index.md | 3 ++- > lib/net/meson.build | 1 + > lib/net/rte_macsec.h | 56 +++++++++++++++++++++++++++++++++++++++ > 3 files changed, 59 insertions(+), 1 deletion(-) > create mode 100644 lib/net/rte_macsec.h > > diff --git a/doc/api/doxy-api-index.md b/doc/api/doxy-api-index.md > index 186a258be4..99e49340d3 100644 > --- a/doc/api/doxy-api-index.md > +++ b/doc/api/doxy-api-index.md > @@ -126,7 +126,8 @@ The public API headers are grouped by topics: > [Geneve](@ref rte_geneve.h), > [eCPRI](@ref rte_ecpri.h), > [L2TPv2](@ref rte_l2tpv2.h), > - [PPP](@ref rte_ppp.h) > + [PPP](@ref rte_ppp.h), > + [MACsec](@ref rte_macsec.h) > > - **QoS**: > [metering](@ref rte_meter.h), > diff --git a/lib/net/meson.build b/lib/net/meson.build > index e899846578..3e63abaca8 100644 > --- a/lib/net/meson.build > +++ b/lib/net/meson.build > @@ -21,6 +21,7 @@ headers = files( > 'rte_geneve.h', > 'rte_l2tpv2.h', > 'rte_ppp.h', > + 'rte_macsec.h', > ) > > sources = files( > diff --git a/lib/net/rte_macsec.h b/lib/net/rte_macsec.h > new file mode 100644 > index 0000000000..f1b59253f6 > --- /dev/null > +++ b/lib/net/rte_macsec.h > @@ -0,0 +1,56 @@ > +/* SPDX-License-Identifier: BSD-3-Clause > + * Copyright(C) 2022 Marvell. > + */ > + > +#ifndef _RTE_MACSEC_H_ > +#define _RTE_MACSEC_H_ > + > +/** > + * @file > + * > + * MACsec-related defines > + */ > + > +#include <rte_byteorder.h> > + > +#ifdef __cplusplus > +extern "C" { > +#endif > + > + > +/* SecTAG length = macsec ether header without the optional SCI */ > +#define RTE_MACSEC_TAG_LEN 6 > +#define RTE_MACSEC_SCI_LEN 8 > + > +#define RTE_MACSEC_TCI_VERSION 0x80 /**< Version mask for MACsec. > Should be 0. */ > +#define RTE_MACSEC_TCI_ES 0x40 /**< End station - SCI is not valid */ > +#define RTE_MACSEC_TCI_SC 0x20 /**< SCI present */ > +#define RTE_MACSEC_TCI_SCB 0x10 /**< Secure channel support EPON single > copy broadcast */ > +#define RTE_MACSEC_TCI_E 0x08 /**< User data is encrypted */ > +#define RTE_MACSEC_TCI_C 0x04 /**< User data was changed (because of > encryption) */ > +#define RTE_MACSEC_AN_MASK 0x03 /**< Association number mask in > tci_an */ > +#define RTE_MACSEC_NUM_AN 4 /**< 2 bits for the association > number */ > +#define RTE_MACSEC_SALT_LEN 12 /**< Salt length for MACsec SA */ > + > +/** > + * MACsec Header > + */ > +struct rte_macsec_hdr { > + /* SecTAG */ > + uint8_t tci_an; /**< Tag control information and Association > number > of SC */ > +#if RTE_BYTE_ORDER == RTE_LITTLE_ENDIAN > + uint8_t short_length : 6; /**< Short Length */ > + uint8_t unused : 2; > +#elif RTE_BYTE_ORDER == RTE_BIG_ENDIAN > + uint8_t unused : 2; > + uint8_t short_length : 6; > +#endif > + rte_be32_t packet_number; /**< Packet number to support replay > protection */ > + uint8_t secure_channel_id[8]; /* optional */ > +} __rte_packed; > + > +#ifdef __cplusplus > +} > +#endif > + > +#endif /* RTE_MACSEC_H_ */ > -- > 2.25.1