Re: [PATCH 08/14] RDMA/ionic: Register auxiliary module for ionic ethernet adapter

Abhijit Gangurde
2025-04-28T04:34:28Z

On 4/25/25 22:40, Leon Romanovsky wrote:
> 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. Will address these in v2.

Abhijit

>
>> 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