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

Commit 85860a93 authored by Atish Kumar Patra's avatar Atish Kumar Patra
Browse files

soc: qcom: ipc_rtr_xprt: Add support to set version in transport



Currently, there is no option to set the version in IPC Router transport.

Add support to set a version in the transport so that the version can be
modified from initial entry after the version negotiation.

Change-Id: Ie6d823a3b4f2608efe2ac992a248a4f0884b856d
Signed-off-by: default avatarAtish Kumar Patra <apatra@codeaurora.org>
parent cbac2b43
Loading
Loading
Loading
Loading
+17 −0
Original line number Diff line number Diff line
@@ -179,6 +179,22 @@ static void *glink_xprt_vbuf_provider(void *iovec, size_t offset,
	return NULL;
}

/**
 * ipc_router_glink_xprt_set_version() - Set the IPC Router version in transport
 * @xprt:	Reference to the transport structure.
 * @version:	The version to be set in transport.
 */
static void ipc_router_glink_xprt_set_version(
	struct msm_ipc_router_xprt *xprt, unsigned version)
{
	struct ipc_router_glink_xprt *glink_xprtp;

	if (!xprt)
		return;
	glink_xprtp = container_of(xprt, struct ipc_router_glink_xprt, xprt);
	glink_xprtp->xprt_version = version;
}

static int ipc_router_glink_xprt_get_version(
	struct msm_ipc_router_xprt *xprt)
{
@@ -665,6 +681,7 @@ static int ipc_router_glink_config_init(
	glink_xprtp->xprt.name = glink_xprtp->ipc_rtr_xprt_name;

	glink_xprtp->xprt.get_version =	ipc_router_glink_xprt_get_version;
	glink_xprtp->xprt.set_version =	ipc_router_glink_xprt_set_version;
	glink_xprtp->xprt.get_option = ipc_router_glink_xprt_get_option;
	glink_xprtp->xprt.read_avail = NULL;
	glink_xprtp->xprt.read = NULL;
+20 −1
Original line number Diff line number Diff line
/* Copyright (c) 2013-2014, The Linux Foundation. All rights reserved.
/* Copyright (c) 2013-2015, The Linux Foundation. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 and
@@ -137,6 +137,23 @@ static struct msm_ipc_router_hsic_xprt *
	return NULL;
}

/**
 * ipc_router_hsic_set_xprt_version() - Set IPC Router header version
 *                                          in the transport
 * @xprt: Reference to the transport structure.
 * @version: The version to be set in transport.
 */
static void ipc_router_hsic_set_xprt_version(
	struct msm_ipc_router_xprt *xprt, unsigned version)
{
	struct msm_ipc_router_hsic_xprt *hsic_xprtp;

	if (!xprt)
		return;
	hsic_xprtp = container_of(xprt, struct msm_ipc_router_hsic_xprt, xprt);
	hsic_xprtp->xprt_version = version;
}

/**
 * msm_ipc_router_hsic_get_xprt_version() - Get IPC Router header version
 *                                          supported by the XPRT
@@ -581,6 +598,8 @@ static int msm_ipc_router_hsic_config_init(
						XPRT_NAME_LEN);
	hsic_xprtp->xprt.name = hsic_xprtp->xprt_name;

	hsic_xprtp->xprt.set_version =
		ipc_router_hsic_set_xprt_version;
	hsic_xprtp->xprt.get_version =
		msm_ipc_router_hsic_get_xprt_version;
	hsic_xprtp->xprt.get_option =
+17 −0
Original line number Diff line number Diff line
@@ -303,6 +303,22 @@ int mhi_xprt_queue_in_buffers(struct ipc_router_mhi_xprt *mhi_xprtp,
	return i;
}

/**
* ipc_router_mhi_set_xprt_version() - Set the IPC Router version in transport
* @xprt:      Reference to the transport structure.
* @version:   The version to be set in transport.
*/
static void ipc_router_mhi_set_xprt_version(struct msm_ipc_router_xprt *xprt,
					   unsigned version)
{
	struct ipc_router_mhi_xprt *mhi_xprtp;

	if (!xprt)
		return;
	mhi_xprtp = container_of(xprt, struct ipc_router_mhi_xprt, xprt);
	mhi_xprtp->xprt_version = version;
}

/**
 * ipc_router_mhi_get_xprt_version() - Get IPC Router header version
 *				       supported by the XPRT
@@ -874,6 +890,7 @@ static int ipc_router_mhi_config_init(
	mhi_xprtp->xprt.link_id = mhi_xprt_config->link_id;
	mhi_xprtp->xprt.name = mhi_xprtp->xprt_name;
	mhi_xprtp->xprt.get_version = ipc_router_mhi_get_xprt_version;
	mhi_xprtp->xprt.set_version = ipc_router_mhi_set_xprt_version;
	mhi_xprtp->xprt.get_option = ipc_router_mhi_get_xprt_option;
	mhi_xprtp->xprt.read_avail = NULL;
	mhi_xprtp->xprt.read = NULL;
+19 −0
Original line number Diff line number Diff line
@@ -135,6 +135,23 @@ static LIST_HEAD(smd_remote_xprt_list);

static bool is_pil_loading_disabled(uint32_t edge);

/**
 * ipc_router_smd_set_xprt_version() - Set IPC Router header version
 *                                          in the transport
 * @xprt: Reference to the transport structure.
 * @version: The version to be set in transport.
 */
static void ipc_router_smd_set_xprt_version(
	struct msm_ipc_router_xprt *xprt, unsigned version)
{
	struct msm_ipc_router_smd_xprt *smd_xprtp;

	if (!xprt)
		return;
	smd_xprtp = container_of(xprt, struct msm_ipc_router_smd_xprt, xprt);
	smd_xprtp->xprt_version = version;
}

static int msm_ipc_router_smd_get_xprt_version(
	struct msm_ipc_router_xprt *xprt)
{
@@ -652,6 +669,8 @@ static int msm_ipc_router_smd_config_init(
						XPRT_NAME_LEN);
	smd_xprtp->xprt.name = smd_xprtp->xprt_name;

	smd_xprtp->xprt.set_version =
		ipc_router_smd_set_xprt_version;
	smd_xprtp->xprt.get_version =
		msm_ipc_router_smd_get_xprt_version;
	smd_xprtp->xprt.get_option =
+3 −0
Original line number Diff line number Diff line
@@ -116,6 +116,7 @@ struct rr_packet {
 * @link_id: Network cluster ID to which the XPRT belongs to.
 * @priv: XPRT's private data.
 * @get_version: Method to get header version supported by the XPRT.
 * @set_version: Method to set header version in XPRT.
 * @get_option: Method to get XPRT specific options.
 * @read_avail: Method to get data size available to be read from the XPRT.
 * @read: Method to read data from the XPRT.
@@ -132,6 +133,8 @@ struct msm_ipc_router_xprt {

	int (*get_version)(struct msm_ipc_router_xprt *xprt);
	int (*get_option)(struct msm_ipc_router_xprt *xprt);
	void (*set_version)(struct msm_ipc_router_xprt *xprt,
			    unsigned version);
	int (*read_avail)(struct msm_ipc_router_xprt *xprt);
	int (*read)(void *data, uint32_t len,
		    struct msm_ipc_router_xprt *xprt);