From 40303196d9f07b71042cd7ba87dcab6fdad29422 Mon Sep 17 00:00:00 2001 From: Nikhil Potade Date: Tue, 19 Feb 2019 14:16:20 +0800 Subject: [PATCH 1/1] Smbus changes for libmctp Signed-off-by: James Feist --- CMakeLists.txt | 6 ++++-- core.c | 2 ++ libmctp.h | 40 ++++++++++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a5b1042..249b12b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,9 @@ cmake_minimum_required (VERSION 3.5 FATAL_ERROR) add_definitions (-DMCTP_LOG_STDERR) add_definitions (-DMCTP_HAVE_FILEIO) +add_definitions (-DMCTP_DEFAULT_ALLOC) -add_library (libmctp STATIC alloc.c core.c log.c libmctp.h serial.c) +add_library (libmctp STATIC alloc.c core.c log.c libmctp.h serial.c smbus.c crc32c.c) target_include_directories (libmctp PUBLIC $ @@ -18,5 +19,6 @@ add_executable (test_seq tests/test_seq.c tests/test-utils.c) target_link_libraries (test_seq libmctp) install (TARGETS libmctp DESTINATION lib) -install (FILES libmctp.h DESTINATION include) +install (FILES libmctp.h libmctp-smbus.h libmctp-serial.h crc32c.h DESTINATION + include) diff --git a/core.c b/core.c index 61356e9..622bc5e 100644 --- a/core.c +++ b/core.c @@ -17,6 +17,7 @@ /* Internal data structures */ +/* clang-format off */ struct mctp_bus { mctp_eid_t eid; struct mctp_binding *binding; @@ -56,6 +57,7 @@ struct mctp { ROUTE_BRIDGE, } route_policy; }; +/* clang-format on */ #ifndef BUILD_ASSERT #define BUILD_ASSERT(x) \ diff --git a/libmctp.h b/libmctp.h index b36a943..4f211f9 100644 --- a/libmctp.h +++ b/libmctp.h @@ -15,6 +15,7 @@ extern "C" { typedef uint8_t mctp_eid_t; /* MCTP packet definitions */ +/* clang-format off */ struct mctp_hdr { uint8_t ver; uint8_t dest; @@ -30,19 +31,56 @@ struct mctp_hdr { #define MCTP_HDR_SEQ_MASK (0x3) #define MCTP_HDR_TAG_SHIFT (0) #define MCTP_HDR_TAG_MASK (0x7) +/* clang-format on */ /* Baseline maximum size of a MCTP packet */ #define MCTP_BMTU_PAYLOAD 64 #define MCTP_BMTU (MCTP_BMTU_PAYLOAD + sizeof(struct mctp_hdr)) +#define MCTP_CONTROL_MESSAGE_TYPE 0x00 + +enum MCTP_COMMAND_CODE { + MCTP_COMMAND_CODE_SET_EID = 0x01, + MCTP_COMMAND_CODE_GET_EID = 0x02, + MCTP_COMMAND_CODE_GET_ENDPOINT_UUID = 0x03, + MCTP_COMMAND_CODE_GET_MCTP_VERSION_SUPPORT = 0x04, + MCTP_COMMAND_CODE_GET_MESSAGE_TYPE_SUPPORT = 0x05, + MCTP_COMMAND_CODE_GET_VENDOR_DEFINED_MSG_SUPPORT= 0x06, + MCTP_COMMAND_CODE_RESOLVE_ENDPOINT_ID = 0x07, + MCTP_COMMAND_CODE_ALLOCATE_ENDPOINT_IDS = 0x08, + MCTP_COMMAND_CODE_ROUTING_INFORMATION_UPDATE = 0x09, + MCTP_COMMAND_CODE_GET_ROUTING_TABLE_ENTRIES = 0x0A, + MCTP_COMMAND_CODE_PREPARE_FOR_ENDPOINT_DISCOVERY= 0x0B, + MCTP_COMMAND_CODE_ENDPOINT_DISCOVERY = 0x0C, + MCTP_COMMAND_CODE_DISCOVERY_NOTIFY = 0x0D, + MCTP_COMMAND_CODE_GET_NETWORK_ID = 0x0E, + MCTP_COMMAND_CODE_QUERY_HOP = 0x0F, + MCTP_COMMAND_CODE_RESOLVE_UUID = 0x10, + MCTP_COMMAND_CODE_QUERY_RATE_LIMIT = 0x11, + MCTP_COMMAND_CODE_REQUEST_TX_RATE_LIMIT = 0x12, + MCTP_COMMAND_CODE_UPDATE_RATE_LIMIT = 0x13, + MCTP_COMMAND_CODE_QUERY_SUPPORTED_INTERFACES = 0x14 +}; + +enum MCTP_CONTROL_MSG_COMPLETION_CODE { + MCTP_CONTROL_MSG_STATUS_SUCCESS = 0x00, + MCTP_CONTROL_MSG_STATUS_ERROR = 0x01, + MCTP_CONTROL_MSG_STATUS_ERROR_INVALID_DATA = 0x02, + MCTP_CONTROL_MSG_STATUS_ERROR_INVALID_LENGTH = 0x03, + MCTP_CONTROL_MSG_STATUS_ERROR_NOT_READY = 0x04, + MCTP_CONTROL_MSG_STATUS_ERROR_UNSUPPORTED_CMD = 0x05 +}; + /* packet buffers */ +/* clang-format off */ struct mctp_pktbuf { size_t start, end, size; size_t mctp_hdr_off; struct mctp_pktbuf *next; unsigned char data[]; }; +/* clang-format on */ struct mctp_binding; @@ -90,6 +128,7 @@ int mctp_message_tx(struct mctp *mctp, mctp_eid_t eid, void *msg, size_t msg_len); /* hardware bindings */ +/* clang-format off */ struct mctp_binding { const char *name; uint8_t version; @@ -101,6 +140,7 @@ struct mctp_binding { int (*tx)(struct mctp_binding *binding, struct mctp_pktbuf *pkt); }; +/* clang-format on */ void mctp_binding_set_tx_enabled(struct mctp_binding *binding, bool enable); -- 2.17.1