diff mbox series

[v5,08/16] rpmsg: glink: add sendto and trysendto ops

Message ID 20210219111501.14261-9-arnaud.pouliquen@foss.st.com
State New
Headers show
Series introduce a generic IOCTL interface for RPMsg channels management | expand

Commit Message

Arnaud POULIQUEN Feb. 19, 2021, 11:14 a.m. UTC
Implement the sendto ops to support the future rpmsg_char update for the
vitio backend support.
The use of sendto in rpmsg_char is needed as a destination address is
requested at least by the virtio backend.
The glink implementation does not need a destination address so ignores it.

Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
---
 drivers/rpmsg/qcom_glink_native.c | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

Comments

Mathieu Poirier March 4, 2021, 7:11 p.m. UTC | #1
On Fri, Feb 19, 2021 at 12:14:53PM +0100, Arnaud Pouliquen wrote:
> Implement the sendto ops to support the future rpmsg_char update for the
> vitio backend support.

Add a new line, otherwise it is very easy to read.

> The use of sendto in rpmsg_char is needed as a destination address is
> requested at least by the virtio backend.

Same here and throughout the patchset.

> The glink implementation does not need a destination address so ignores it.
> 
> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>
> ---
>  drivers/rpmsg/qcom_glink_native.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c
> index d4e4dd482614..ae2c03b59c55 100644
> --- a/drivers/rpmsg/qcom_glink_native.c
> +++ b/drivers/rpmsg/qcom_glink_native.c
> @@ -1332,6 +1332,20 @@ static int qcom_glink_trysend(struct rpmsg_endpoint *ept, void *data, int len)
>  	return __qcom_glink_send(channel, data, len, false);
>  }
>  
> +static int qcom_glink_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
> +{
> +	struct glink_channel *channel = to_glink_channel(ept);
> +
> +	return __qcom_glink_send(channel, data, len, true);
> +}
> +
> +static int qcom_glink_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
> +{
> +	struct glink_channel *channel = to_glink_channel(ept);
> +
> +	return __qcom_glink_send(channel, data, len, false);
> +}

Just rename send() to sendto() and trysend() to trysendto() and ignore the
destination address.  The same goes for the next patch.  I would fold patch 08
and 09 into 10 to help get the big picture. 

> +
>  /*
>   * Finds the device_node for the glink child interested in this channel.
>   */
> @@ -1364,7 +1378,9 @@ static const struct rpmsg_device_ops glink_device_ops = {
>  static const struct rpmsg_endpoint_ops glink_endpoint_ops = {
>  	.destroy_ept = qcom_glink_destroy_ept,
>  	.send = qcom_glink_send,
> +	.sendto = qcom_glink_sendto,
>  	.trysend = qcom_glink_trysend,
> +	.trysendto = qcom_glink_trysendto,
>  };
>  
>  static void qcom_glink_rpdev_release(struct device *dev)
> -- 
> 2.17.1
>
Arnaud POULIQUEN March 5, 2021, 10:46 a.m. UTC | #2
Hi Mathieu,

On 3/4/21 8:11 PM, Mathieu Poirier wrote:
> On Fri, Feb 19, 2021 at 12:14:53PM +0100, Arnaud Pouliquen wrote:

>> Implement the sendto ops to support the future rpmsg_char update for the

>> vitio backend support.

> 

> Add a new line, otherwise it is very easy to read.

> 

>> The use of sendto in rpmsg_char is needed as a destination address is

>> requested at least by the virtio backend.

> 

> Same here and throughout the patchset.

> 

>> The glink implementation does not need a destination address so ignores it.

>>

>> Signed-off-by: Arnaud Pouliquen <arnaud.pouliquen@foss.st.com>

>> ---

>>  drivers/rpmsg/qcom_glink_native.c | 16 ++++++++++++++++

>>  1 file changed, 16 insertions(+)

>>

>> diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c

>> index d4e4dd482614..ae2c03b59c55 100644

>> --- a/drivers/rpmsg/qcom_glink_native.c

>> +++ b/drivers/rpmsg/qcom_glink_native.c

>> @@ -1332,6 +1332,20 @@ static int qcom_glink_trysend(struct rpmsg_endpoint *ept, void *data, int len)

>>  	return __qcom_glink_send(channel, data, len, false);

>>  }

>>  

>> +static int qcom_glink_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)

>> +{

>> +	struct glink_channel *channel = to_glink_channel(ept);

>> +

>> +	return __qcom_glink_send(channel, data, len, true);

>> +}

>> +

>> +static int qcom_glink_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)

>> +{

>> +	struct glink_channel *channel = to_glink_channel(ept);

>> +

>> +	return __qcom_glink_send(channel, data, len, false);

>> +}

> 

> Just rename send() to sendto() and trysend() to trysendto() and ignore the

> destination address.  


Function prototypes have to match with rpmsg_endpoint_ops structure defined
below. So seems to me not possible to just rename the functions.
Please could you clarify if i missed something?

> The same goes for the next patch.  I would fold patch 08

> and 09 into 10 to help get the big picture.


I'm going to squash all in one.

Thanks,
Arnaud

> 

>> +

>>  /*

>>   * Finds the device_node for the glink child interested in this channel.

>>   */

>> @@ -1364,7 +1378,9 @@ static const struct rpmsg_device_ops glink_device_ops = {

>>  static const struct rpmsg_endpoint_ops glink_endpoint_ops = {

>>  	.destroy_ept = qcom_glink_destroy_ept,

>>  	.send = qcom_glink_send,

>> +	.sendto = qcom_glink_sendto,

>>  	.trysend = qcom_glink_trysend,

>> +	.trysendto = qcom_glink_trysendto,

>>  };

>>  

>>  static void qcom_glink_rpdev_release(struct device *dev)

>> -- 

>> 2.17.1

>>
Mathieu Poirier March 5, 2021, 4:55 p.m. UTC | #3
[...]

> >>  }

> >>  

> >> +static int qcom_glink_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)

> >> +{

> >> +	struct glink_channel *channel = to_glink_channel(ept);

> >> +

> >> +	return __qcom_glink_send(channel, data, len, true);

> >> +}

> >> +

> >> +static int qcom_glink_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)

> >> +{

> >> +	struct glink_channel *channel = to_glink_channel(ept);

> >> +

> >> +	return __qcom_glink_send(channel, data, len, false);

> >> +}

> > 

> > Just rename send() to sendto() and trysend() to trysendto() and ignore the

> > destination address.  

> 


Apologies for not being clear.

> Function prototypes have to match with rpmsg_endpoint_ops structure defined

> below. So seems to me not possible to just rename the functions.

> Please could you clarify if i missed something?


I don't think rproc_ops::send() and rproc_ops::trysend() are used anywhere else.
So replace them with rproc_ops::sendto() and rproc_ops::trysendto() where the
destination address would be ingnored.

> 

> > The same goes for the next patch.  I would fold patch 08

> > and 09 into 10 to help get the big picture.

> 

> I'm going to squash all in one.


Perfect

> 

> Thanks,

> Arnaud

> 

> > 

> >> +

> >>  /*

> >>   * Finds the device_node for the glink child interested in this channel.

> >>   */

> >> @@ -1364,7 +1378,9 @@ static const struct rpmsg_device_ops glink_device_ops = {

> >>  static const struct rpmsg_endpoint_ops glink_endpoint_ops = {

> >>  	.destroy_ept = qcom_glink_destroy_ept,

> >>  	.send = qcom_glink_send,

> >> +	.sendto = qcom_glink_sendto,

> >>  	.trysend = qcom_glink_trysend,

> >> +	.trysendto = qcom_glink_trysendto,

> >>  };

> >>  

> >>  static void qcom_glink_rpdev_release(struct device *dev)

> >> -- 

> >> 2.17.1

> >>
diff mbox series

Patch

diff --git a/drivers/rpmsg/qcom_glink_native.c b/drivers/rpmsg/qcom_glink_native.c
index d4e4dd482614..ae2c03b59c55 100644
--- a/drivers/rpmsg/qcom_glink_native.c
+++ b/drivers/rpmsg/qcom_glink_native.c
@@ -1332,6 +1332,20 @@  static int qcom_glink_trysend(struct rpmsg_endpoint *ept, void *data, int len)
 	return __qcom_glink_send(channel, data, len, false);
 }
 
+static int qcom_glink_sendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
+{
+	struct glink_channel *channel = to_glink_channel(ept);
+
+	return __qcom_glink_send(channel, data, len, true);
+}
+
+static int qcom_glink_trysendto(struct rpmsg_endpoint *ept, void *data, int len, u32 dst)
+{
+	struct glink_channel *channel = to_glink_channel(ept);
+
+	return __qcom_glink_send(channel, data, len, false);
+}
+
 /*
  * Finds the device_node for the glink child interested in this channel.
  */
@@ -1364,7 +1378,9 @@  static const struct rpmsg_device_ops glink_device_ops = {
 static const struct rpmsg_endpoint_ops glink_endpoint_ops = {
 	.destroy_ept = qcom_glink_destroy_ept,
 	.send = qcom_glink_send,
+	.sendto = qcom_glink_sendto,
 	.trysend = qcom_glink_trysend,
+	.trysendto = qcom_glink_trysendto,
 };
 
 static void qcom_glink_rpdev_release(struct device *dev)