All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v1] doc: autogenerate nic overview table from ini files
@ 2016-06-30 18:03 John McNamara
  2016-06-30 18:03 ` John McNamara
                   ` (3 more replies)
  0 siblings, 4 replies; 12+ messages in thread
From: John McNamara @ 2016-06-30 18:03 UTC (permalink / raw)
  To: dev; +Cc: John McNamara

This patch converts the NIC feature table in the overview doc into a set of
ini files and adds some functions into the Sphinx conf.py file to convert them
back into an RST table.

The reason for doing this is to make it easier for PMD maintainers to update
the feature matrix that makes up the table and to avoid frequent and hard to
resolve conflicts in doc/guides/nics/overview.rst.

A NIC/PMD feature matrix is now an ini file like the following:

    $ head doc/guides/nics/nic_features/i40e.ini
    ;
    ; Features of the i40e network driver.
    ;
    [Features]
    Speed capabilities   =
    Link status          = Y
    Link status event    = Y
    Queue status event   =
    Rx interrupt         = Y
    Queue start/stop     = Y
    ...

The output RST table matches the existing table with the column headers
sorted.

Notes:

* In order to avoid the merge conflict issue noted above the RST table is now
  in an external RST include file and excluded from the repo via .gitignore.

* The order of the features in the table is controlled by a 'default.ini'
  file. This also determines what are the allowable features in all other ini
  files. This also catches typos or non-default new entries.

* Blank entries in the PMD ini files are optional. They will get a default
  blank entry in the RST table based on the entries in the default.ini file.
  The ini files in this patch were generated programmatically from the
  original RST table.

* I tried to put the Python code in a sub-module called from the Sphinx conf.py
  but I could only get that to work in Sphinx 1.4.4. So, for now, the code has
  been added to conf.py.

* I would like to extend this to produce a pure Html table with rotated column
  headers like this: https://css-tricks.com/rotated-table-column-headers/
  I tried to get this to work within the current RST + CSS preamble but
  failed.

* I would also like to extend this to produce a table, or more likely a number
  of tables, that would display the same information in the PDF document
  without going off the page.


John McNamara (1):
  doc: autogenerate nic overview table from ini files

 .gitignore                                   |   2 +
 doc/guides/conf.py                           | 155 +++++++++++++++++++++++++++
 doc/guides/nics/nic_features/afpacket.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/bnx2x.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/bnx2x_vf.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/bnxt.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/bonding.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/cxgbe.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/default.ini     |  68 ++++++++++++
 doc/guides/nics/nic_features/e1000.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/ena.ini         |  64 +++++++++++
 doc/guides/nics/nic_features/enic.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/fm10k.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/fm10k_vec.ini   |  64 +++++++++++
 doc/guides/nics/nic_features/fm10k_vf.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/fm10kvf_vec.ini |  64 +++++++++++
 doc/guides/nics/nic_features/i40e.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/i40e_vec.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/i40e_vf.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/i40evf_vec.ini  |  64 +++++++++++
 doc/guides/nics/nic_features/igb.ini         |  64 +++++++++++
 doc/guides/nics/nic_features/igb_vf.ini      |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbe.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbe_vec.ini   |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbe_vf.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbevf_vec.ini |  64 +++++++++++
 doc/guides/nics/nic_features/mlx4.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/mlx5.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/mpipe.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/nfp.ini         |  64 +++++++++++
 doc/guides/nics/nic_features/null.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/pcap.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/qede.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/qede_vf.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/ring.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/szedata2.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/thunderx.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/vhost.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/virtio.ini      |  64 +++++++++++
 doc/guides/nics/nic_features/virtio_vec.ini  |  64 +++++++++++
 doc/guides/nics/nic_features/vmxnet3.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/xenvirt.ini     |  64 +++++++++++
 doc/guides/nics/overview.rst                 |  77 +------------
 43 files changed, 2723 insertions(+), 75 deletions(-)
 create mode 100644 doc/guides/nics/nic_features/afpacket.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x_vf.ini
 create mode 100644 doc/guides/nics/nic_features/bnxt.ini
 create mode 100644 doc/guides/nics/nic_features/bonding.ini
 create mode 100644 doc/guides/nics/nic_features/cxgbe.ini
 create mode 100644 doc/guides/nics/nic_features/default.ini
 create mode 100644 doc/guides/nics/nic_features/e1000.ini
 create mode 100644 doc/guides/nics/nic_features/ena.ini
 create mode 100644 doc/guides/nics/nic_features/enic.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vec.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vf.ini
 create mode 100644 doc/guides/nics/nic_features/fm10kvf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vf.ini
 create mode 100644 doc/guides/nics/nic_features/i40evf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/igb.ini
 create mode 100644 doc/guides/nics/nic_features/igb_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vec.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbevf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/mlx4.ini
 create mode 100644 doc/guides/nics/nic_features/mlx5.ini
 create mode 100644 doc/guides/nics/nic_features/mpipe.ini
 create mode 100644 doc/guides/nics/nic_features/nfp.ini
 create mode 100644 doc/guides/nics/nic_features/null.ini
 create mode 100644 doc/guides/nics/nic_features/pcap.ini
 create mode 100644 doc/guides/nics/nic_features/qede.ini
 create mode 100644 doc/guides/nics/nic_features/qede_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ring.ini
 create mode 100644 doc/guides/nics/nic_features/szedata2.ini
 create mode 100644 doc/guides/nics/nic_features/thunderx.ini
 create mode 100644 doc/guides/nics/nic_features/vhost.ini
 create mode 100644 doc/guides/nics/nic_features/virtio.ini
 create mode 100644 doc/guides/nics/nic_features/virtio_vec.ini
 create mode 100644 doc/guides/nics/nic_features/vmxnet3.ini
 create mode 100644 doc/guides/nics/nic_features/xenvirt.ini

--
2.5.0

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v1] doc: autogenerate nic overview table from ini files
  2016-06-30 18:03 [PATCH v1] doc: autogenerate nic overview table from ini files John McNamara
@ 2016-06-30 18:03 ` John McNamara
  2016-06-30 18:25 ` Thomas Monjalon
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 12+ messages in thread
From: John McNamara @ 2016-06-30 18:03 UTC (permalink / raw)
  To: dev; +Cc: John McNamara

Convert the NIC feature table in the overview doc into a set of ini
files and add functions into the Sphinx conf.py file to auto-generate
them back into an RST table.

The reason for doing this is to make it easier for PMD maintainers to
update the feature matrix that makes up the table and to avoid
frequent and hard to resolve conflicts in
doc/guides/nics/overview.rst.

A NIC/PMD feature matrix is now an ini file like the following:

    $ head doc/guides/nics/nic_features/i40e.ini
    ;
    ; Features of the i40e network driver.
    ;
    [Features]
    Speed capabilities   =
    Link status          = Y
    Link status event    = Y
    Queue status event   =
    Rx interrupt         = Y
    Queue start/stop     = Y
    ...

The output RST table matches the existing table with the column
headers sorted.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
 .gitignore                                   |   2 +
 doc/guides/conf.py                           | 155 +++++++++++++++++++++++++++
 doc/guides/nics/nic_features/afpacket.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/bnx2x.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/bnx2x_vf.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/bnxt.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/bonding.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/cxgbe.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/default.ini     |  68 ++++++++++++
 doc/guides/nics/nic_features/e1000.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/ena.ini         |  64 +++++++++++
 doc/guides/nics/nic_features/enic.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/fm10k.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/fm10k_vec.ini   |  64 +++++++++++
 doc/guides/nics/nic_features/fm10k_vf.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/fm10kvf_vec.ini |  64 +++++++++++
 doc/guides/nics/nic_features/i40e.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/i40e_vec.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/i40e_vf.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/i40evf_vec.ini  |  64 +++++++++++
 doc/guides/nics/nic_features/igb.ini         |  64 +++++++++++
 doc/guides/nics/nic_features/igb_vf.ini      |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbe.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbe_vec.ini   |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbe_vf.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/ixgbevf_vec.ini |  64 +++++++++++
 doc/guides/nics/nic_features/mlx4.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/mlx5.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/mpipe.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/nfp.ini         |  64 +++++++++++
 doc/guides/nics/nic_features/null.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/pcap.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/qede.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/qede_vf.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/ring.ini        |  64 +++++++++++
 doc/guides/nics/nic_features/szedata2.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/thunderx.ini    |  64 +++++++++++
 doc/guides/nics/nic_features/vhost.ini       |  64 +++++++++++
 doc/guides/nics/nic_features/virtio.ini      |  64 +++++++++++
 doc/guides/nics/nic_features/virtio_vec.ini  |  64 +++++++++++
 doc/guides/nics/nic_features/vmxnet3.ini     |  64 +++++++++++
 doc/guides/nics/nic_features/xenvirt.ini     |  64 +++++++++++
 doc/guides/nics/overview.rst                 |  77 +------------
 43 files changed, 2723 insertions(+), 75 deletions(-)
 create mode 100644 doc/guides/nics/nic_features/afpacket.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x_vf.ini
 create mode 100644 doc/guides/nics/nic_features/bnxt.ini
 create mode 100644 doc/guides/nics/nic_features/bonding.ini
 create mode 100644 doc/guides/nics/nic_features/cxgbe.ini
 create mode 100644 doc/guides/nics/nic_features/default.ini
 create mode 100644 doc/guides/nics/nic_features/e1000.ini
 create mode 100644 doc/guides/nics/nic_features/ena.ini
 create mode 100644 doc/guides/nics/nic_features/enic.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vec.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vf.ini
 create mode 100644 doc/guides/nics/nic_features/fm10kvf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vf.ini
 create mode 100644 doc/guides/nics/nic_features/i40evf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/igb.ini
 create mode 100644 doc/guides/nics/nic_features/igb_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vec.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbevf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/mlx4.ini
 create mode 100644 doc/guides/nics/nic_features/mlx5.ini
 create mode 100644 doc/guides/nics/nic_features/mpipe.ini
 create mode 100644 doc/guides/nics/nic_features/nfp.ini
 create mode 100644 doc/guides/nics/nic_features/null.ini
 create mode 100644 doc/guides/nics/nic_features/pcap.ini
 create mode 100644 doc/guides/nics/nic_features/qede.ini
 create mode 100644 doc/guides/nics/nic_features/qede_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ring.ini
 create mode 100644 doc/guides/nics/nic_features/szedata2.ini
 create mode 100644 doc/guides/nics/nic_features/thunderx.ini
 create mode 100644 doc/guides/nics/nic_features/vhost.ini
 create mode 100644 doc/guides/nics/nic_features/virtio.ini
 create mode 100644 doc/guides/nics/nic_features/virtio_vec.ini
 create mode 100644 doc/guides/nics/nic_features/vmxnet3.ini
 create mode 100644 doc/guides/nics/nic_features/xenvirt.ini

diff --git a/.gitignore b/.gitignore
index e69de29..72005df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,2 @@
+doc/guides/nics/overview_table.txt
+
diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 2c5610f..4d69c0f 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -28,12 +28,25 @@
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+from __future__ import print_function
 import subprocess
 from docutils import nodes
 from distutils.version import LooseVersion
 from sphinx import __version__ as sphinx_version
 from sphinx.highlighting import PygmentsBridge
 from pygments.formatters.latex import LatexFormatter
+from os import listdir
+from os.path import basename
+from os.path import dirname
+from os.path import join as path_join
+
+try:
+    # Python 2.
+    import ConfigParser as configparser
+except:
+    # Python 3.
+    import configparser
+
 
 project = 'Data Plane Development Kit'
 
@@ -146,7 +159,149 @@ def process_numref(app, doctree, from_docname):
                                       internal=True)
             node.replace_self(newnode)
 
+
+def generate_nic_overview_table(output_filename):
+    """
+    Function to generate the NIC Overview Table from the ini files that define
+    the features for each NIC.
+
+    The default features for the table and their order is defined by the
+    'default.ini' file.
+
+    """
+    # Default worning string.
+    warning = 'Warning generate_nic_overview_table()'
+
+    # Get the default features and order from the 'default.ini' file.
+    ini_path = path_join(dirname(output_filename), 'nic_features')
+    config = configparser.ConfigParser()
+    config.optionxform = str
+    config.read(path_join(ini_path, 'default.ini'))
+    default_section = 'Features'
+    default_features = config.items(default_section)
+
+    # Create a dict of the valid features to validate the other ini files.
+    valid_features = {}
+    max_feature_length = 0
+    for feature in default_features:
+        key = feature[0]
+        valid_features[key] = ' '
+        max_feature_length = max(max_feature_length, len(key))
+
+    # Get a list of NIC ini files, excluding 'default.ini'.
+    ini_files = [basename(file) for file in listdir(ini_path)
+                 if file.endswith('.ini') and file != 'default.ini']
+    ini_files.sort()
+
+    # Build up a list of the table header names from the ini filenames.
+    header_names = []
+    for ini_filename in ini_files:
+        name = ini_filename[:-4]
+        name = name.replace('_vf', 'vf')
+
+        # Pad the table header names to match the existing format.
+        if '_vec' in name:
+            pmd, vec = name.split('_')
+            name = '{0:{fill}{align}7}vec'.format(pmd, fill='.', align='<')
+        else:
+            name = '{0:{fill}{align}10}'.format(name, fill=' ', align='<')
+
+        header_names.append(name)
+
+    # Create a dict of the defined features for each NIC from the ini files.
+    ini_data = {}
+    for ini_filename in ini_files:
+        config = configparser.ConfigParser()
+        config.optionxform = str
+        config.read(path_join(ini_path, ini_filename))
+
+        # Initialize the dict with the default.ini value.
+        ini_data[ini_filename] = valid_features.copy()
+
+        # Check for a valid ini section.
+        if not config.has_section(default_section):
+            print("{}: File '{}' has no [{}] secton".format(warning,
+                                                            ini_filename,
+                                                            default_section))
+            continue
+
+        # Check for valid features names.
+        for name, value in config.items(default_section):
+            if name not in valid_features:
+                print("{}: Unknown feature '{}' in '{}'".format(warning,
+                                                                name,
+                                                                ini_filename))
+                continue
+
+            if value is not '':
+                # Get the first letter only.
+                ini_data[ini_filename][name] = value[0]
+
+    # Print out the RST NIC Overview table from the ini file data.
+    outfile = open(output_filename, 'w')
+    num_cols = len(header_names)
+
+    print('.. table:: Features availability in networking drivers\n',
+          file=outfile)
+
+    print_table_header(outfile, num_cols, header_names)
+    print_table_body(outfile, num_cols, ini_files, ini_data, default_features)
+
+
+def print_table_header(outfile, num_cols, header_names):
+    """ Print the RST table header. The header names are vertical. """
+    print_table_divider(outfile, num_cols)
+
+    line = ''
+    for name in header_names:
+        line += ' ' + name[0]
+
+    print_table_row(outfile, 'Feature', line)
+
+    for i in range(1, 10):
+        line = ''
+        for name in header_names:
+            line += ' ' + name[i]
+
+        print_table_row(outfile, '', line)
+
+    print_table_divider(outfile, num_cols)
+
+
+def print_table_body(outfile, num_cols, ini_files, ini_data, default_features):
+    """ Print out the body of the table. Each row is a NIC feature. """
+
+    for feature, _ in default_features:
+        line = ''
+
+        for ini_filename in ini_files:
+            line += ' ' + ini_data[ini_filename][feature]
+
+        print_table_row(outfile, feature, line)
+
+    print_table_divider(outfile, num_cols)
+
+
+def print_table_row(outfile, feature, line):
+    """ Print a single row of the table with fixed formatting. """
+    line = line.rstrip()
+    print('   {:<20}{}'.format(feature, line), file=outfile)
+
+
+def print_table_divider(outfile, num_cols):
+    """ Print the table divider line. """
+    line = ' '
+    column_dividers = ['='] * num_cols
+    line += ' '.join(column_dividers)
+
+    feature = '=' * 20
+
+    print_table_row(outfile, feature, line)
+
+
 def setup(app):
+    generate_nic_overview_table('doc/guides/nics/overview_table.txt')
+
     if LooseVersion(sphinx_version) < LooseVersion('1.3.1'):
         print('Upgrade sphinx to version >= 1.3.1 for '
               'improved Figure/Table number handling.')
diff --git a/doc/guides/nics/nic_features/afpacket.ini b/doc/guides/nics/nic_features/afpacket.ini
new file mode 100644
index 0000000..7854f44
--- /dev/null
+++ b/doc/guides/nics/nic_features/afpacket.ini
@@ -0,0 +1,64 @@
+;
+; Features of the afpacket network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/bnx2x.ini b/doc/guides/nics/nic_features/bnx2x.ini
new file mode 100644
index 0000000..015197a
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnx2x.ini
@@ -0,0 +1,64 @@
+;
+; Features of the bnx2x network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    =
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            = Y
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/bnx2x_vf.ini b/doc/guides/nics/nic_features/bnx2x_vf.ini
new file mode 100644
index 0000000..06543b8
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnx2x_vf.ini
@@ -0,0 +1,64 @@
+;
+; Features of the bnx2x_vf network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    =
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               = Y
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            = Y
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/bnxt.ini b/doc/guides/nics/nic_features/bnxt.ini
new file mode 100644
index 0000000..8ea3374
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnxt.ini
@@ -0,0 +1,64 @@
+;
+; Features of the bnxt network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    =
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             =
+RSS key update       =
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            = Y
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/bonding.ini b/doc/guides/nics/nic_features/bonding.ini
new file mode 100644
index 0000000..c6dd68a
--- /dev/null
+++ b/doc/guides/nics/nic_features/bonding.ini
@@ -0,0 +1,64 @@
+;
+; Features of the bonding network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/cxgbe.ini b/doc/guides/nics/nic_features/cxgbe.ini
new file mode 100644
index 0000000..1b7d320
--- /dev/null
+++ b/doc/guides/nics/nic_features/cxgbe.ini
@@ -0,0 +1,64 @@
+;
+; Features of the cxgbe network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         = Y
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   =
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/default.ini b/doc/guides/nics/nic_features/default.ini
new file mode 100644
index 0000000..f1bf9bf
--- /dev/null
+++ b/doc/guides/nics/nic_features/default.ini
@@ -0,0 +1,68 @@
+;
+; Features of a default network driver.
+;
+; This file defines the features that are valid for inclusion in
+; the other driver files and also the order that they appear in
+; the features table in the documentation.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/e1000.ini b/doc/guides/nics/nic_features/e1000.ini
new file mode 100644
index 0000000..95efdcf
--- /dev/null
+++ b/doc/guides/nics/nic_features/e1000.ini
@@ -0,0 +1,64 @@
+;
+; Features of the e1000 network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     =
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         = Y
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/ena.ini b/doc/guides/nics/nic_features/ena.ini
new file mode 100644
index 0000000..7ec793e
--- /dev/null
+++ b/doc/guides/nics/nic_features/ena.ini
@@ -0,0 +1,64 @@
+;
+; Features of the ena network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               = Y
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            = Y
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/enic.ini b/doc/guides/nics/nic_features/enic.ini
new file mode 100644
index 0000000..f745982
--- /dev/null
+++ b/doc/guides/nics/nic_features/enic.ini
@@ -0,0 +1,64 @@
+;
+; Features of the enic network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    =
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/fm10k.ini b/doc/guides/nics/nic_features/fm10k.ini
new file mode 100644
index 0000000..ca71b89
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k.ini
@@ -0,0 +1,64 @@
+;
+; Features of the fm10k network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/fm10k_vec.ini b/doc/guides/nics/nic_features/fm10k_vec.ini
new file mode 100644
index 0000000..a43b2aa
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k_vec.ini
@@ -0,0 +1,64 @@
+;
+; Features of the fm10k_vec network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/fm10k_vf.ini b/doc/guides/nics/nic_features/fm10k_vf.ini
new file mode 100644
index 0000000..071468f
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k_vf.ini
@@ -0,0 +1,64 @@
+;
+; Features of the fm10k_vf network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/fm10kvf_vec.ini b/doc/guides/nics/nic_features/fm10kvf_vec.ini
new file mode 100644
index 0000000..3be972c
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10kvf_vec.ini
@@ -0,0 +1,64 @@
+;
+; Features of the fm10kvf_vec network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/i40e.ini b/doc/guides/nics/nic_features/i40e.ini
new file mode 100644
index 0000000..8e11dcf
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e.ini
@@ -0,0 +1,64 @@
+;
+; Features of the i40e network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        = Y
+Flexible filter      =
+Hash filter          = Y
+Flow director        = Y
+Flow control         = Y
+Rate limitation      =
+Traffic mirroring    = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/i40e_vec.ini b/doc/guides/nics/nic_features/i40e_vec.ini
new file mode 100644
index 0000000..cacda75
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e_vec.ini
@@ -0,0 +1,64 @@
+;
+; Features of the i40e_vec network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        = Y
+Flexible filter      =
+Hash filter          = Y
+Flow director        = Y
+Flow control         = Y
+Rate limitation      =
+Traffic mirroring    = Y
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/i40e_vf.ini b/doc/guides/nics/nic_features/i40e_vf.ini
new file mode 100644
index 0000000..bed72bc
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e_vf.ini
@@ -0,0 +1,64 @@
+;
+; Features of the i40e_vf network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          = Y
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/i40evf_vec.ini b/doc/guides/nics/nic_features/i40evf_vec.ini
new file mode 100644
index 0000000..ba18eac
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40evf_vec.ini
@@ -0,0 +1,64 @@
+;
+; Features of the i40evf_vec network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          = Y
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/igb.ini b/doc/guides/nics/nic_features/igb.ini
new file mode 100644
index 0000000..5fecdaf
--- /dev/null
+++ b/doc/guides/nics/nic_features/igb.ini
@@ -0,0 +1,64 @@
+;
+; Features of the igb network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     =
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Tunnel filter        =
+Flexible filter      = Y
+Hash filter          =
+Flow director        =
+Flow control         = Y
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   =
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/igb_vf.ini b/doc/guides/nics/nic_features/igb_vf.ini
new file mode 100644
index 0000000..b52ffc6
--- /dev/null
+++ b/doc/guides/nics/nic_features/igb_vf.ini
@@ -0,0 +1,64 @@
+;
+; Features of the igb_vf network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         = Y
+LRO                  =
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       = Y
+Multiprocess aware   =
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/ixgbe.ini b/doc/guides/nics/nic_features/ixgbe.ini
new file mode 100644
index 0000000..7b45601
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe.ini
@@ -0,0 +1,64 @@
+;
+; Features of the ixgbe network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Tunnel filter        = Y
+Flexible filter      =
+Hash filter          =
+Flow director        = Y
+Flow control         = Y
+Rate limitation      = Y
+Traffic mirroring    = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                = Y
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/ixgbe_vec.ini b/doc/guides/nics/nic_features/ixgbe_vec.ini
new file mode 100644
index 0000000..7a635eb
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe_vec.ini
@@ -0,0 +1,64 @@
+;
+; Features of the ixgbe_vec network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Tunnel filter        = Y
+Flexible filter      =
+Hash filter          =
+Flow director        = Y
+Flow control         = Y
+Rate limitation      = Y
+Traffic mirroring    = Y
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                = Y
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/ixgbe_vf.ini b/doc/guides/nics/nic_features/ixgbe_vf.ini
new file mode 100644
index 0000000..2197cd5
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe_vf.ini
@@ -0,0 +1,64 @@
+;
+; Features of the ixgbe_vf network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     =
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     =
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                = Y
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/ixgbevf_vec.ini b/doc/guides/nics/nic_features/ixgbevf_vec.ini
new file mode 100644
index 0000000..264dc70
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbevf_vec.ini
@@ -0,0 +1,64 @@
+;
+; Features of the ixgbevf_vec network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         = Y
+Queue start/stop     =
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     =
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                = Y
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/mlx4.ini b/doc/guides/nics/nic_features/mlx4.ini
new file mode 100644
index 0000000..beac19a
--- /dev/null
+++ b/doc/guides/nics/nic_features/mlx4.ini
@@ -0,0 +1,64 @@
+;
+; Features of the mlx4 network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               = Y
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           = Y
+ARMv7                =
+ARMv8                =
+Power8               = Y
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/mlx5.ini b/doc/guides/nics/nic_features/mlx5.ini
new file mode 100644
index 0000000..d5affa7
--- /dev/null
+++ b/doc/guides/nics/nic_features/mlx5.ini
@@ -0,0 +1,64 @@
+;
+; Features of the mlx5 network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               = Y
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        = Y
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           = Y
+ARMv7                =
+ARMv8                =
+Power8               = Y
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/mpipe.ini b/doc/guides/nics/nic_features/mpipe.ini
new file mode 100644
index 0000000..7f73bc0
--- /dev/null
+++ b/doc/guides/nics/nic_features/mpipe.ini
@@ -0,0 +1,64 @@
+;
+; Features of the mpipe network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/nfp.ini b/doc/guides/nics/nic_features/nfp.ini
new file mode 100644
index 0000000..b537126
--- /dev/null
+++ b/doc/guides/nics/nic_features/nfp.ini
@@ -0,0 +1,64 @@
+;
+; Features of the nfp network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/null.ini b/doc/guides/nics/nic_features/null.ini
new file mode 100644
index 0000000..9867240
--- /dev/null
+++ b/doc/guides/nics/nic_features/null.ini
@@ -0,0 +1,64 @@
+;
+; Features of the null network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/pcap.ini b/doc/guides/nics/nic_features/pcap.ini
new file mode 100644
index 0000000..1220dec
--- /dev/null
+++ b/doc/guides/nics/nic_features/pcap.ini
@@ -0,0 +1,64 @@
+;
+; Features of the pcap network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          = Y
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                = Y
+ARMv8                = Y
+Power8               = Y
+TILE-Gx              = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/qede.ini b/doc/guides/nics/nic_features/qede.ini
new file mode 100644
index 0000000..06c1c70
--- /dev/null
+++ b/doc/guides/nics/nic_features/qede.ini
@@ -0,0 +1,64 @@
+;
+; Features of the qede network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         = Y
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          =
+Linux UIO            = Y
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/qede_vf.ini b/doc/guides/nics/nic_features/qede_vf.ini
new file mode 100644
index 0000000..e855ceb
--- /dev/null
+++ b/doc/guides/nics/nic_features/qede_vf.ini
@@ -0,0 +1,64 @@
+;
+; Features of the qede_vf network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               = Y
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         = Y
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   = Y
+BSD nic_uio          =
+Linux UIO            = Y
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/ring.ini b/doc/guides/nics/nic_features/ring.ini
new file mode 100644
index 0000000..4e1816c
--- /dev/null
+++ b/doc/guides/nics/nic_features/ring.ini
@@ -0,0 +1,64 @@
+;
+; Features of the ring network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/szedata2.ini b/doc/guides/nics/nic_features/szedata2.ini
new file mode 100644
index 0000000..befd109
--- /dev/null
+++ b/doc/guides/nics/nic_features/szedata2.ini
@@ -0,0 +1,64 @@
+;
+; Features of the szedata2 network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          =
+Scattered Rx         = Y
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           = Y
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/thunderx.ini b/doc/guides/nics/nic_features/thunderx.ini
new file mode 100644
index 0000000..47b4c63
--- /dev/null
+++ b/doc/guides/nics/nic_features/thunderx.ini
@@ -0,0 +1,64 @@
+;
+; Features of the thunderx network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 =
+SR-IOV               = Y
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          = Y
+VLAN offload         = P
+QinQ offload         =
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  = Y
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                =
+ARMv8                = Y
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/vhost.ini b/doc/guides/nics/nic_features/vhost.ini
new file mode 100644
index 0000000..6637367
--- /dev/null
+++ b/doc/guides/nics/nic_features/vhost.ini
@@ -0,0 +1,64 @@
+;
+; Features of the vhost network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    = Y
+Queue status event   = Y
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/virtio.ini b/doc/guides/nics/nic_features/virtio.ini
new file mode 100644
index 0000000..e26ba37
--- /dev/null
+++ b/doc/guides/nics/nic_features/virtio.ini
@@ -0,0 +1,64 @@
+;
+; Features of the virtio network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          =
+Scattered Rx         = Y
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                = Y
+ARMv8                = Y
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/virtio_vec.ini b/doc/guides/nics/nic_features/virtio_vec.ini
new file mode 100644
index 0000000..c844b22
--- /dev/null
+++ b/doc/guides/nics/nic_features/virtio_vec.ini
@@ -0,0 +1,64 @@
+;
+; Features of the virtio_vec network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          = Y
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     = Y
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          = Y
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          = Y
+Extended stats       =
+Stats per queue      = Y
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+Other kdrv           =
+ARMv7                = Y
+ARMv8                = Y
+Power8               =
+TILE-Gx              =
+x86-32               = Y
+x86-64               = Y
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/vmxnet3.ini b/doc/guides/nics/nic_features/vmxnet3.ini
new file mode 100644
index 0000000..47482c5
--- /dev/null
+++ b/doc/guides/nics/nic_features/vmxnet3.ini
@@ -0,0 +1,64 @@
+;
+; Features of the vmxnet3 network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/xenvirt.ini b/doc/guides/nics/nic_features/xenvirt.ini
new file mode 100644
index 0000000..a511a26
--- /dev/null
+++ b/doc/guides/nics/nic_features/xenvirt.ini
@@ -0,0 +1,64 @@
+;
+; Features of the xenvirt network driver.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index a23eb5c..29392c7 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -72,81 +72,8 @@ Most of these differences are summarized below.
       }
    </style>
 
-.. table:: Features availability in networking drivers
-
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-   Feature              a b b b b c e e e i i i i i i i i i i f f f f m m m n n p q q r s t v v v v x
-                        f n n n o x 1 n n 4 4 4 4 g g x x x x m m m m l l p f u c e e i z h h i i m e
-                        p x x x n g 0 a i 0 0 0 0 b b g g g g 1 1 1 1 x x i p l a d d n e u o r r x n
-                        a 2 2 t d b 0   c e e e e   v b b b b 0 0 0 0 4 5 p   l p e e g d n s t t n v
-                        c x x   i e 0       . v v   f e e e e k k k k     e         v   a d t i i e i
-                        k   v   n           . f f       . v v   . v v               f   t e   o o t r
-                        e   f   g           .   .       . f f   . f f                   a r     . 3 t
-                        t                   v   v       v   v   v   v                   2 x     v
-                                            e   e       e   e   e   e                           e
-                                            c   c       c   c   c   c                           c
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-   Speed capabilities
-   Link status            Y Y Y   Y Y   Y Y Y     Y   Y Y Y Y         Y Y         Y Y   Y Y Y Y Y
-   Link status event      Y Y       Y     Y Y     Y   Y Y             Y Y         Y Y     Y Y
-   Queue status event                                                                       Y
-   Rx interrupt                     Y     Y Y Y Y Y Y Y Y Y Y Y Y Y Y
-   Queue start/stop           Y   Y   Y Y Y Y Y Y     Y Y     Y Y Y Y Y Y               Y Y   Y Y
-   MTU update                     Y Y Y Y         Y   Y Y Y Y         Y Y         Y Y     Y
-   Jumbo frame                    Y Y Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y       Y Y Y     Y
-   Scattered Rx                   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y               Y Y   Y
-   LRO                                                Y Y Y Y
-   TSO                            Y   Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y
-   Promiscuous mode       Y Y Y   Y Y   Y Y Y Y Y Y Y Y Y     Y Y     Y Y         Y Y   Y Y   Y Y
-   Allmulticast mode              Y Y     Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y   Y Y   Y Y
-   Unicast MAC filter     Y Y Y     Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y         Y Y
-   Multicast MAC filter   Y Y Y         Y Y Y Y Y             Y Y     Y Y         Y Y         Y Y
-   RSS hash                       Y   Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y         Y Y     Y
-   RSS key update                     Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y     Y
-   RSS reta update            Y       Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y     Y
-   VMDq                                   Y Y     Y   Y Y     Y Y
-   SR-IOV                   Y         Y   Y Y     Y   Y Y             Y Y           Y     Y
-   DCB                                    Y Y     Y   Y Y
-   VLAN filter                      Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y         Y Y
-   Ethertype filter                       Y Y     Y   Y Y
-   N-tuple filter                                 Y   Y Y
-   SYN filter                                     Y   Y Y
-   Tunnel filter                          Y Y         Y Y
-   Flexible filter                                Y
-   Hash filter                            Y Y Y Y
-   Flow director                          Y Y         Y Y               Y
-   Flow control                   Y Y     Y Y     Y   Y Y                         Y Y
-   Rate limitation                                    Y Y
-   Traffic mirroring                      Y Y         Y Y
-   CRC offload                    Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y     Y
-   VLAN offload                   Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y     P
-   QinQ offload                     Y     Y   Y   Y Y Y   Y
-   L3 checksum offload            Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y                 Y
-   L4 checksum offload            Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y                 Y
-   Inner L3 checksum                  Y   Y   Y       Y   Y           Y
-   Inner L4 checksum                  Y   Y   Y       Y   Y           Y
-   Packet type parsing            Y     Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y         Y Y     Y
-   Timesync                               Y Y     Y   Y Y
-   Basic stats            Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y Y Y   Y Y Y Y Y
-   Extended stats             Y       Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y                   Y   Y
-   Stats per queue                Y                   Y Y     Y Y Y Y Y Y         Y Y   Y Y   Y Y
-   EEPROM dump                    Y               Y   Y Y
-   Registers dump                 Y               Y Y Y Y Y Y                             Y
-   Multiprocess aware                     Y Y Y Y     Y Y Y Y Y Y Y Y Y Y       Y Y Y     Y
-   BSD nic_uio                    Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                         Y Y
-   Linux UIO              Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y             Y Y         Y Y
-   Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
-   Other kdrv                                                         Y Y               Y
-   ARMv7                                                                        Y             Y Y
-   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
-   Power8                                                             Y Y       Y
-   TILE-Gx                                                                      Y
-   x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
-   x86-64                 Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y Y Y   Y   Y Y Y
-   Usage doc              Y Y     Y     Y                             Y Y       Y Y Y   Y Y   Y
-   Design doc
-   Perf doc
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+
+.. include:: overview_table.txt
 
 .. Note::
 
-- 
2.5.0

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v1] doc: autogenerate nic overview table from ini files
  2016-06-30 18:03 [PATCH v1] doc: autogenerate nic overview table from ini files John McNamara
  2016-06-30 18:03 ` John McNamara
@ 2016-06-30 18:25 ` Thomas Monjalon
  2016-07-01  1:40   ` Yuanhan Liu
  2016-07-08 19:52   ` Mcnamara, John
  2016-07-17 12:59 ` [PATCH v2] " John McNamara
  2016-07-29 11:59 ` [PATCH v3] " John McNamara
  3 siblings, 2 replies; 12+ messages in thread
From: Thomas Monjalon @ 2016-06-30 18:25 UTC (permalink / raw)
  To: John McNamara; +Cc: dev

2016-06-30 19:03, John McNamara:
> This patch converts the NIC feature table in the overview doc into a set of
> ini files and adds some functions into the Sphinx conf.py file to convert them
> back into an RST table.
> 
> The reason for doing this is to make it easier for PMD maintainers to update
> the feature matrix that makes up the table and to avoid frequent and hard to
> resolve conflicts in doc/guides/nics/overview.rst.

Great idea!

Would it be possible to make it a bit more generic and reusable to
generate other tables of this kind?

> * In order to avoid the merge conflict issue noted above the RST table is now
>   in an external RST include file and excluded from the repo via .gitignore.

It would be better to generate the rst file in the build directory.
But I guess it makes sphinx build more difficult.

> * Blank entries in the PMD ini files are optional. They will get a default
>   blank entry in the RST table based on the entries in the default.ini file.
>   The ini files in this patch were generated programmatically from the
>   original RST table.

I don't think there is a benefit to have blank entries in the .ini file.
And there would be less conflicts if the guideline was to avoid blank entries
when adding a new feature.
> 
> * I would like to extend this to produce a pure Html table with rotated column
>   headers like this: https://css-tricks.com/rotated-table-column-headers/
>   I tried to get this to work within the current RST + CSS preamble but
>   failed.

Nice

> * I would also like to extend this to produce a table, or more likely a number
>   of tables, that would display the same information in the PDF document
>   without going off the page.

PDF output is restrictive :)

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1] doc: autogenerate nic overview table from ini files
  2016-06-30 18:25 ` Thomas Monjalon
@ 2016-07-01  1:40   ` Yuanhan Liu
  2016-07-08 19:52   ` Mcnamara, John
  1 sibling, 0 replies; 12+ messages in thread
From: Yuanhan Liu @ 2016-07-01  1:40 UTC (permalink / raw)
  To: John McNamara; +Cc: Thomas Monjalon, dev

On Thu, Jun 30, 2016 at 08:25:14PM +0200, Thomas Monjalon wrote:
> 2016-06-30 19:03, John McNamara:
> > This patch converts the NIC feature table in the overview doc into a set of
> > ini files and adds some functions into the Sphinx conf.py file to convert them
> > back into an RST table.
> > 
> > The reason for doing this is to make it easier for PMD maintainers to update
> > the feature matrix that makes up the table and to avoid frequent and hard to
> > resolve conflicts in doc/guides/nics/overview.rst.
> 
> Great idea!

Yes, indeed!

The old formats also make the review hard (due to the long/messy diff).
I was also kidding/wishing before that it'd be great if we could have a
column-based diff file. With your proposal, we don't need it any more :)

	--yliu

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v1] doc: autogenerate nic overview table from ini files
  2016-06-30 18:25 ` Thomas Monjalon
  2016-07-01  1:40   ` Yuanhan Liu
@ 2016-07-08 19:52   ` Mcnamara, John
  1 sibling, 0 replies; 12+ messages in thread
From: Mcnamara, John @ 2016-07-08 19:52 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: dev

> -----Original Message-----
> From: Thomas Monjalon [mailto:thomas.monjalon@6wind.com]
> Sent: Thursday, June 30, 2016 7:25 PM
> To: Mcnamara, John <john.mcnamara@intel.com>
> Cc: dev@dpdk.org
> Subject: Re: [dpdk-dev] [PATCH v1] doc: autogenerate nic overview table
> from ini files
> 
> 2016-06-30 19:03, John McNamara:
> > This patch converts the NIC feature table in the overview doc into a
> > set of ini files and adds some functions into the Sphinx conf.py file
> > to convert them back into an RST table.
> >
> Would it be possible to make it a bit more generic and reusable to
> generate other tables of this kind?

It would be possible (in the technical sense) but probably not worth the
effort. :-)


> > * Blank entries in the PMD ini files are optional. They will get a
> default
> >   blank entry in the RST table based on the entries in the default.ini
> file.
> >   The ini files in this patch were generated programmatically from the
> >   original RST table.
> 
> I don't think there is a benefit to have blank entries in the .ini file.
> And there would be less conflicts if the guideline was to avoid blank
> entries when adding a new feature.

I can generate a set of ini files without blank entries if that is the
preference.  For some PMDs that will mean that there are no entries in
the file, apart from the heading, but I guess that is okay.  I'll change
that in v2.

> 
> PDF output is restrictive :)

Yes, and the PDF infrastructure is a bit of a pain but we still get a lot
of people in the field who like them and ask for them after releases.

Maybe they read them on the beach, on holidays.

John

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v2] doc: autogenerate nic overview table from ini files
  2016-06-30 18:03 [PATCH v1] doc: autogenerate nic overview table from ini files John McNamara
  2016-06-30 18:03 ` John McNamara
  2016-06-30 18:25 ` Thomas Monjalon
@ 2016-07-17 12:59 ` John McNamara
  2016-07-19 13:08   ` Ferruh Yigit
  2016-07-29 11:59 ` [PATCH v3] " John McNamara
  3 siblings, 1 reply; 12+ messages in thread
From: John McNamara @ 2016-07-17 12:59 UTC (permalink / raw)
  To: dev; +Cc: John McNamara

Convert the NIC feature table in the overview doc into a set of ini
files and add functions into the Sphinx conf.py file to auto-generate
them back into an RST table.

The reason for doing this is to make it easier for PMD maintainers to
update the feature matrix that makes up the table and to avoid
frequent and hard to resolve conflicts in doc/guides/nics/overview.rst.

A NIC/PMD feature matrix is now an ini file like the following:

    $ head doc/guides/nics/nic_features/i40e.ini
    ;
    ; Features of the i40e network driver.
    ;
    [Features]
    Link status          = Y
    Link status event    = Y
    Rx interrupt         = Y
    Queue start/stop     = Y
    ...

The output RST table matches the existing table with the column
headers sorted.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
---
v2:
* Updated to latest version of the nic overview table.
* Removed blank entries from the ini file. 

 .gitignore                                   |   2 +
 doc/guides/conf.py                           | 155 +++++++++++++++++++++++++++
 doc/guides/nics/nic_features/afpacket.ini    |   6 ++
 doc/guides/nics/nic_features/bnx2x.ini       |  16 +++
 doc/guides/nics/nic_features/bnx2x_vf.ini    |  17 +++
 doc/guides/nics/nic_features/bnxt.ini        |  16 +++
 doc/guides/nics/nic_features/bonding.ini     |   6 ++
 doc/guides/nics/nic_features/cxgbe.ini       |  31 ++++++
 doc/guides/nics/nic_features/default.ini     |  68 ++++++++++++
 doc/guides/nics/nic_features/e1000.ini       |  28 +++++
 doc/guides/nics/nic_features/ena.ini         |  26 +++++
 doc/guides/nics/nic_features/enic.ini        |  28 +++++
 doc/guides/nics/nic_features/fm10k.ini       |  34 ++++++
 doc/guides/nics/nic_features/fm10k_vec.ini   |  34 ++++++
 doc/guides/nics/nic_features/fm10k_vf.ini    |  28 +++++
 doc/guides/nics/nic_features/fm10kvf_vec.ini |  28 +++++
 doc/guides/nics/nic_features/i40e.ini        |  47 ++++++++
 doc/guides/nics/nic_features/i40e_vec.ini    |  39 +++++++
 doc/guides/nics/nic_features/i40e_vf.ini     |  36 +++++++
 doc/guides/nics/nic_features/i40evf_vec.ini  |  28 +++++
 doc/guides/nics/nic_features/igb.ini         |  44 ++++++++
 doc/guides/nics/nic_features/igb_vf.ini      |  27 +++++
 doc/guides/nics/nic_features/ixgbe.ini       |  54 ++++++++++
 doc/guides/nics/nic_features/ixgbe_vec.ini   |  46 ++++++++
 doc/guides/nics/nic_features/ixgbe_vf.ini    |  37 +++++++
 doc/guides/nics/nic_features/ixgbevf_vec.ini |  29 +++++
 doc/guides/nics/nic_features/mlx4.ini        |  32 ++++++
 doc/guides/nics/nic_features/mlx5.ini        |  35 ++++++
 doc/guides/nics/nic_features/mpipe.ini       |   6 ++
 doc/guides/nics/nic_features/nfp.ini         |   6 ++
 doc/guides/nics/nic_features/null.ini        |   6 ++
 doc/guides/nics/nic_features/pcap.ini        |  16 +++
 doc/guides/nics/nic_features/qede.ini        |  29 +++++
 doc/guides/nics/nic_features/qede_vf.ini     |  30 ++++++
 doc/guides/nics/nic_features/ring.ini        |   6 ++
 doc/guides/nics/nic_features/szedata2.ini    |  17 +++
 doc/guides/nics/nic_features/thunderx.ini    |  30 ++++++
 doc/guides/nics/nic_features/vhost.ini       |  13 +++
 doc/guides/nics/nic_features/virtio.ini      |  24 +++++
 doc/guides/nics/nic_features/virtio_vec.ini  |  22 ++++
 doc/guides/nics/nic_features/vmxnet3.ini     |   6 ++
 doc/guides/nics/nic_features/xenvirt.ini     |   6 ++
 doc/guides/nics/overview.rst                 |  77 +------------
 43 files changed, 1196 insertions(+), 75 deletions(-)
 create mode 100644 doc/guides/nics/nic_features/afpacket.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x_vf.ini
 create mode 100644 doc/guides/nics/nic_features/bnxt.ini
 create mode 100644 doc/guides/nics/nic_features/bonding.ini
 create mode 100644 doc/guides/nics/nic_features/cxgbe.ini
 create mode 100644 doc/guides/nics/nic_features/default.ini
 create mode 100644 doc/guides/nics/nic_features/e1000.ini
 create mode 100644 doc/guides/nics/nic_features/ena.ini
 create mode 100644 doc/guides/nics/nic_features/enic.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vec.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vf.ini
 create mode 100644 doc/guides/nics/nic_features/fm10kvf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vf.ini
 create mode 100644 doc/guides/nics/nic_features/i40evf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/igb.ini
 create mode 100644 doc/guides/nics/nic_features/igb_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vec.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbevf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/mlx4.ini
 create mode 100644 doc/guides/nics/nic_features/mlx5.ini
 create mode 100644 doc/guides/nics/nic_features/mpipe.ini
 create mode 100644 doc/guides/nics/nic_features/nfp.ini
 create mode 100644 doc/guides/nics/nic_features/null.ini
 create mode 100644 doc/guides/nics/nic_features/pcap.ini
 create mode 100644 doc/guides/nics/nic_features/qede.ini
 create mode 100644 doc/guides/nics/nic_features/qede_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ring.ini
 create mode 100644 doc/guides/nics/nic_features/szedata2.ini
 create mode 100644 doc/guides/nics/nic_features/thunderx.ini
 create mode 100644 doc/guides/nics/nic_features/vhost.ini
 create mode 100644 doc/guides/nics/nic_features/virtio.ini
 create mode 100644 doc/guides/nics/nic_features/virtio_vec.ini
 create mode 100644 doc/guides/nics/nic_features/vmxnet3.ini
 create mode 100644 doc/guides/nics/nic_features/xenvirt.ini

diff --git a/.gitignore b/.gitignore
index e69de29..72005df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,2 @@
+doc/guides/nics/overview_table.txt
+
diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 2c5610f..4d69c0f 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -28,12 +28,25 @@
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+from __future__ import print_function
 import subprocess
 from docutils import nodes
 from distutils.version import LooseVersion
 from sphinx import __version__ as sphinx_version
 from sphinx.highlighting import PygmentsBridge
 from pygments.formatters.latex import LatexFormatter
+from os import listdir
+from os.path import basename
+from os.path import dirname
+from os.path import join as path_join
+
+try:
+    # Python 2.
+    import ConfigParser as configparser
+except:
+    # Python 3.
+    import configparser
+
 
 project = 'Data Plane Development Kit'
 
@@ -146,7 +159,149 @@ def process_numref(app, doctree, from_docname):
                                       internal=True)
             node.replace_self(newnode)
 
+
+def generate_nic_overview_table(output_filename):
+    """
+    Function to generate the NIC Overview Table from the ini files that define
+    the features for each NIC.
+
+    The default features for the table and their order is defined by the
+    'default.ini' file.
+
+    """
+    # Default worning string.
+    warning = 'Warning generate_nic_overview_table()'
+
+    # Get the default features and order from the 'default.ini' file.
+    ini_path = path_join(dirname(output_filename), 'nic_features')
+    config = configparser.ConfigParser()
+    config.optionxform = str
+    config.read(path_join(ini_path, 'default.ini'))
+    default_section = 'Features'
+    default_features = config.items(default_section)
+
+    # Create a dict of the valid features to validate the other ini files.
+    valid_features = {}
+    max_feature_length = 0
+    for feature in default_features:
+        key = feature[0]
+        valid_features[key] = ' '
+        max_feature_length = max(max_feature_length, len(key))
+
+    # Get a list of NIC ini files, excluding 'default.ini'.
+    ini_files = [basename(file) for file in listdir(ini_path)
+                 if file.endswith('.ini') and file != 'default.ini']
+    ini_files.sort()
+
+    # Build up a list of the table header names from the ini filenames.
+    header_names = []
+    for ini_filename in ini_files:
+        name = ini_filename[:-4]
+        name = name.replace('_vf', 'vf')
+
+        # Pad the table header names to match the existing format.
+        if '_vec' in name:
+            pmd, vec = name.split('_')
+            name = '{0:{fill}{align}7}vec'.format(pmd, fill='.', align='<')
+        else:
+            name = '{0:{fill}{align}10}'.format(name, fill=' ', align='<')
+
+        header_names.append(name)
+
+    # Create a dict of the defined features for each NIC from the ini files.
+    ini_data = {}
+    for ini_filename in ini_files:
+        config = configparser.ConfigParser()
+        config.optionxform = str
+        config.read(path_join(ini_path, ini_filename))
+
+        # Initialize the dict with the default.ini value.
+        ini_data[ini_filename] = valid_features.copy()
+
+        # Check for a valid ini section.
+        if not config.has_section(default_section):
+            print("{}: File '{}' has no [{}] secton".format(warning,
+                                                            ini_filename,
+                                                            default_section))
+            continue
+
+        # Check for valid features names.
+        for name, value in config.items(default_section):
+            if name not in valid_features:
+                print("{}: Unknown feature '{}' in '{}'".format(warning,
+                                                                name,
+                                                                ini_filename))
+                continue
+
+            if value is not '':
+                # Get the first letter only.
+                ini_data[ini_filename][name] = value[0]
+
+    # Print out the RST NIC Overview table from the ini file data.
+    outfile = open(output_filename, 'w')
+    num_cols = len(header_names)
+
+    print('.. table:: Features availability in networking drivers\n',
+          file=outfile)
+
+    print_table_header(outfile, num_cols, header_names)
+    print_table_body(outfile, num_cols, ini_files, ini_data, default_features)
+
+
+def print_table_header(outfile, num_cols, header_names):
+    """ Print the RST table header. The header names are vertical. """
+    print_table_divider(outfile, num_cols)
+
+    line = ''
+    for name in header_names:
+        line += ' ' + name[0]
+
+    print_table_row(outfile, 'Feature', line)
+
+    for i in range(1, 10):
+        line = ''
+        for name in header_names:
+            line += ' ' + name[i]
+
+        print_table_row(outfile, '', line)
+
+    print_table_divider(outfile, num_cols)
+
+
+def print_table_body(outfile, num_cols, ini_files, ini_data, default_features):
+    """ Print out the body of the table. Each row is a NIC feature. """
+
+    for feature, _ in default_features:
+        line = ''
+
+        for ini_filename in ini_files:
+            line += ' ' + ini_data[ini_filename][feature]
+
+        print_table_row(outfile, feature, line)
+
+    print_table_divider(outfile, num_cols)
+
+
+def print_table_row(outfile, feature, line):
+    """ Print a single row of the table with fixed formatting. """
+    line = line.rstrip()
+    print('   {:<20}{}'.format(feature, line), file=outfile)
+
+
+def print_table_divider(outfile, num_cols):
+    """ Print the table divider line. """
+    line = ' '
+    column_dividers = ['='] * num_cols
+    line += ' '.join(column_dividers)
+
+    feature = '=' * 20
+
+    print_table_row(outfile, feature, line)
+
+
 def setup(app):
+    generate_nic_overview_table('doc/guides/nics/overview_table.txt')
+
     if LooseVersion(sphinx_version) < LooseVersion('1.3.1'):
         print('Upgrade sphinx to version >= 1.3.1 for '
               'improved Figure/Table number handling.')
diff --git a/doc/guides/nics/nic_features/afpacket.ini b/doc/guides/nics/nic_features/afpacket.ini
new file mode 100644
index 0000000..6026b84
--- /dev/null
+++ b/doc/guides/nics/nic_features/afpacket.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'afpacket' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/bnx2x.ini b/doc/guides/nics/nic_features/bnx2x.ini
new file mode 100644
index 0000000..ee1cf49
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnx2x.ini
@@ -0,0 +1,16 @@
+;
+; Supprted features of the 'bnx2x' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/bnx2x_vf.ini b/doc/guides/nics/nic_features/bnx2x_vf.ini
new file mode 100644
index 0000000..5a98793
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnx2x_vf.ini
@@ -0,0 +1,17 @@
+;
+; Supprted features of the 'bnx2x_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+SR-IOV               = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/bnxt.ini b/doc/guides/nics/nic_features/bnxt.ini
new file mode 100644
index 0000000..2f295ac
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnxt.ini
@@ -0,0 +1,16 @@
+;
+; Supprted features of the 'bnxt' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS reta update      = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/bonding.ini b/doc/guides/nics/nic_features/bonding.ini
new file mode 100644
index 0000000..dbe6676
--- /dev/null
+++ b/doc/guides/nics/nic_features/bonding.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'bonding' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/cxgbe.ini b/doc/guides/nics/nic_features/cxgbe.ini
new file mode 100644
index 0000000..d450333
--- /dev/null
+++ b/doc/guides/nics/nic_features/cxgbe.ini
@@ -0,0 +1,31 @@
+;
+; Supprted features of the 'cxgbe' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+RSS hash             = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/default.ini b/doc/guides/nics/nic_features/default.ini
new file mode 100644
index 0000000..f1bf9bf
--- /dev/null
+++ b/doc/guides/nics/nic_features/default.ini
@@ -0,0 +1,68 @@
+;
+; Features of a default network driver.
+;
+; This file defines the features that are valid for inclusion in
+; the other driver files and also the order that they appear in
+; the features table in the documentation.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/e1000.ini b/doc/guides/nics/nic_features/e1000.ini
new file mode 100644
index 0000000..1bb160b
--- /dev/null
+++ b/doc/guides/nics/nic_features/e1000.ini
@@ -0,0 +1,28 @@
+;
+; Supprted features of the 'e1000' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+VLAN filter          = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Basic stats          = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ena.ini b/doc/guides/nics/nic_features/ena.ini
new file mode 100644
index 0000000..b548514
--- /dev/null
+++ b/doc/guides/nics/nic_features/ena.ini
@@ -0,0 +1,26 @@
+;
+; Supprted features of the 'ena' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/enic.ini b/doc/guides/nics/nic_features/enic.ini
new file mode 100644
index 0000000..a759121
--- /dev/null
+++ b/doc/guides/nics/nic_features/enic.ini
@@ -0,0 +1,28 @@
+;
+; Supprted features of the 'enic' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/fm10k.ini b/doc/guides/nics/nic_features/fm10k.ini
new file mode 100644
index 0000000..42eedc6
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k.ini
@@ -0,0 +1,34 @@
+;
+; Supprted features of the 'fm10k' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/fm10k_vec.ini b/doc/guides/nics/nic_features/fm10k_vec.ini
new file mode 100644
index 0000000..d695d57
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k_vec.ini
@@ -0,0 +1,34 @@
+;
+; Supprted features of the 'fm10k_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/fm10k_vf.ini b/doc/guides/nics/nic_features/fm10k_vf.ini
new file mode 100644
index 0000000..ec9ce7b
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k_vf.ini
@@ -0,0 +1,28 @@
+;
+; Supprted features of the 'fm10k_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/fm10kvf_vec.ini b/doc/guides/nics/nic_features/fm10kvf_vec.ini
new file mode 100644
index 0000000..15464df
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10kvf_vec.ini
@@ -0,0 +1,28 @@
+;
+; Supprted features of the 'fm10kvf_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40e.ini b/doc/guides/nics/nic_features/i40e.ini
new file mode 100644
index 0000000..e44c417
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e.ini
@@ -0,0 +1,47 @@
+;
+; Supprted features of the 'i40e' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+Tunnel filter        = Y
+Hash filter          = Y
+Flow director        = Y
+Flow control         = Y
+Traffic mirroring    = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40e_vec.ini b/doc/guides/nics/nic_features/i40e_vec.ini
new file mode 100644
index 0000000..316b847
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e_vec.ini
@@ -0,0 +1,39 @@
+;
+; Supprted features of the 'i40e_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+Tunnel filter        = Y
+Hash filter          = Y
+Flow director        = Y
+Flow control         = Y
+Traffic mirroring    = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40e_vf.ini b/doc/guides/nics/nic_features/i40e_vf.ini
new file mode 100644
index 0000000..1489c70
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e_vf.ini
@@ -0,0 +1,36 @@
+;
+; Supprted features of the 'i40e_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Hash filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40evf_vec.ini b/doc/guides/nics/nic_features/i40evf_vec.ini
new file mode 100644
index 0000000..a935c15
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40evf_vec.ini
@@ -0,0 +1,28 @@
+;
+; Supprted features of the 'i40evf_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Hash filter          = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/igb.ini b/doc/guides/nics/nic_features/igb.ini
new file mode 100644
index 0000000..98226cc
--- /dev/null
+++ b/doc/guides/nics/nic_features/igb.ini
@@ -0,0 +1,44 @@
+;
+; Supprted features of the 'igb' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Flexible filter      = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+EEPROM dump          = Y
+Registers dump       = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/igb_vf.ini b/doc/guides/nics/nic_features/igb_vf.ini
new file mode 100644
index 0000000..a0b7e90
--- /dev/null
+++ b/doc/guides/nics/nic_features/igb_vf.ini
@@ -0,0 +1,27 @@
+;
+; Supprted features of the 'igb_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Registers dump       = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbe.ini b/doc/guides/nics/nic_features/ixgbe.ini
new file mode 100644
index 0000000..f1d0ba7
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe.ini
@@ -0,0 +1,54 @@
+;
+; Supprted features of the 'ixgbe' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Tunnel filter        = Y
+Flow director        = Y
+Flow control         = Y
+Rate limitation      = Y
+Traffic mirroring    = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbe_vec.ini b/doc/guides/nics/nic_features/ixgbe_vec.ini
new file mode 100644
index 0000000..0b0113f
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe_vec.ini
@@ -0,0 +1,46 @@
+;
+; Supprted features of the 'ixgbe_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Tunnel filter        = Y
+Flow director        = Y
+Flow control         = Y
+Rate limitation      = Y
+Traffic mirroring    = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbe_vf.ini b/doc/guides/nics/nic_features/ixgbe_vf.ini
new file mode 100644
index 0000000..250b29c
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe_vf.ini
@@ -0,0 +1,37 @@
+;
+; Supprted features of the 'ixgbe_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbevf_vec.ini b/doc/guides/nics/nic_features/ixgbevf_vec.ini
new file mode 100644
index 0000000..5a2919c
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbevf_vec.ini
@@ -0,0 +1,29 @@
+;
+; Supprted features of the 'ixgbevf_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Basic stats          = Y
+Extended stats       = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/mlx4.ini b/doc/guides/nics/nic_features/mlx4.ini
new file mode 100644
index 0000000..4691893
--- /dev/null
+++ b/doc/guides/nics/nic_features/mlx4.ini
@@ -0,0 +1,32 @@
+;
+; Supprted features of the 'mlx4' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+SR-IOV               = Y
+VLAN filter          = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Other kdrv           = Y
+Power8               = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/mlx5.ini b/doc/guides/nics/nic_features/mlx5.ini
new file mode 100644
index 0000000..df1c9b6
--- /dev/null
+++ b/doc/guides/nics/nic_features/mlx5.ini
@@ -0,0 +1,35 @@
+;
+; Supprted features of the 'mlx5' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+VLAN filter          = Y
+Flow director        = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Other kdrv           = Y
+Power8               = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/mpipe.ini b/doc/guides/nics/nic_features/mpipe.ini
new file mode 100644
index 0000000..9c007cc
--- /dev/null
+++ b/doc/guides/nics/nic_features/mpipe.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'mpipe' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/nfp.ini b/doc/guides/nics/nic_features/nfp.ini
new file mode 100644
index 0000000..e371427
--- /dev/null
+++ b/doc/guides/nics/nic_features/nfp.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'nfp' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/null.ini b/doc/guides/nics/nic_features/null.ini
new file mode 100644
index 0000000..a14f872
--- /dev/null
+++ b/doc/guides/nics/nic_features/null.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'null' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/pcap.ini b/doc/guides/nics/nic_features/pcap.ini
new file mode 100644
index 0000000..698836d
--- /dev/null
+++ b/doc/guides/nics/nic_features/pcap.ini
@@ -0,0 +1,16 @@
+;
+; Supprted features of the 'pcap' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Jumbo frame          = Y
+Basic stats          = Y
+Multiprocess aware   = Y
+ARMv7                = Y
+ARMv8                = Y
+Power8               = Y
+TILE-Gx              = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/qede.ini b/doc/guides/nics/nic_features/qede.ini
new file mode 100644
index 0000000..082e028
--- /dev/null
+++ b/doc/guides/nics/nic_features/qede.ini
@@ -0,0 +1,29 @@
+;
+; Supprted features of the 'qede' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+MTU update           = Y
+Jumbo frame          = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/qede_vf.ini b/doc/guides/nics/nic_features/qede_vf.ini
new file mode 100644
index 0000000..eb1745a
--- /dev/null
+++ b/doc/guides/nics/nic_features/qede_vf.ini
@@ -0,0 +1,30 @@
+;
+; Supprted features of the 'qede_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+MTU update           = Y
+Jumbo frame          = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+VLAN filter          = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/ring.ini b/doc/guides/nics/nic_features/ring.ini
new file mode 100644
index 0000000..5ec1df6
--- /dev/null
+++ b/doc/guides/nics/nic_features/ring.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'ring' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/szedata2.ini b/doc/guides/nics/nic_features/szedata2.ini
new file mode 100644
index 0000000..c0f450d
--- /dev/null
+++ b/doc/guides/nics/nic_features/szedata2.ini
@@ -0,0 +1,17 @@
+;
+; Supprted features of the 'szedata2' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Other kdrv           = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/thunderx.ini b/doc/guides/nics/nic_features/thunderx.ini
new file mode 100644
index 0000000..7712acd
--- /dev/null
+++ b/doc/guides/nics/nic_features/thunderx.ini
@@ -0,0 +1,30 @@
+;
+; Supprted features of the 'thunderx' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+CRC offload          = Y
+VLAN offload         = P
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+Linux VFIO           = Y
+ARMv8                = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/vhost.ini b/doc/guides/nics/nic_features/vhost.ini
new file mode 100644
index 0000000..76fbf28
--- /dev/null
+++ b/doc/guides/nics/nic_features/vhost.ini
@@ -0,0 +1,13 @@
+;
+; Supprted features of the 'vhost' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue status event   = Y
+Basic stats          = Y
+Extended stats       = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/virtio.ini b/doc/guides/nics/nic_features/virtio.ini
new file mode 100644
index 0000000..6a94b41
--- /dev/null
+++ b/doc/guides/nics/nic_features/virtio.ini
@@ -0,0 +1,24 @@
+;
+; Supprted features of the 'virtio' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+VLAN filter          = Y
+Basic stats          = Y
+Stats per queue      = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv7                = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/virtio_vec.ini b/doc/guides/nics/nic_features/virtio_vec.ini
new file mode 100644
index 0000000..6fa3562
--- /dev/null
+++ b/doc/guides/nics/nic_features/virtio_vec.ini
@@ -0,0 +1,22 @@
+;
+; Supprted features of the 'virtio_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+VLAN filter          = Y
+Basic stats          = Y
+Stats per queue      = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv7                = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/vmxnet3.ini b/doc/guides/nics/nic_features/vmxnet3.ini
new file mode 100644
index 0000000..e81d476
--- /dev/null
+++ b/doc/guides/nics/nic_features/vmxnet3.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'vmxnet3' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/xenvirt.ini b/doc/guides/nics/nic_features/xenvirt.ini
new file mode 100644
index 0000000..7996663
--- /dev/null
+++ b/doc/guides/nics/nic_features/xenvirt.ini
@@ -0,0 +1,6 @@
+;
+; Supprted features of the 'xenvirt' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 572ced4..29392c7 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -72,81 +72,8 @@ Most of these differences are summarized below.
       }
    </style>
 
-.. table:: Features availability in networking drivers
-
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-   Feature              a b b b b c e e e i i i i i i i i i i f f f f m m m n n p q q r s t v v v v x
-                        f n n n o x 1 n n 4 4 4 4 g g x x x x m m m m l l p f u c e e i z h h i i m e
-                        p x x x n g 0 a i 0 0 0 0 b b g g g g 1 1 1 1 x x i p l a d d n e u o r r x n
-                        a 2 2 t d b 0   c e e e e   v b b b b 0 0 0 0 4 5 p   l p e e g d n s t t n v
-                        c x x   i e 0       . v v   f e e e e k k k k     e         v   a d t i i e i
-                        k   v   n           . f f       . v v   . v v               f   t e   o o t r
-                        e   f   g           .   .       . f f   . f f                   a r     . 3 t
-                        t                   v   v       v   v   v   v                   2 x     v
-                                            e   e       e   e   e   e                           e
-                                            c   c       c   c   c   c                           c
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-   Speed capabilities
-   Link status            Y Y Y   Y Y   Y Y Y     Y   Y Y Y Y         Y Y         Y Y   Y Y Y Y Y
-   Link status event      Y Y       Y     Y Y     Y   Y Y             Y Y         Y Y     Y Y
-   Queue status event                                                                       Y
-   Rx interrupt                     Y     Y Y Y Y Y Y Y Y Y Y Y Y Y Y
-   Queue start/stop           Y   Y   Y Y Y Y Y Y     Y Y     Y Y Y Y Y Y               Y Y   Y Y
-   MTU update                     Y Y Y Y         Y   Y Y Y Y         Y Y         Y Y     Y
-   Jumbo frame                    Y Y Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y       Y Y Y     Y
-   Scattered Rx                   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y               Y Y   Y
-   LRO                                                Y Y Y Y
-   TSO                            Y   Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y
-   Promiscuous mode       Y Y Y   Y Y   Y Y Y Y Y Y Y Y Y     Y Y     Y Y         Y Y   Y Y   Y Y
-   Allmulticast mode              Y Y     Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y   Y Y   Y Y
-   Unicast MAC filter     Y Y Y     Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y         Y Y
-   Multicast MAC filter   Y Y Y         Y Y Y Y Y             Y Y     Y Y         Y Y         Y Y
-   RSS hash                       Y   Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y         Y Y     Y
-   RSS key update                     Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y     Y
-   RSS reta update            Y       Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y     Y
-   VMDq                                   Y Y     Y   Y Y     Y Y
-   SR-IOV                   Y         Y   Y Y     Y   Y Y             Y Y           Y     Y
-   DCB                                    Y Y     Y   Y Y
-   VLAN filter                      Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y         Y Y
-   Ethertype filter                       Y Y     Y   Y Y
-   N-tuple filter                                 Y   Y Y
-   SYN filter                                     Y   Y Y
-   Tunnel filter                          Y Y         Y Y
-   Flexible filter                                Y
-   Hash filter                            Y Y Y Y
-   Flow director                          Y Y         Y Y               Y
-   Flow control                   Y Y     Y Y     Y   Y Y                         Y Y
-   Rate limitation                                    Y Y
-   Traffic mirroring                      Y Y         Y Y
-   CRC offload                    Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y     Y
-   VLAN offload                   Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y     P
-   QinQ offload                     Y     Y   Y   Y Y Y   Y
-   L3 checksum offload            Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y                 Y
-   L4 checksum offload            Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y                 Y
-   Inner L3 checksum                  Y   Y   Y       Y   Y           Y
-   Inner L4 checksum                  Y   Y   Y       Y   Y           Y
-   Packet type parsing            Y     Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y         Y Y     Y
-   Timesync                               Y Y     Y   Y Y
-   Basic stats            Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y Y Y   Y Y Y Y Y
-   Extended stats         Y Y Y       Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y             Y Y   Y   Y
-   Stats per queue                Y                   Y Y     Y Y Y Y Y Y         Y Y   Y Y   Y Y
-   EEPROM dump                    Y               Y   Y Y
-   Registers dump                 Y               Y Y Y Y Y Y                             Y
-   Multiprocess aware                     Y Y Y Y     Y Y Y Y Y Y Y Y Y Y       Y Y Y     Y
-   BSD nic_uio                    Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                         Y Y
-   Linux UIO              Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y             Y Y         Y Y
-   Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
-   Other kdrv                                                         Y Y               Y
-   ARMv7                                                                        Y             Y Y
-   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
-   Power8                                                             Y Y       Y
-   TILE-Gx                                                                      Y
-   x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
-   x86-64                 Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y Y Y   Y   Y Y Y
-   Usage doc              Y Y     Y     Y                             Y Y       Y Y Y   Y Y   Y
-   Design doc
-   Perf doc
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+
+.. include:: overview_table.txt
 
 .. Note::
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v2] doc: autogenerate nic overview table from ini files
  2016-07-17 12:59 ` [PATCH v2] " John McNamara
@ 2016-07-19 13:08   ` Ferruh Yigit
  0 siblings, 0 replies; 12+ messages in thread
From: Ferruh Yigit @ 2016-07-19 13:08 UTC (permalink / raw)
  To: John McNamara, dev

On 7/17/2016 1:59 PM, John McNamara wrote:
> Convert the NIC feature table in the overview doc into a set of ini
> files and add functions into the Sphinx conf.py file to auto-generate
> them back into an RST table.
> 
> The reason for doing this is to make it easier for PMD maintainers to
> update the feature matrix that makes up the table and to avoid
> frequent and hard to resolve conflicts in doc/guides/nics/overview.rst.
> 
> A NIC/PMD feature matrix is now an ini file like the following:
> 
>     $ head doc/guides/nics/nic_features/i40e.ini
>     ;
>     ; Features of the i40e network driver.
>     ;
>     [Features]
>     Link status          = Y
>     Link status event    = Y
>     Rx interrupt         = Y
>     Queue start/stop     = Y
>     ...
> 
> The output RST table matches the existing table with the column
> headers sorted.
> 
> Signed-off-by: John McNamara <john.mcnamara@intel.com>

Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>

^ permalink raw reply	[flat|nested] 12+ messages in thread

* [PATCH v3] doc: autogenerate nic overview table from ini files
  2016-06-30 18:03 [PATCH v1] doc: autogenerate nic overview table from ini files John McNamara
                   ` (2 preceding siblings ...)
  2016-07-17 12:59 ` [PATCH v2] " John McNamara
@ 2016-07-29 11:59 ` John McNamara
  2016-07-29 12:02   ` Mcnamara, John
  2016-08-01 21:37   ` Thomas Monjalon
  3 siblings, 2 replies; 12+ messages in thread
From: John McNamara @ 2016-07-29 11:59 UTC (permalink / raw)
  To: dev; +Cc: John McNamara

Convert the NIC feature table in the overview doc into a set of ini
files and add functions into the Sphinx conf.py file to auto-generate
them back into an RST table.

The reason for doing this is to make it easier for PMD maintainers to
update the feature matrix that makes up the table and to avoid
frequent and hard to resolve conflicts in doc/guides/nics/overview.rst.

A NIC/PMD feature matrix is now an ini file like the following:

    $ head doc/guides/nics/nic_features/i40e.ini
    ;
    ; Features of the i40e network driver.
    ;
    [Features]
    Link status          = Y
    Link status event    = Y
    Rx interrupt         = Y
    Queue start/stop     = Y
    ...

The output RST table matches the existing table with the column
headers sorted.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
Tested-by: Ferruh Yigit <ferruh.yigit@intel.com>
---
 .gitignore                                   |   2 +
 doc/guides/conf.py                           | 155 +++++++++++++++++++++++++++
 doc/guides/nics/nic_features/afpacket.ini    |   6 ++
 doc/guides/nics/nic_features/bnx2x.ini       |  16 +++
 doc/guides/nics/nic_features/bnx2x_vf.ini    |  17 +++
 doc/guides/nics/nic_features/bnxt.ini        |  16 +++
 doc/guides/nics/nic_features/bonding.ini     |   6 ++
 doc/guides/nics/nic_features/cxgbe.ini       |  31 ++++++
 doc/guides/nics/nic_features/default.ini     |  68 ++++++++++++
 doc/guides/nics/nic_features/e1000.ini       |  28 +++++
 doc/guides/nics/nic_features/ena.ini         |  26 +++++
 doc/guides/nics/nic_features/enic.ini        |  28 +++++
 doc/guides/nics/nic_features/fm10k.ini       |  34 ++++++
 doc/guides/nics/nic_features/fm10k_vec.ini   |  34 ++++++
 doc/guides/nics/nic_features/fm10k_vf.ini    |  28 +++++
 doc/guides/nics/nic_features/fm10kvf_vec.ini |  28 +++++
 doc/guides/nics/nic_features/i40e.ini        |  47 ++++++++
 doc/guides/nics/nic_features/i40e_vec.ini    |  39 +++++++
 doc/guides/nics/nic_features/i40e_vf.ini     |  36 +++++++
 doc/guides/nics/nic_features/i40evf_vec.ini  |  28 +++++
 doc/guides/nics/nic_features/igb.ini         |  44 ++++++++
 doc/guides/nics/nic_features/igb_vf.ini      |  27 +++++
 doc/guides/nics/nic_features/ixgbe.ini       |  54 ++++++++++
 doc/guides/nics/nic_features/ixgbe_vec.ini   |  46 ++++++++
 doc/guides/nics/nic_features/ixgbe_vf.ini    |  37 +++++++
 doc/guides/nics/nic_features/ixgbevf_vec.ini |  29 +++++
 doc/guides/nics/nic_features/mlx4.ini        |  32 ++++++
 doc/guides/nics/nic_features/mlx5.ini        |  35 ++++++
 doc/guides/nics/nic_features/mpipe.ini       |   6 ++
 doc/guides/nics/nic_features/nfp.ini         |   6 ++
 doc/guides/nics/nic_features/null.ini        |   6 ++
 doc/guides/nics/nic_features/pcap.ini        |  16 +++
 doc/guides/nics/nic_features/qede.ini        |  29 +++++
 doc/guides/nics/nic_features/qede_vf.ini     |  30 ++++++
 doc/guides/nics/nic_features/ring.ini        |   6 ++
 doc/guides/nics/nic_features/szedata2.ini    |  17 +++
 doc/guides/nics/nic_features/thunderx.ini    |  30 ++++++
 doc/guides/nics/nic_features/vhost.ini       |  13 +++
 doc/guides/nics/nic_features/virtio.ini      |  24 +++++
 doc/guides/nics/nic_features/virtio_vec.ini  |  22 ++++
 doc/guides/nics/nic_features/vmxnet3.ini     |   6 ++
 doc/guides/nics/nic_features/xenvirt.ini     |   6 ++
 doc/guides/nics/overview.rst                 |  76 +------------
 43 files changed, 1195 insertions(+), 75 deletions(-)
 create mode 100644 doc/guides/nics/nic_features/afpacket.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x.ini
 create mode 100644 doc/guides/nics/nic_features/bnx2x_vf.ini
 create mode 100644 doc/guides/nics/nic_features/bnxt.ini
 create mode 100644 doc/guides/nics/nic_features/bonding.ini
 create mode 100644 doc/guides/nics/nic_features/cxgbe.ini
 create mode 100644 doc/guides/nics/nic_features/default.ini
 create mode 100644 doc/guides/nics/nic_features/e1000.ini
 create mode 100644 doc/guides/nics/nic_features/ena.ini
 create mode 100644 doc/guides/nics/nic_features/enic.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vec.ini
 create mode 100644 doc/guides/nics/nic_features/fm10k_vf.ini
 create mode 100644 doc/guides/nics/nic_features/fm10kvf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vec.ini
 create mode 100644 doc/guides/nics/nic_features/i40e_vf.ini
 create mode 100644 doc/guides/nics/nic_features/i40evf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/igb.ini
 create mode 100644 doc/guides/nics/nic_features/igb_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vec.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbe_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ixgbevf_vec.ini
 create mode 100644 doc/guides/nics/nic_features/mlx4.ini
 create mode 100644 doc/guides/nics/nic_features/mlx5.ini
 create mode 100644 doc/guides/nics/nic_features/mpipe.ini
 create mode 100644 doc/guides/nics/nic_features/nfp.ini
 create mode 100644 doc/guides/nics/nic_features/null.ini
 create mode 100644 doc/guides/nics/nic_features/pcap.ini
 create mode 100644 doc/guides/nics/nic_features/qede.ini
 create mode 100644 doc/guides/nics/nic_features/qede_vf.ini
 create mode 100644 doc/guides/nics/nic_features/ring.ini
 create mode 100644 doc/guides/nics/nic_features/szedata2.ini
 create mode 100644 doc/guides/nics/nic_features/thunderx.ini
 create mode 100644 doc/guides/nics/nic_features/vhost.ini
 create mode 100644 doc/guides/nics/nic_features/virtio.ini
 create mode 100644 doc/guides/nics/nic_features/virtio_vec.ini
 create mode 100644 doc/guides/nics/nic_features/vmxnet3.ini
 create mode 100644 doc/guides/nics/nic_features/xenvirt.ini

diff --git a/.gitignore b/.gitignore
index e69de29..72005df 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1,2 @@
+doc/guides/nics/overview_table.txt
+
diff --git a/doc/guides/conf.py b/doc/guides/conf.py
index 2c5610f..4d69c0f 100644
--- a/doc/guides/conf.py
+++ b/doc/guides/conf.py
@@ -28,12 +28,25 @@
 #   (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 #   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+from __future__ import print_function
 import subprocess
 from docutils import nodes
 from distutils.version import LooseVersion
 from sphinx import __version__ as sphinx_version
 from sphinx.highlighting import PygmentsBridge
 from pygments.formatters.latex import LatexFormatter
+from os import listdir
+from os.path import basename
+from os.path import dirname
+from os.path import join as path_join
+
+try:
+    # Python 2.
+    import ConfigParser as configparser
+except:
+    # Python 3.
+    import configparser
+
 
 project = 'Data Plane Development Kit'
 
@@ -146,7 +159,149 @@ def process_numref(app, doctree, from_docname):
                                       internal=True)
             node.replace_self(newnode)
 
+
+def generate_nic_overview_table(output_filename):
+    """
+    Function to generate the NIC Overview Table from the ini files that define
+    the features for each NIC.
+
+    The default features for the table and their order is defined by the
+    'default.ini' file.
+
+    """
+    # Default worning string.
+    warning = 'Warning generate_nic_overview_table()'
+
+    # Get the default features and order from the 'default.ini' file.
+    ini_path = path_join(dirname(output_filename), 'nic_features')
+    config = configparser.ConfigParser()
+    config.optionxform = str
+    config.read(path_join(ini_path, 'default.ini'))
+    default_section = 'Features'
+    default_features = config.items(default_section)
+
+    # Create a dict of the valid features to validate the other ini files.
+    valid_features = {}
+    max_feature_length = 0
+    for feature in default_features:
+        key = feature[0]
+        valid_features[key] = ' '
+        max_feature_length = max(max_feature_length, len(key))
+
+    # Get a list of NIC ini files, excluding 'default.ini'.
+    ini_files = [basename(file) for file in listdir(ini_path)
+                 if file.endswith('.ini') and file != 'default.ini']
+    ini_files.sort()
+
+    # Build up a list of the table header names from the ini filenames.
+    header_names = []
+    for ini_filename in ini_files:
+        name = ini_filename[:-4]
+        name = name.replace('_vf', 'vf')
+
+        # Pad the table header names to match the existing format.
+        if '_vec' in name:
+            pmd, vec = name.split('_')
+            name = '{0:{fill}{align}7}vec'.format(pmd, fill='.', align='<')
+        else:
+            name = '{0:{fill}{align}10}'.format(name, fill=' ', align='<')
+
+        header_names.append(name)
+
+    # Create a dict of the defined features for each NIC from the ini files.
+    ini_data = {}
+    for ini_filename in ini_files:
+        config = configparser.ConfigParser()
+        config.optionxform = str
+        config.read(path_join(ini_path, ini_filename))
+
+        # Initialize the dict with the default.ini value.
+        ini_data[ini_filename] = valid_features.copy()
+
+        # Check for a valid ini section.
+        if not config.has_section(default_section):
+            print("{}: File '{}' has no [{}] secton".format(warning,
+                                                            ini_filename,
+                                                            default_section))
+            continue
+
+        # Check for valid features names.
+        for name, value in config.items(default_section):
+            if name not in valid_features:
+                print("{}: Unknown feature '{}' in '{}'".format(warning,
+                                                                name,
+                                                                ini_filename))
+                continue
+
+            if value is not '':
+                # Get the first letter only.
+                ini_data[ini_filename][name] = value[0]
+
+    # Print out the RST NIC Overview table from the ini file data.
+    outfile = open(output_filename, 'w')
+    num_cols = len(header_names)
+
+    print('.. table:: Features availability in networking drivers\n',
+          file=outfile)
+
+    print_table_header(outfile, num_cols, header_names)
+    print_table_body(outfile, num_cols, ini_files, ini_data, default_features)
+
+
+def print_table_header(outfile, num_cols, header_names):
+    """ Print the RST table header. The header names are vertical. """
+    print_table_divider(outfile, num_cols)
+
+    line = ''
+    for name in header_names:
+        line += ' ' + name[0]
+
+    print_table_row(outfile, 'Feature', line)
+
+    for i in range(1, 10):
+        line = ''
+        for name in header_names:
+            line += ' ' + name[i]
+
+        print_table_row(outfile, '', line)
+
+    print_table_divider(outfile, num_cols)
+
+
+def print_table_body(outfile, num_cols, ini_files, ini_data, default_features):
+    """ Print out the body of the table. Each row is a NIC feature. """
+
+    for feature, _ in default_features:
+        line = ''
+
+        for ini_filename in ini_files:
+            line += ' ' + ini_data[ini_filename][feature]
+
+        print_table_row(outfile, feature, line)
+
+    print_table_divider(outfile, num_cols)
+
+
+def print_table_row(outfile, feature, line):
+    """ Print a single row of the table with fixed formatting. """
+    line = line.rstrip()
+    print('   {:<20}{}'.format(feature, line), file=outfile)
+
+
+def print_table_divider(outfile, num_cols):
+    """ Print the table divider line. """
+    line = ' '
+    column_dividers = ['='] * num_cols
+    line += ' '.join(column_dividers)
+
+    feature = '=' * 20
+
+    print_table_row(outfile, feature, line)
+
+
 def setup(app):
+    generate_nic_overview_table('doc/guides/nics/overview_table.txt')
+
     if LooseVersion(sphinx_version) < LooseVersion('1.3.1'):
         print('Upgrade sphinx to version >= 1.3.1 for '
               'improved Figure/Table number handling.')
diff --git a/doc/guides/nics/nic_features/afpacket.ini b/doc/guides/nics/nic_features/afpacket.ini
new file mode 100644
index 0000000..17505dd
--- /dev/null
+++ b/doc/guides/nics/nic_features/afpacket.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'afpacket' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/bnx2x.ini b/doc/guides/nics/nic_features/bnx2x.ini
new file mode 100644
index 0000000..f5f5e80
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnx2x.ini
@@ -0,0 +1,16 @@
+;
+; Supported features of the 'bnx2x' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/bnx2x_vf.ini b/doc/guides/nics/nic_features/bnx2x_vf.ini
new file mode 100644
index 0000000..bb438c4
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnx2x_vf.ini
@@ -0,0 +1,17 @@
+;
+; Supported features of the 'bnx2x_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+SR-IOV               = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/bnxt.ini b/doc/guides/nics/nic_features/bnxt.ini
new file mode 100644
index 0000000..0a86a5b
--- /dev/null
+++ b/doc/guides/nics/nic_features/bnxt.ini
@@ -0,0 +1,16 @@
+;
+; Supported features of the 'bnxt' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS reta update      = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/bonding.ini b/doc/guides/nics/nic_features/bonding.ini
new file mode 100644
index 0000000..7cf98ec
--- /dev/null
+++ b/doc/guides/nics/nic_features/bonding.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'bonding' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/cxgbe.ini b/doc/guides/nics/nic_features/cxgbe.ini
new file mode 100644
index 0000000..12a50dd
--- /dev/null
+++ b/doc/guides/nics/nic_features/cxgbe.ini
@@ -0,0 +1,31 @@
+;
+; Supported features of the 'cxgbe' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+RSS hash             = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/default.ini b/doc/guides/nics/nic_features/default.ini
new file mode 100644
index 0000000..f1bf9bf
--- /dev/null
+++ b/doc/guides/nics/nic_features/default.ini
@@ -0,0 +1,68 @@
+;
+; Features of a default network driver.
+;
+; This file defines the features that are valid for inclusion in
+; the other driver files and also the order that they appear in
+; the features table in the documentation.
+;
+[Features]
+Speed capabilities   =
+Link status          =
+Link status event    =
+Queue status event   =
+Rx interrupt         =
+Queue start/stop     =
+MTU update           =
+Jumbo frame          =
+Scattered Rx         =
+LRO                  =
+TSO                  =
+Promiscuous mode     =
+Allmulticast mode    =
+Unicast MAC filter   =
+Multicast MAC filter =
+RSS hash             =
+RSS key update       =
+RSS reta update      =
+VMDq                 =
+SR-IOV               =
+DCB                  =
+VLAN filter          =
+Ethertype filter     =
+N-tuple filter       =
+SYN filter           =
+Tunnel filter        =
+Flexible filter      =
+Hash filter          =
+Flow director        =
+Flow control         =
+Rate limitation      =
+Traffic mirroring    =
+CRC offload          =
+VLAN offload         =
+QinQ offload         =
+L3 checksum offload  =
+L4 checksum offload  =
+Inner L3 checksum    =
+Inner L4 checksum    =
+Packet type parsing  =
+Timesync             =
+Basic stats          =
+Extended stats       =
+Stats per queue      =
+EEPROM dump          =
+Registers dump       =
+Multiprocess aware   =
+BSD nic_uio          =
+Linux UIO            =
+Linux VFIO           =
+Other kdrv           =
+ARMv7                =
+ARMv8                =
+Power8               =
+TILE-Gx              =
+x86-32               =
+x86-64               =
+Usage doc            =
+Design doc           =
+Perf doc             =
diff --git a/doc/guides/nics/nic_features/e1000.ini b/doc/guides/nics/nic_features/e1000.ini
new file mode 100644
index 0000000..20a5599
--- /dev/null
+++ b/doc/guides/nics/nic_features/e1000.ini
@@ -0,0 +1,28 @@
+;
+; Supported features of the 'e1000' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+VLAN filter          = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Basic stats          = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ena.ini b/doc/guides/nics/nic_features/ena.ini
new file mode 100644
index 0000000..950f040
--- /dev/null
+++ b/doc/guides/nics/nic_features/ena.ini
@@ -0,0 +1,26 @@
+;
+; Supported features of the 'ena' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Basic stats          = Y
+Extended stats       = Y
+Linux UIO            = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/enic.ini b/doc/guides/nics/nic_features/enic.ini
new file mode 100644
index 0000000..f6acb94
--- /dev/null
+++ b/doc/guides/nics/nic_features/enic.ini
@@ -0,0 +1,28 @@
+;
+; Supported features of the 'enic' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+MTU update           = P
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/fm10k.ini b/doc/guides/nics/nic_features/fm10k.ini
new file mode 100644
index 0000000..0dbac08
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k.ini
@@ -0,0 +1,34 @@
+;
+; Supported features of the 'fm10k' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/fm10k_vec.ini b/doc/guides/nics/nic_features/fm10k_vec.ini
new file mode 100644
index 0000000..3667925
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k_vec.ini
@@ -0,0 +1,34 @@
+;
+; Supported features of the 'fm10k_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/fm10k_vf.ini b/doc/guides/nics/nic_features/fm10k_vf.ini
new file mode 100644
index 0000000..942d478
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10k_vf.ini
@@ -0,0 +1,28 @@
+;
+; Supported features of the 'fm10k_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/fm10kvf_vec.ini b/doc/guides/nics/nic_features/fm10kvf_vec.ini
new file mode 100644
index 0000000..23517d6
--- /dev/null
+++ b/doc/guides/nics/nic_features/fm10kvf_vec.ini
@@ -0,0 +1,28 @@
+;
+; Supported features of the 'fm10kvf_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40e.ini b/doc/guides/nics/nic_features/i40e.ini
new file mode 100644
index 0000000..17a33ca
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e.ini
@@ -0,0 +1,47 @@
+;
+; Supported features of the 'i40e' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+Tunnel filter        = Y
+Hash filter          = Y
+Flow director        = Y
+Flow control         = Y
+Traffic mirroring    = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40e_vec.ini b/doc/guides/nics/nic_features/i40e_vec.ini
new file mode 100644
index 0000000..bb1400e
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e_vec.ini
@@ -0,0 +1,39 @@
+;
+; Supported features of the 'i40e_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+Tunnel filter        = Y
+Hash filter          = Y
+Flow director        = Y
+Flow control         = Y
+Traffic mirroring    = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40e_vf.ini b/doc/guides/nics/nic_features/i40e_vf.ini
new file mode 100644
index 0000000..db3deb9
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40e_vf.ini
@@ -0,0 +1,36 @@
+;
+; Supported features of the 'i40e_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Hash filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/i40evf_vec.ini b/doc/guides/nics/nic_features/i40evf_vec.ini
new file mode 100644
index 0000000..54b49d4
--- /dev/null
+++ b/doc/guides/nics/nic_features/i40evf_vec.ini
@@ -0,0 +1,28 @@
+;
+; Supported features of the 'i40evf_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Queue start/stop     = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Hash filter          = Y
+Basic stats          = Y
+Extended stats       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/igb.ini b/doc/guides/nics/nic_features/igb.ini
new file mode 100644
index 0000000..b9ee5cd
--- /dev/null
+++ b/doc/guides/nics/nic_features/igb.ini
@@ -0,0 +1,44 @@
+;
+; Supported features of the 'igb' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Flexible filter      = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+EEPROM dump          = Y
+Registers dump       = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/igb_vf.ini b/doc/guides/nics/nic_features/igb_vf.ini
new file mode 100644
index 0000000..318eebb
--- /dev/null
+++ b/doc/guides/nics/nic_features/igb_vf.ini
@@ -0,0 +1,27 @@
+;
+; Supported features of the 'igb_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Rx interrupt         = Y
+Scattered Rx         = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Registers dump       = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbe.ini b/doc/guides/nics/nic_features/ixgbe.ini
new file mode 100644
index 0000000..0315737
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe.ini
@@ -0,0 +1,54 @@
+;
+; Supported features of the 'ixgbe' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Tunnel filter        = Y
+Flow director        = Y
+Flow control         = Y
+Rate limitation      = Y
+Traffic mirroring    = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbe_vec.ini b/doc/guides/nics/nic_features/ixgbe_vec.ini
new file mode 100644
index 0000000..2357eda
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe_vec.ini
@@ -0,0 +1,46 @@
+;
+; Supported features of the 'ixgbe_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Rx interrupt         = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VMDq                 = Y
+SR-IOV               = Y
+DCB                  = Y
+VLAN filter          = Y
+Ethertype filter     = Y
+N-tuple filter       = Y
+SYN filter           = Y
+Tunnel filter        = Y
+Flow director        = Y
+Flow control         = Y
+Rate limitation      = Y
+Traffic mirroring    = Y
+Timesync             = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+EEPROM dump          = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbe_vf.ini b/doc/guides/nics/nic_features/ixgbe_vf.ini
new file mode 100644
index 0000000..693c0be
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbe_vf.ini
@@ -0,0 +1,37 @@
+;
+; Supported features of the 'ixgbe_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+CRC offload          = Y
+VLAN offload         = Y
+QinQ offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/ixgbevf_vec.ini b/doc/guides/nics/nic_features/ixgbevf_vec.ini
new file mode 100644
index 0000000..6ff24bd
--- /dev/null
+++ b/doc/guides/nics/nic_features/ixgbevf_vec.ini
@@ -0,0 +1,29 @@
+;
+; Supported features of the 'ixgbevf_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Rx interrupt         = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+LRO                  = Y
+TSO                  = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Basic stats          = Y
+Extended stats       = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/mlx4.ini b/doc/guides/nics/nic_features/mlx4.ini
new file mode 100644
index 0000000..c0ba053
--- /dev/null
+++ b/doc/guides/nics/nic_features/mlx4.ini
@@ -0,0 +1,32 @@
+;
+; Supported features of the 'mlx4' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+SR-IOV               = Y
+VLAN filter          = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Inner L3 checksum    = Y
+Inner L4 checksum    = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Other kdrv           = Y
+Power8               = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/mlx5.ini b/doc/guides/nics/nic_features/mlx5.ini
new file mode 100644
index 0000000..34f9e38
--- /dev/null
+++ b/doc/guides/nics/nic_features/mlx5.ini
@@ -0,0 +1,35 @@
+;
+; Supported features of the 'mlx5' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+VLAN filter          = Y
+Flow director        = Y
+CRC offload          = Y
+VLAN offload         = Y
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Other kdrv           = Y
+Power8               = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/mpipe.ini b/doc/guides/nics/nic_features/mpipe.ini
new file mode 100644
index 0000000..9321a6c
--- /dev/null
+++ b/doc/guides/nics/nic_features/mpipe.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'mpipe' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/nfp.ini b/doc/guides/nics/nic_features/nfp.ini
new file mode 100644
index 0000000..5cf1d59
--- /dev/null
+++ b/doc/guides/nics/nic_features/nfp.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'nfp' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/null.ini b/doc/guides/nics/nic_features/null.ini
new file mode 100644
index 0000000..3462692
--- /dev/null
+++ b/doc/guides/nics/nic_features/null.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'null' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/pcap.ini b/doc/guides/nics/nic_features/pcap.ini
new file mode 100644
index 0000000..a87fd4d
--- /dev/null
+++ b/doc/guides/nics/nic_features/pcap.ini
@@ -0,0 +1,16 @@
+;
+; Supported features of the 'pcap' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Jumbo frame          = Y
+Basic stats          = Y
+Multiprocess aware   = Y
+ARMv7                = Y
+ARMv8                = Y
+Power8               = Y
+TILE-Gx              = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/qede.ini b/doc/guides/nics/nic_features/qede.ini
new file mode 100644
index 0000000..bfb1b7e
--- /dev/null
+++ b/doc/guides/nics/nic_features/qede.ini
@@ -0,0 +1,29 @@
+;
+; Supported features of the 'qede' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+MTU update           = Y
+Jumbo frame          = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+VLAN filter          = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/qede_vf.ini b/doc/guides/nics/nic_features/qede_vf.ini
new file mode 100644
index 0000000..d58a2bc
--- /dev/null
+++ b/doc/guides/nics/nic_features/qede_vf.ini
@@ -0,0 +1,30 @@
+;
+; Supported features of the 'qede_vf' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+MTU update           = Y
+Jumbo frame          = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+VLAN filter          = Y
+Flow control         = Y
+CRC offload          = Y
+VLAN offload         = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Multiprocess aware   = Y
+Linux UIO            = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/ring.ini b/doc/guides/nics/nic_features/ring.ini
new file mode 100644
index 0000000..e2055f1
--- /dev/null
+++ b/doc/guides/nics/nic_features/ring.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'ring' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/szedata2.ini b/doc/guides/nics/nic_features/szedata2.ini
new file mode 100644
index 0000000..d70ecdd
--- /dev/null
+++ b/doc/guides/nics/nic_features/szedata2.ini
@@ -0,0 +1,17 @@
+;
+; Supported features of the 'szedata2' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Basic stats          = Y
+Extended stats       = Y
+Stats per queue      = Y
+Other kdrv           = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/thunderx.ini b/doc/guides/nics/nic_features/thunderx.ini
new file mode 100644
index 0000000..1163734
--- /dev/null
+++ b/doc/guides/nics/nic_features/thunderx.ini
@@ -0,0 +1,30 @@
+;
+; Supported features of the 'thunderx' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue start/stop     = Y
+MTU update           = Y
+Jumbo frame          = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+RSS hash             = Y
+RSS key update       = Y
+RSS reta update      = Y
+SR-IOV               = Y
+CRC offload          = Y
+VLAN offload         = P
+L3 checksum offload  = Y
+L4 checksum offload  = Y
+Packet type parsing  = Y
+Basic stats          = Y
+Stats per queue      = Y
+Registers dump       = Y
+Multiprocess aware   = Y
+Linux VFIO           = Y
+ARMv8                = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/vhost.ini b/doc/guides/nics/nic_features/vhost.ini
new file mode 100644
index 0000000..8dbde3f
--- /dev/null
+++ b/doc/guides/nics/nic_features/vhost.ini
@@ -0,0 +1,13 @@
+;
+; Supported features of the 'vhost' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Link status event    = Y
+Queue status event   = Y
+Basic stats          = Y
+Extended stats       = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/virtio.ini b/doc/guides/nics/nic_features/virtio.ini
new file mode 100644
index 0000000..35b54b5
--- /dev/null
+++ b/doc/guides/nics/nic_features/virtio.ini
@@ -0,0 +1,24 @@
+;
+; Supported features of the 'virtio' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Scattered Rx         = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+VLAN filter          = Y
+Basic stats          = Y
+Stats per queue      = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv7                = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
+Usage doc            = Y
diff --git a/doc/guides/nics/nic_features/virtio_vec.ini b/doc/guides/nics/nic_features/virtio_vec.ini
new file mode 100644
index 0000000..48d6077
--- /dev/null
+++ b/doc/guides/nics/nic_features/virtio_vec.ini
@@ -0,0 +1,22 @@
+;
+; Supported features of the 'virtio_vec' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
+Link status          = Y
+Queue start/stop     = Y
+Promiscuous mode     = Y
+Allmulticast mode    = Y
+Unicast MAC filter   = Y
+Multicast MAC filter = Y
+VLAN filter          = Y
+Basic stats          = Y
+Stats per queue      = Y
+BSD nic_uio          = Y
+Linux UIO            = Y
+Linux VFIO           = Y
+ARMv7                = Y
+ARMv8                = Y
+x86-32               = Y
+x86-64               = Y
diff --git a/doc/guides/nics/nic_features/vmxnet3.ini b/doc/guides/nics/nic_features/vmxnet3.ini
new file mode 100644
index 0000000..441cd0b
--- /dev/null
+++ b/doc/guides/nics/nic_features/vmxnet3.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'vmxnet3' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/nic_features/xenvirt.ini b/doc/guides/nics/nic_features/xenvirt.ini
new file mode 100644
index 0000000..8352fbb
--- /dev/null
+++ b/doc/guides/nics/nic_features/xenvirt.ini
@@ -0,0 +1,6 @@
+;
+; Supported features of the 'xenvirt' network poll mode driver.
+;
+; Refer to default.ini for the full list of availble PMD features.
+;
+[Features]
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
index 6abbae6..2c7f5eb 100644
--- a/doc/guides/nics/overview.rst
+++ b/doc/guides/nics/overview.rst
@@ -72,81 +72,7 @@ Most of these differences are summarized below.
       }
    </style>
 
-.. table:: Features availability in networking drivers
-
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-   Feature              a b b b b c e e e i i i i i i i i i i f f f f m m m n n p q q r s t v v v v x
-                        f n n n o x 1 n n 4 4 4 4 g g x x x x m m m m l l p f u c e e i z h h i i m e
-                        p x x x n g 0 a i 0 0 0 0 b b g g g g 1 1 1 1 x x i p l a d d n e u o r r x n
-                        a 2 2 t d b 0   c e e e e   v b b b b 0 0 0 0 4 5 p   l p e e g d n s t t n v
-                        c x x   i e 0       . v v   f e e e e k k k k     e         v   a d t i i e i
-                        k   v   n           . f f       . v v   . v v               f   t e   o o t r
-                        e   f   g           .   .       . f f   . f f                   a r     . 3 t
-                        t                   v   v       v   v   v   v                   2 x     v
-                                            e   e       e   e   e   e                           e
-                                            c   c       c   c   c   c                           c
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-   Speed capabilities
-   Link status            Y Y Y   Y Y   Y Y Y     Y   Y Y Y Y         Y Y         Y Y   Y Y Y Y Y
-   Link status event      Y Y       Y     Y Y     Y   Y Y             Y Y         Y Y     Y Y
-   Queue status event                                                                       Y
-   Rx interrupt                     Y     Y Y Y Y Y Y Y Y Y Y Y Y Y Y
-   Queue start/stop           Y   Y   Y Y Y Y Y Y     Y Y     Y Y Y Y Y Y               Y Y   Y Y
-   MTU update                     Y Y Y P         Y   Y Y Y Y         Y Y         Y Y     Y
-   Jumbo frame                    Y Y Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y       Y Y Y     Y
-   Scattered Rx                   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y               Y Y   Y
-   LRO                                                Y Y Y Y
-   TSO                            Y   Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y
-   Promiscuous mode       Y Y Y   Y Y   Y Y Y Y Y Y Y Y Y     Y Y     Y Y         Y Y   Y Y   Y Y
-   Allmulticast mode              Y Y     Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y   Y Y   Y Y
-   Unicast MAC filter     Y Y Y     Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y         Y Y
-   Multicast MAC filter   Y Y Y         Y Y Y Y Y             Y Y     Y Y         Y Y         Y Y
-   RSS hash                       Y   Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y         Y Y     Y
-   RSS key update                     Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y     Y
-   RSS reta update            Y       Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y         Y Y     Y
-   VMDq                                   Y Y     Y   Y Y     Y Y
-   SR-IOV                   Y         Y   Y Y     Y   Y Y             Y Y           Y     Y
-   DCB                                    Y Y     Y   Y Y
-   VLAN filter                      Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y         Y Y
-   Ethertype filter                       Y Y     Y   Y Y
-   N-tuple filter                                 Y   Y Y
-   SYN filter                                     Y   Y Y
-   Tunnel filter                          Y Y         Y Y
-   Flexible filter                                Y
-   Hash filter                            Y Y Y Y
-   Flow director                          Y Y         Y Y               Y
-   Flow control                   Y Y     Y Y     Y   Y Y                         Y Y
-   Rate limitation                                    Y Y
-   Traffic mirroring                      Y Y         Y Y
-   CRC offload                    Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y     Y
-   VLAN offload                   Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y     P
-   QinQ offload                     Y     Y   Y   Y Y Y   Y
-   L3 checksum offload            Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y                 Y
-   L4 checksum offload            Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y                 Y
-   Inner L3 checksum                  Y   Y   Y       Y   Y           Y
-   Inner L4 checksum                  Y   Y   Y       Y   Y           Y
-   Packet type parsing            Y     Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y         Y Y     Y
-   Timesync                               Y Y     Y   Y Y
-   Basic stats            Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y Y Y   Y Y Y Y Y
-   Extended stats         Y Y Y       Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y             Y Y   Y   Y
-   Stats per queue                Y                   Y Y     Y Y Y Y Y Y         Y Y   Y Y   Y Y
-   EEPROM dump                    Y               Y   Y Y
-   Registers dump                 Y               Y Y Y Y Y Y                             Y
-   Multiprocess aware                     Y Y Y Y     Y Y Y Y Y Y Y Y Y Y       Y Y Y     Y
-   BSD nic_uio                    Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                         Y Y
-   Linux UIO              Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y             Y Y         Y Y
-   Linux VFIO                     Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                     Y   Y Y
-   Other kdrv                                                         Y Y               Y
-   ARMv7                                                                        Y             Y Y
-   ARMv8                                              Y Y Y Y                   Y         Y   Y Y
-   Power8                                                             Y Y       Y
-   TILE-Gx                                                                      Y
-   x86-32                         Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y           Y Y Y
-   x86-64                 Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y       Y Y Y   Y   Y Y Y
-   Usage doc              Y Y     Y     Y                             Y Y       Y Y Y   Y Y   Y
-   Design doc
-   Perf doc
-   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+.. include:: overview_table.txt
 
 .. Note::
 
-- 
2.7.4

^ permalink raw reply related	[flat|nested] 12+ messages in thread

* Re: [PATCH v3] doc: autogenerate nic overview table from ini files
  2016-07-29 11:59 ` [PATCH v3] " John McNamara
@ 2016-07-29 12:02   ` Mcnamara, John
  2016-08-01 21:37   ` Thomas Monjalon
  1 sibling, 0 replies; 12+ messages in thread
From: Mcnamara, John @ 2016-07-29 12:02 UTC (permalink / raw)
  To: dev

I forgot to add the annotations:

v3:
* Updated to latest version of the nic overview table.

v2:
* Updated to latest version of the nic overview table.
* Removed blank entries from the ini file.

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3] doc: autogenerate nic overview table from ini files
  2016-07-29 11:59 ` [PATCH v3] " John McNamara
  2016-07-29 12:02   ` Mcnamara, John
@ 2016-08-01 21:37   ` Thomas Monjalon
  2016-08-03 14:32     ` Bruce Richardson
  1 sibling, 1 reply; 12+ messages in thread
From: Thomas Monjalon @ 2016-08-01 21:37 UTC (permalink / raw)
  To: John McNamara; +Cc: dev

Hi John,

2016-07-29 12:59, John McNamara:
> Convert the NIC feature table in the overview doc into a set of ini
> files and add functions into the Sphinx conf.py file to auto-generate
> them back into an RST table.

I have not reviewed the Python code which generate the RST table.
It works so it could be applied as is.

> The reason for doing this is to make it easier for PMD maintainers to
> update the feature matrix that makes up the table and to avoid
> frequent and hard to resolve conflicts in doc/guides/nics/overview.rst.

Yes thanks for the work.

My main concern before applying this patch, is the name of the files:

>  doc/guides/nics/nic_features/fm10k.ini       |  34 ++++++
>  doc/guides/nics/nic_features/fm10k_vec.ini   |  34 ++++++
>  doc/guides/nics/nic_features/fm10k_vf.ini    |  28 +++++
>  doc/guides/nics/nic_features/fm10kvf_vec.ini |  28 +++++
>  doc/guides/nics/nic_features/i40e.ini        |  47 ++++++++
>  doc/guides/nics/nic_features/i40e_vec.ini    |  39 +++++++
>  doc/guides/nics/nic_features/i40e_vf.ini     |  36 +++++++
>  doc/guides/nics/nic_features/i40evf_vec.ini  |  28 +++++
>  doc/guides/nics/nic_features/igb.ini         |  44 ++++++++
>  doc/guides/nics/nic_features/igb_vf.ini      |  27 +++++
>  doc/guides/nics/nic_features/ixgbe.ini       |  54 ++++++++++
>  doc/guides/nics/nic_features/ixgbe_vec.ini   |  46 ++++++++
>  doc/guides/nics/nic_features/ixgbe_vf.ini    |  37 +++++++
>  doc/guides/nics/nic_features/ixgbevf_vec.ini |  29 +++++

It would be more consistent to always put an underscore before vf.

About the directory, I suggest doc/guides/nics/features/.

Other small nit: there is a typo in every files: availble -> available.

It would be nice to start the 16.11 cycle with this change and make sure we
won't change the filenames later in the cycle. So we can start sending
some patches without risking a conflict.
Thanks

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3] doc: autogenerate nic overview table from ini files
  2016-08-01 21:37   ` Thomas Monjalon
@ 2016-08-03 14:32     ` Bruce Richardson
  2016-08-03 16:44       ` Thomas Monjalon
  0 siblings, 1 reply; 12+ messages in thread
From: Bruce Richardson @ 2016-08-03 14:32 UTC (permalink / raw)
  To: Thomas Monjalon; +Cc: John McNamara, dev

On Mon, Aug 01, 2016 at 11:37:03PM +0200, Thomas Monjalon wrote:
> Hi John,
> 
> 2016-07-29 12:59, John McNamara:
> > Convert the NIC feature table in the overview doc into a set of ini
> > files and add functions into the Sphinx conf.py file to auto-generate
> > them back into an RST table.
> 
> I have not reviewed the Python code which generate the RST table.
> It works so it could be applied as is.
> 
> > The reason for doing this is to make it easier for PMD maintainers to
> > update the feature matrix that makes up the table and to avoid
> > frequent and hard to resolve conflicts in doc/guides/nics/overview.rst.
> 
> Yes thanks for the work.
> 
> My main concern before applying this patch, is the name of the files:
> 
> >  doc/guides/nics/nic_features/fm10k.ini       |  34 ++++++
> >  doc/guides/nics/nic_features/fm10k_vec.ini   |  34 ++++++
> >  doc/guides/nics/nic_features/fm10k_vf.ini    |  28 +++++
> >  doc/guides/nics/nic_features/fm10kvf_vec.ini |  28 +++++
> >  doc/guides/nics/nic_features/i40e.ini        |  47 ++++++++
> >  doc/guides/nics/nic_features/i40e_vec.ini    |  39 +++++++
> >  doc/guides/nics/nic_features/i40e_vf.ini     |  36 +++++++
> >  doc/guides/nics/nic_features/i40evf_vec.ini  |  28 +++++
> >  doc/guides/nics/nic_features/igb.ini         |  44 ++++++++
> >  doc/guides/nics/nic_features/igb_vf.ini      |  27 +++++
> >  doc/guides/nics/nic_features/ixgbe.ini       |  54 ++++++++++
> >  doc/guides/nics/nic_features/ixgbe_vec.ini   |  46 ++++++++
> >  doc/guides/nics/nic_features/ixgbe_vf.ini    |  37 +++++++
> >  doc/guides/nics/nic_features/ixgbevf_vec.ini |  29 +++++
> 
> It would be more consistent to always put an underscore before vf.
> 
> About the directory, I suggest doc/guides/nics/features/.
> 
> Other small nit: there is a typo in every files: availble -> available.
> 
> It would be nice to start the 16.11 cycle with this change and make sure we
> won't change the filenames later in the cycle. So we can start sending
> some patches without risking a conflict.
> Thanks

Those changes you propose seem reasonable to me. Having this table as ini files
will be a big help in reducing merge conflicts!

/Bruce

^ permalink raw reply	[flat|nested] 12+ messages in thread

* Re: [PATCH v3] doc: autogenerate nic overview table from ini files
  2016-08-03 14:32     ` Bruce Richardson
@ 2016-08-03 16:44       ` Thomas Monjalon
  0 siblings, 0 replies; 12+ messages in thread
From: Thomas Monjalon @ 2016-08-03 16:44 UTC (permalink / raw)
  To: John McNamara; +Cc: Bruce Richardson, dev

2016-08-03 15:32, Bruce Richardson:
> On Mon, Aug 01, 2016 at 11:37:03PM +0200, Thomas Monjalon wrote:
> > Hi John,
> > 
> > 2016-07-29 12:59, John McNamara:
> > > Convert the NIC feature table in the overview doc into a set of ini
> > > files and add functions into the Sphinx conf.py file to auto-generate
> > > them back into an RST table.
> > 
> > I have not reviewed the Python code which generate the RST table.
> > It works so it could be applied as is.
> > 
> > > The reason for doing this is to make it easier for PMD maintainers to
> > > update the feature matrix that makes up the table and to avoid
> > > frequent and hard to resolve conflicts in doc/guides/nics/overview.rst.
> > 
> > Yes thanks for the work.
> > 
> > My main concern before applying this patch, is the name of the files:
> > 
> > >  doc/guides/nics/nic_features/fm10k.ini       |  34 ++++++
> > >  doc/guides/nics/nic_features/fm10k_vec.ini   |  34 ++++++
> > >  doc/guides/nics/nic_features/fm10k_vf.ini    |  28 +++++
> > >  doc/guides/nics/nic_features/fm10kvf_vec.ini |  28 +++++
> > >  doc/guides/nics/nic_features/i40e.ini        |  47 ++++++++
> > >  doc/guides/nics/nic_features/i40e_vec.ini    |  39 +++++++
> > >  doc/guides/nics/nic_features/i40e_vf.ini     |  36 +++++++
> > >  doc/guides/nics/nic_features/i40evf_vec.ini  |  28 +++++
> > >  doc/guides/nics/nic_features/igb.ini         |  44 ++++++++
> > >  doc/guides/nics/nic_features/igb_vf.ini      |  27 +++++
> > >  doc/guides/nics/nic_features/ixgbe.ini       |  54 ++++++++++
> > >  doc/guides/nics/nic_features/ixgbe_vec.ini   |  46 ++++++++
> > >  doc/guides/nics/nic_features/ixgbe_vf.ini    |  37 +++++++
> > >  doc/guides/nics/nic_features/ixgbevf_vec.ini |  29 +++++
> > 
> > It would be more consistent to always put an underscore before vf.
> > 
> > About the directory, I suggest doc/guides/nics/features/.
> > 
> > Other small nit: there is a typo in every files: availble -> available.
> > 
> > It would be nice to start the 16.11 cycle with this change and make sure we
> > won't change the filenames later in the cycle. So we can start sending
> > some patches without risking a conflict.
> > Thanks
> 
> Those changes you propose seem reasonable to me. Having this table as ini files
> will be a big help in reducing merge conflicts!

As John is not available for some days, I've decided to make the
above suggested changes.

Applied, thanks

^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2016-08-03 16:44 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-06-30 18:03 [PATCH v1] doc: autogenerate nic overview table from ini files John McNamara
2016-06-30 18:03 ` John McNamara
2016-06-30 18:25 ` Thomas Monjalon
2016-07-01  1:40   ` Yuanhan Liu
2016-07-08 19:52   ` Mcnamara, John
2016-07-17 12:59 ` [PATCH v2] " John McNamara
2016-07-19 13:08   ` Ferruh Yigit
2016-07-29 11:59 ` [PATCH v3] " John McNamara
2016-07-29 12:02   ` Mcnamara, John
2016-08-01 21:37   ` Thomas Monjalon
2016-08-03 14:32     ` Bruce Richardson
2016-08-03 16:44       ` Thomas Monjalon

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.