From ab6b79b7aa5184a58c5eed567cc7f4d79ad46707 Mon Sep 17 00:00:00 2001 From: Michael Adisumarta Date: Thu, 9 Jun 2022 10:31:11 -0700 Subject: [PATCH] msm: ipa3: Add support for External Router Mode FR Add new IOCTL to get external router mode and ipv6 prefix addr and mask. Define new structs and enum to hold this ext route info. Change-Id: I3ef9ebdb0c33c5deeda27b340c1261e08a032b7c Signed-off-by: Michael Adisumarta --- include/uapi/linux/msm_ipa.h | 38 +++++++++++++++++++++++++++++++++--- 1 file changed, 35 insertions(+), 3 deletions(-) diff --git a/include/uapi/linux/msm_ipa.h b/include/uapi/linux/msm_ipa.h index c928361ea210..b25cb398e0e0 100644 --- a/include/uapi/linux/msm_ipa.h +++ b/include/uapi/linux/msm_ipa.h @@ -146,8 +146,8 @@ #define IPA_IOCTL_FLT_MEM_PERIPHERAL_SET_PRIO_HIGH 91 #define IPA_IOCTL_ADD_MACSEC_MAPPING 92 #define IPA_IOCTL_DEL_MACSEC_MAPPING 93 -#define IPA_IOCTL_QUERY_CACHED_DRIVER_MSG 94 - +#define IPA_IOCTL_QUERY_CACHED_DRIVER_MSG 94 +#define IPA_IOCTL_SET_EXT_ROUTER_MODE 95 /** * max size of the header to be inserted */ @@ -921,7 +921,13 @@ enum ipa_done_restore_event { #define IPA_DONE_RESTORE_EVENT_MAX IPA_DONE_RESTORE_EVENT_MAX }; -#define IPA_EVENT_MAX_NUM (IPA_DONE_RESTORE_EVENT_MAX) +enum ipa_ext_route_evt { + IPA_SET_EXT_ROUTER_MODE_EVENT = IPA_DONE_RESTORE_EVENT_MAX, + IPA_SET_EXT_ROUTER_MODE_EVENT_MAX +#define IPA_SET_EXT_ROUTER_MODE_EVENT_MAX IPA_SET_EXT_ROUTER_MODE_EVENT_MAX +}; + +#define IPA_EVENT_MAX_NUM (IPA_SET_EXT_ROUTER_MODE_EVENT_MAX) #define IPA_EVENT_MAX ((int)IPA_EVENT_MAX_NUM) /** @@ -3371,6 +3377,27 @@ struct ipa_ioc_macsec_info { __u32 padding; }; + +enum ipa_ext_router_mode { + IPA_PREFIX_DISABLED = 0, + IPA_PREFIX_SHARING, + IPA_PREFIX_DELEGATION +}; + +/** + * struct ipa_ioc_ext_router_info - provide ext_router info + * @ipa_ext_router_mode: prefix sharing, prefix delegation, or disabled mode + * @pdn_name: PDN interface name + * @ipv6_addr: the prefix addr used for dummy or delegated prefixes + * @ipv6_mask: the ipv6 mask used to mask above addr to get the correct prefix + */ +struct ipa_ioc_ext_router_info { + enum ipa_ext_router_mode mode; + char pdn_name[IPA_RESOURCE_NAME_MAX]; + uint32_t ipv6_addr[4]; + uint32_t ipv6_mask[4]; +}; + /** * actual IOCTLs supported by IPA driver */ @@ -3688,6 +3715,11 @@ struct ipa_ioc_macsec_info { IPA_IOCTL_DEL_MACSEC_MAPPING, \ struct ipa_ioc_macsec_info) +#define IPA_IOC_SET_EXT_ROUTER_MODE _IOWR(IPA_IOC_MAGIC, \ + IPA_IOCTL_SET_EXT_ROUTER_MODE, \ + struct ipa_ioc_ext_router_info) + + /* * unique magic number of the Tethering bridge ioctls */