devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Andrew Lunn <andrew@lunn.ch>
To: Alex Elder <elder@ieee.org>
Cc: "Damien Riégel" <damien.riegel@silabs.com>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Andrew Lunn" <andrew+netdev@lunn.ch>,
	"David S . Miller" <davem@davemloft.net>,
	"Eric Dumazet" <edumazet@google.com>,
	"Jakub Kicinski" <kuba@kernel.org>,
	"Paolo Abeni" <pabeni@redhat.com>,
	"Rob Herring" <robh@kernel.org>,
	"Krzysztof Kozlowski" <krzk+dt@kernel.org>,
	"Conor Dooley" <conor+dt@kernel.org>,
	"Silicon Labs Kernel Team" <linux-devel@silabs.com>,
	netdev@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org, "Johan Hovold" <johan@kernel.org>,
	"Alex Elder" <elder@kernel.org>,
	greybus-dev@lists.linaro.org
Subject: Re: [RFC net-next 00/15] Add support for Silicon Labs CPC
Date: Thu, 22 May 2025 20:11:21 +0200	[thread overview]
Message-ID: <d4f047f6-59ef-4f8c-b64f-ec958f0323ca@lunn.ch> (raw)
In-Reply-To: <9a612b07-fe02-40d6-a1d4-7a6d1266ed18@ieee.org>

> > You have listed how your implementation is similar to Greybus. You say
> > what is not so great is streaming, i.e. the bulk data transfer needed
> > to implement xmit_sync() and xmit_async() above. Greybus is too much
> > RPC based. RPCs are actually what you want for most of the operations
> > listed above, but i agree for data, in order to keep the transport
> > fully loaded, you want double buffering. However, that appears to be
> > possible with the current Greybus code.
> > 
> > gb_operation_unidirectional_timeout() says:
> 
> Yes, these are request messages that don't require a response.
> The acknowledgement is about when the host *sent it*, not when
> it got received.  They're rarely used but I could see them being
> used this way.  Still, you might be limited to 255 or so in-flight
> messages.

I don't actually see how you can have multiple messages in-flight, but
maybe i'm missing something. It appears that upper layers pass the
message down and then block on a completion. The signalling of that
completion only happens when the message is on the wire. So it is all
synchronous. In order to have multiple messages in-flight, the lower
layer would have to copy the message, signal the completion, and then
send the copy whenever the transport was free.

The network stack is however async by nature. The ndo_start_xmit call
passes an skbuf. The data in the skbuf is setup for DMA transfer, and
then ndo_start_xmit returns. Later, when the DMA has completed, the
driver calls dev_kfree_skb() to say it has finished with the skb.

Ideally we want a similar async mechanism, which is why i suggested
gb_operation_unidirectional_async(). Pass a message to Greybus, none
blocking, and have a callback for when the message has hit the wire
and the skb can be friend. The low level can then keep a list of skb's
so it can quickly do back to back transfers over the transport to keep
it busy.

	Andrew

  reply	other threads:[~2025-05-22 18:11 UTC|newest]

Thread overview: 39+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-05-12  1:27 [RFC net-next 00/15] Add support for Silicon Labs CPC Damien Riégel
2025-05-12  1:27 ` [RFC net-next 01/15] net: cpc: add base skeleton driver Damien Riégel
2025-05-12  2:13   ` Andrew Lunn
2025-05-12  1:27 ` [RFC net-next 02/15] net: cpc: add endpoint infrastructure Damien Riégel
2025-05-12  2:28   ` Andrew Lunn
2025-05-12  1:27 ` [RFC net-next 03/15] net: cpc: introduce CPC driver and bus Damien Riégel
2025-05-12  1:27 ` [RFC net-next 04/15] net: cpc: add protocol header structure and API Damien Riégel
2025-05-12  2:41   ` Andrew Lunn
2025-05-12  1:27 ` [RFC net-next 05/15] net: cpc: implement basic transmit path Damien Riégel
2025-05-12  1:27 ` [RFC net-next 06/15] net: cpc: implement basic receive path Damien Riégel
2025-05-12  1:27 ` [RFC net-next 07/15] net: cpc: implement sequencing and ack Damien Riégel
2025-05-12  1:27 ` [RFC net-next 08/15] net: cpc: add support for connecting endpoints Damien Riégel
2025-05-12  1:27 ` [RFC net-next 09/15] net: cpc: add support for RST frames Damien Riégel
2025-05-12  1:27 ` [RFC net-next 10/15] net: cpc: make disconnect blocking Damien Riégel
2025-05-12  1:27 ` [RFC net-next 11/15] net: cpc: add system endpoint Damien Riégel
2025-05-12  1:27 ` [RFC net-next 12/15] net: cpc: create system endpoint with a new interface Damien Riégel
2025-05-12  1:27 ` [RFC net-next 13/15] dt-bindings: net: cpc: add silabs,cpc-spi.yaml Damien Riégel
2025-05-14 21:38   ` Rob Herring
2025-05-12  1:27 ` [RFC net-next 14/15] net: cpc: add SPI interface driver Damien Riégel
2025-05-12  2:47   ` Andrew Lunn
2025-05-12  1:27 ` [RFC net-next 15/15] net: cpc: add Bluetooth HCI driver Damien Riégel
2025-05-12 17:07 ` [RFC net-next 00/15] Add support for Silicon Labs CPC Andrew Lunn
2025-05-13 21:15   ` Damien Riégel
2025-05-13 21:53     ` Andrew Lunn
2025-05-14 22:52       ` Damien Riégel
2025-05-15  7:49         ` Greg Kroah-Hartman
2025-05-15 15:00           ` Damien Riégel
2025-05-16  7:51             ` Greg Kroah-Hartman
2025-05-16 16:25               ` Damien Riégel
2025-05-18 15:23                 ` Andrew Lunn
2025-05-20  1:21                   ` Damien Riégel
2025-05-20 13:04                     ` Andrew Lunn
2025-05-22  2:46                       ` Alex Elder
2025-05-22  2:46                   ` Alex Elder
2025-05-22 18:11                     ` Andrew Lunn [this message]
2025-05-22  2:46         ` Alex Elder
2025-05-23 19:49           ` Damien Riégel
2025-05-23 20:06             ` Andrew Lunn
2025-05-23 20:38               ` Damien Riégel

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=d4f047f6-59ef-4f8c-b64f-ec958f0323ca@lunn.ch \
    --to=andrew@lunn.ch \
    --cc=andrew+netdev@lunn.ch \
    --cc=conor+dt@kernel.org \
    --cc=damien.riegel@silabs.com \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=edumazet@google.com \
    --cc=elder@ieee.org \
    --cc=elder@kernel.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=greybus-dev@lists.linaro.org \
    --cc=johan@kernel.org \
    --cc=krzk+dt@kernel.org \
    --cc=kuba@kernel.org \
    --cc=linux-devel@silabs.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=pabeni@redhat.com \
    --cc=robh@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).