-
Notifications
You must be signed in to change notification settings - Fork 59
This commit supports spdm-requester-emu communicate with other endpoints #341
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
This commit supports spdm-requester-emu communicate with other endpoints #341
Conversation
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]>
b6685dc to
d7a55a7
Compare
|
@NguyenTanNhutQuang , please fix CI failure. Please note that spdm-emu need to be built in both Linux and Windows OS environment. |
Hi jyao1, Is there anyway that I can check CI on my local server before push to github? Thank you |
|
@steven-bellock , do you have any idea? |
|
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 */ |
There was a problem hiding this comment.
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 |
There was a problem hiding this comment.
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:
| #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.
|
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. |
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