Commit 2fc77572 authored by Vishwanathapura, Niranjana's avatar Vishwanathapura, Niranjana Committed by Doug Ledford

IB/opa-vnic: RDMA NETDEV interface

Add rdma netdev interface to ib device structure allowing rdma netdev
devices to be allocated by ib clients.
Reviewed-by: default avatarDennis Dalessandro <dennis.dalessandro@intel.com>
Reviewed-by: default avatarIra Weiny <ira.weiny@intel.com>
Signed-off-by: default avatarNiranjana Vishwanathapura <niranjana.vishwanathapura@intel.com>
Signed-off-by: default avatarDoug Ledford <dledford@redhat.com>
parent c73690ca
...@@ -55,6 +55,7 @@ ...@@ -55,6 +55,7 @@
#include <net/ip.h> #include <net/ip.h>
#include <linux/string.h> #include <linux/string.h>
#include <linux/slab.h> #include <linux/slab.h>
#include <linux/netdevice.h>
#include <linux/if_link.h> #include <linux/if_link.h>
#include <linux/atomic.h> #include <linux/atomic.h>
...@@ -1877,6 +1878,24 @@ struct ib_port_immutable { ...@@ -1877,6 +1878,24 @@ struct ib_port_immutable {
u32 max_mad_size; 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 { struct ib_device {
/* Do not access @dma_device directly from ULP nor from HW drivers. */ /* Do not access @dma_device directly from ULP nor from HW drivers. */
struct device *dma_device; struct device *dma_device;
...@@ -2130,6 +2149,20 @@ struct ib_device { ...@@ -2130,6 +2149,20 @@ struct ib_device {
struct ib_rwq_ind_table_init_attr *init_attr, struct ib_rwq_ind_table_init_attr *init_attr,
struct ib_udata *udata); struct ib_udata *udata);
int (*destroy_rwq_ind_table)(struct ib_rwq_ind_table *wq_ind_table); 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 module *owner;
struct device dev; struct device dev;
......
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