On Mon, Nov 21, 2016 at 04:31:18PM -0700, Jason Gunthorpe wrote:
>>>>+ ida_init(&hfi_vnic_ctrl_ida);
>>>>+ idr_init(&hfi_vnic_idr);
>>>>+
>>>>+ rc = bus_register(&hfi_vnic_bus);
>>>
>>>Why on earth do we need this? Didn't I give you enough grief for the
>>>psm stuff and now you want to create an entire subystem hidden away!?
>>>
>>>Use some netlink scheme to control your vnic like the rest of the net
>>>stack..
>>>
>>
>>The hfi_vnic_bus is only abstracting the HW independent functionality (like
>>Ethernet interface, encapsulation, IB MAD interface etc) with the HW
>>dependent functionality (sending/receiving packets on the wire).
>>Thus providing a cleaner interface between HW independent hfi_vnic Ethernet
>>and Control drivers and the HW dependent HFI1 driver.
>
>That doesn't explain anything, sound like you don't need it so get rid
>of it.
>>There is no other User interface here other than the standard Ethernet
>>interface through network stack.
>
>Good, then this isn't needed, because it doesn't provide a user interface.
>
Can you explain what exactly you are asking to get rid of here and why?
Get rid of the bus_register/etc as drivers do not get to call this.
There are many example drivers in kernel which are using bus_register() in
an initcall.
We could add a custom Interface between HFI1 driver and hfi_vnic drivers
without involving a bus.
But using the existing bus model gave a lot of in-built flexibility in
decoupling devices from the drivers.
Niranjana
Jason