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: Atish Kumar Patra <apatra@codeaurora.org>
This commit is contained in:
Atish Kumar Patra 2015-04-24 18:19:24 -06:00 committed by David Keitel
parent 8b7a1ee3b5
commit dc86ce0faa
5 changed files with 76 additions and 1 deletions

View file

@ -179,6 +179,22 @@ static void *glink_xprt_vbuf_provider(void *iovec, size_t offset,
return NULL; 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( static int ipc_router_glink_xprt_get_version(
struct msm_ipc_router_xprt *xprt) 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.name = glink_xprtp->ipc_rtr_xprt_name;
glink_xprtp->xprt.get_version = ipc_router_glink_xprt_get_version; 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.get_option = ipc_router_glink_xprt_get_option;
glink_xprtp->xprt.read_avail = NULL; glink_xprtp->xprt.read_avail = NULL;
glink_xprtp->xprt.read = NULL; glink_xprtp->xprt.read = NULL;

View file

@ -1,4 +1,4 @@
/* 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 * 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 * 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; 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 * msm_ipc_router_hsic_get_xprt_version() - Get IPC Router header version
* supported by the XPRT * supported by the XPRT
@ -581,6 +598,8 @@ static int msm_ipc_router_hsic_config_init(
XPRT_NAME_LEN); XPRT_NAME_LEN);
hsic_xprtp->xprt.name = hsic_xprtp->xprt_name; hsic_xprtp->xprt.name = hsic_xprtp->xprt_name;
hsic_xprtp->xprt.set_version =
ipc_router_hsic_set_xprt_version;
hsic_xprtp->xprt.get_version = hsic_xprtp->xprt.get_version =
msm_ipc_router_hsic_get_xprt_version; msm_ipc_router_hsic_get_xprt_version;
hsic_xprtp->xprt.get_option = hsic_xprtp->xprt.get_option =

View file

@ -303,6 +303,22 @@ int mhi_xprt_queue_in_buffers(struct ipc_router_mhi_xprt *mhi_xprtp,
return i; 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 * ipc_router_mhi_get_xprt_version() - Get IPC Router header version
* supported by the XPRT * 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.link_id = mhi_xprt_config->link_id;
mhi_xprtp->xprt.name = mhi_xprtp->xprt_name; mhi_xprtp->xprt.name = mhi_xprtp->xprt_name;
mhi_xprtp->xprt.get_version = ipc_router_mhi_get_xprt_version; 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.get_option = ipc_router_mhi_get_xprt_option;
mhi_xprtp->xprt.read_avail = NULL; mhi_xprtp->xprt.read_avail = NULL;
mhi_xprtp->xprt.read = NULL; mhi_xprtp->xprt.read = NULL;

View file

@ -135,6 +135,23 @@ static LIST_HEAD(smd_remote_xprt_list);
static bool is_pil_loading_disabled(uint32_t edge); 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( static int msm_ipc_router_smd_get_xprt_version(
struct msm_ipc_router_xprt *xprt) struct msm_ipc_router_xprt *xprt)
{ {
@ -652,6 +669,8 @@ static int msm_ipc_router_smd_config_init(
XPRT_NAME_LEN); XPRT_NAME_LEN);
smd_xprtp->xprt.name = smd_xprtp->xprt_name; smd_xprtp->xprt.name = smd_xprtp->xprt_name;
smd_xprtp->xprt.set_version =
ipc_router_smd_set_xprt_version;
smd_xprtp->xprt.get_version = smd_xprtp->xprt.get_version =
msm_ipc_router_smd_get_xprt_version; msm_ipc_router_smd_get_xprt_version;
smd_xprtp->xprt.get_option = smd_xprtp->xprt.get_option =

View file

@ -116,6 +116,7 @@ struct rr_packet {
* @link_id: Network cluster ID to which the XPRT belongs to. * @link_id: Network cluster ID to which the XPRT belongs to.
* @priv: XPRT's private data. * @priv: XPRT's private data.
* @get_version: Method to get header version supported by the XPRT. * @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. * @get_option: Method to get XPRT specific options.
* @read_avail: Method to get data size available to be read from the XPRT. * @read_avail: Method to get data size available to be read from the XPRT.
* @read: Method to read data 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_version)(struct msm_ipc_router_xprt *xprt);
int (*get_option)(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_avail)(struct msm_ipc_router_xprt *xprt);
int (*read)(void *data, uint32_t len, int (*read)(void *data, uint32_t len,
struct msm_ipc_router_xprt *xprt); struct msm_ipc_router_xprt *xprt);