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: Matan Barak <matanb@mellanox.com> Reviewed-by: Yishai Hadas <yishaih@mellanox.com> Signed-off-by: Doug Ledford <dledford@redhat.com>
This commit is contained in:
parent
5242711294
commit
8eb19e8e7c
3 changed files with 17 additions and 0 deletions
|
@ -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);
|
||||||
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 = {
|
||||||
.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 = {
|
||||||
.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 = {
|
||||||
|
|
Loading…
Reference in a new issue