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

Commit 4a627999 authored by Michael Adisumarta's avatar Michael Adisumarta
Browse files

msm: ipa: QMI API changes for SDM855



SDM855 driver changes for new QMI upstream changes.

Change-Id: I76bac70a450d17ee894461c726fc7163553f713e
Acked-by: default avatarJyothi Jayanthi <jyothij@qti.qualcomm.com>
Signed-off-by: default avatarMichael Adisumarta <madisuma@codeaurora.org>
parent 12c1f428
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -112,7 +112,7 @@ config IPA3

config RMNET_IPA3
	tristate "IPA3 RMNET WWAN Network Device"
	depends on IPA3 && MSM_QMI_INTERFACE
	depends on IPA3 && QCOM_QMI_HELPERS
	help
	  This WWAN Network Driver implements network stack class device.
	  It supports Embedded data transfer from A7 to Q6. Configures IPA HW
+499 −519

File changed.

Preview size limit exceeded, changes collapsed.

+11 −3
Original line number Diff line number Diff line
@@ -69,6 +69,10 @@
				DEV_NAME " %s:%d " fmt, ## args); \
	} while (0)

struct ipa_q6_all_client_params {
	struct sockaddr_qrtr sq;
};

extern struct ipa3_qmi_context *ipa3_qmi_ctx;

struct ipa3_qmi_context {
@@ -88,6 +92,7 @@ struct ipa3_qmi_context {
		ipa_configure_ul_firewall_rules_req_msg_cache
			[MAX_NUM_QMI_RULE_CACHE];
	bool modem_cfg_emb_pipe_flt;
	struct ipa_q6_all_client_params ipa_q6_client_params;
};

struct ipa3_rmnet_mux_val {
@@ -99,9 +104,12 @@ struct ipa3_rmnet_mux_val {
	uint32_t  hdr_hdl;
};

extern struct qmi_elem_info ipa3_init_modem_driver_req_msg_data_v01_ei[];
extern struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[];
extern struct qmi_elem_info ipa3_indication_reg_req_msg_data_v01_ei[];
extern struct qmi_elem_info
	ipa3_init_modem_driver_req_msg_data_v01_ei[];
extern struct qmi_elem_info
	ipa3_init_modem_driver_resp_msg_data_v01_ei[];
extern struct qmi_elem_info
	ipa3_indication_reg_req_msg_data_v01_ei[];
extern struct qmi_elem_info ipa3_indication_reg_resp_msg_data_v01_ei[];

extern struct qmi_elem_info
+27 −28
Original line number Diff line number Diff line
@@ -11,7 +11,6 @@
 *
 */

#include <linux/qmi_encdec.h>
#include <linux/ipa_qmi_service_v01.h>

#include <linux/soc/qcom/qmi.h>
@@ -1110,7 +1109,7 @@ struct qmi_elem_info ipa3_init_modem_driver_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_init_modem_driver_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_OPT_FLAG,
@@ -1207,7 +1206,7 @@ struct qmi_elem_info ipa3_init_modem_driver_cmplt_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_init_modem_driver_cmplt_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -1274,7 +1273,7 @@ struct qmi_elem_info ipa3_indication_reg_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_indication_reg_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -1293,7 +1292,7 @@ struct qmi_elem_info ipa3_master_driver_init_complt_ind_msg_data_v01_ei[] = {
		.offset		= offsetof(struct
			ipa_master_driver_init_complt_ind_msg_v01,
			master_driver_init_status),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -1472,7 +1471,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_install_fltr_rule_resp_msg_v01,
			resp),
		.ei_array       = get_qmi_response_type_v01_ei(),
		.ei_array       = qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_OPT_FLAG,
@@ -1804,7 +1803,7 @@ struct qmi_elem_info ipa3_fltr_installed_notif_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_fltr_installed_notif_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -1871,7 +1870,7 @@ struct qmi_elem_info ipa3_enable_force_clear_datapath_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_enable_force_clear_datapath_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -1909,7 +1908,7 @@ struct qmi_elem_info
		.offset		= offsetof(
			struct ipa_disable_force_clear_datapath_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -2236,7 +2235,7 @@ struct qmi_elem_info ipa3_config_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_config_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -2374,7 +2373,7 @@ struct qmi_elem_info ipa3_get_data_stats_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_get_data_stats_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_OPT_FLAG,
@@ -2602,7 +2601,7 @@ struct qmi_elem_info ipa3_get_apn_data_stats_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_get_apn_data_stats_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_OPT_FLAG,
@@ -2721,7 +2720,7 @@ struct qmi_elem_info ipa3_set_data_usage_quota_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_set_data_usage_quota_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -2769,7 +2768,7 @@ struct qmi_elem_info ipa3_stop_data_usage_quota_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_stop_data_usage_quota_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -2918,7 +2917,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_install_fltr_rule_resp_ex_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_OPT_FLAG,
@@ -2957,7 +2956,7 @@ struct qmi_elem_info ipa3_install_fltr_rule_resp_ex_msg_data_v01_ei[] = {
	},
};

struct elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = {
struct qmi_elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = {
	{
			.data_type	= QMI_UNSIGNED_4_BYTE,
			.elem_len	= 1,
@@ -3073,7 +3072,7 @@ struct elem_info ipa3_per_client_stats_info_type_data_v01_ei[] = {
	},
};

struct elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = {
struct qmi_elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = {
	{
			.data_type	= QMI_UNSIGNED_4_BYTE,
			.elem_len	= 1,
@@ -3101,7 +3100,7 @@ struct elem_info ipa3_ul_firewall_rule_type_data_v01_ei[] = {
	},
};

struct elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = {
struct qmi_elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = {
	{
			.data_type	= QMI_UNSIGNED_4_BYTE,
			.elem_len	= 1,
@@ -3129,7 +3128,7 @@ struct elem_info ipa3_ul_firewall_config_result_type_data_v01_ei[] = {
	},
};

struct elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = {
struct qmi_elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = {
	{
				.data_type	= QMI_UNSIGNED_1_BYTE,
				.elem_len	= 1,
@@ -3147,7 +3146,7 @@ struct elem_info ipa3_enable_per_client_stats_req_msg_data_v01_ei[] = {
	},
};

struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = {
struct qmi_elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = {
	{
		.data_type	= QMI_STRUCT,
		.elem_len	= 1,
@@ -3157,7 +3156,7 @@ struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_enable_per_client_stats_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -3166,7 +3165,7 @@ struct elem_info ipa3_enable_per_client_stats_resp_msg_data_v01_ei[] = {
	},
};

struct elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = {
struct qmi_elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = {
	{
		.data_type	= QMI_UNSIGNED_4_BYTE,
		.elem_len	= 1,
@@ -3214,7 +3213,7 @@ struct elem_info ipa3_get_stats_per_client_req_msg_data_v01_ei[] = {
	},
};

struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = {
struct qmi_elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = {
	{
		.data_type	= QMI_STRUCT,
		.elem_len	= 1,
@@ -3224,7 +3223,7 @@ struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_get_stats_per_client_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_OPT_FLAG,
@@ -3266,7 +3265,7 @@ struct elem_info ipa3_get_stats_per_client_resp_msg_data_v01_ei[] = {
	},
};

struct elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = {
struct qmi_elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = {
	{
		.data_type	= QMI_DATA_LEN,
		.elem_len	= 1,
@@ -3346,7 +3345,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_req_msg_data_v01_ei[] = {
	},
};

struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = {
struct qmi_elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = {
	{
		.data_type	= QMI_STRUCT,
		.elem_len	= 1,
@@ -3356,7 +3355,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = {
		.offset		= offsetof(
			struct ipa_configure_ul_firewall_rules_resp_msg_v01,
			resp),
		.ei_array	= get_qmi_response_type_v01_ei(),
		.ei_array	= qmi_response_type_v01_ei,
	},
	{
		.data_type	= QMI_EOTI,
@@ -3365,7 +3364,7 @@ struct elem_info ipa3_configure_ul_firewall_rules_resp_msg_data_v01_ei[] = {
	},
};

struct elem_info ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[] = {
struct qmi_elem_info ipa3_configure_ul_firewall_rules_ind_msg_data_v01_ei[] = {
	{
		.data_type	= QMI_STRUCT,
		.elem_len	= 1,
+14 −15
Original line number Diff line number Diff line
@@ -1620,7 +1620,7 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
		case RMNET_IOCTL_GET_DRIVER_NAME:
			memcpy(&ext_ioctl_data.u.if_name,
				IPA_NETDEV()->name, IFNAMSIZ);
			extend_ioctl_data.u.if_name[IFNAMSIZ - 1] = '\0';
			ext_ioctl_data.u.if_name[IFNAMSIZ - 1] = '\0';
			if (copy_to_user((u8 *)ifr->ifr_ifru.ifru_data,
					&ext_ioctl_data,
					sizeof(struct rmnet_ioctl_extended_s)))
@@ -1644,7 +1644,7 @@ static int ipa3_wwan_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
					&rmnet_ipa3_ctx->add_mux_channel_lock);
				return -EFAULT;
			}
			extend_ioctl_data.u.rmnet_mux_val.vchannel_name
			ext_ioctl_data.u.rmnet_mux_val.vchannel_name
				[IFNAMSIZ-1] = '\0';
			IPAWANDBG("ADD_MUX_CHANNEL(%d, name: %s)\n",
			ext_ioctl_data.u.rmnet_mux_val.mux_id,
@@ -3464,7 +3464,7 @@ static inline bool rmnet_ipa3_check_any_client_inited
)
{
	int i = 0;
	struct ipa_tether_device_info *teth_ptr;
	struct ipa_tether_device_info *teth_ptr = NULL;

	for (; i < IPA_MAX_NUM_HW_PATH_CLIENTS; i++) {
		teth_ptr = &rmnet_ipa3_ctx->tether_device[device_type];
@@ -3487,7 +3487,7 @@ static inline int rmnet_ipa3_get_lan_client_info
)
{
	int i = 0;
	struct ipa_tether_device_info *teth_ptr;
	struct ipa_tether_device_info *teth_ptr = NULL;

	IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
		mac[0], mac[1], mac[2],
@@ -3516,7 +3516,7 @@ static inline int rmnet_ipa3_delete_lan_client_info
{
	struct ipa_lan_client *lan_client = NULL;
	int i;
	struct ipa_tether_device_info *teth_ptr;
	struct ipa_tether_device_info *teth_ptr = NULL;

	/* Check if the request is to clean up all clients. */
	teth_ptr = &rmnet_ipa3_ctx->tether_device[device_type];
@@ -3529,7 +3529,7 @@ static inline int rmnet_ipa3_delete_lan_client_info
		for (i = 0; i < IPA_MAX_NUM_HW_PATH_CLIENTS; i++)
			teth_ptr->lan_client[i].client_idx = -1;
	} else {
		lan_client = teth_ptr->lan_client[lan_clnt_idx];
		lan_client = &teth_ptr->lan_client[lan_clnt_idx];

		/* Reset the client info before sending the message. */
		memset(lan_client, 0, sizeof(struct ipa_lan_client));
@@ -3554,7 +3554,7 @@ int rmnet_ipa3_set_lan_client_info(
	struct wan_ioctl_lan_client_info *data)
{
	struct ipa_lan_client *lan_client = NULL;
	struct ipa_tether_device_info *teth_ptr;
	struct ipa_tether_device_info *teth_ptr = NULL;


	IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
@@ -3588,7 +3588,7 @@ int rmnet_ipa3_set_lan_client_info(
	}

	teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type];
	lan_client = teth_ptr->lan_client[data->client_idx];
	lan_client = &teth_ptr->lan_client[data->client_idx];

	memcpy(lan_client->mac, data->mac, IPA_MAC_ADDR_SIZE);

@@ -3631,9 +3631,8 @@ int rmnet_ipa3_set_lan_client_info(
int rmnet_ipa3_clear_lan_client_info(
	struct wan_ioctl_lan_client_info *data)
{

	struct ipa_lan_client *lan_client = NULL;

	struct ipa_tether_device_info *teth_ptr = NULL;

	IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
		data->mac[0], data->mac[1], data->mac[2],
@@ -3653,9 +3652,9 @@ int rmnet_ipa3_clear_lan_client_info(
		return -EINVAL;
	}

	mutex_lock(&rmnet_ipa3_ctx->per_client_stats_guard);
	teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type];
	lan_client = teth_ptr->lan_client[data->client_idx];
	mutex_lock(&rmnet_ipa3_ctx->per_client_stats_guard);
	lan_client = &teth_ptr->lan_client[data->client_idx];

	if (!data->client_init) {
		/* check if the client is already de-inited. */
@@ -3775,7 +3774,7 @@ int rmnet_ipa3_query_per_client_stats(
	struct ipa_get_stats_per_client_resp_msg_v01 *resp;
	int rc, lan_clnt_idx, lan_clnt_idx1, i;
	struct ipa_lan_client *lan_client = NULL;
	struct ipa_tether_device_info *teth_ptr;
	struct ipa_tether_device_info *teth_ptr = NULL;

	IPAWANDBG("Client MAC %02x:%02x:%02x:%02x:%02x:%02x\n",
		data->client_info[0].mac[0],
@@ -3813,7 +3812,7 @@ int rmnet_ipa3_query_per_client_stats(
		}

		teth_ptr = &rmnet_ipa3_ctx->tether_device[data->device_type];
		lan_client = teth_ptr->lan_client[lan_clnt_idx1];
		lan_client = &teth_ptr->lan_client[lan_clnt_idx1];

		/*
		 * Check if disconnect flag is set and
@@ -3939,7 +3938,7 @@ int rmnet_ipa3_query_per_client_stats(
static int __init ipa3_wwan_init(void)
{
	int i, j;
	struct ipa_tether_device_info *teth_ptr;
	struct ipa_tether_device_info *teth_ptr = NULL;

	rmnet_ipa3_ctx = kzalloc(sizeof(*rmnet_ipa3_ctx), GFP_KERNEL);

Loading