netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Leon Romanovsky <leon@kernel.org>
To: David Ahern <dsahern@gmail.com>
Cc: Patrisious Haddad <phaddad@nvidia.com>,
	Doug Ledford <dledford@redhat.com>,
	Jason Gunthorpe <jgg@nvidia.com>,
	linux-netdev <netdev@vger.kernel.org>,
	RDMA mailing list <linux-rdma@vger.kernel.org>
Subject: [PATCH iproute2-next] rdma: Add support for the netlink extack
Date: Thu, 31 Dec 2020 07:42:17 +0200	[thread overview]
Message-ID: <20201231054217.372274-1-leon@kernel.org> (raw)

From: Patrisious Haddad <phaddad@nvidia.com>

Add support in rdma for extack errors to be received
in userspace when sent from kernel, so now netlink extack
error messages sent from kernel would be printed for the
user.

Signed-off-by: Patrisious Haddad <phaddad@nvidia.com>
Signed-off-by: Leon Romanovsky <leonro@nvidia.com>
---
Kernel part:
https://lore.kernel.org/linux-rdma/20201230130240.180737-1-leon@kernel.org
---
 rdma/rdma.h  |  1 +
 rdma/utils.c | 24 ++++++++++--------------
 2 files changed, 11 insertions(+), 14 deletions(-)

diff --git a/rdma/rdma.h b/rdma/rdma.h
index fc8bcf09..470e11c8 100644
--- a/rdma/rdma.h
+++ b/rdma/rdma.h
@@ -19,6 +19,7 @@

 #include "list.h"
 #include "utils.h"
+#include "mnl_utils.h"
 #include "json_print.h"

 #define pr_err(args...) fprintf(stderr, ##args)
diff --git a/rdma/utils.c b/rdma/utils.c
index 2a201aa4..927e2107 100644
--- a/rdma/utils.c
+++ b/rdma/utils.c
@@ -664,7 +664,7 @@ void rd_prepare_msg(struct rd *rd, uint32_t cmd, uint32_t *seq, uint16_t flags)

 int rd_send_msg(struct rd *rd)
 {
-	int ret;
+	int ret, one;

 	rd->nl = mnl_socket_open(NETLINK_RDMA);
 	if (!rd->nl) {
@@ -672,6 +672,12 @@ int rd_send_msg(struct rd *rd)
 		return -ENODEV;
 	}

+	ret = mnl_socket_setsockopt(rd->nl, NETLINK_EXT_ACK, &one, sizeof(one));
+	if (ret < 0) {
+		pr_err("Failed to set socket option with err %d\n", ret);
+		goto err;
+	}
+
 	ret = mnl_socket_bind(rd->nl, 0, MNL_SOCKET_AUTOPID);
 	if (ret < 0) {
 		pr_err("Failed to bind socket with err %d\n", ret);
@@ -692,23 +698,13 @@ err:

 int rd_recv_msg(struct rd *rd, mnl_cb_t callback, void *data, unsigned int seq)
 {
-	int ret;
-	unsigned int portid;
 	char buf[MNL_SOCKET_BUFFER_SIZE];
+	int ret;

-	portid = mnl_socket_get_portid(rd->nl);
-	do {
-		ret = mnl_socket_recvfrom(rd->nl, buf, sizeof(buf));
-		if (ret <= 0)
-			break;
-
-		ret = mnl_cb_run(buf, ret, seq, portid, callback, data);
-	} while (ret > 0);
-
+	ret = mnlu_socket_recv_run(rd->nl, seq, buf, MNL_SOCKET_BUFFER_SIZE,
+				   callback, data);
 	if (ret < 0 && !rd->suppress_errors)
 		perror("error");
-
-	mnl_socket_close(rd->nl);
 	return ret;
 }

--
2.29.2


             reply	other threads:[~2020-12-31  5:43 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-31  5:42 Leon Romanovsky [this message]
2020-12-31 16:18 ` [PATCH iproute2-next] rdma: Add support for the netlink extack David Ahern
2021-01-03  5:56   ` Leon Romanovsky

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201231054217.372274-1-leon@kernel.org \
    --to=leon@kernel.org \
    --cc=dledford@redhat.com \
    --cc=dsahern@gmail.com \
    --cc=jgg@nvidia.com \
    --cc=linux-rdma@vger.kernel.org \
    --cc=netdev@vger.kernel.org \
    --cc=phaddad@nvidia.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).