On Wed, May 18, 2022 at 04:30:33PM +0800, Cheng Xu wrote: > > > On 5/10/22 9:17 PM, Jason Gunthorpe wrote: > > On Thu, Apr 21, 2022 at 03:17:45PM +0800, Cheng Xu wrote: > > > > > +static struct rdma_link_ops erdma_link_ops = { > > > + .type = "erdma", > > > + .newlink = erdma_newlink, > > > +}; > > > > Why is there still a newlink? > > > > Hello, Jason, > > About this issue, I have another idea, more simple and reasonable. > > Maybe erdma driver doesn't need to link to a net device in kernel. In > the core code, the ib_device_get_netdev has several use cases: > > 1). query port info in netlink > 2). get eth speed for IB (ib_get_eth_speed) > 3). enumerate all RoCE ports (ib_enum_roce_netdev) > 4). iw_query_port > > The cases related to erdma is 4). But we change it in our patch 02/12. > So, it seems all right that we do not link erdma to a net device. > > * I also test this solution, it works for both perftest and NoF. * > > Another issue is how to get the port state and attributes without > net device. For this, erdma can get it from HW directly. > > So, I think this may be the final solution. (BTW, I have gone over > the rdma drivers, EFA does in this way, it also has two separated > devices for net and rdma. It inspired me). I'm not sure this works for an iWarp device - various things expect to know the netdevice to know how to relate IP addresses to the iWarp stuff - but then I don't really know iWarp. If it works at all it is not a great idea. EFA gets by because it doesn't use IP addressing at all. Jason