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

Commit dc65f4cb authored by Amir Levy's avatar Amir Levy Committed by Gerrit - the friendly Code Review server
Browse files

msm: ipa4: configure IPv6CT on ep and parse IPv6CT exceptions



This change configures IPA to perform speculative IPv6 connection
tracking calculation on producer pipes and differentiate between
NAT exceptions and IPv6CT exceptions.

Change-Id: Ia742649a08b0d3eaac651c3a1a556677b3acc76a
Signed-off-by: default avatarAmir Levy <alevy@codeaurora.org>
parent 780c4f61
Loading
Loading
Loading
Loading
+22 −1
Original line number Diff line number Diff line
@@ -422,7 +422,7 @@ EXPORT_SYMBOL(ipa_cfg_ep);
/**
 * ipa_cfg_ep_nat() - IPA end-point NAT configuration
 * @clnt_hdl:	[in] opaque client handle assigned by IPA to client
 * @ipa_ep_cfg:	[in] IPA end-point configuration params
 * @ep_nat:	[in] IPA NAT end-point configuration params
 *
 * Returns:	0 on success, negative on failure
 *
@@ -438,6 +438,27 @@ int ipa_cfg_ep_nat(u32 clnt_hdl, const struct ipa_ep_cfg_nat *ep_nat)
}
EXPORT_SYMBOL(ipa_cfg_ep_nat);

/**
* ipa_cfg_ep_conn_track() - IPA end-point IPv6CT configuration
* @clnt_hdl:		[in] opaque client handle assigned by IPA to client
* @ep_conn_track:	[in] IPA IPv6CT end-point configuration params
*
* Returns:	0 on success, negative on failure
*
* Note:	Should not be called from atomic context
*/
int ipa_cfg_ep_conn_track(u32 clnt_hdl,
	const struct ipa_ep_cfg_conn_track *ep_conn_track)
{
	int ret;

	IPA_API_DISPATCH_RETURN(ipa_cfg_ep_conn_track, clnt_hdl,
		ep_conn_track);

	return ret;
}
EXPORT_SYMBOL(ipa_cfg_ep_conn_track);

/**
 * ipa_cfg_ep_hdr() -  IPA end-point header configuration
 * @clnt_hdl:	[in] opaque client handle assigned by IPA to client
+3 −0
Original line number Diff line number Diff line
@@ -34,6 +34,9 @@ struct ipa_api_controller {
	int (*ipa_cfg_ep_nat)(u32 clnt_hdl,
		const struct ipa_ep_cfg_nat *ipa_ep_cfg);

	int (*ipa_cfg_ep_conn_track)(u32 clnt_hdl,
		const struct ipa_ep_cfg_conn_track *ipa_ep_cfg);

	int (*ipa_cfg_ep_hdr)(u32 clnt_hdl,
		const struct ipa_ep_cfg_hdr *ipa_ep_cfg);

+1 −1
Original line number Diff line number Diff line
@@ -745,7 +745,7 @@ static long ipa3_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
			retval = -EFAULT;
			break;
		}
		if (ipa4_nat_mdfy_pdn(&mdfy_pdn)) {
		if (ipa3_nat_mdfy_pdn(&mdfy_pdn)) {
			retval = -EFAULT;
			break;
		}
+2 −0
Original line number Diff line number Diff line
@@ -264,6 +264,7 @@ int _ipa_read_ep_reg_v4_0(char *buf, int max_len, int pipe)
	return scnprintf(
		dbg_buff, IPA_MAX_MSG_LEN,
		"IPA_ENDP_INIT_NAT_%u=0x%x\n"
		"IPA_ENDP_INIT_CONN_TRACK_n%u=0x%x\n"
		"IPA_ENDP_INIT_HDR_%u=0x%x\n"
		"IPA_ENDP_INIT_HDR_EXT_%u=0x%x\n"
		"IPA_ENDP_INIT_MODE_%u=0x%x\n"
@@ -274,6 +275,7 @@ int _ipa_read_ep_reg_v4_0(char *buf, int max_len, int pipe)
		"IPA_ENDP_INIT_DEAGGR_%u=0x%x\n"
		"IPA_ENDP_INIT_CFG_%u=0x%x\n",
		pipe, ipahal_read_reg_n(IPA_ENDP_INIT_NAT_n, pipe),
		pipe, ipahal_read_reg_n(IPA_ENDP_INIT_CONN_TRACK_n, pipe),
		pipe, ipahal_read_reg_n(IPA_ENDP_INIT_HDR_n, pipe),
		pipe, ipahal_read_reg_n(IPA_ENDP_INIT_HDR_EXT_n, pipe),
		pipe, ipahal_read_reg_n(IPA_ENDP_INIT_MODE_n, pipe),
+4 −1
Original line number Diff line number Diff line
@@ -1495,6 +1495,9 @@ int ipa3_cfg_ep(u32 clnt_hdl, const struct ipa_ep_cfg *ipa_ep_cfg);

int ipa3_cfg_ep_nat(u32 clnt_hdl, const struct ipa_ep_cfg_nat *ipa_ep_cfg);

int ipa3_cfg_ep_conn_track(u32 clnt_hdl,
	const struct ipa_ep_cfg_conn_track *ep_conn_track);

int ipa3_cfg_ep_hdr(u32 clnt_hdl, const struct ipa_ep_cfg_hdr *ipa_ep_cfg);

int ipa3_cfg_ep_hdr_ext(u32 clnt_hdl,
@@ -1597,7 +1600,7 @@ int ipa3_nat_dma_cmd(struct ipa_ioc_nat_dma_cmd *dma);

int ipa3_nat_del_cmd(struct ipa_ioc_v4_nat_del *del);

int ipa4_nat_mdfy_pdn(struct ipa_ioc_nat_pdn_entry *mdfy_pdn);
int ipa3_nat_mdfy_pdn(struct ipa_ioc_nat_pdn_entry *mdfy_pdn);

/*
 * Messaging
Loading