-
Notifications
You must be signed in to change notification settings - Fork 4
Intel ixgbe 82599 UIO driver
License
sora/uio-82599
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
UIO-IXGBE - user-space library for Intel 10Gigabit Ethernet adapters. UIO-IXGBE provides direct HW interfaces 1. Overview UIO-IXGBE is a user-space library for Intel 10Gigabit Ethernet adapters. It implements what is often referred to as "OS bypass" mechanism, where fast path processing and RX/TX data transfers are done without kernel assistance (i.e. no system calls). Application manipulates RX and TX descriptors directly (through the library API). Data is transfered via DMA directly to/from user accessible memory, which is mapped only once and therefor does not require expensive remapping for each transfer. This effectively reduces SW processing overhead of the data transfers to nearly zero. For example to trigger the transmission of an Ethernet frame application has to perform a single 32bit MMIO (memory mapped IO) write (assuming that data resides in the buffer allocated by UIO-DMA). The rest (DMA transfer, etc) will be done by the HW. Allocation and management of the DMA memory areas is done via UIO-DMA. 2. Kernel module UIO-IXGBE requires kernel support for certain functions like PCI management, buffer allocation and memory mapping. That support is provided by the standalone 'uio-ixgbe' kernel back-end driver. Source of the driver comes with this package and will be compiled alone with the user-space code (you need configured kernel sources for that of course). uio-ixgbe kernel backend does not include hotplug tables and will not be loaded automatically. This is done to avoid device conflicts between in-kernel IXGBE drivers. It can either be loaded manually by running 'modprobe uio-ixgbe' or via UDEV rules. Typicall UIO-IXGBE UDEV rule looks like this: ACTION=="add", KERNEL=="0000:0c:00.1", RUN+="/sbin/pcibind --device $kernel --driver uio-ixgbe" Above rule will bind PCI device 0000:0c:00.1 to the 'uio-ixgbe' module during machine startup. Sample UDEV rule file is included in the package. See UDEV documentation for more details. Once loaded kernel backend creates /dev/uio-ixgbe device node. That node is used by user-space library to open and configure devices. 4. Device names Currently devices can be referred to by: - Full PCI ID of the E1000 adapter PCI IDs can be obtained with 'lspci' utility lspci ... 05:04.0 Ethernet controller: Intel Corporation 82545GM Gigabit Ethernet Controller (rev 04) ... PCI IDs displayed by the lspci utility must be prefixed with PCI domain, which is "0000:" on most machines. Use lspci -t to find out correct PCI domain for your system. - Enumerated device id. UIO-IXGBE assignes enumerated id to each device '#0' , '#1', ... 5. Build and install Nothing special in here. ./bootstrap ./configure --prefix=/usr make make install Note: You do not have to run ./bootstrap if ./configure script already exists. Also --prefix=/usr is obviously optional. Library can be installed anywhere.
About
Intel ixgbe 82599 UIO driver
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published