RE: [PATCH rdma-next 00/18] RDMA: Add support for ib_device_ops

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> -----Original Message-----
> From: Kamal Heib <kamalheib1@xxxxxxxxx>
> Sent: Wednesday, October 10, 2018 7:17 AM
> To: Parav Pandit <parav@xxxxxxxxxxxx>
> Cc: Doug Ledford <dledford@xxxxxxxxxx>; Jason Gunthorpe <jgg@xxxxxxxx>;
> linux-rdma@xxxxxxxxxxxxxxx
> Subject: Re: [PATCH rdma-next 00/18] RDMA: Add support for ib_device_ops
> 
> On Tue, Oct 09, 2018 at 07:06:56PM +0000, Parav Pandit wrote:
> >
> >
> > > -----Original Message-----
> > > From: linux-rdma-owner@xxxxxxxxxxxxxxx <linux-rdma-
> > > owner@xxxxxxxxxxxxxxx> On Behalf Of Kamal Heib
> > > Sent: Tuesday, October 9, 2018 1:45 PM
> > > To: Doug Ledford <dledford@xxxxxxxxxx>; Jason Gunthorpe
> > > <jgg@xxxxxxxx>
> > > Cc: linux-rdma@xxxxxxxxxxxxxxx; kamalheib1@xxxxxxxxx
> > > Subject: [PATCH rdma-next 00/18] RDMA: Add support for ib_device_ops
> > >
> > > This patchset introduce a new structure that will contain all the
> > > infiniband device operations, the structure will be used by the
> > > providers to initialize their supported operations. This patchset
> > > also includes the required changes in the core and ulps to start using it.
> > >
> > > Thanks,
> > > Kamal
> > >
> > > Kamal Heib (18):
> > >   RDMA/core: Introduce ib_device_ops
> > >   RDMA/bnxt_re: Initialize ib_device_ops struct
> > >   RDMA/cxgb3: Initialize ib_device_ops struct
> > >   RDMA/cxgb4: Initialize ib_device_ops struct
> > >   RDMA/hfi1: Initialize ib_device_ops struct
> > >   RDMA/hns: Initialize ib_device_ops struct
> > >   RDMA/i40iw: Initialize ib_device_ops struct
> > >   RDMA/mlx4: Initialize ib_device_ops struct
> > >   RDMA/mlx5: Initialize ib_device_ops struct
> > >   RDMA/mthca: Initialize ib_device_ops struct
> > >   RDMA/nes: Initialize ib_device_ops struct
> > >   RDMA/ocrdma: Initialize ib_device_ops struct
> > >   RDMA/qedr: Initialize ib_device_ops struct
> > >   RDMA/qib: Initialize ib_device_ops struct
> > >   RDMA/usnic: Initialize ib_device_ops struct
> > >   RDMA/vmw_pvrdma: Initialize ib_device_ops struct
> > >   RDMA/rxe: Initialize ib_device_ops struct
> > >   RDMA: Start use ib_device_ops
> > >
> > >  drivers/infiniband/core/cache.c                    |  12 +-
> > >  drivers/infiniband/core/core_priv.h                |  12 +-
> > >  drivers/infiniband/core/cq.c                       |   6 +-
> > >  drivers/infiniband/core/device.c                   | 136 +++++++++++--
> > >  drivers/infiniband/core/fmr_pool.c                 |   4 +-
> > >  drivers/infiniband/core/mad.c                      |  24 +--
> > >  drivers/infiniband/core/nldev.c                    |   4 +-
> > >  drivers/infiniband/core/opa_smi.h                  |   4 +-
> > >  drivers/infiniband/core/rdma_core.c                |   6 +-
> > >  drivers/infiniband/core/security.c                 |   8 +-
> > >  drivers/infiniband/core/smi.h                      |   4 +-
> > >  drivers/infiniband/core/sysfs.c                    |  26 +--
> > >  drivers/infiniband/core/uverbs_cmd.c               |  64 +++---
> > >  drivers/infiniband/core/uverbs_main.c              |  14 +-
> > >  drivers/infiniband/core/uverbs_std_types.c         |   2 +-
> > >  .../infiniband/core/uverbs_std_types_counters.c    |  10 +-
> > >  drivers/infiniband/core/uverbs_std_types_cq.c      |   4 +-
> > >  drivers/infiniband/core/uverbs_std_types_dm.c      |   6 +-
> > >  .../infiniband/core/uverbs_std_types_flow_action.c |  14 +-
> > >  drivers/infiniband/core/uverbs_std_types_mr.c      |   4 +-
> > >  drivers/infiniband/core/verbs.c                    | 149 +++++++-------
> > >  drivers/infiniband/hw/bnxt_re/main.c               |  97 +++++----
> > >  drivers/infiniband/hw/cxgb3/iwch_provider.c        |  64 +++---
> > >  drivers/infiniband/hw/cxgb4/provider.c             |  74 +++----
> > >  drivers/infiniband/hw/hfi1/verbs.c                 |  19 +-
> > >  drivers/infiniband/hw/hns/hns_roce_device.h        |   1 +
> > >  drivers/infiniband/hw/hns/hns_roce_hw_v1.c         |  11 ++
> > >  drivers/infiniband/hw/hns/hns_roce_hw_v2.c         |  11 ++
> > >  drivers/infiniband/hw/hns/hns_roce_main.c          |  91 ++++-----
> > >  drivers/infiniband/hw/i40iw/i40iw_cm.c             |   2 +-
> > >  drivers/infiniband/hw/i40iw/i40iw_verbs.c          |  66 ++++---
> > >  drivers/infiniband/hw/mlx4/alias_GUID.c            |   2 +-
> > >  drivers/infiniband/hw/mlx4/main.c                  | 166 +++++++++-------
> > >  drivers/infiniband/hw/mlx5/main.c                  | 220 ++++++++++++---------
> > >  drivers/infiniband/hw/mthca/mthca_provider.c       | 139 ++++++++-----
> > >  drivers/infiniband/hw/nes/nes_cm.c                 |   2 +-
> > >  drivers/infiniband/hw/nes/nes_verbs.c              |  66 ++++---
> > >  drivers/infiniband/hw/ocrdma/ocrdma_main.c         |  92 ++++-----
> > >  drivers/infiniband/hw/qedr/main.c                  | 103 +++++-----
> > >  drivers/infiniband/hw/qib/qib_verbs.c              |   8 +-
> > >  drivers/infiniband/hw/usnic/usnic_ib_main.c        |  61 +++---
> > >  drivers/infiniband/hw/vmw_pvrdma/pvrdma_main.c     |  82 ++++----
> > >  drivers/infiniband/sw/rdmavt/vt.c                  |  90 ++++-----
> > >  drivers/infiniband/sw/rxe/rxe_verbs.c              |  90 +++++----
> > >  drivers/infiniband/ulp/ipoib/ipoib_main.c          |  12 +-
> > >  drivers/infiniband/ulp/iser/iser_memory.c          |   4 +-
> > >  drivers/infiniband/ulp/opa_vnic/opa_vnic_netdev.c  |   8 +-
> > >  drivers/infiniband/ulp/srp/ib_srp.c                |   6 +-
> > >  include/rdma/ib_verbs.h                            | 212 ++++++++------------
> > >  net/sunrpc/xprtrdma/fmr_ops.c                      |   2 +-
> > >  50 files changed, 1257 insertions(+), 1057 deletions(-)
> > >
> > > --
> > > 2.14.4
> >
> > I am not sure if this change is needed.
> 
> The idea behind this change is to make some order in the IB device structure
> by moving all the IB device operations to one place under the new
> ib_device_ops structure.
> 
> > But if an ops structure is defined, there should be logical useful group
> should exist for the ops.
> >
> > Such as
> > 1. datapath_ops (post_send, post_recv, poll_cq, req_notify_cq), which can
> fall in same cacheline.
> > 2. resource_ops(create, destroy, query, modify of qp, cq, mr, ah, srq)
> > 3. gid_ops(query, add, del) 4. vf_ops(config_get, config_set, stats)
> > 5. stats_ops(alloc, free, get) This aligns to other part of kernel,
> > one example is netdev ops (rtnl, ndo, dcbnl, vf).
> >
> >
> 
> Basiclly, I'm fine with the idea of creating different operations groups based
> on common logic, but I'm not sure if the netdevice operations is a good
> example because it includes operations for VF, stats, tunnel, fcoe, fdb and
> etc.
And similarly we have operations for rdma networking devices too on VFs, stats, resources.
At minimum 5 broad logical groups I posted above.




[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux