[RFC PATCH 00/10] Introduction of rpmsg flow control service

From: Arnaud Pouliquen
Date: Fri May 20 2022 - 04:31:33 EST


This series proposes an implementation for the rpmsg virtio transport
backend, of the signaling API proposed by Deepak Kumar Singh:
"rpmsg and glink signaling API support" [1]

The aim of the series is to offer the possibility for an endpoint to inform
a remote endpoint about its state, based on a software flow control[2].

For this a new rpmsg service( with a fixed address 64) is proposed.
It is responsible for:
- transmitting local endpoint flow control information to the remote side,
- informing a local endpoint about a remote endpoint flow control.

For the rpmsg virtio transport layer the service is negotiated thanks to the
virtio feature flag: VIRTIO_RPMSG_F_FC

Notice that this pull request introduces new feature in the rpmsg protocol,
So it has to be aligned with OpenAMP implementation.
Pending OpenAMP pull request is available here:
https://github.com/OpenAMP/open-amp/pull/394


[1]https://lkml.org/lkml/2022/1/18/867
[2]https://en.wikipedia.org/wiki/Software_flow_control

Arnaud Pouliquen (8):
rpmsg: core: Add rpmsg device remote flow control announcement ops
rpmsg: virtio: Implement the announce_remote_fc ops
rpmsg: Introduce flow control channel driver
rpmsg: virtio: Add support of the VIRTIO_RPMSG_F_FC feature
rpmsg: virtio: Implement the set_flow_control ops
rpmsg: Add the destination address in rpmsg_set_flow_control
rpmsg: tty : Add the support of the flow control
rpmsg: virtio: Set default dst address on flow control

Deepak Kumar Singh (2):
rpmsg: core: Add signal API support
rpmsg: char: Add TIOCMGET/TIOCMSET ioctl support

drivers/rpmsg/Kconfig | 11 +++
drivers/rpmsg/Makefile | 1 +
drivers/rpmsg/rpmsg_char.c | 56 +++++++++++++--
drivers/rpmsg/rpmsg_core.c | 47 +++++++++++++
drivers/rpmsg/rpmsg_fc.c | 113 +++++++++++++++++++++++++++++++
drivers/rpmsg/rpmsg_internal.h | 9 +++
drivers/rpmsg/virtio_rpmsg_bus.c | 111 +++++++++++++++++++++++++++++-
drivers/tty/rpmsg_tty.c | 50 ++++++++++++++
include/linux/rpmsg.h | 15 ++++
include/linux/rpmsg/fc.h | 51 ++++++++++++++
10 files changed, 456 insertions(+), 8 deletions(-)
create mode 100644 drivers/rpmsg/rpmsg_fc.c
create mode 100644 include/linux/rpmsg/fc.h

--
2.25.1