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 {