public inbox for linux-i3c@lists.infradead.org
 help / color / mirror / Atom feed
From: "Winiarska, Iwona" <iwona.winiarska@intel.com>
To: "jk@codeconstruct.com.au" <jk@codeconstruct.com.au>,
	"matt@codeconstruct.com.au" <matt@codeconstruct.com.au>,
	"linux-i3c@lists.infradead.org" <linux-i3c@lists.infradead.org>
Cc: "alexandre.belloni@bootlin.com" <alexandre.belloni@bootlin.com>,
	"joel@jms.id.au" <joel@jms.id.au>
Subject: Re: [RFC PATCH 0/2] I3C MCTP net driver
Date: Tue, 9 May 2023 21:14:33 +0000	[thread overview]
Message-ID: <4f58f4be52613b2ca18a68ec2bd511b4014c9143.camel@intel.com> (raw)
In-Reply-To: <4127aa2454a33bccf666597c292943ded9ccaa5d.camel@codeconstruct.com.au>

On Tue, 2023-05-09 at 07:42 +0800, Jeremy Kerr wrote:
> Hi Iwona,
> 
> > Wouldn't creating "mctpi3cX" network interface for each I3C device rather
> > than
> > I3C bus be a better fit to model MCTP over I3C?
> 
> Great question! A few reasons for this structure:
> 
>  - it is a closer match to existing usage of network interfaces and
>    remote endpoints (say, IP, CAN, etc): you have an interface for
>    representing the local hardware and stack state, which may provide a
>    path for any devices reachable through that hardware.
> 
>  - a simpler addressing structure: you only need one *local* MCTP
>    address (EID) for the whole bus, rather that one per remote device.
> 
>  - the presence/absence of interfaces is not dependent on what's
>    connected to the bus. If we used a netdev per remote device, users
>    would not be able to set up the local stack until a remote endpoint
>    is bound (ie, userspace would need to configure every interface on
>    i3c hot join). With this model, that stack state can persist over
>    whatever may be happening to remote devices (unplug, reset,
>    re-addressing, etc).
> 
>  - if there is ever a proposal for broadcast messages in the i3c
>    transport binding, we would have to re-write it in this structure
>    anyway.
> 
> > Why are we following the mctp-i2c approach rather than mctp-serial?
> 
> mctp-serial follows the same model: the local device is always present,
> the difference here being that no physical addressing is required.
> Routes to remote endpoints are added depending on remote endpoint state,
> but the local state is preserved regardless of what is (or is not) on
> the other end of the link.
> 
> > This would also simplify the series, as we would no longer need "mctp-
> > controller" property, and the driver would just follow the I3C class driver
> > model without the need for notifiers.
> 
> It would simplify the series, but we would be punting a lot of those
> complexities over to userspace.

Thanks for the explanation - and it makes perfect sense, I'm just worried that
it might be difficult to model certain use cases with this structure.

Specifically: 

1) This is a simplified example - the EID collision can happen further down the
network (with both I3C devices acting as bridges and having multiple MCTP
endpoints behind them), bottom line is - we're dealing two separate networks.
Since the network is a link property - do we have a way forward if we go with a
single network interface for I3C controller if we need to work in an environment
like this?

                             Network 1
                         +------------------+
                         |                  |
   Network ?             | device eid 0x12  |
+------------+     +-----+                  |
|  eid 0x11  +-----+     +------------------+
| controller |
|  eid 0x10  +-----+     +------------------+
+------------+     +-----+                  |
                         | device eid 0x12  |
                         |                  |
                         +------------------+
                             Network 2

2) This is the "normal" case. 0x11 sends MCTP message to 0x12 (by issuing IBI to
the controller). How will the routing table need to look like in order for the
message to be retransmited on the same network interface? What if we do not want
to forward? What would be the difference?

                             Network 1
                         +------------------+
                         |                  |
   Network 1             | device eid 0x11  |
+------------+     +-----+                  |
|            +-----+     +------------------+
| controller |
|  eid 0x10  +-----+     +------------------+
+------------+     +-----+                  |
                         | device eid 0x12  |
                         |                  |
                         +------------------+
                             Network 1

Thanks
-Iwona


> 
> Cheers,
> 
> 
> Jeremy

-- 
linux-i3c mailing list
linux-i3c@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-i3c

  reply	other threads:[~2023-05-09 21:14 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-13  8:11 [RFC PATCH 0/2] I3C MCTP net driver Matt Johnston
2023-04-13  8:11 ` [RFC PATCH 1/2] i3c: Add support for bus enumeration & notification Matt Johnston
2023-04-13  8:11 ` [RFC PATCH 2/2] mctp i3c: MCTP I3C driver Matt Johnston
2023-05-08 18:27 ` [RFC PATCH 0/2] I3C MCTP net driver Winiarska, Iwona
2023-05-08 23:42   ` Jeremy Kerr
2023-05-09 21:14     ` Winiarska, Iwona [this message]
2023-05-10  3:28       ` Jeremy Kerr
2023-05-13 20:21         ` Winiarska, Iwona
2023-05-15  2:29           ` Jeremy Kerr

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=4f58f4be52613b2ca18a68ec2bd511b4014c9143.camel@intel.com \
    --to=iwona.winiarska@intel.com \
    --cc=alexandre.belloni@bootlin.com \
    --cc=jk@codeconstruct.com.au \
    --cc=joel@jms.id.au \
    --cc=linux-i3c@lists.infradead.org \
    --cc=matt@codeconstruct.com.au \
    /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