So what?
If we don't allow to load a driver from the north interface, where should
they be loaded from??
Or are we saying that we go for a predefined list of driver only?

So drivers have to be .so files (because of autotools), but we don't give
the possibility to load a free driver??

Christophe

On 16 November 2016 at 11:45, Francois Ozog <francois.o...@linaro.org>
wrote:

> Hello,
>
> If the north API is the one visible by ODP applications then I don't think
> it is a good idea to expose that.
> DPDK exposed it at the beginning and is now internal.
>
> That said there must be a standard way to manage drivers fir the benefit
> of the device framework.
>
> I don't think the idea of integrating it with packetio open because
> packetio is not really a device. It is an abstract way of dealing with
> ports which may be hosted on a device (NIC) or on the platform (SoC).
> It can be done as a PoC (that's what I do with virtio-net exploratiry
> project) but that is not a long term solution.
>
> FF
>
>
> Le mercredi 16 novembre 2016, Christophe Milard <
> christophe.mil...@linaro.org> a écrit :
>
>> On 16 November 2016 at 10:07, Savolainen, Petri (Nokia - FI/Espoo)
>> <petri.savolai...@nokia-bell-labs.com> wrote:
>> >
>> >>  /**
>> >> + * Driver loading
>> >> + *
>> >> + * This function is used by the application to load NIC drivers into
>> ODP.
>> >> + * Calls to this function are optional, but should be performed (if
>> any)
>> >> + * after odp_init_global
>> >> + *
>> >> + *
>> >> + * @param filename        Driver shared lib (dynamic library)
>> >> + *
>> >> + * @retval 0 on success
>> >> + * @retval <0 on failure
>> >> + *
>> >> + */
>> >> +int odp_load_driver(const char *filename);
>> >
>> > Why application should explicitly need to load a driver ? Why it cannot
>> happen as part of odp_pktio_open() ?
>> >
>> > To me a better approach would be:
>> > * user reads implementation documentation or uses system commands to
>> find a list of available interfaces
>> > * odp_global_init() finds out available pktio interfaces and drivers
>> for those
>> > * application opens the interface the user commands (just like today)
>> > * pktio_open call loads the driver
>> >
>> > Or with more ODP support:
>> > * odp_global_init() finds out available pktio interfaces and drivers
>> for those
>> > * a new API call lists all available interfaces
>> > * application chooses an interface from the list and calls open
>> > * pktio_open call loads the driver
>> >
>> >
>> > -Petri
>>
>>
>> Having ODP finding the driver by itself means "hard-coding" the list
>> of available drivers (in the sense that ODP must know in advance what
>> drivers matches what interface and where to find these drivers).
>>
>> The approach above let people do their own driver and attach it to ODP
>> whithout any pre-requirements on ODP.
>> When we have a set of "drivers we like", nothing prevent us from
>> loading a default set of drivers at init.
>> Unless the driver name (and path) is given as part as the pktio device
>> name, which would just be awfull, we need such a load function to
>> enable private driver loading.
>>
>> Moreover, the driver must be loaded to be probed: The drivers must
>> tell what they can do, not ODP.
>>
>> I think the application should as a little aware as possible of
>> drivers (and what HW they match) but should be given a way to load
>> private drivers. The approach here enable that. Load your own driver
>> (or none if it is in the default set), then open pktios without
>> specifying any driver (note that 1 driver may be handling many
>> interfaces)
>>
>> I think having an API call to list available interfaces makes sense,
>> and does stress my proposal: Drivers must be loaded and probed to
>> build that list.
>>
>> Christophe.
>>
>
>
> --
> [image: Linaro] <http://www.linaro.org/>
> François-Frédéric Ozog | *Director Linaro Networking Group*
> T: +33.67221.6485
> francois.o...@linaro.org | Skype: ffozog
>
>
>

Reply via email to