[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Minios-devel] [UNIKRAFT PATCH v5 00/11] lib/uknetdev: Unikraft Network API

Introduces the Unikraft Network API, that acts as a generalized
interface between network drivers and network stack implementations
(or low level networking applications).

Using the function definitions in netdev_core.h, the driver should
include netdev_driver, implement the functions in uk_netdev_opts and
fill some fields from uk_netdev.
The user-facing part of the API is in netdev.h. The network stack
glue code can use these functions to configure network devices, as
well as send and receive packets.

Inspired from from DPDK RTE Ethernet API.

Changes since v3:
- Introduce header with defintions intended for drivers (netdev_driver.h)
- Introduce netbuf abstraction for scattered and zero-copy I/O.
  Abstraction is defined to enable cheap conversion between a stack's
  packet format and netbuf.
- Multi-queue support
- Event dispatching is done within libuknetdev (configurable with
  or without bottom-half threads). Threading code should not be necessary
  anymore in the driver code.
- Netdev state fully managed by libuknetdev layer
- Remove network device names, we expect that networks stacks will add
  this functionality by themselves
- Introduce driver name querying
- Remove incomplete netdev closing code for now

Changes since v4:
- Add reference to DPDK
- Define following API functions as static inline
  - uk_netbuf_ref()
  - uk_netdev_rxq_intr_enable()
  - uk_netdev_rxq_intr_disable()
- Made following function "error-safe", API users can expect that the
  function never returns an error
  - uk_netdev_mtu_get()
  - uk_netdev_promiscuous_get()
- Rename uk_netbuf_refcount_single() to uk_netbuf_refcount_single_get()
- Corrected description of some API interfaces
- Corrected typos in some comments

Razvan Cojocaru (7):
  lib/uknetdev: Library skeleton
  lib/uknetdev: Netdev registration
  lib/uknetdev: Netdev initialization
  lib/uknetdev: Hardware address interfaces
  lib/uknetdev: Promiscuous mode interfaces
  lib/uknetdev: MTU interfaces
  lib/uknetdev: Packet reception and transmission interfaces

Simon Kuenzer (4):
  lib/uknetdev: Introduce Netbufs
  lib/uknetdev: Netbuf chaining
  lib/uknetdev: Netbuf refcounting and releasing
  lib/uknetdev: Netbuf headroom and tailroom helpers

 lib/Config.uk                           |   1 +
 lib/Makefile.uk                         |   1 +
 lib/uknetdev/Config.uk                  |  32 ++
 lib/uknetdev/Makefile.uk                |   7 +
 lib/uknetdev/exportsyms.uk              |  31 ++
 lib/uknetdev/include/uk/netbuf.h        | 528 ++++++++++++++++++++++++++++++++
 lib/uknetdev/include/uk/netdev.h        | 520 +++++++++++++++++++++++++++++++
 lib/uknetdev/include/uk/netdev_core.h   | 375 +++++++++++++++++++++++
 lib/uknetdev/include/uk/netdev_driver.h | 102 ++++++
 lib/uknetdev/netbuf.c                   | 292 ++++++++++++++++++
 lib/uknetdev/netdev.c                   | 526 +++++++++++++++++++++++++++++++
 11 files changed, 2415 insertions(+)
 create mode 100644 lib/uknetdev/Config.uk
 create mode 100644 lib/uknetdev/Makefile.uk
 create mode 100644 lib/uknetdev/exportsyms.uk
 create mode 100644 lib/uknetdev/include/uk/netbuf.h
 create mode 100644 lib/uknetdev/include/uk/netdev.h
 create mode 100644 lib/uknetdev/include/uk/netdev_core.h
 create mode 100644 lib/uknetdev/include/uk/netdev_driver.h
 create mode 100644 lib/uknetdev/netbuf.c
 create mode 100644 lib/uknetdev/netdev.c


Minios-devel mailing list



Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.