On Fri, Nov 18, 2022 at 08:01:40AM +0100, Klaus Jensen wrote: > On Nov 18 13:56, Jeremy Kerr wrote: > > Hi Klaus, > > > > > Add an abstract MCTP over I2C endpoint model. This implements MCTP > > > control message handling as well as handling the actual I2C transport > > > (packetization). > > > > > With those changes, I can get control protocol going, and multi-packet > > messages work. There's a couple of failures from unsupported commands, > > but otherwise looks good: > > > > # mctp addr add 8 dev mctpi2c6 > > # mctp link set mctpi2c6 up > > # mctp link set mctpi2c6 mtu 254 > > # systemctl restart mctpd > > # busctl --no-pager call xyz.openbmc_project.MCTP \ > > /xyz/openbmc_project/mctp au.com.CodeConstruct.MCTP \ > > SetupEndpoint say mctpi2c6 1 0x1d
Hi Klaus, Thanks for the MCTP model, it's useful here. I needed the following patch to be able to call SetupEndpoint again when a device has already been assigned an EID. That tries a Set Endpoint ID/ Get Endpoint ID, addressed to EID 0. Cheers, Matt --- >From cb7ad91474367f8e47bdaf03aba9a822f2648f41 Mon Sep 17 00:00:00 2001 From: Matt Johnston <m...@codeconstruct.com.au> Date: Mon, 21 Nov 2022 15:10:13 +0800 Subject: [PATCH] i2c/mctp: Allow receiving messages to dest eid 0 The Null Destination ID, 0, is used for MCTP control messages when addressing by physical ID. That is used for Get Endpoint ID and Set Endpoint ID when querying/assigning an EID to an endpoint. Signed-off-by: Matt Johnston <m...@codeconstruct.com.au> --- hw/i2c/mctp.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/hw/i2c/mctp.c b/hw/i2c/mctp.c index 1775deb46f..9d9e519ba9 100644 --- a/hw/i2c/mctp.c +++ b/hw/i2c/mctp.c @@ -258,7 +258,8 @@ static int i2c_mctp_event_cb(I2CSlave *i2c, enum i2c_event event) goto drop; } - if (pkt->mctp.hdr.eid.dest != mctp->my_eid) { + if (!(pkt->mctp.hdr.eid.dest == mctp->my_eid + || pkt->mctp.hdr.eid.dest == 0)) { trace_i2c_mctp_drop_invalid_eid(pkt->mctp.hdr.eid.dest, mctp->my_eid); goto drop; -- 2.37.2