aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Petter Selasky <hselasky@FreeBSD.org>2016-08-18 08:49:02 +0000
committerHans Petter Selasky <hselasky@FreeBSD.org>2016-08-18 08:49:02 +0000
commit7dc445f8d3e1748cd4b8128a59bfdd6945045924 (patch)
tree997386547c3cc3456f10e97504276321fb976114
parent9ab0e2a7e047dd37c466f693cdb44ee2a904de79 (diff)
downloadsrc-7dc445f8d3e1748cd4b8128a59bfdd6945045924.tar.gz
src-7dc445f8d3e1748cd4b8128a59bfdd6945045924.zip
Add support for setting blocking and non-blocking mode on /dev/rdma_cm
by returning success on FIONBIO and FIOASYNC IOCTLs. The actual flags handling is done by the kern_ioctl() function. Reported by: Alex Bowden <alex.bowden@outlook.com> Sponsored by: Mellanox Technologies MFC after: 1 week
Notes
Notes: svn path=/head/; revision=304342
-rw-r--r--sys/ofed/drivers/infiniband/core/ucma.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/sys/ofed/drivers/infiniband/core/ucma.c b/sys/ofed/drivers/infiniband/core/ucma.c
index 5f73b40b6405..4000aa20cd88 100644
--- a/sys/ofed/drivers/infiniband/core/ucma.c
+++ b/sys/ofed/drivers/infiniband/core/ucma.c
@@ -42,6 +42,8 @@
#include <linux/slab.h>
#include <linux/module.h>
+#include <sys/filio.h>
+
#include <rdma/rdma_user_cm.h>
#include <rdma/ib_marshall.h>
#include <rdma/rdma_cm.h>
@@ -1345,11 +1347,25 @@ static int ucma_close(struct inode *inode, struct file *filp)
return 0;
}
+static long
+ucma_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
+{
+
+ switch (cmd) {
+ case FIONBIO:
+ case FIOASYNC:
+ return (0);
+ default:
+ return (-ENOTTY);
+ }
+}
+
static const struct file_operations ucma_fops = {
.owner = THIS_MODULE,
.open = ucma_open,
.release = ucma_close,
.write = ucma_write,
+ .unlocked_ioctl = ucma_ioctl,
.poll = ucma_poll,
.llseek = no_llseek,
};