Skip to content

Conversation

@NguyenTanNhutQuang
Copy link

via MCTP in kernel. It also supports sending single command GET_VERSION to test the interface.

Tested:
Send command:
spdm_requester_emu --trans MCTP_KERNEL --eid 20 --cmd GET_VERSION
Sample output:
spdm_requester_emu version 0.1
trans - 0x5
spdm_cmd - 0x01
connect success!
context_size - 0x21d8
libspdm_send_spdm_request[0] msg SPDM_GET_VERSION(0x84), size (0x4):
0000: 10 84 00 00
Platform port Transmit transport_type: 00 00 00 05
Platform port Transmit size: 00 00 00 05
Platform port Transmit buffer:
05 10 84 00 00
Platform port Receive buffer:
05 10 04 00 00 00 03 00 10 00 11 00 12
libspdm_receive_spdm_response[0] msg SPDM_VERSION(0x4), size (0xc):
0000: 10 04 00 00 00 03 00 10 00 11 00 12
Client stopped

This commit supports spdm-requester-emu communicate with other endpoints
via MCTP in kernel. It also supports sending single command GET_VERSION
to test the interface.

Tested:
Send command:
    spdm_requester_emu --trans MCTP_KERNEL --eid 20 --cmd GET_VERSION
Sample output:
    spdm_requester_emu version 0.1
    trans - 0x5
    spdm_cmd - 0x01
    connect success!
    context_size - 0x21d8
    libspdm_send_spdm_request[0] msg SPDM_GET_VERSION(0x84), size (0x4):
    0000: 10 84 00 00
    Platform port Transmit transport_type: 00 00 00 05
    Platform port Transmit size: 00 00 00 05
    Platform port Transmit buffer:
        05 10 84 00 00
    Platform port Receive buffer:
        05 10 04 00 00 00 03 00 10 00 11 00 12
    libspdm_receive_spdm_response[0] msg SPDM_VERSION(0x4), size (0xc):
    0000: 10 04 00 00 00 03 00 10 00 11 00 12
    Client stopped

Signed-off-by: Quang Nguyen <[email protected]>
@jyao1
Copy link
Member

jyao1 commented Apr 4, 2024

@NguyenTanNhutQuang , please fix CI failure.

Please note that spdm-emu need to be built in both Linux and Windows OS environment.
I feel you need to have a way (maybe MACO) to exclude Linux kernel code if it is Windows/Visual Studio.

@NguyenTanNhutQuang
Copy link
Author

@NguyenTanNhutQuang , please fix CI failure.

Please note that spdm-emu need to be built in both Linux and Windows OS environment. I feel you need to have a way (maybe MACO) to exclude Linux kernel code if it is Windows/Visual Studio.

Hi jyao1,

Is there anyway that I can check CI on my local server before push to github? Thank you

@jyao1
Copy link
Member

jyao1 commented Apr 6, 2024

@steven-bellock , do you have any idea?

@steven-bellock
Copy link
Contributor

In terms of bandwidth / utilization it's fine to test your changes by pushing to this repository. The CI/CD utilization of this repository is low. If you really want to run locally you'd need something like https://github.com/nektos/act.

if (m_use_transport_layer == SOCKET_TRANSPORT_TYPE_MCTP_KERNEL) {
/* MCTP kernel approach does not support send() syscall
* sendto() is recommanded to send messages currently
* https://discord.com/channels/775381525260664832/775381525260664836/1161513903319158904 */
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could we consider using the official Linux man page — such as https://www.man7.org/linux/man-pages/man7/mctp.7.html — instead of the Discord link?

I’m unable to access Discord within the company network, and the man page provides a more reliable, standardized, and accessible reference for technical documentation.

#define SOCKET_TRANSPORT_TYPE_PCI_DOE 0x02
#define SOCKET_TRANSPORT_TYPE_TCP 0x03
/* Support mctp kernel */
#define SOCKET_TRANSPORT_TYPE_MCTP_KERNEL 0x05
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To clearly distinguish the Linux kernel’s MCTP stack, would it be better to rename SOCKET_TRANSPORT_TYPE_MCTP_KERNEL to SOCKET_TRANSPORT_TYPE_MCTP_LINUX_KERNEL?

Additionally, since other transport layers may be added in the future, it would be advisable to use platform-specific qualifiers in all MCTP transport type definitions. For example:

Suggested change
#define SOCKET_TRANSPORT_TYPE_MCTP_KERNEL 0x05
#define SOCKET_TRANSPORT_TYPE_MCTP_LINUX_KERNEL 0x0101 // MCTP transport via Linux kernel stack,

This approach ensures clarity, and supports scalable extension for new transport backends.

@wmaroneAMD
Copy link

I have a branch here that is derived from this:

https://github.com/wmaroneAMD/spdm-emu/tree/ntnq-kernel

It has been rebased and addresses the build comments here. I haven't tested the windows build just yet, but I'd like to move this feature forward as it is immediately useful to me.

@mcsmonk Your last comment I have not yet integrated but intend to do so.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants