Hi 

> -----Original Message-----
> From: linux-rdma-ow...@vger.kernel.org [mailto:linux-rdma-
> ow...@vger.kernel.org] On Behalf Of Vishwanathapura, Niranjana
> Sent: Tuesday, February 7, 2017 2:23 PM
> To: dledf...@redhat.com
> Cc: linux-r...@vger.kernel.org; netdev@vger.kernel.org;
> dennis.dalessan...@intel.com; ira.we...@intel.com; Niranjana
> Vishwanathapura <niranjana.vishwanathap...@intel.com>
> Subject: [RFC v3 02/11] IB/hfi-vnic: Virtual Network Interface Controller
> (VNIC) interface
> 
> Add rdma netdev interface to ib device structure allowing rdma netdev
> devices to be allocated by ib clients.
> Define HFI VNIC interface between hardware independent VNIC
> functionality and the hardware dependent VNIC functionality.
> 
> Reviewed-by: Dennis Dalessandro <dennis.dalessan...@intel.com>
> Reviewed-by: Ira Weiny <ira.we...@intel.com>
> Signed-off-by: Niranjana Vishwanathapura
> <niranjana.vishwanathap...@intel.com>
> ---
>  struct ib_device {
>       struct device                *dma_device;
> 
> @@ -2096,6 +2114,15 @@ 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 */
> +     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 ib_dma_mapping_ops   *dma_ops;
> 
>       struct module               *owner;

As its clear from the cover letter and from the request to place this in 
drivers/infiniband/ulp,
Instead of increasing the ib_dev structure further,
Can you change the code to make use of ib_register_client() and friend 
functions to register vnic as ULP.
(similar to other ULP such as uverbs, srp, ipoib).
This will also allow you get to get notified for removing the vnic device when 
underlying rdma device gets removed.
Based on the property that gets exposed by the ibdev, vnic driver filters 
whether it needs to load its vnic to specific device or not.
This way modules are isolated between core and ULP little better.
Would it work for you?

Reply via email to