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

Commit cd3ea200 authored by Linux Build Service Account's avatar Linux Build Service Account Committed by Gerrit - the friendly Code Review server
Browse files

Merge "msm: ipa: add support to get tether stats"

parents 5508b951 b7c45aff
Loading
Loading
Loading
Loading
+44 −0
Original line number Diff line number Diff line
@@ -1772,6 +1772,50 @@ int teth_bridge_connect(struct teth_bridge_connect_params *connect_params)
}
EXPORT_SYMBOL(teth_bridge_connect);

/* ipa_set_client() - provide client mapping
 * @client: client type
 *
 * Return value: none
 */

void ipa_set_client(int index, enum ipacm_client_enum client, bool uplink)
{
	IPA_API_DISPATCH(ipa_set_client, index, client, uplink);
}
EXPORT_SYMBOL(ipa_set_client);

/**
 * ipa_get_client() - provide client mapping
 * @client: client type
 *
 * Return value: none
 */
enum ipacm_client_enum ipa_get_client(int pipe_idx)
{
	int ret;

	IPA_API_DISPATCH_RETURN(ipa_get_client, pipe_idx);

	return ret;
}
EXPORT_SYMBOL(ipa_get_client);

/**
 * ipa_get_client_uplink() - provide client mapping
 * @client: client type
 *
 * Return value: none
 */
bool ipa_get_client_uplink(int pipe_idx)
{
	int ret;

	IPA_API_DISPATCH_RETURN(ipa_get_client_uplink, pipe_idx);

	return ret;
}
EXPORT_SYMBOL(ipa_get_client_uplink);

/**
 * odu_bridge_init() - Initialize the ODU bridge driver
 * @params: initialization parameters
+7 −0
Original line number Diff line number Diff line
@@ -225,6 +225,13 @@ struct ipa_api_controller {
	int (*teth_bridge_connect)(
		struct teth_bridge_connect_params *connect_params);

	void (*ipa_set_client)(
		int index, enum ipacm_client_enum client, bool uplink);

	enum ipacm_client_enum (*ipa_get_client)(int pipe_idx);

	bool (*ipa_get_client_uplink)(int pipe_idx);

	int (*odu_bridge_init)(struct odu_bridge_params *params);

	int (*odu_bridge_connect)(void);
+21 −0
Original line number Diff line number Diff line
@@ -1059,6 +1059,16 @@ struct ipa_sps_pm {
	atomic_t eot_activity;
};

/**
 * struct ipacm_client_info - the client-info indicated from IPACM
 * @ipacm_client_enum: the enum to indicate tether-client
 * @ipacm_client_uplink: the bool to indicate pipe for uplink
 */
struct ipacm_client_info {
	enum ipacm_client_enum client_enum;
	bool uplink;
};

/**
 * struct ipa_context - IPA context
 * @class: pointer to the struct class
@@ -1238,6 +1248,8 @@ struct ipa_context {

	/* RMNET_IOCTL_INGRESS_FORMAT_AGG_DATA */
	bool ipa_client_apps_wan_cons_agg_gro;
	/* M-release support to know client pipes */
	struct ipacm_client_info ipacm_client[IPA_MAX_NUM_PIPES];
};

/**
@@ -1643,6 +1655,15 @@ int ipa2_teth_bridge_disconnect(enum ipa_client_type client);

int ipa2_teth_bridge_connect(struct teth_bridge_connect_params *connect_params);

/*
 * Tethering client info
 */
void ipa2_set_client(int index, enum ipacm_client_enum client, bool uplink);

enum ipacm_client_enum ipa2_get_client(int pipe_idx);

bool ipa2_get_client_uplink(int pipe_idx);

/*
 * ODU bridge
 */
+6 −0
Original line number Diff line number Diff line
@@ -139,6 +139,12 @@ int rmnet_ipa_set_data_quota(struct wan_ioctl_set_data_quota *data);

void ipa_broadcast_quota_reach_ind(uint32_t mux_id);

int rmnet_ipa_set_tether_client_pipe(struct wan_ioctl_set_tether_client_pipe
	*data);

int rmnet_ipa_query_tethering_stats(struct wan_ioctl_query_tether_stats *data,
	bool reset);

int ipa_qmi_get_data_stats(struct ipa_get_data_stats_req_msg_v01 *req,
	struct ipa_get_data_stats_resp_msg_v01 *resp);

+48 −0
Original line number Diff line number Diff line
@@ -909,6 +909,51 @@ int ipa2_get_ep_mapping(enum ipa_client_type client)
	return ep_mapping[hw_type_index][client];
}

/* ipa2_set_client() - provide client mapping
 * @client: client type
 *
 * Return value: none
 */

void ipa2_set_client(int index, enum ipacm_client_enum client, bool uplink)
{
	if (client >= IPACM_CLIENT_MAX || client < IPACM_CLIENT_USB) {
		IPAERR("Bad client number! client =%d\n", client);
	} else if (index >= IPA_MAX_NUM_PIPES || index < 0) {
		IPAERR("Bad pipe index! index =%d\n", index);
	} else {
		ipa_ctx->ipacm_client[index].client_enum = client;
		ipa_ctx->ipacm_client[index].uplink = uplink;
	}
}

/**
 * ipa2_get_client() - provide client mapping
 * @client: client type
 *
 * Return value: none
 */
enum ipacm_client_enum ipa2_get_client(int pipe_idx)
{
	if (pipe_idx >= IPA_MAX_NUM_PIPES || pipe_idx < 0) {
		IPAERR("Bad pipe index! pipe_idx =%d\n", pipe_idx);
		return IPACM_CLIENT_MAX;
	} else {
		return ipa_ctx->ipacm_client[pipe_idx].client_enum;
	}
}

/**
 * ipa2_get_client_uplink() - provide client mapping
 * @client: client type
 *
 * Return value: none
 */
bool ipa2_get_client_uplink(int pipe_idx)
{
	return ipa_ctx->ipacm_client[pipe_idx].uplink;
}

/**
 * ipa2_get_rm_resource_from_ep() - get the IPA_RM resource which is related to
 * the supplied pipe index.
@@ -4978,6 +5023,9 @@ int ipa2_bind_api_controller(enum ipa_hw_type ipa_hw_type,
	api_ctrl->teth_bridge_init = ipa2_teth_bridge_init;
	api_ctrl->teth_bridge_disconnect = ipa2_teth_bridge_disconnect;
	api_ctrl->teth_bridge_connect = ipa2_teth_bridge_connect;
	api_ctrl->ipa_set_client = ipa2_set_client;
	api_ctrl->ipa_get_client = ipa2_get_client;
	api_ctrl->ipa_get_client_uplink = ipa2_get_client_uplink;
	api_ctrl->odu_bridge_init = ipa2_odu_bridge_init;
	api_ctrl->odu_bridge_connect = ipa2_odu_bridge_connect;
	api_ctrl->odu_bridge_disconnect = ipa2_odu_bridge_disconnect;
Loading