1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
|
From 8e3ae96546010c5d4f3fce6df9c32aece1093458 Mon Sep 17 00:00:00 2001
From: Nikhil Potade <nikhil.potade@linux.intel.com>
Date: Tue, 19 Feb 2019 14:16:20 +0800
Subject: [PATCH 1/1] Smbus changes for libmctp
Signed-off-by: James Feist <james.feist@linux.intel.com>
---
core.c | 2 ++
libmctp.h | 40 ++++++++++++++++++++++++++++++++++++++++
2 files changed, 42 insertions(+)
diff --git a/core.c b/core.c
index 6e59993..3b11672 100644
--- a/core.c
+++ b/core.c
@@ -19,6 +19,7 @@
/* Internal data structures */
+/* clang-format off */
struct mctp_bus {
mctp_eid_t eid;
struct mctp_binding *binding;
@@ -58,6 +59,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 40e5371..766473b 100644
--- a/libmctp.h
+++ b/libmctp.h
@@ -19,6 +19,7 @@ typedef uint8_t mctp_eid_t;
#define MCTP_EID_BROADCAST 0xff
/* MCTP packet definitions */
+/* clang-format off */
struct mctp_hdr {
uint8_t ver;
uint8_t dest;
@@ -34,20 +35,57 @@ 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 Transmission Unit and packet size */
#define MCTP_BTU 64
#define MCTP_PACKET_SIZE(unit) ((unit) + sizeof(struct mctp_hdr))
#define MCTP_BODY_SIZE(unit) ((unit) - 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;
@@ -96,6 +134,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;
@@ -108,6 +147,7 @@ struct mctp_binding {
mctp_rx_fn control_rx;
void *control_rx_data;
};
+/* clang-format on */
void mctp_binding_set_tx_enabled(struct mctp_binding *binding, bool enable);
--
2.17.1
|