Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ab6b79b7 authored by Michael Adisumarta's avatar Michael Adisumarta Committed by Gerrit - the friendly Code Review server
Browse files

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: default avatarMichael Adisumarta <quic_madisuma@quicinc.com>
parent 86029e5e
Loading
Loading
Loading
Loading
+35 −3
Original line number Diff line number Diff line
@@ -147,7 +147,7 @@
#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_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
 */