diff --git a/INSTALL b/INSTALL index 124bd2b..545fdc9 100644 --- a/INSTALL +++ b/INSTALL @@ -109,6 +109,13 @@ distribution in the ordinary way using "configure" and "make". % ./configure CC=gcc-4.2 + If you have hardware that supports accelerated OpenFlow switching + and you have obtained a hardware table library for your hardware + and extracted it into the OpenFlow reference distribution source + tree, then you may also enable building support for the hardware + switch table with --enable-hw-lib. For more information, read + README.hwtables at the root of the OpenFlow distribution tree. + The configure script accepts a number of other options and honors additional environment variables. For a full list, invoke configure with the --help option. diff --git a/README.hwtables b/README.hwtables index 7b73e42..6d98250 100644 --- a/README.hwtables +++ b/README.hwtables @@ -10,35 +10,30 @@ expected to handle any incoming packets that it can on its own. Any packets that it cannot handle itself it may pass up to the software table implementations. -Hardware table implementation are built as separate kernel modules -that may be loaded after the openflow module. At most one hardware -table module may be loaded at a time. Only datapaths created after a -hardware table module is loaded (and before it is unloaded) will take -advantage of hardware switching features. +Hardware table implementation are provided as a library and built +in the userspace datapath executable. Creating a hardware table module is straightforward. Create a -directory in the openflow source tree named datapath/hwtable_NAME, +directory in the openflow source tree named hw-lib/NAME, where NAME identifies the hardware that the module supports. Populate that directory with the C source files that comprise the module, plus -a file named Modules.mk that specifies how to build the module. This -distribution includes a "dummy" hardware module that demonstrates how -this works. +a file named automake.mk that specifies how to build the module in +the hw-lib directory. This distribution includes a "skeleton" hardware +library that demonstrates how this works. -Even though only one may be loaded at a given time, any number of -hardware table modules may be built along with the OpenFlow kernel -modules. Specify each NAME that identifies a module to be built on -the OpenFlow configure script command as the argument to ---enable-hw-tables, e.g.: - ./configure --enable-hw-tables=NAME +When you perform 'configure', specify each NAME that identifies a +library to be included on the OpenFlow configure script command as +the argument to --enable-hw-lib, e.g.: + ./configure --enable-hw-lib=NAME -Each hardware table module's code is encapsulated in a directory, so +Each hardware table library's code is encapsulated in a directory, so it is easy to separate a hardware table implementation from OpenFlow. -Simply package up the contents of the hwtable_NAME directory and +Simply package up the contents of the hw-lib/NAME directory and distribute it for builders to extract into their distribution directory. Included in this distribution is a dummy hardware table to aid in beginning -your own hardware table port, it is located in the datapath/hwtable_dummy +your own hardware table port, it is located in the hw-lib/skeleton folder. Also included is a fully functional NetFPGA hardware table that can run as a 1Gbx4 port line-rate OpenFlow switch. Information and instructions for its -use can be found in the datapath/hwtable_nf2/README file. +use can be found in the hw-lib/nf2/README file.