Hi Ivan,
have you had a look at conditional session routes using '<if-args>'? Admittedly, it is not very well documented. Let's have a look at the the example given here:
http://genode.org/documentation/release-notes/11.11#Stub-driver_support
In this example, one instance of L4Linux uses two block sessions that should be routed to different servers. Using the '<if-arg>' node, the routing is made depending on the label of the session ("l4android -> sda" versus "l4android -> sdb"). L4Linux just passes the label "sda" or "sdb" as argument to the 'Block::Connection' constructor. Couldn't a similar scheme work also for routing multiple Nic sessions to different Nic services? If you think so, we could add a label constructor argument to 'Nic::Connection', too.
Heads-up warning: Recently, I slightly changed the label matching implementation of the '<if-arg>' mechanism. See here:
https://github.com/genodelabs/genode/commit/277af913765f7e82b0f2a236e6b390ba...
So with the new version, the matching string would be just "sda" instead of "l4andriod -> sda".
*I’m trying to implement virtual network between two instances of the L4Linux. Moreover, each L4Linux has access to own ethernet controller. Genode hasn’t support two NIC drivers yet. It not work because each NIC try to use one IRQ and interrupt handler doesn't work correct. It can be solved by remapping PCI interrupts. The interrupt handler was temporarily moved to PCI driver. But it isn’t a good solution.
There is currently no support for more than one NIC. In the presence of multiple networking adapters, we need a way to tell the driver, which NIC to use (e.g., using <config> parameters).
I wonder about your IRQ problems. Having multiple devices to share one IRQ is expected to work. Maybe, your IRQ issues stem from a missing ACPI driver?
... I think it would be nice to have session name can be changed in the config like binary executable name and session name for connection can be specified at runtime. This may look like: config: <provides> <service name=”Nic2” base_name=”Nic”/></provides> and source: Nic::Connection nic(“Nic2”); Is it possible? Maybe you have another solution?*
I would appreciate your feedback on how the '<if-arg>' mechanism works for you. At the first glance, I looks simpler than the introduction of aliases for service names. What do you think?
Cheers Norman