Skip to content

Commit

Permalink
IB/opa-vnic: RDMA NETDEV interface
Browse files Browse the repository at this point in the history
Add rdma netdev interface to ib device structure allowing rdma netdev
devices to be allocated by ib clients.

Reviewed-by: Dennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: Ira Weiny <ira.weiny@intel.com>
Signed-off-by: Niranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: Doug Ledford <dledford@redhat.com>
  • Loading branch information
Vishwanathapura, Niranjana authored and Doug Ledford committed Apr 20, 2017
1 parent c73690c commit 2fc7757
Showing 1 changed file with 33 additions and 0 deletions.
33 changes: 33 additions & 0 deletions include/rdma/ib_verbs.h
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@
#include <net/ip.h>
#include <linux/string.h>
#include <linux/slab.h>
#include <linux/netdevice.h>

#include <linux/if_link.h>
#include <linux/atomic.h>
Expand Down Expand Up @@ -1877,6 +1878,24 @@ struct ib_port_immutable {
u32 max_mad_size;
};

/* rdma netdev type - specifies protocol type */
enum rdma_netdev_t {
RDMA_NETDEV_OPA_VNIC
};

/**
* struct rdma_netdev - rdma netdev
* For cases where netstack interfacing is required.
*/
struct rdma_netdev {
void *clnt_priv;
struct ib_device *hca;
u8 port_num;

/* control functions */
void (*set_id)(struct net_device *netdev, int id);
};

struct ib_device {
/* Do not access @dma_device directly from ULP nor from HW drivers. */
struct device *dma_device;
Expand Down Expand Up @@ -2130,6 +2149,20 @@ struct ib_device {
struct ib_rwq_ind_table_init_attr *init_attr,
struct ib_udata *udata);
int (*destroy_rwq_ind_table)(struct ib_rwq_ind_table *wq_ind_table);
/**
* rdma netdev operations
*
* Driver implementing alloc_rdma_netdev must return -EOPNOTSUPP if it
* doesn't support the specified rdma netdev type.
*/
struct net_device *(*alloc_rdma_netdev)(
struct ib_device *device,
u8 port_num,
enum rdma_netdev_t type,
const char *name,
unsigned char name_assign_type,
void (*setup)(struct net_device *));
void (*free_rdma_netdev)(struct net_device *netdev);

struct module *owner;
struct device dev;
Expand Down

0 comments on commit 2fc7757

Please sign in to comment.