node.replace_self(newnode)
-def generate_nic_overview_table(output_filename):
+def generate_overview_table(output_filename, section, table_name, title):
"""
- Function to generate the NIC Overview Table from the ini files that define
- the features for each NIC.
+ Function to generate the Overview Table from the ini files that define
+ the features for each driver.
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()'
+ # Default warning string.
+ warning = 'Warning generate_overview_table()'
# Get the default features and order from the 'default.ini' file.
ini_path = path_join(dirname(output_filename), 'features')
config = configparser.ConfigParser()
config.optionxform = str
config.read(path_join(ini_path, 'default.ini'))
- default_section = 'Features'
- default_features = config.items(default_section)
+ default_features = config.items(section)
# Create a dict of the valid features to validate the other ini files.
valid_features = {}
valid_features[key] = ' '
max_feature_length = max(max_feature_length, len(key))
- # Get a list of NIC ini files, excluding 'default.ini'.
+ # Get a list of driver 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()
header_names.append(name)
- # Create a dict of the defined features for each NIC from the ini files.
+ # Create a dict of the defined features for each driver from the ini files.
ini_data = {}
for ini_filename in ini_files:
config = configparser.ConfigParser()
ini_data[ini_filename] = valid_features.copy()
# Check for a valid ini section.
- if not config.has_section(default_section):
+ if not config.has_section(section):
print("{}: File '{}' has no [{}] secton".format(warning,
ini_filename,
- default_section))
+ section))
continue
# Check for valid features names.
- for name, value in config.items(default_section):
+ for name, value in config.items(section):
if name not in valid_features:
print("{}: Unknown feature '{}' in '{}'".format(warning,
name,
# Get the first letter only.
ini_data[ini_filename][name] = value[0]
- # Print out the RST NIC Overview table from the ini file data.
+ # Print out the RST Driver 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',
+ print('.. table:: ' + table_name + '\n',
file=outfile)
- print_table_header(outfile, num_cols, header_names)
+ print_table_header(outfile, num_cols, header_names, title)
print_table_body(outfile, num_cols, ini_files, ini_data, default_features)
-def print_table_header(outfile, num_cols, header_names):
+def print_table_header(outfile, num_cols, header_names, title):
""" Print the RST table header. The header names are vertical. """
print_table_divider(outfile, num_cols)
for name in header_names:
line += ' ' + name[0]
- print_table_row(outfile, 'Feature', line)
+ print_table_row(outfile, title, line)
for i in range(1, 10):
line = ''
def setup(app):
table_file = dirname(__file__) + '/nics/overview_table.txt'
- generate_nic_overview_table(table_file)
+ generate_overview_table(table_file,
+ 'Features',
+ 'Features availability in networking drivers',
+ 'Feature')
+ table_file = dirname(__file__) + '/cryptodevs/overview_feature_table.txt'
+ generate_overview_table(table_file,
+ 'Features',
+ 'Features availability in crypto drivers',
+ 'Feature')
+ table_file = dirname(__file__) + '/cryptodevs/overview_cipher_table.txt'
+ generate_overview_table(table_file,
+ 'Cipher',
+ 'Cipher algorithms in crypto drivers',
+ 'Cipher algorithm')
+ table_file = dirname(__file__) + '/cryptodevs/overview_auth_table.txt'
+ generate_overview_table(table_file,
+ 'Auth',
+ 'Authentication algorithms in crypto drivers',
+ 'Authentication algorithm')
+ table_file = dirname(__file__) + '/cryptodevs/overview_aead_table.txt'
+ generate_overview_table(table_file,
+ 'AEAD',
+ 'AEAD algorithms in crypto drivers',
+ 'AEAD algorithm')
if LooseVersion(sphinx_version) < LooseVersion('1.3.1'):
print('Upgrade sphinx to version >= 1.3.1 for '
.. BSD LICENSE
- Copyright(c) 2016 Intel Corporation. All rights reserved.
+ Copyright(c) 2016-2017 Intel Corporation. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
notice, this list of conditions and the following disclaimer in
the documentation and/or other materials provided with the
distribution.
- * Neither the name of Intel Corporation nor the names of its
+ * Neither the name of 6WIND S.A. nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Crypto Device Supported Functionality Matrices
-----------------------------------------------
+==============================================
Supported Feature Flags
+-----------------------
-.. csv-table::
- :header: "Feature Flags", "qat", "null", "aesni_mb", "aesni_gcm", "snow3g", "kasumi", "zuc", "armv8"
- :stub-columns: 1
-
- "RTE_CRYPTODEV_FF_SYMMETRIC_CRYPTO",x,x,x,x,x,x,x,x
- "RTE_CRYPTODEV_FF_ASYMMETRIC_CRYPTO",,,,,,,,
- "RTE_CRYPTODEV_FF_SYM_OPERATION_CHAINING",x,x,x,x,x,x,x,x
- "RTE_CRYPTODEV_FF_CPU_SSE",,,x,,x,x,,
- "RTE_CRYPTODEV_FF_CPU_AVX",,,x,,x,x,,
- "RTE_CRYPTODEV_FF_CPU_AVX2",,,x,,,,,
- "RTE_CRYPTODEV_FF_CPU_AVX512",,,x,,,,,
- "RTE_CRYPTODEV_FF_CPU_AESNI",,,x,x,,,,
- "RTE_CRYPTODEV_FF_HW_ACCELERATED",x,,,,,,,
- "RTE_CRYPTODEV_FF_CPU_NEON",,,,,,,,x
- "RTE_CRYPTODEV_FF_CPU_ARM_CE",,,,,,,,x
+.. _table_crypto_pmd_features:
+
+.. raw:: html
+
+ <style>
+ .wy-nav-content {
+ opacity: .99;
+ }
+ table#id1 {
+ cursor: default;
+ overflow: hidden;
+ }
+ table#id1 th, table#id1 td {
+ text-align: center;
+ }
+ table#id1 th {
+ font-size: 80%;
+ white-space: pre-wrap;
+ vertical-align: top;
+ padding: 2px;
+ }
+ table#id1 th:first-child {
+ vertical-align: bottom;
+ }
+ table#id1 td {
+ font-size: 70%;
+ padding: 1px;
+ }
+ table#id1 td:first-child {
+ padding-left: 1em;
+ text-align: left;
+ }
+ table#id1 tr:nth-child(2n-1) td {
+ background-color: rgba(210, 210, 210, 0.2);
+ }
+ table#id1 th:not(:first-child):hover,
+ table#id1 td:not(:first-child):hover {
+ position: relative;
+ }
+ table#id1 th:not(:first-child):hover::after,
+ table#id1 td:not(:first-child):hover::after {
+ content: '';
+ height: 6000px;
+ top: -3000px;
+ width: 100%;
+ left: 0;
+ position: absolute;
+ z-index: -1;
+ background-color: #ffb;
+ }
+ table#id1 tr:hover td {
+ background-color: #ffb;
+ }
+ </style>
+
+.. include:: overview_feature_table.txt
Supported Cipher Algorithms
+---------------------------
+
+.. _table_crypto_pmd_cipher_algos:
+
+.. raw:: html
+
+ <style>
+ .wy-nav-content {
+ opacity: .99;
+ }
+ table#id2 {
+ cursor: default;
+ overflow: hidden;
+ }
+ table#id2 th, table#id2 td {
+ text-align: center;
+ }
+ table#id2 th {
+ font-size: 80%;
+ white-space: pre-wrap;
+ vertical-align: top;
+ padding: 2px;
+ }
+ table#id2 th:first-child {
+ vertical-align: bottom;
+ }
+ table#id2 td {
+ font-size: 70%;
+ padding: 1px;
+ }
+ table#id2 td:first-child {
+ padding-left: 1em;
+ text-align: left;
+ }
+ table#id2 tr:nth-child(2n-1) td {
+ background-color: rgba(210, 210, 210, 0.2);
+ }
+ table#id2 th:not(:first-child):hover,
+ table#id2 td:not(:first-child):hover {
+ position: relative;
+ }
+ table#id2 th:not(:first-child):hover::after,
+ table#id2 td:not(:first-child):hover::after {
+ content: '';
+ height: 6000px;
+ top: -3000px;
+ width: 100%;
+ left: 0;
+ position: absolute;
+ z-index: -1;
+ background-color: #ffb;
+ }
+ table#id2 tr:hover td {
+ background-color: #ffb;
+ }
+ </style>
-.. csv-table::
- :header: "Cipher Algorithms", "qat", "null", "aesni_mb", "aesni_gcm", "snow3g", "kasumi", "zuc", "armv8"
- :stub-columns: 1
-
- "NULL",,x,,,,,,
- "AES_CBC_128",x,,x,,,,,x
- "AES_CBC_192",x,,x,,,,,
- "AES_CBC_256",x,,x,,,,,
- "AES_CTR_128",x,,x,,,,,
- "AES_CTR_192",x,,x,,,,,
- "AES_CTR_256",x,,x,,,,,
- "DES_CBC",x,,,,,,,
- "SNOW3G_UEA2",x,,,,x,,,
- "KASUMI_F8",,,,,,x,,
- "ZUC_EEA3",,,,,,,x,
+.. include:: overview_cipher_table.txt
Supported Authentication Algorithms
+-----------------------------------
-.. csv-table::
- :header: "Cipher Algorithms", "qat", "null", "aesni_mb", "aesni_gcm", "snow3g", "kasumi", "zuc", "armv8"
- :stub-columns: 1
-
- "NONE",,x,,,,,,
- "MD5",,,,,,,,
- "MD5_HMAC",,,x,,,,,
- "SHA1",,,,,,,,
- "SHA1_HMAC",x,,x,,,,,x
- "SHA224",,,,,,,,
- "SHA224_HMAC",,,x,,,,,
- "SHA256",,,,,,,,
- "SHA256_HMAC",x,,x,,,,,x
- "SHA384",,,,,,,,
- "SHA384_HMAC",,,x,,,,,
- "SHA512",,,,,,,,
- "SHA512_HMAC",x,,x,,,,,
- "AES_XCBC",x,,x,,,,,
- "AES_GMAC",,,,x,,,,
- "SNOW3G_UIA2",x,,,,x,,,
- "KASUMI_F9",,,,,,x,,
- "ZUC_EIA3",,,,,,,x,
+.. _table_crypto_pmd_auth_algos:
+
+.. raw:: html
+
+ <style>
+ .wy-nav-content {
+ opacity: .99;
+ }
+ table#id3 {
+ cursor: default;
+ overflow: hidden;
+ }
+ table#id3 th, table#id3 td {
+ text-align: center;
+ }
+ table#id3 th {
+ font-size: 80%;
+ white-space: pre-wrap;
+ vertical-align: top;
+ padding: 2px;
+ }
+ table#id3 th:first-child {
+ vertical-align: bottom;
+ }
+ table#id3 td {
+ font-size: 70%;
+ padding: 1px;
+ }
+ table#id3 td:first-child {
+ padding-left: 1em;
+ text-align: left;
+ }
+ table#id3 tr:nth-child(2n-1) td {
+ background-color: rgba(210, 210, 210, 0.2);
+ }
+ table#id3 th:not(:first-child):hover,
+ table#id3 td:not(:first-child):hover {
+ position: relative;
+ }
+ table#id3 th:not(:first-child):hover::after,
+ table#id3 td:not(:first-child):hover::after {
+ content: '';
+ height: 6000px;
+ top: -3000px;
+ width: 100%;
+ left: 0;
+ position: absolute;
+ z-index: -1;
+ background-color: #ffb;
+ }
+ table#id3 tr:hover td {
+ background-color: #ffb;
+ }
+ </style>
+
+.. include:: overview_auth_table.txt
Supported AEAD Algorithms
+-------------------------
+
+.. _table_crypto_pmd_aead_algos:
+
+.. raw:: html
-.. csv-table::
- :header: "AEAD Algorithms", "qat", "null", "aesni_mb", "aesni_gcm", "snow3g", "kasumi", "zuc", "armv8"
- :stub-columns: 1
+ <style>
+ .wy-nav-content {
+ opacity: .99;
+ }
+ table#id4 {
+ cursor: default;
+ overflow: hidden;
+ }
+ table#id4 th, table#id4 td {
+ text-align: center;
+ }
+ table#id4 th {
+ font-size: 80%;
+ white-space: pre-wrap;
+ vertical-align: top;
+ padding: 2px;
+ }
+ table#id4 th:first-child {
+ vertical-align: bottom;
+ }
+ table#id4 td {
+ font-size: 70%;
+ padding: 1px;
+ }
+ table#id4 td:first-child {
+ padding-left: 1em;
+ text-align: left;
+ }
+ table#id4 tr:nth-child(2n-1) td {
+ background-color: rgba(210, 210, 210, 0.2);
+ }
+ table#id4 th:not(:first-child):hover,
+ table#id4 td:not(:first-child):hover {
+ position: relative;
+ }
+ table#id4 th:not(:first-child):hover::after,
+ table#id4 td:not(:first-child):hover::after {
+ content: '';
+ height: 6000px;
+ top: -3000px;
+ width: 100%;
+ left: 0;
+ position: absolute;
+ z-index: -1;
+ background-color: #ffb;
+ }
+ table#id4 tr:hover td {
+ background-color: #ffb;
+ }
+ </style>
- "AES_GCM_128",x,,,x,,,,
- "AES_GCM_192",x,,,,,,,
- "AES_GCM_256",x,,,x,,,,
+.. include:: overview_aead_table.txt