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?
Jason
Yeah, I remember your suggestion that the ibdev should keep the same
lifecycle with its PCI device, and so does it now.
The initialization flow for erdma now:
probe:
- Hardware specified initialization
- IB device initialization
- Calling ib_register_device with ibdev->netdev == NULL
After probe, The ib device has been registered, but we left it in
invalid state.
To fully complete the initialization, we should set the ibdev->netdev.
And the newlink command in erdma only do one thing now: set the
ibdev->netdev if the rule matches, and it is uncorrelated with the
ib device lifecycle.
I think this may be the best way to link the netdev to ibdev for erdma.
Using netdev notifier is not good because we should register a netdev
notifier for the module.
If this way is not proper or there are some better ways, please let me
know.
Thanks,
Cheng Xu