Commit 8eb19e8e authored by Matan Barak's avatar Matan Barak Committed by Doug Ledford

IB/core: Expose ioctl interface through experimental Kconfig

Add CONFIG_INFINIBAND_EXP_USER_ACCESS that enables the ioctl
interface. This interface is experimental and is subject to change.
Signed-off-by: default avatarMatan Barak <matanb@mellanox.com>
Reviewed-by: default avatarYishai Hadas <yishaih@mellanox.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent 52427112
...@@ -34,6 +34,15 @@ config INFINIBAND_USER_ACCESS ...@@ -34,6 +34,15 @@ config INFINIBAND_USER_ACCESS
libibverbs, libibcm and a hardware driver library from libibverbs, libibcm and a hardware driver library from
<http://www.openfabrics.org/git/>. <http://www.openfabrics.org/git/>.
config INFINIBAND_EXP_USER_ACCESS
bool "Allow experimental support for Infiniband ABI"
depends on INFINIBAND_USER_ACCESS
---help---
IOCTL based ABI support for Infiniband. This allows userspace
to invoke the experimental IOCTL based ABI.
These commands are parsed via per-device parsing tree and
enables per-device features.
config INFINIBAND_USER_MEM config INFINIBAND_USER_MEM
bool bool
depends on INFINIBAND_USER_ACCESS != n depends on INFINIBAND_USER_ACCESS != n
......
...@@ -219,6 +219,8 @@ int uverbs_dealloc_mw(struct ib_mw *mw); ...@@ -219,6 +219,8 @@ int uverbs_dealloc_mw(struct ib_mw *mw);
void ib_uverbs_detach_umcast(struct ib_qp *qp, void ib_uverbs_detach_umcast(struct ib_qp *qp,
struct ib_uqp_object *uobj); struct ib_uqp_object *uobj);
long ib_uverbs_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);
struct ib_uverbs_flow_spec { struct ib_uverbs_flow_spec {
union { union {
union { union {
......
...@@ -939,6 +939,9 @@ static const struct file_operations uverbs_fops = { ...@@ -939,6 +939,9 @@ static const struct file_operations uverbs_fops = {
.open = ib_uverbs_open, .open = ib_uverbs_open,
.release = ib_uverbs_close, .release = ib_uverbs_close,
.llseek = no_llseek, .llseek = no_llseek,
#if IS_ENABLED(CONFIG_INFINIBAND_EXP_USER_ACCESS)
.unlocked_ioctl = ib_uverbs_ioctl,
#endif
}; };
static const struct file_operations uverbs_mmap_fops = { static const struct file_operations uverbs_mmap_fops = {
...@@ -948,6 +951,9 @@ static const struct file_operations uverbs_mmap_fops = { ...@@ -948,6 +951,9 @@ static const struct file_operations uverbs_mmap_fops = {
.open = ib_uverbs_open, .open = ib_uverbs_open,
.release = ib_uverbs_close, .release = ib_uverbs_close,
.llseek = no_llseek, .llseek = no_llseek,
#if IS_ENABLED(CONFIG_INFINIBAND_EXP_USER_ACCESS)
.unlocked_ioctl = ib_uverbs_ioctl,
#endif
}; };
static struct ib_client uverbs_client = { static struct ib_client uverbs_client = {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment