Skip to content

Commit

Permalink
fix alignment issue for MCTP transport, to match test transport.
Browse files Browse the repository at this point in the history
Signed-off-by: Jiewen Yao <[email protected]>
  • Loading branch information
jyao1 committed Apr 2, 2024
1 parent 269e738 commit a2e2354
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
10 changes: 6 additions & 4 deletions library/spdm_transport_mctp_lib/libspdm_mctp_common.c
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,9 @@
* @retval RETURN_SUCCESS The message is encoded successfully.
* @retval RETURN_INVALID_PARAMETER The message is NULL or the message_size is zero.
**/
libspdm_return_t libspdm_mctp_encode_message(const uint32_t *session_id, size_t message_size,
libspdm_return_t libspdm_mctp_encode_message(const uint32_t *session_id,
bool need_alignment,
size_t message_size,
void *message,
size_t *transport_message_size,
void **transport_message);
Expand Down Expand Up @@ -118,7 +120,7 @@ libspdm_return_t libspdm_transport_mctp_encode_message(
/* SPDM message to APP message*/
app_message = NULL;
app_message_size = app_trans_header_size + message_size;
status = libspdm_mctp_encode_message(NULL, message_size,
status = libspdm_mctp_encode_message(NULL, false, message_size,
message,
&app_message_size,
&app_message);
Expand Down Expand Up @@ -148,7 +150,7 @@ libspdm_return_t libspdm_transport_mctp_encode_message(

/* secured message to secured MCTP message*/
status = libspdm_mctp_encode_message(
session_id, secured_message_size, secured_message,
session_id, true, secured_message_size, secured_message,
transport_message_size, transport_message);
if (LIBSPDM_STATUS_IS_ERROR(status)) {
LIBSPDM_DEBUG((LIBSPDM_DEBUG_ERROR, "transport_encode_message - %xu\n",
Expand All @@ -157,7 +159,7 @@ libspdm_return_t libspdm_transport_mctp_encode_message(
}
} else {
/* SPDM message to normal MCTP message*/
status = libspdm_mctp_encode_message(NULL, message_size, message,
status = libspdm_mctp_encode_message(NULL, true, message_size, message,
transport_message_size,
transport_message);
if (LIBSPDM_STATUS_IS_ERROR(status)) {
Expand Down
10 changes: 8 additions & 2 deletions library/spdm_transport_mctp_lib/libspdm_mctp_mctp.c
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,9 @@ spdm_version_number_t libspdm_mctp_get_secured_spdm_version(
* @retval RETURN_SUCCESS The message is encoded successfully.
* @retval RETURN_INVALID_PARAMETER The message is NULL or the message_size is zero.
**/
libspdm_return_t libspdm_mctp_encode_message(const uint32_t *session_id, size_t message_size,
libspdm_return_t libspdm_mctp_encode_message(const uint32_t *session_id,
bool need_alignment,
size_t message_size,
void *message,
size_t *transport_message_size,
void **transport_message)
Expand All @@ -84,7 +86,11 @@ libspdm_return_t libspdm_mctp_encode_message(const uint32_t *session_id, size_t
uint32_t data32;
mctp_message_header_t *mctp_message_header;

alignment = LIBSPDM_MCTP_ALIGNMENT;
if (need_alignment) {
alignment = LIBSPDM_MCTP_ALIGNMENT;
} else {
alignment = 1;
}
aligned_message_size =
(message_size + (alignment - 1)) & ~(alignment - 1);

Expand Down

0 comments on commit a2e2354

Please sign in to comment.