On Thu, Apr 10, 2025 at 11:21:37AM +0300, Leon Romanovsky wrote: > On Tue, Apr 08, 2025 at 02:47:51PM +0200, Larysa Zaremba wrote: > > From: Phani R Burra <phani.r.burra@xxxxxxxxx> > > > > Libeth will now support control queue setup and configuration APIs. > > These are mainly used for mailbox communication between drivers and > > control plane. > > > > Make use of the page pool support for managing controlq buffers. > > <...> > > > libeth-y := rx.o > > > > +obj-$(CONFIG_LIBETH_CP) += libeth_cp.o > > + > > +libeth_cp-y := controlq.o > > So why did you create separate module for it? > Now you have pci -> libeth -> libeth_cp -> ixd, with the potential races between ixd and libeth, am I right? > I am not sure what kind of races do you mean, all libeth modules themselves are stateless and will stay this way [0], all used data is owned by drivers. As for the module separation, I think there is no harm in keeping it modular. We intend to use basic libeth (libeth_rx) in drivers that for sure have no use for libeth_cp. libeth_pci and libeth_cp separation is more arbitral, as we have no plans for now to use them separately. Module dependencies are as follows: libeth_rx and libeth_pci do not depend on other modules. libeth_cp depends on both libeth_rx and libeth_pci. idpf directly uses libeth_pci, libeth_rx and libeth_cp. ixd directly uses libeth_cp and libeth_pci. [0] https://lore.kernel.org/netdev/61bfa880-6a88-4eac-bab7-040bf72a11ef@xxxxxxxxx/ > Thanks