History

mctp: Add SIOCMCTP{ALLOC,DROP}TAG ioctls for tag control

This change adds a couple of new ioctls for mctp sockets: SIOCMCTPALLOCTAG and SIOCMCTPDROPTAG. These ioctls provide facilities for explicit allocation / release of tags, overriding the automatic allocate-on-send/release-on-reply and timeout behaviours. This allows userspace more control over messages that may not fit a simple request/response model. In order to indicate a pre-allocated tag to the sendmsg() syscall, we introduce a new flag to the struct sockaddr_mctp.smctp_tag value: MCTP_TAG_PREALLOC. Additional changes from Jeremy Kerr <jk@codeconstruct.com.au>. Contains a fix that was: Reported-by: kernel test robot <lkp@intel.com>

Matt Johnston committed 4 years ago

Commit 63ed1aa1 parent 0de55a76 files · +329 −56Browse files

Showing the changes to include/uapi (1 of 6 files). Show all

Unified · Split

include/uapi/linux/mctp.h+18−0
@@ -44,7 +44,25 @@ struct sockaddr_mctp_ext { · 43 unmodified lines
4444
4545 #define MCTP_TAG_MASK 0x07
4646 #define MCTP_TAG_OWNER 0x08
47+#define MCTP_TAG_PREALLOC 0x10
4748
4849 #define MCTP_OPT_ADDR_EXT 1
4950
51+#define SIOCMCTPALLOCTAG (SIOCPROTOPRIVATE + 0)
52+#define SIOCMCTPDROPTAG (SIOCPROTOPRIVATE + 1)
53+
54+struct mctp_ioc_tag_ctl {
55+ mctp_eid_t peer_addr;
56+
57+ /* For SIOCMCTPALLOCTAG: must be passed as zero, kernel will
58+ * populate with the allocated tag value. Returned tag value will
59+ * always have TO and PREALLOC set.
60+ *
61+ * For SIOCMCTPDROPTAG: userspace provides tag value to drop, from
62+ * a prior SIOCMCTPALLOCTAG call (and so must have TO and PREALLOC set).
63+ */
64+ __u8 tag;
65+ __u16 flags;
66+};
67+
5068 #endif /* __UAPI_MCTP_H */