[PATCH] doc: introduce networking driver matrix

Subsystems: the rest

STALE3803d

8 messages, 3 authors, 2016-03-01 · open the first message on its own page

[PATCH] doc: introduce networking driver matrix

From: Thomas Monjalon <hidden>
Date: 2016-01-26 20:54:22

In order to better compare the drivers and check what is missing
for a common baseline, we need to fill a matrix.

A CSS trick is used to fit the HTML page.
The PDF output needs some LaTeX wizardry.

Signed-off-by: Thomas Monjalon <redacted>
---
 doc/guides/nics/index.rst    |   1 +
 doc/guides/nics/overview.rst | 145 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 146 insertions(+)
 create mode 100644 doc/guides/nics/overview.rst
diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst
index 33c9cea..8618114 100644
--- a/doc/guides/nics/index.rst
+++ b/doc/guides/nics/index.rst
@@ -35,6 +35,7 @@ Network Interface Controller Drivers
     :maxdepth: 3
     :numbered:
 
+    overview
     bnx2x
     cxgbe
     e1000em
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
new file mode 100644
index 0000000..e00f094
--- /dev/null
+++ b/doc/guides/nics/overview.rst
@@ -0,0 +1,145 @@
+..  BSD LICENSE
+    Copyright 2016 6WIND S.A.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+    * 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.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Overview of Networking Drivers
+==============================
+
+The networking drivers may be classified in two categories:
+
+- physical for real devices
+- virtual for emulated devices
+
+Some physical devices may be shaped through a virtual layer as for
+SR-IOV.
+The interface seen in the virtual environment is a VF (Virtual Function).
+
+The ethdev layer exposes an API to use the networking functions
+of these devices.
+The bottom half part of ethdev is implemented by the drivers.
+Thus some features may not be implemented.
+
+There are more differences between drivers regarding some internal properties,
+portability or even documentation availability.
+Most of these differences are summarized below.
+
+.. _table_net_pmd_features:
+
+.. raw:: html
+
+   <style>
+      table#id1 th {
+         font-size: 80%;
+         white-space: pre-wrap;
+         text-align: center;
+         vertical-align: top;
+         padding: 5px;
+      }
+      table#id1 th:first-child {
+         vertical-align: bottom;
+      }
+      table#id1 td {
+         font-size: 70%;
+         padding: 1px;
+      }
+      table#id1 td:first-child {
+         padding-left: 1em;
+      }
+   </style>
+
+.. table:: Features availability in networking drivers
+
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = =
+   Feature              a b b b c e e i i i i i i f m m m n n p r s v v x
+                        f n n o x 1 n 4 4 g g x x m l l p f u c i z i m e
+                        p x x n g 0 i 0 0 b b g g 1 x x i p l a n e r x n
+                        a 2 2 d b 0 c e e   v b b 0 4 5 p   l p g d t n v
+                        c x x i e 0     v   f e e k     e         a i e i
+                        k   v n         f       v                 t o t r
+                        e   f g                 f                 a   3 t
+                        t                                         2
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = =
+   link status
+   link 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
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = =
-- 
2.5.2

[PATCH v2] doc: introduce networking driver matrix

From: Thomas Monjalon <hidden>
Date: 2016-01-27 20:08:23

In order to better compare the drivers and check what is missing
for a common baseline, we need to fill a matrix.

A CSS trick is used to fit the HTML page.
The PDF output needs some LaTeX wizardry.

Signed-off-by: Thomas Monjalon <redacted>
---
v2: add vector PMDs
---
 doc/guides/nics/index.rst    |   1 +
 doc/guides/nics/overview.rst | 147 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)
 create mode 100644 doc/guides/nics/overview.rst
diff --git a/doc/guides/nics/index.rst b/doc/guides/nics/index.rst
index 33c9cea..8618114 100644
--- a/doc/guides/nics/index.rst
+++ b/doc/guides/nics/index.rst
@@ -35,6 +35,7 @@ Network Interface Controller Drivers
     :maxdepth: 3
     :numbered:
 
+    overview
     bnx2x
     cxgbe
     e1000em
diff --git a/doc/guides/nics/overview.rst b/doc/guides/nics/overview.rst
new file mode 100644
index 0000000..d4c6ff4
--- /dev/null
+++ b/doc/guides/nics/overview.rst
@@ -0,0 +1,147 @@
+..  BSD LICENSE
+    Copyright 2016 6WIND S.A.
+
+    Redistribution and use in source and binary forms, with or without
+    modification, are permitted provided that the following conditions
+    are met:
+
+    * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+    * 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.
+
+    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Overview of Networking Drivers
+==============================
+
+The networking drivers may be classified in two categories:
+
+- physical for real devices
+- virtual for emulated devices
+
+Some physical devices may be shaped through a virtual layer as for
+SR-IOV.
+The interface seen in the virtual environment is a VF (Virtual Function).
+
+The ethdev layer exposes an API to use the networking functions
+of these devices.
+The bottom half part of ethdev is implemented by the drivers.
+Thus some features may not be implemented.
+
+There are more differences between drivers regarding some internal properties,
+portability or even documentation availability.
+Most of these differences are summarized below.
+
+.. _table_net_pmd_features:
+
+.. raw:: html
+
+   <style>
+      table#id1 th {
+         font-size: 80%;
+         white-space: pre-wrap;
+         text-align: center;
+         vertical-align: top;
+         padding: 3px;
+      }
+      table#id1 th:first-child {
+         vertical-align: bottom;
+      }
+      table#id1 td {
+         font-size: 70%;
+         padding: 1px;
+      }
+      table#id1 td:first-child {
+         padding-left: 1em;
+      }
+   </style>
+
+.. table:: Features availability in networking drivers
+
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+   Feature              a b b b c e e i i i i i i i i i i f f m m m n n p r s v v v x
+                        f n n o x 1 n 4 4 4 4 g g x x x x m m l l p f u c i z i i m e
+                        p x x n g 0 i 0 0 0 0 b b g g g g 1 1 x x i p l a n e r r x n
+                        a 2 2 d b 0 c e e e e   v b b b b 0 0 4 5 p   l p g d t t n v
+                        c x x i e 0     . v v   f e e e e k k     e         a i i e i
+                        k   v n         . f f       . v v   .               t o o t r
+                        e   f g         .   .       . f f   .               a   . 3 t
+                        t               v   v       v   v   v               2   v
+                                        e   e       e   e   e                   e
+                                        c   c       c   c   c                   c
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+   link status
+   link 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
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
-- 
2.5.2

Re: [PATCH v2] doc: introduce networking driver matrix

From: Thomas Monjalon <hidden>
Date: 2016-02-09 11:23:21

2016-01-27 21:07, Thomas Monjalon:
In order to better compare the drivers and check what is missing
for a common baseline, we need to fill a matrix.

A CSS trick is used to fit the HTML page.
The PDF output needs some LaTeX wizardry.

Signed-off-by: Thomas Monjalon <redacted>
---
v2: add vector PMDs
Nobody complains after 2 weeks, so I guess the idea is welcomed.
Applied

The LaTeX formatting still needs to be fixed to view the entire table
in the PDF doc.

This empty table will have a value when it will be properly filled.
Please, maintainers of drivers, your help is requested here.
We now have 2 months to fill each driver columns with crosses (X).
Thanks

Re: [PATCH v2] doc: introduce networking driver matrix

From: Rahul Lakkireddy <hidden>
Date: 2016-02-16 11:35:13

Hi Thomas,

Got a couple of questions on how to mark some of the features for CXGBE
below.

On Wednesday, January 01/27/16, 2016 at 21:07:09 +0100, Thomas Monjalon wrote:
In order to better compare the drivers and check what is missing
for a common baseline, we need to fill a matrix.

A CSS trick is used to fit the HTML page.
The PDF output needs some LaTeX wizardry.

Signed-off-by: Thomas Monjalon <redacted>
---
v2: add vector PMDs
---
 doc/guides/nics/index.rst    |   1 +
 doc/guides/nics/overview.rst | 147 +++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 148 insertions(+)
 create mode 100644 doc/guides/nics/overview.rst
[...]
+
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+   Feature              a b b b c e e i i i i i i i i i i f f m m m n n p r s v v v x
+                        f n n o x 1 n 4 4 4 4 g g x x x x m m l l p f u c i z i i m e
+                        p x x n g 0 i 0 0 0 0 b b g g g g 1 1 x x i p l a n e r r x n
+                        a 2 2 d b 0 c e e e e   v b b b b 0 0 4 5 p   l p g d t t n v
+                        c x x i e 0     . v v   f e e e e k k     e         a i i e i
+                        k   v n         . f f       . v v   .               t o o t r
+                        e   f g         .   .       . f f   .               a   . 3 t
+                        t               v   v       v   v   v               2   v
+                                        e   e       e   e   e                   e
+                                        c   c       c   c   c                   c
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+   link status
+   link status event
+   Rx interrupt
+   queue start/stop
+   MTU update
+   jumbo frame
+   scattered Rx
[...]
+   VLAN filter
+   ethertype filter
+   n-tuple filter
+   SYN filter
+   tunnel filter
+   flexible filter
+   hash filter
+   flow director
It is possible to set some of the above filters via our cxgbe flow
director. Do we mark these filter features as supported?

[...]
+   packet type parsing
Is this the same as the driver's ability to fill the mbuf->packet_type
field?

Thanks,
Rahul

Re: [PATCH v2] doc: introduce networking driver matrix

From: Thomas Monjalon <hidden>
Date: 2016-02-16 13:44:02

2016-02-16 17:05, Rahul Lakkireddy:
Hi Thomas,

Got a couple of questions on how to mark some of the features for CXGBE
below.

On Wednesday, January 01/27/16, 2016 at 21:07:09 +0100, Thomas Monjalon wrote:
[...]
quoted
+   VLAN filter
+   ethertype filter
+   n-tuple filter
+   SYN filter
+   tunnel filter
+   flexible filter
+   hash filter
+   flow director
It is possible to set some of the above filters via our cxgbe flow
director. Do we mark these filter features as supported?
How do you configure these filters? rte_eth_dev_filter_ctrl()?
Which type in rte_filter_type?
[...]
quoted
+   packet type parsing
Is this the same as the driver's ability to fill the mbuf->packet_type
field?
Yes

Re: [PATCH v2] doc: introduce networking driver matrix

From: Rahul Lakkireddy <hidden>
Date: 2016-02-17 09:53:06

Hi Thomas,

On Tuesday, February 02/16/16, 2016 at 05:42:30 -0800, Thomas Monjalon wrote:
2016-02-16 17:05, Rahul Lakkireddy:
quoted
Hi Thomas,

Got a couple of questions on how to mark some of the features for CXGBE
below.

On Wednesday, January 01/27/16, 2016 at 21:07:09 +0100, Thomas Monjalon wrote:
[...]
quoted
quoted
+   VLAN filter
+   ethertype filter
+   n-tuple filter
+   SYN filter
+   tunnel filter
+   flexible filter
+   hash filter
+   flow director
It is possible to set some of the above filters via our cxgbe flow
director. Do we mark these filter features as supported?
How do you configure these filters? rte_eth_dev_filter_ctrl()?
Which type in rte_filter_type?
Yes, we configure it with rte_eth_dev_filter_ctrl() and with
RTE_ETH_FILTER_FDIR filter type.  With Chelsio hardware it's possible
to match several different filters in the same rule.

For e.g., it's possible to set a vlan, ethertype, and n-tuple filters
all on the same rule.

The generic architecture [1] for flow director can accept these several
filters in the same rule and hence the cxgbe flow director can handle
these different filters with this generic approach.

[1] http://dpdk.org/ml/archives/dev/2016-February/032605.html

Thanks,
Rahul

Re: [PATCH v2] doc: introduce networking driver matrix

From: Matej Vido <hidden>
Date: 2016-03-01 13:53:42

Hi Thomas,

Dňa 27.01.2016 o 21:07 Thomas Monjalon napísal(a):
In order to better compare the drivers and check what is missing
for a common baseline, we need to fill a matrix.

A CSS trick is used to fit the HTML page.
The PDF output needs some LaTeX wizardry.

Signed-off-by: Thomas Monjalon <redacted>
---
v2: add vector PMDs
---
  doc/guides/nics/index.rst    |   1 +
  doc/guides/nics/overview.rst | 147 +++++++++++++++++++++++++++++++++++++++++++
  2 files changed, 148 insertions(+)
  create mode 100644 doc/guides/nics/overview.rst
[...]
+
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
+   Feature              a b b b c e e i i i i i i i i i i f f m m m n n p r s v v v x
+                        f n n o x 1 n 4 4 4 4 g g x x x x m m l l p f u c i z i i m e
+                        p x x n g 0 i 0 0 0 0 b b g g g g 1 1 x x i p l a n e r r x n
+                        a 2 2 d b 0 c e e e e   v b b b b 0 0 4 5 p   l p g d t t n v
+                        c x x i e 0     . v v   f e e e e k k     e         a i i e i
+                        k   v n         . f f       . v v   .               t o o t r
+                        e   f g         .   .       . f f   .               a   . 3 t
+                        t               v   v       v   v   v               2   v
+                                        e   e       e   e   e                   e
+                                        c   c       c   c   c                   c
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
[...]
+   multiprocess aware
Could you please clarify what was meant by this "multiprocess aware" field?

Thanks,
Matej

Re: [PATCH v2] doc: introduce networking driver matrix

From: Thomas Monjalon <hidden>
Date: 2016-03-01 14:14:09

2016-03-01 14:53, Matej Vido:
Dňa 27.01.2016 o 21:07 Thomas Monjalon napísal(a):
quoted
+   multiprocess aware
Could you please clarify what was meant by this "multiprocess aware" field?
The short answer is "git grep RTE_PROC -- drivers/"
Some initializations must be done only in primay process.
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help