[dpdk-dev,v2] doc: introduce networking driver matrix

Message ID 1453925229-19696-1-git-send-email-thomas.monjalon@6wind.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Thomas Monjalon Jan. 27, 2016, 8:07 p.m. UTC
  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 <thomas.monjalon@6wind.com>
---
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
  

Comments

Thomas Monjalon Feb. 9, 2016, 11:21 a.m. UTC | #1
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 <thomas.monjalon@6wind.com>
> ---
> 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
  
Rahul Lakkireddy Feb. 16, 2016, 11:35 a.m. UTC | #2
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 <thomas.monjalon@6wind.com>
> ---
> 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
  
Thomas Monjalon Feb. 16, 2016, 1:42 p.m. UTC | #3
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:
[...]
> > +   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?

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

Yes
  
Rahul Lakkireddy Feb. 17, 2016, 9:52 a.m. UTC | #4
Hi Thomas,

On Tuesday, February 02/16/16, 2016 at 05:42:30 -0800, Thomas Monjalon wrote:
> 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:
> [...]
> > > +   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
  
Matej Vido March 1, 2016, 1:53 p.m. UTC | #5
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 <thomas.monjalon@6wind.com>
> ---
> 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
  
Thomas Monjalon March 1, 2016, 2:12 p.m. UTC | #6
2016-03-01 14:53, Matej Vido:
> Dňa 27.01.2016 o 21:07 Thomas Monjalon napísal(a):
> > +   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.
  

Patch

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
+   ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =