On Sat, Sep 19, 2020 at 07:43:28PM +0300, Oded Gabbay wrote: > It's probably heresy, but why do I need to integrate into the RDMA subsystem ? Hi Oded I don't know the RDMA subsystem at all. So i will give a more generic answer. Are you reinventing things which a subsystem core already has? The subsystem core will be well tested, since lots of devices use it. Because of this, subsystem cores generally have a lower bug count per line of code than driver code. Using core code means drivers are smaller, and smaller code has less bugs by definition. We as maintainers have to assume you are going to abandon the driver at some point, while the hardware still exists, and leave the community to maintain it. So a smaller driver, which makes heavy use of the core is much easier to maintain. By making use of core code, you also get freebies. Somebody adds new functionality to the core, your driver automatically gets it. Look at this from the opposite perspective. Say every driver implemented their own TCP/IP stack? Or DMA engine? SPI infrastructure? How big a nightmare would it be to maintain? In your case, some parts of you hardware looks a bit like RDMA? So you ideally want to use the core code from the RDMA subsystem. Maybe you just need some of the lower layers? Maybe you need to refactor some of the RDMA core to make it a library you can pick and choice the bits useful to you? What you really want to avoid is re-implementing stuff in your driver which is already in the core. Andrew