diff --git a/include/uapi/linux/msm_ipa.h b/include/uapi/linux/msm_ipa.h index 1419d7634604..2b49aa195d84 100644 --- a/include/uapi/linux/msm_ipa.h +++ b/include/uapi/linux/msm_ipa.h @@ -131,6 +131,7 @@ #define IPA_IOCTL_GET_NAT_IN_SRAM_INFO 78 #define IPA_IOCTL_APP_CLOCK_VOTE 79 #define IPA_IOCTL_PDN_CONFIG 80 +#define IPA_IOCTL_SET_MAC_FLT 81 /** * max size of the header to be inserted @@ -173,6 +174,11 @@ */ #define QMI_IPA_MAX_CLIENT_DST_PIPES 4 +/** + * Max number of clients supported for mac based exception + */ +#define IPA_MAX_NUM_MAC_FLT 5 + /** * MAX number of the FLT_RT stats counter supported. */ @@ -725,7 +731,13 @@ enum ipa_pdn_config_event { #define IPA_PDN_CONFIG_EVENT_MAX IPA_PDN_CONFIG_EVENT_MAX }; -#define IPA_EVENT_MAX_NUM (IPA_PDN_CONFIG_EVENT_MAX) +enum ipa_mac_flt_event { + IPA_MAC_FLT_EVENT = IPA_PDN_CONFIG_EVENT_MAX, + IPA_MAC_FLT_EVENT_MAX +#define IPA_MAC_FLT_EVENT_MAX IPA_MAC_FLT_EVENT_MAX +}; + +#define IPA_EVENT_MAX_NUM (IPA_MAC_FLT_EVENT_MAX) #define IPA_EVENT_MAX ((int)IPA_EVENT_MAX_NUM) /** @@ -2682,6 +2694,20 @@ struct ipa_ioc_pdn_config { __u8 default_pdn; }; +/** + * struct ipa_ioc_mac_client_list_type- mac addr exception list + * @mac_addr: an array to hold clients mac addrs + * @num_of_clients: holds num of clients to blacklist or whitelist + * @flt_state: true to block current mac addrs and false to clean + * up all previous mac addrs + */ +struct ipa_ioc_mac_client_list_type { + int num_of_clients; + __u8 mac_addr[IPA_MAX_NUM_MAC_FLT][IPA_MAC_ADDR_SIZE]; + __u8 flt_state; + __u8 padding; +}; + /** * actual IOCTLs supported by IPA driver */ @@ -2942,10 +2968,15 @@ struct ipa_ioc_pdn_config { #define IPA_IOC_APP_CLOCK_VOTE _IOWR(IPA_IOC_MAGIC, \ IPA_IOCTL_APP_CLOCK_VOTE, \ uint32_t) + #define IPA_IOC_PDN_CONFIG _IOWR(IPA_IOC_MAGIC, \ IPA_IOCTL_PDN_CONFIG, \ struct ipa_ioc_pdn_config) +#define IPA_IOC_SET_MAC_FLT _IOWR(IPA_IOC_MAGIC, \ + IPA_IOCTL_SET_MAC_FLT, \ + struct ipa_ioc_mac_client_list_type) + /* * unique magic number of the Tethering bridge ioctls */