Name Modified Size InfoDownloads / Week
Parent folder
README 2012-08-29 3.9 kB
linux_igb_avb-2.3.tar.gz 2012-08-29 353.8 kB
Totals: 2 Items   357.7 kB 0
INTRODUCTION

This component demonstrates various features of the Intel I210 Ethernet controller.
These features can be used for developing Audio/Video Bridging applications, 
Industrial Ethernet applications which require precise timing control over frame 
transmission, or test harnesses for measuring system latencies and sampling events.

This component - igb_avb - is limited to the Intel I210 Ethernet controller. The kernel
module can be loaded in parallel to existing in-kernel igb modules which may be 
used on other supported Intel LAN controllers. Modifications are required to
the in-kernel drivers if the existing in-kernel igb driver has support for the Intel I210.

BUILDING

There are four primary components - kmod (for the kernel-mode igb_avb driver), 
lib (for the user-mode driver library), examples (for test applications), and
daemons (at present an MRP daemon required for establishing AVB streams).

To build, 'cd' into each of the respective directories, and execute 'make'.

The kernel igb module can be built which supports the latest Linux kernel
3.x PTP clock support - to enable, modify kmod/Makefile and enable -DCONFIG_PTP
as a build option (e.g. EXTRA_CFLAGS += -DCONFIG_PTP).

The example application uses the pciutils library - the latest version 
can be downloaded from < ftp://ftp.kernel.org/pub/software/utils/pciutils/ >.
Download and extract the library, and run 'make;make install;make install-lib'.

RUNNING

To install the kernel mode driver, you must have root permissions. Typically,
the driver is loaded by:
	<optional> sudo modprobe dca
	<optional> sudo modprobe ptp
	sudo insmod ./igb_avb.ko

As 3.4 and later kernels include support for the I210, you may need to 'rmmod igb'
before loading the igb_avb module.

Note that packets generated from the 'user-mode' libraries are not counted in 
ifconfig output, and likewise, if generating multicast traffic, the receiving
node must be registered to receive the traffic (or run the interface in promiscious
mode).

TIME SYNC

This package relies on using the linuxptp daemon to establish time
synchronization. The latest source for this is available here:

	git clone git://git.code.sf.net/p/linuxptp/code linuxptp-code

Type 'make' to build. This version has been tested with kernel 3.5.1.
Assuming kernel support is enabled, simply 'modprobe ptp' to load the 
required kernel mode components. Example command line to the daemon is:

	ptp4l -f gPTP.cfg -2 -P -i p11p1

Note the default gPTP.cfg file queries and times out relatively fast while
awaiting the transmit timestamps to complete. To adjust this, modify the
'tx_timestamp_retries' parameter to 400 (which roughly corresponds to 400 usec).

EXAMPLE APPLICATIONS

The test application - which simply streams timed packets - requires root permissions 
as well to execute and attach to the driver.
	sudo ./test

To exit the test app, hit Ctrl-C. The application gracefully tears down
the connection to the driver. If the application unexpectedly aborts the
kernel-mode driver also reclaims the various buffers and attempts to clean up.
The application should be able to re-initialize and use the transmit queues
without restarting the driver.

The 'simple_talker' application illustrates the various steps to publish a stream
and being streaming after a listener connects.

MRPD DAEMON

The MRP daemon is required to establish stream reservations with compatible AVB
infrastructure devices. The command line selectively enables MMRP (via the -m option),
MVRP (via the -v option), and MSRP (via the -s option). You must also specify the interface 
on which you want to bind the daemon to (e.g. -i eth2). The full command line typically appears
as follows:
	sudo ./mrpd -mvs -i eth2

Sample client applications - mrpctl, mrpq, mrpl - illustrates how to connect, query and add 
attributes to the MRP daemon.
Source: README, updated 2012-08-29