rdma: Add support for the netlink extack

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>
Signed-off-by: David Ahern <dsahern@kernel.org>
This commit is contained in:
Patrisious Haddad 2021-01-03 08:17:06 +02:00 committed by David Ahern
parent 9bd498bfcd
commit 537995c6d5
2 changed files with 5 additions and 20 deletions

View File

@ -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)

View File

@ -666,18 +666,12 @@ int rd_send_msg(struct rd *rd)
{
int ret;
rd->nl = mnl_socket_open(NETLINK_RDMA);
rd->nl = mnlu_socket_open(NETLINK_RDMA);
if (!rd->nl) {
pr_err("Failed to open NETLINK_RDMA socket\n");
return -ENODEV;
}
ret = mnl_socket_bind(rd->nl, 0, MNL_SOCKET_AUTOPID);
if (ret < 0) {
pr_err("Failed to bind socket with err %d\n", ret);
goto err;
}
ret = mnl_socket_sendto(rd->nl, rd->nlh, rd->nlh->nlmsg_len);
if (ret < 0) {
pr_err("Failed to send to socket with err %d\n", ret);
@ -692,23 +686,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;
}