From: Chiara Meiohas <cmeiohas@xxxxxxxxxx> Extend the "rdma sys" command to display whether RDMA monitoring is supported. Example output for kernel where monitoring is supported: $ rdma sys show netns shared privileged-qkey off monitor on copy-on-fork on Example output for kernel where monitoring is not supported: $ rdma sys show netns shared privileged-qkey off monitor off copy-on-fork on Signed-off-by: Chiara Meiohas <cmeiohas@xxxxxxxxxx> Signed-off-by: Michael Guralnik <michaelgur@xxxxxxxxxx> --- man/man8/rdma-system.8 | 9 +++++---- rdma/sys.c | 6 ++++++ rdma/utils.c | 1 + 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/man/man8/rdma-system.8 b/man/man8/rdma-system.8 index 554938eb..5373027a 100644 --- a/man/man8/rdma-system.8 +++ b/man/man8/rdma-system.8 @@ -38,8 +38,8 @@ rdma-system \- RDMA subsystem configuration .SS rdma system set - set RDMA subsystem network namespace mode or privileged qkey mode -.SS rdma system show - display RDMA subsystem network namespace mode and -privileged qkey state +.SS rdma system show - display RDMA subsystem network namespace mode, +privileged qkey state and whether RDMA monitoring is supported. .PP .I "NEWMODE" @@ -66,8 +66,8 @@ controlled QKEY or not. .PP rdma system show .RS 4 -Shows the state of RDMA subsystem network namespace mode on the system and -the state of privileged qkey parameter. +Shows the state of RDMA subsystem network namespace mode on the system, +the state of privileged qkey parameter and whether RDMA monitor is supported. .RE .PP rdma system set netns exclusive @@ -100,6 +100,7 @@ is *not* allowed to specify a controlled QKEY. .BR rdma (8), .BR rdma-link (8), .BR rdma-resource (8), +.BR rdma-monitor (8), .BR network_namespaces (7), .BR namespaces (7), .br diff --git a/rdma/sys.c b/rdma/sys.c index 7dbe4409..9f538e41 100644 --- a/rdma/sys.c +++ b/rdma/sys.c @@ -20,6 +20,7 @@ static const char *netns_modes_str[] = { static int sys_show_parse_cb(const struct nlmsghdr *nlh, void *data) { struct nlattr *tb[RDMA_NLDEV_ATTR_MAX] = {}; + uint8_t mon_mode = 0; bool cof = false; mnl_attr_parse(nlh, 0, rd_attr_cb, tb); @@ -48,6 +49,10 @@ static int sys_show_parse_cb(const struct nlmsghdr *nlh, void *data) } + if (tb[RDMA_NLDEV_SYS_ATTR_MONITOR_MODE]) + mon_mode = mnl_attr_get_u8(tb[RDMA_NLDEV_SYS_ATTR_MONITOR_MODE]); + print_on_off(PRINT_ANY, "monitor", "monitor %s ", mon_mode); + if (tb[RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK]) cof = mnl_attr_get_u8(tb[RDMA_NLDEV_SYS_ATTR_COPY_ON_FORK]); @@ -77,6 +82,7 @@ static int sys_show(struct rd *rd) { NULL, sys_show_no_args}, { "netns", sys_show_no_args}, { "privileged-qkey", sys_show_no_args}, + { "monitor", sys_show_no_args}, { 0 } }; diff --git a/rdma/utils.c b/rdma/utils.c index bc104e0f..07cb0224 100644 --- a/rdma/utils.c +++ b/rdma/utils.c @@ -478,6 +478,7 @@ static const enum mnl_attr_data_type nldev_policy[RDMA_NLDEV_ATTR_MAX] = { [RDMA_NLDEV_ATTR_DEV_TYPE] = MNL_TYPE_U8, [RDMA_NLDEV_ATTR_PARENT_NAME] = MNL_TYPE_STRING, [RDMA_NLDEV_ATTR_EVENT_TYPE] = MNL_TYPE_U8, + [RDMA_NLDEV_SYS_ATTR_MONITOR_MODE] = MNL_TYPE_U8, }; static int rd_attr_check(const struct nlattr *attr, int *typep) -- 2.17.2