core: Add TX/RX API that exposes message tag and tag owner
MCTP received packets can carry a message tag and tag owner bit
which is set by a remote MCTP endpoint. This can be used by the
remote MCTP endpoint to track the responses. Thus, libmctp should
provide a mechanism for the upper layer MCTP applications to
respond with the same message tag.
This patchset extends TX and RX API with message tag and
tag owner bits.
Signed-off-by: Sumanth Bhat <sumanth.bhat@linux.intel.com>
Change-Id: I6d07eafa86c653abdd4313ab7cc77e5a93124477
diff --git a/libmctp.h b/libmctp.h
index bc0cb5b..497d536 100644
--- a/libmctp.h
+++ b/libmctp.h
@@ -27,13 +27,18 @@
};
/* Definitions for flags_seq_tag field */
-#define MCTP_HDR_FLAG_SOM (1<<7)
-#define MCTP_HDR_FLAG_EOM (1<<6)
-#define MCTP_HDR_FLAG_TO (1<<3)
-#define MCTP_HDR_SEQ_SHIFT (4)
-#define MCTP_HDR_SEQ_MASK (0x3)
-#define MCTP_HDR_TAG_SHIFT (0)
-#define MCTP_HDR_TAG_MASK (0x7)
+#define MCTP_HDR_FLAG_SOM (1 << 7)
+#define MCTP_HDR_FLAG_EOM (1 << 6)
+#define MCTP_HDR_FLAG_TO (1 << 3)
+#define MCTP_HDR_TO_SHIFT (3)
+#define MCTP_HDR_TO_MASK (1)
+#define MCTP_HDR_SEQ_SHIFT (4)
+#define MCTP_HDR_SEQ_MASK (0x3)
+#define MCTP_HDR_TAG_SHIFT (0)
+#define MCTP_HDR_TAG_MASK (0x7)
+
+#define MCTP_MESSAGE_TO_SRC true
+#define MCTP_MESSAGE_TO_DST false
/* Baseline Transmission Unit and packet size */
#define MCTP_BTU 64
@@ -93,13 +98,13 @@
int mctp_bridge_busses(struct mctp *mctp,
struct mctp_binding *b1, struct mctp_binding *b2);
-typedef void (*mctp_rx_fn)(uint8_t src_eid, void *data,
- void *msg, size_t len);
+typedef void (*mctp_rx_fn)(uint8_t src_eid, bool tag_owner, uint8_t msg_tag,
+ void *data, void *msg, size_t len);
int mctp_set_rx_all(struct mctp *mctp, mctp_rx_fn fn, void *data);
-int mctp_message_tx(struct mctp *mctp, mctp_eid_t eid,
- void *msg, size_t msg_len);
+int mctp_message_tx(struct mctp *mctp, mctp_eid_t eid, bool tag_owner,
+ uint8_t msg_tag, void *msg, size_t msg_len);
/* hardware bindings */
struct mctp_binding {