Re: [RFC PATCH net-next 1/2] net: ethernet: ti: Introduce inter-core-virt-eth as RPMsg driver

From: Simon Horman
Date: Thu Feb 01 2024 - 08:30:14 EST


On Tue, Jan 30, 2024 at 04:39:43PM +0530, Ravi Gunasekaran wrote:
> TI's K3 SoCs comprises heterogeneous processors (Cortex A, Cortex R).
> When the ethernet controller is completely managed by a core (Cortex R)
> running a flavor of RTOS, in a non virtualized environment, network traffic
> tunnelling between heterogeneous processors can be realized by means of
> RPMsg based shared memory ethernet driver. With the shared memory used
> for the data plane and the RPMsg end point channel used for control plane.
>
> inter-core-virt-eth driver is modelled as a RPMsg based shared
> memory ethernet driver for such an use case.
>
> As a first step, register the inter-core-virt-eth as a RPMsg driver.
> And introduce basic control messages for querying and responding.
>
> Signed-off-by: Siddharth Vadapalli <s-vadapalli@xxxxxx>
> Signed-off-by: Ravi Gunasekaran <r-gunasekaran@xxxxxx>
> ---
> drivers/net/ethernet/ti/inter-core-virt-eth.c | 139 ++++++++++++++++++
> drivers/net/ethernet/ti/inter-core-virt-eth.h | 89 +++++++++++
> 2 files changed, 228 insertions(+)
> create mode 100644 drivers/net/ethernet/ti/inter-core-virt-eth.c
> create mode 100644 drivers/net/ethernet/ti/inter-core-virt-eth.h
>
> diff --git a/drivers/net/ethernet/ti/inter-core-virt-eth.c b/drivers/net/ethernet/ti/inter-core-virt-eth.c
> new file mode 100644
> index 000000000000..d3b689eab1c0
> --- /dev/null
> +++ b/drivers/net/ethernet/ti/inter-core-virt-eth.c
> @@ -0,0 +1,139 @@
> +/* SPDX-License-Identifier: GPL-2.0 */

Hi Ravi and Siddharth,

The correct style for SPDX headers in .c files is a '//' comment:

// SPDX-License-Identifier: GPL-2.0

> +/* Texas Instruments K3 Inter Core Virtual Ethernet Driver
> + *
> + * Copyright (C) 2024 Texas Instruments Incorporated - https://www.ti.com/
> + */

..

> diff --git a/drivers/net/ethernet/ti/inter-core-virt-eth.h b/drivers/net/ethernet/ti/inter-core-virt-eth.h

..

> +struct icve_common {
> + struct rpmsg_device *rpdev;
> + spinlock_t send_msg_lock;
> + spinlock_t recv_msg_lock;

Spinlocks ought to come with an comment regarding what they lock.

> + struct message send_msg;
> + struct message recv_msg;
> + struct icve_port *port;
> + struct device *dev;
> +} __packed;
> +
> +#endif /* __INTER_CORE_VIRT_ETH_H__ */
> --
> 2.17.1
>
>