net/cxgbe: support register dump
[dpdk.git] / doc / guides / nics / overview.rst
1 ..  BSD LICENSE
2     Copyright 2016 6WIND S.A.
3
4     Redistribution and use in source and binary forms, with or without
5     modification, are permitted provided that the following conditions
6     are met:
7
8     * Redistributions of source code must retain the above copyright
9     notice, this list of conditions and the following disclaimer.
10     * Redistributions in binary form must reproduce the above copyright
11     notice, this list of conditions and the following disclaimer in
12     the documentation and/or other materials provided with the
13     distribution.
14     * Neither the name of 6WIND S.A. nor the names of its
15     contributors may be used to endorse or promote products derived
16     from this software without specific prior written permission.
17
18     THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19     "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20     LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21     A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22     OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23     SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24     LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25     DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26     THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27     (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28     OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
30 Overview of Networking Drivers
31 ==============================
32
33 The networking drivers may be classified in two categories:
34
35 - physical for real devices
36 - virtual for emulated devices
37
38 Some physical devices may be shaped through a virtual layer as for
39 SR-IOV.
40 The interface seen in the virtual environment is a VF (Virtual Function).
41
42 The ethdev layer exposes an API to use the networking functions
43 of these devices.
44 The bottom half part of ethdev is implemented by the drivers.
45 Thus some features may not be implemented.
46
47 There are more differences between drivers regarding some internal properties,
48 portability or even documentation availability.
49 Most of these differences are summarized below.
50
51 .. _table_net_pmd_features:
52
53 .. raw:: html
54
55    <style>
56       table#id1 th {
57          font-size: 80%;
58          white-space: pre-wrap;
59          text-align: center;
60          vertical-align: top;
61          padding: 3px;
62       }
63       table#id1 th:first-child {
64          vertical-align: bottom;
65       }
66       table#id1 td {
67          font-size: 70%;
68          padding: 1px;
69       }
70       table#id1 td:first-child {
71          padding-left: 1em;
72       }
73    </style>
74
75 .. table:: Features availability in networking drivers
76
77    ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
78    Feature              a 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 v v v v x
79                         f 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 i i m e
80                         p 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 o r r x n
81                         a 2 2 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 s t t n v
82                         c x x i e 0       . v v   f e e e e k k k k     e         v   a t i i e i
83                         k   v n           . f f       . v v   . v v               f   t   o o t r
84                         e   f g           .   .       . f f   . f f                   a     . 3 t
85                         t                 v   v       v   v   v   v                   2     v
86                                           e   e       e   e   e   e                         e
87                                           c   c       c   c   c   c                         c
88    ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
89    Speed capabilities
90    Link status            Y Y   Y Y   Y Y Y     Y   Y Y Y Y         Y Y         Y Y   Y Y Y Y
91    Link status event      Y Y     Y     Y Y     Y   Y Y             Y Y         Y Y     Y
92    Queue status event                                                                   Y
93    Rx interrupt                   Y     Y Y Y Y Y Y Y Y Y Y Y Y Y Y
94    Queue start/stop             Y   Y Y Y Y Y Y     Y Y     Y Y Y Y Y Y               Y   Y Y
95    MTU update                   Y Y Y           Y   Y Y Y Y         Y Y
96    Jumbo frame                  Y Y Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y       Y Y Y
97    Scattered Rx                 Y Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y               Y   Y
98    LRO                                              Y Y Y Y
99    TSO                          Y   Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y
100    Promiscuous mode       Y Y   Y Y   Y Y Y Y Y Y Y Y Y     Y Y     Y Y         Y Y   Y   Y Y
101    Allmulticast mode            Y Y     Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y   Y   Y Y
102    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
103    Multicast MAC filter   Y Y         Y Y Y Y Y             Y Y     Y Y         Y Y       Y Y
104    RSS hash                     Y   Y Y Y Y Y Y Y   Y Y Y Y Y Y Y Y Y Y         Y Y
105    RSS key update                   Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y
106    RSS reta update                  Y   Y Y Y Y Y   Y Y Y Y Y Y Y Y   Y
107    VMDq                                 Y Y     Y   Y Y     Y Y
108    SR-IOV                   Y       Y   Y Y     Y   Y Y             Y Y           Y
109    DCB                                  Y Y     Y   Y Y
110    VLAN filter                    Y   Y Y Y Y Y Y Y Y Y Y Y Y Y     Y Y         Y Y       Y Y
111    Ethertype filter                     Y Y     Y   Y Y
112    N-tuple filter                               Y   Y Y
113    SYN filter                                   Y   Y Y
114    Tunnel filter                        Y Y         Y Y
115    Flexible filter                              Y
116    Hash filter                          Y Y Y Y
117    Flow director                        Y Y         Y Y               Y
118    Flow control                 Y Y     Y Y     Y   Y Y                         Y Y
119    Rate limitation                                  Y Y
120    Traffic mirroring                    Y Y         Y Y
121    CRC offload                  Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y
122    VLAN offload                 Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y   Y         Y Y
123    QinQ offload                   Y     Y   Y   Y Y Y   Y
124    L3 checksum offload          Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y
125    L4 checksum offload          Y Y Y Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y
126    Inner L3 checksum                Y   Y   Y       Y   Y           Y
127    Inner L4 checksum                Y   Y   Y       Y   Y           Y
128    Packet type parsing          Y     Y Y   Y   Y Y Y   Y   Y Y Y Y Y Y         Y Y
129    Timesync                             Y Y     Y   Y Y
130    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
131    Extended stats                   Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y                   Y Y
132    Stats per queue              Y                   Y Y     Y Y Y Y Y Y         Y Y   Y   Y Y
133    EEPROM dump                  Y               Y   Y Y
134    Registers dump               Y               Y Y Y Y Y Y
135    Multiprocess aware                   Y Y Y Y     Y Y Y Y Y Y Y Y Y Y       Y Y Y
136    BSD nic_uio                  Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                       Y Y
137    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
138    Linux VFIO                   Y Y   Y Y Y Y Y Y Y Y Y Y Y Y Y Y Y                       Y Y
139    Other kdrv                                                       Y Y               Y
140    ARMv7                                                                      Y           Y Y
141    ARMv8                                            Y Y Y Y                   Y           Y Y
142    Power8                                                           Y Y       Y
143    TILE-Gx                                                                    Y
144    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
145    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
146    Usage doc              Y Y   Y     Y                             Y Y       Y Y Y   Y   Y
147    Design doc
148    Perf doc
149    ==================== = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
150
151 .. Note::
152
153    Features marked with "*" are partially supported. Refer to the appropriate
154    NIC guide in the following sections for details.