On Fri, Apr 25, 2025 at 03:46:06PM +0530, Abhijit Gangurde wrote: > On 4/24/25 18:38, Jason Gunthorpe wrote: > > On Wed, Apr 23, 2025 at 03:59:07PM +0530, Abhijit Gangurde wrote: > > > +static int ionic_aux_probe(struct auxiliary_device *adev, > > > + const struct auxiliary_device_id *id) > > > +{ > > > + struct ionic_aux_dev *ionic_adev; > > > + struct net_device *ndev; > > > + struct ionic_ibdev *dev; > > > + > > > + ionic_adev = container_of(adev, struct ionic_aux_dev, adev); > > > + ndev = ionic_api_get_netdev_from_handle(ionic_adev->handle); > > It must not do this, the net_device should not go into the IB driver, > > like this that will create a huge complex tangled mess. > > > > The netdev(s) come in indirectly through the gid table and through the > > net notifiers and ib_device_set_netdev() and they should only be > > touched in paths dealing with specific areas. > > > > So don't use things like netdev_err, we have ib_err/dev_err and > > related instead for IB drivers to use. > > Sure. Will remove storing of net_device in the IB driver and its > references in the next spin. Will wait for some more feedback > before rolling out v2. The problem is that coupling with net_device is so distracting that both of us are not really invested time into deep review of this series. Another problematic pattern is usage of "void *handle" to convey information between aux devices. Please use struct pointer instead of void for that. Thanks > > Thanks, > Abhijit > > > > > > +struct ionic_ibdev { > > > + struct ib_device ibdev; > > > + > > > + struct device *hwdev; > > > + struct net_device *ndev; > > Same here, this member should not exist, and it didn't hold a > > refcount for this pointer. > > > > Jason