mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-14 06:24:53 +08:00
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: 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>
This commit is contained in:
parent
c73690ca16
commit
2fc7757264
@ -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>
|
||||
@ -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;
|
||||
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user