[dpdk-dev,v3,6/6] net/enic: flow API documentation

Message ID 20170517030348.2663-7-johndale@cisco.com (mailing list archive)
State Changes Requested, archived
Delegated to: Ferruh Yigit
Headers

Checks

Context Check Description
ci/checkpatch success coding style OK
ci/Intel-compilation success Compilation OK

Commit Message

John Daley (johndale) May 17, 2017, 3:03 a.m. UTC
  Update enic NIC guide, release notes and add flow API to the
supported features list.

Signed-off-by: John Daley <johndale@cisco.com>
Reviewed-by: Nelson Escobar <neescoba@cisco.com>
---
 doc/guides/nics/enic.rst               | 51 ++++++++++++++++++++++++++++++++++
 doc/guides/nics/features/enic.ini      |  1 +
 doc/guides/rel_notes/release_17_08.rst |  6 ++++
 3 files changed, 58 insertions(+)
  

Comments

Ferruh Yigit May 17, 2017, 11:13 a.m. UTC | #1
On 5/17/2017 4:03 AM, John Daley wrote:
> Update enic NIC guide, release notes and add flow API to the
> supported features list.
> 
> Signed-off-by: John Daley <johndale@cisco.com>
> Reviewed-by: Nelson Escobar <neescoba@cisco.com>

<...>

>  How to build the suite
>  ----------------------
> +=======

This part looks like git merge error?

> +- The number of filters that can be specified with the Generic Flow API is
> +  dependent on how many header fields are being masked. Use 'flow create' in
> +  a loop to determine how many filters your VIC will support (not more than
> +  1000 for 1300 series VICs. Filter are checked for matching in the order they
> +  were added. Since there currently is no grouping or priority support,
> +  'catch-all' filters should be added last.
> +
> +How to build the suite?
> +-----------------------
> +The build instructions for the DPDK suite should be followed. By default
> +the ENIC PMD library will be built into the DPDK library.

<...>
  
John Daley (johndale) May 17, 2017, 10:38 p.m. UTC | #2
Sorry for the inconvenience Ferruh, hopefully this set will work better.

V4 patchset changes:
- include patch that was missing in V3 which caused compile errors
- put mark and flag support into a separate patch to make it more clear
  what the code changes in enic_rxtx.c were for
- fixed a documentation merge error
- fix copyright, remove unnecessary check for dev == NULL

thanks,
johnd

John Daley (8):
  net/enic: bring NIC interface functions up to date
  net/enic: flow API skeleton
  net/enic: flow API for NICs with advanced filters enabled
  net/enic: flow API mark and flag support
  net/enic: flow API for NICs with advanced filters disabled
  net/enic: flow API for Legacy NICs
  net/enic: flow API debug
  net/enic: flow API documentation

 config/common_base                     |    1 +
 doc/guides/nics/enic.rst               |   52 ++
 doc/guides/nics/features/enic.ini      |    1 +
 doc/guides/rel_notes/release_17_08.rst |    6 +
 drivers/net/enic/Makefile              |    1 +
 drivers/net/enic/base/cq_enet_desc.h   |   13 +
 drivers/net/enic/base/vnic_dev.c       |  162 +++-
 drivers/net/enic/base/vnic_dev.h       |    5 +-
 drivers/net/enic/base/vnic_devcmd.h    |   81 +-
 drivers/net/enic/enic.h                |   15 +-
 drivers/net/enic/enic_clsf.c           |   16 +-
 drivers/net/enic/enic_ethdev.c         |   18 +-
 drivers/net/enic/enic_flow.c           | 1544 ++++++++++++++++++++++++++++++++
 drivers/net/enic/enic_main.c           |    3 +
 drivers/net/enic/enic_res.c            |   15 +
 drivers/net/enic/enic_rxtx.c           |   16 +-
 16 files changed, 1904 insertions(+), 45 deletions(-)
 create mode 100644 drivers/net/enic/enic_flow.c
  
Ferruh Yigit May 22, 2017, 10:05 a.m. UTC | #3
On 5/17/2017 11:38 PM, John Daley wrote:
> Sorry for the inconvenience Ferruh, hopefully this set will work better.
> 
> V4 patchset changes:
> - include patch that was missing in V3 which caused compile errors
> - put mark and flag support into a separate patch to make it more clear
>   what the code changes in enic_rxtx.c were for
> - fixed a documentation merge error
> - fix copyright, remove unnecessary check for dev == NULL
> 
> thanks,
> johnd
> 
> John Daley (8):
>   net/enic: bring NIC interface functions up to date
>   net/enic: flow API skeleton
>   net/enic: flow API for NICs with advanced filters enabled
>   net/enic: flow API mark and flag support
>   net/enic: flow API for NICs with advanced filters disabled
>   net/enic: flow API for Legacy NICs
>   net/enic: flow API debug
>   net/enic: flow API documentation

Series applied to dpdk-next-net/master, thanks.
  

Patch

diff --git a/doc/guides/nics/enic.rst b/doc/guides/nics/enic.rst
index 89a301585..dbba087ed 100644
--- a/doc/guides/nics/enic.rst
+++ b/doc/guides/nics/enic.rst
@@ -213,6 +213,45 @@  or ``vfio`` in non-IOMMU mode.
 Please see :ref:`Limitations <enic_limitations>` for limitations in
 the use of SR-IOV.
 
+.. _enic-genic-flow-api:
+
+Generic Flow API support
+------------------------
+
+Generic Flow API is supported. The baseline support is:
+
+- **1200 series VICs**
+
+5-tuple exact Flow support for 1200 series adapters. This allows:
+
+  - Attributes: ingress
+  - Items: ipv4, ipv6, udp, tcp (must exactly match src/dst IP
+    addresses and ports and all must be specified).
+  - Actions: queue and void
+  - Selectors: 'is'
+
+- **1300 series VICS with Advanced filters disabled**
+
+With advanced filters disabled, an IPv4 or IPv6 item must be specified
+in the pattern.
+
+  - Attributes: ingress
+  - Items: eth, ipv4, ipv6, udp, tcp, vxlan, inner eth, ipv4, ipv6, udp, tcp
+  - Actions: queue and void
+  - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported
+  - In total, up to 64 bytes of mask is allowed across all haeders
+
+- **1300 series VICS with Advanced filters enabled**
+
+  - Attributes: ingress
+  - Items: eth, ipv4, ipv6, udp, tcp, vxlan, inner eth, ipv4, ipv6, udp, tcp
+  - Actions: queue, mark, flag and void
+  - Selectors: 'is', 'spec' and 'mask'. 'last' is not supported
+  - In total, up to 64 bytes of mask is allowed across all haeders
+
+More features may be added in future firmware and new versions of the VIC.
+Please refer to the release notes.
+
 .. _enic_limitations:
 
 Limitations
@@ -262,6 +301,18 @@  Limitations
 
 How to build the suite
 ----------------------
+=======
+- The number of filters that can be specified with the Generic Flow API is
+  dependent on how many header fields are being masked. Use 'flow create' in
+  a loop to determine how many filters your VIC will support (not more than
+  1000 for 1300 series VICs. Filter are checked for matching in the order they
+  were added. Since there currently is no grouping or priority support,
+  'catch-all' filters should be added last.
+
+How to build the suite?
+-----------------------
+The build instructions for the DPDK suite should be followed. By default
+the ENIC PMD library will be built into the DPDK library.
 
 Refer to the document :ref:`compiling and testing a PMD for a NIC
 <pmd_build_and_test>` for details.
diff --git a/doc/guides/nics/features/enic.ini b/doc/guides/nics/features/enic.ini
index 94e7f3cba..0de3ef53c 100644
--- a/doc/guides/nics/features/enic.ini
+++ b/doc/guides/nics/features/enic.ini
@@ -20,6 +20,7 @@  VLAN filter          = Y
 CRC offload          = Y
 VLAN offload         = Y
 Flow director        = Y
+Flow API             = Y
 L3 checksum offload  = Y
 L4 checksum offload  = Y
 Packet type parsing  = Y
diff --git a/doc/guides/rel_notes/release_17_08.rst b/doc/guides/rel_notes/release_17_08.rst
index 74aae10f7..31a43223f 100644
--- a/doc/guides/rel_notes/release_17_08.rst
+++ b/doc/guides/rel_notes/release_17_08.rst
@@ -41,6 +41,12 @@  New Features
      Also, make sure to start the actual text at the margin.
      =========================================================
 
+* **Added Generic Flow API support to enic.**
+
+  Generic flow API support for Ethernet, VLAN, IPv4, IPv6, UDP, TCP, VxLAN and
+  inner Ethernet IPv4, IPv6, UDP, TCP pattern items with QUEUE, MARK and FLAG
+  action for ingress traffic.
+
 
 Resolved Issues
 ---------------