Project Home
Project Home
Wiki
Wiki
Discussion Forums
Discussions
Project Information
Project Info
wiki1653: Drivers_wiki_page (Version 2)

Network Drivers#

Core Networking supports three variety of drivers. These are:

  • Native drivers: Drivers which have been developed from scratch for use with the io-pkt stack
  • io-net drivers: Drivers which were written for the legacy networking stack io-net
  • NetBSD Ported drivers: Driver source which was taken from the NetBSD source tree and ported to work with the io-pkt stack

The native and NetBSD drivers all hook directly into the stack in a similiar manner. io-net drivers interface through a "shim" layer which converts the io-net binary interface into the compatible io-pkt interface. We have a special driver (devnp-shim.so) which is automatically loaded up when you want to start an io-net driver.

Differences between ported NetBSD drivers and native drivers#

  • NetBSD ported drivers don't allow the stack to run in multi-threaded mode. NetBSD drivers don't have to worry about rx / tx threads running simultaneously when run inside of the NetBSD operating system so there isn't a need to have close attention paid to appropriate locking issues between rx and tx. For this reason, a configuration flag is, by default, set to indicate that the driver doesn't support multi-threaded access. This will result in the entire stack running in a single threaded mode of operation (if one driver isn't multi-threaded capable, no drivers will run with multiple threads). This flag can be changed once the driver has been carefully examined to ensure that there are no locking issues.
  • NetBSD drivers don't include support for Neutrino specific utilities such as "nicinfo".
  • Unless otherwise indicated, we will provide source and allow you to build NetBSD drivers that we've ported, but, unless we have full documentation from the silicon vendors, we won't be able to classify the device as supported.

Differences between io-net drivers and native drivers#

  • io-net drivers export a name space entry (/dev/enx). Native drivers do not.
  • You can unmount an io-net driver (umount /dev/enx). With a native driver, you have to destroy it (ifconfig tsec0 destroy).
  • io-net drivers are all prefixed with "en". Native drivers have different prefixes for different hardware (e.g. "tsec" for Freescales TSEC devices).
  • io-net drivers support the io-net devctl commands. Native drivers do not.
  • io-net drivers will be slower than native drivers since they use the same threading model as that used in io-net.

Ported NetBSD Drivers#

How do I port a NetBSD Driver#

Native Drivers#

How do I write a new Core Networking 6.4.0 Driver?#

Wireless Drivers#

Attachments:
Text iopkt_build_headers.tar.gz [Drivers_wiki_page/iopkt_build_headers.tar.gz]