msm: ipa: add support for PMIPv6

Make changes to add new proc ctx and uCP commands to support Proxy Mobile IPv6.

Change-Id: I4c0995ffe6969c3183e6b16dd6dbd1203d7bec43
Signed-off-by: Krishna Nagaraja <quic_krisnag@quicinc.com>
This commit is contained in:
Krishna Nagaraja 2023-01-02 23:37:36 +05:30
commit 1a1dccc448

View file

@ -1529,6 +1529,8 @@ enum ipa_hdr_l2_type {
* IPA_HDR_PROC_EoGRE_HEADER_ADD: Add IPV[46] and GRE header
* IPA_HDR_PROC_EoGRE_HEADER_REMOVE: Remove IPV[46] and GRE header
* IPA_HDR_PROC_WWAN_TO_ETHII_EX: To update PCP value for E2E traffic.
* IPA_HDR_PROC_GRE_HEADER_ADD, Add IPV[46] and IP-GRE header
* IPA_HDR_PROC_GRE_HEADER_REMOVE, Remove IPV[46] and IP-GRE header
*/
enum ipa_hdr_proc_type {
IPA_HDR_PROC_NONE,
@ -1545,8 +1547,10 @@ enum ipa_hdr_proc_type {
IPA_HDR_PROC_EoGRE_HEADER_ADD,
IPA_HDR_PROC_EoGRE_HEADER_REMOVE,
IPA_HDR_PROC_WWAN_TO_ETHII_EX,
IPA_HDR_PROC_GRE_HEADER_ADD,
IPA_HDR_PROC_GRE_HEADER_REMOVE
};
#define IPA_HDR_PROC_MAX (IPA_HDR_PROC_WWAN_TO_ETHII_EX + 1)
#define IPA_HDR_PROC_MAX (IPA_HDR_PROC_GRE_HEADER_REMOVE + 1)
/**
* struct ipa_rt_rule - attributes of a routing rule
@ -1865,6 +1869,52 @@ struct ipa_eogre_hdr_proc_ctx_params {
struct ipa_eogre_header_remove_procparams hdr_remove_param;
};
/**
* struct ipa_gre_header_add_procparams -
* @eth_hdr_retained: Specifies if Ethernet header is retained or not
* @input_ip_version: Specifies if Input header is IPV4(0) or IPV6(1)
* @output_ip_version: Specifies if template header's outer IP is IPV4(0) or IPV6(1)
* @second_pass: Specifies if the data should be processed again.
* @is_mpls: Specifies if ucp cmd is for legacy EoGRE(0) or MPLSoGRE(1)
* @tag_remove_len: Specifies amount to be removed for the tags
*/
struct ipa_gre_header_add_procparams {
uint32_t eth_hdr_retained :1;
uint32_t input_ip_version :1;
uint32_t output_ip_version :1;
uint32_t second_pass :1;
uint32_t is_mpls :1;
uint32_t tag_remove_len :4;
uint32_t reserved :23;
};
/**
* struct ipa_gre_header_remove_procparams -
* @hdr_len_remove: Specifies how much (in bytes) of the header needs
* to be removed
* @outer_ip_version: Specifies if template header's outer IP is IPV4(0) or IPV6(1)
* @is_mpls: Specifies if ucp cmd is for legacy EoGRE(0) or MPLSoGRE(1)
* @tag_add_len: Specifies amount to be added for the tags
*/
struct ipa_gre_header_remove_procparams {
uint32_t hdr_len_remove :8; /* 44 bytes for IPV6, 24 for IPV4 */
uint32_t outer_ip_version :1;
uint32_t is_mpls :1;
uint32_t tag_add_len :4;
uint32_t reserved :18;
};
/**
* struct ipa_gre_hdr_proc_ctx_params -
* @hdr_add_param: parameters for header add
* @hdr_remove_param: parameters for header remove
*/
struct ipa_gre_hdr_proc_ctx_params {
struct ipa_gre_header_add_procparams hdr_add_param;
struct ipa_gre_header_remove_procparams hdr_remove_param;
};
/**
* struct ipa_eth_II_to_eth_II_ex_procparams -
* @input_ethhdr_negative_offset: Specifies where the ethernet hdr offset is
@ -1926,6 +1976,7 @@ struct ipa_hdr_proc_ctx_add {
struct ipa_eogre_hdr_proc_ctx_params eogre_params;
struct ipa_eth_II_to_eth_II_ex_procparams generic_params;
struct ipa_wwan_to_eth_II_ex_procparams generic_params_v2;
struct ipa_gre_hdr_proc_ctx_params gre_params;
};
#define IPA_L2TP_HDR_PROC_SUPPORT