From f3c056ad482d36d43613532cba09c4dabaa0ae40 Mon Sep 17 00:00:00 2001 From: Ilia Lin Date: Mon, 1 Nov 2021 09:44:24 +0200 Subject: [PATCH] msm: ipa: Add macsec mode ioctl Introducing a new ioctl and corresponding data structures to map or unmap one or more physical ethernet NICs to macsec interface/s. Change-Id: I15f5f88226ffa07818526f591468053992ad78e9 Signed-off-by: Ilia Lin --- include/uapi/linux/msm_ipa.h | 43 +++++++++++++++++++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/include/uapi/linux/msm_ipa.h b/include/uapi/linux/msm_ipa.h index fc8676c750e5..8e04fd625b97 100644 --- a/include/uapi/linux/msm_ipa.h +++ b/include/uapi/linux/msm_ipa.h @@ -144,6 +144,8 @@ #define IPA_IOCTL_DEL_EoGRE_MAPPING 89 #define IPA_IOCTL_SET_IPPT_SW_FLT 90 #define IPA_IOCTL_FLT_MEM_PERIPHERAL_SET_PRIO_HIGH 91 +#define IPA_IOCTL_ADD_MACSEC_MAPPING 92 +#define IPA_IOCTL_DEL_MACSEC_MAPPING 93 /** * max size of the header to be inserted @@ -905,7 +907,14 @@ enum ipa_ippt_sw_flt_event { #define IPA_IPPT_SW_FLT_EVENT_MAX IPA_IPPT_SW_FLT_EVENT_MAX }; -#define IPA_EVENT_MAX_NUM (IPA_IPPT_SW_FLT_EVENT_MAX) +enum ipa_macsec_event { + IPA_MACSEC_ADD_EVENT = IPA_IPPT_SW_FLT_EVENT_MAX, + IPA_MACSEC_DEL_EVENT, + IPA_MACSEC_EVENT_MAX +#define IPA_MACSEC_EVENT_MAX IPA_MACSEC_EVENT_MAX +}; + +#define IPA_EVENT_MAX_NUM (IPA_MACSEC_EVENT_MAX) #define IPA_EVENT_MAX ((int)IPA_EVENT_MAX_NUM) /** @@ -3328,6 +3337,29 @@ struct ipa_ioc_sw_flt_list_type { __u32 padding; }; +/** + * struct ipa_macsec_map - mapping between ethX to macsecY + * @phy_name: name of the physical NIC (ethX) + * - must be equal to an existing physical NIC name + * @macsec_name: name of the macsec NIC (macsecY) + */ +struct ipa_macsec_map { + char phy_name[IPA_RESOURCE_NAME_MAX]; + char macsec_name[IPA_RESOURCE_NAME_MAX]; +}; + +/** + * struct ipa_ioc_macsec_info - provide macsec info + * @ioctl_ptr: has to be typecasted to (__u64)(uintptr_t) + * @ioctl_data_size: + * Eg: For ipa_macsec_map = sizeof(ipa_macsec_map) + */ +struct ipa_ioc_macsec_info { + __u64 ioctl_ptr; + __u32 ioctl_data_size; + __u32 padding; +}; + /** * actual IOCTLs supported by IPA driver */ @@ -3631,9 +3663,18 @@ struct ipa_ioc_sw_flt_list_type { #define IPA_IOC_SET_IPPT_SW_FLT _IOWR(IPA_IOC_MAGIC, \ IPA_IOCTL_SET_IPPT_SW_FLT, \ struct ipa_ioc_sw_flt_list_type) + #define IPA_IOC_FLT_MEM_PERIPHERAL_SET_PRIO_HIGH _IOWR(IPA_IOC_MAGIC, \ IPA_IOCTL_FLT_MEM_PERIPHERAL_SET_PRIO_HIGH, \ enum ipa_client_type) + +#define IPA_IOC_ADD_MACSEC_MAPPING _IOWR(IPA_IOC_MAGIC, \ + IPA_IOCTL_ADD_MACSEC_MAPPING, \ + struct ipa_ioc_macsec_info) +#define IPA_IOC_DEL_MACSEC_MAPPING _IOWR(IPA_IOC_MAGIC, \ + IPA_IOCTL_DEL_MACSEC_MAPPING, \ + struct ipa_ioc_macsec_info) + /* * unique magic number of the Tethering bridge ioctls */