aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/networking
diff options
context:
space:
mode:
authorDmitry Torokhov <dmitry.torokhov@gmail.com>2012-03-19 20:02:01 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2012-03-19 20:02:01 -0400
commit10ce3cc919f50c2043b41ca968b43c26a3672600 (patch)
treeea409366a5208aced495bc0516a08b81fd43222e /Documentation/networking
parent24e3e5ae1e4c2a3a32f5b1f96b4e3fd721806acd (diff)
parent5c6a7a62c130afef3d61c1dee153012231ff5cd9 (diff)
Merge branch 'next' into for-linus
Diffstat (limited to 'Documentation/networking')
-rw-r--r--Documentation/networking/00-INDEX2
-rw-r--r--Documentation/networking/batman-adv.txt7
-rw-r--r--Documentation/networking/bonding.txt17
-rw-r--r--Documentation/networking/ieee802154.txt27
-rw-r--r--Documentation/networking/ifenslave.c2
-rw-r--r--Documentation/networking/ip-sysctl.txt23
-rw-r--r--Documentation/networking/openvswitch.txt195
-rw-r--r--Documentation/networking/packet_mmap.txt2
-rw-r--r--Documentation/networking/scaling.txt8
-rw-r--r--Documentation/networking/stmmac.txt16
-rw-r--r--Documentation/networking/team.txt2
11 files changed, 281 insertions, 20 deletions
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX
index bbce1215434a..9ad9ddeb384c 100644
--- a/Documentation/networking/00-INDEX
+++ b/Documentation/networking/00-INDEX
@@ -144,6 +144,8 @@ nfc.txt
144 - The Linux Near Field Communication (NFS) subsystem. 144 - The Linux Near Field Communication (NFS) subsystem.
145olympic.txt 145olympic.txt
146 - IBM PCI Pit/Pit-Phy/Olympic Token Ring driver info. 146 - IBM PCI Pit/Pit-Phy/Olympic Token Ring driver info.
147openvswitch.txt
148 - Open vSwitch developer documentation.
147operstates.txt 149operstates.txt
148 - Overview of network interface operational states. 150 - Overview of network interface operational states.
149packet_mmap.txt 151packet_mmap.txt
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt
index c86d03f18a5b..221ad0cdf11f 100644
--- a/Documentation/networking/batman-adv.txt
+++ b/Documentation/networking/batman-adv.txt
@@ -200,15 +200,16 @@ abled during run time. Following log_levels are defined:
200 200
2010 - All debug output disabled 2010 - All debug output disabled
2021 - Enable messages related to routing / flooding / broadcasting 2021 - Enable messages related to routing / flooding / broadcasting
2032 - Enable route or tt entry added / changed / deleted 2032 - Enable messages related to route added / changed / deleted
2043 - Enable all messages 2044 - Enable messages related to translation table operations
2057 - Enable all messages
205 206
206The debug output can be changed at runtime using the file 207The debug output can be changed at runtime using the file
207/sys/class/net/bat0/mesh/log_level. e.g. 208/sys/class/net/bat0/mesh/log_level. e.g.
208 209
209# echo 2 > /sys/class/net/bat0/mesh/log_level 210# echo 2 > /sys/class/net/bat0/mesh/log_level
210 211
211will enable debug messages for when routes or TTs change. 212will enable debug messages for when routes change.
212 213
213 214
214BATCTL 215BATCTL
diff --git a/Documentation/networking/bonding.txt b/Documentation/networking/bonding.txt
index 91df678fb7f8..080ad26690ae 100644
--- a/Documentation/networking/bonding.txt
+++ b/Documentation/networking/bonding.txt
@@ -196,6 +196,23 @@ or, for backwards compatibility, the option value. E.g.,
196 196
197 The parameters are as follows: 197 The parameters are as follows:
198 198
199active_slave
200
201 Specifies the new active slave for modes that support it
202 (active-backup, balance-alb and balance-tlb). Possible values
203 are the name of any currently enslaved interface, or an empty
204 string. If a name is given, the slave and its link must be up in order
205 to be selected as the new active slave. If an empty string is
206 specified, the current active slave is cleared, and a new active
207 slave is selected automatically.
208
209 Note that this is only available through the sysfs interface. No module
210 parameter by this name exists.
211
212 The normal value of this option is the name of the currently
213 active slave, or the empty string if there is no active slave or
214 the current mode does not use an active slave.
215
199ad_select 216ad_select
200 217
201 Specifies the 802.3ad aggregation selection logic to use. The 218 Specifies the 802.3ad aggregation selection logic to use. The
diff --git a/Documentation/networking/ieee802154.txt b/Documentation/networking/ieee802154.txt
index f41ea2405220..1dc1c24a7547 100644
--- a/Documentation/networking/ieee802154.txt
+++ b/Documentation/networking/ieee802154.txt
@@ -78,3 +78,30 @@ in software. This is currently WIP.
78 78
79See header include/net/mac802154.h and several drivers in drivers/ieee802154/. 79See header include/net/mac802154.h and several drivers in drivers/ieee802154/.
80 80
816LoWPAN Linux implementation
82============================
83
84The IEEE 802.15.4 standard specifies an MTU of 128 bytes, yielding about 80
85octets of actual MAC payload once security is turned on, on a wireless link
86with a link throughput of 250 kbps or less. The 6LoWPAN adaptation format
87[RFC4944] was specified to carry IPv6 datagrams over such constrained links,
88taking into account limited bandwidth, memory, or energy resources that are
89expected in applications such as wireless Sensor Networks. [RFC4944] defines
90a Mesh Addressing header to support sub-IP forwarding, a Fragmentation header
91to support the IPv6 minimum MTU requirement [RFC2460], and stateless header
92compression for IPv6 datagrams (LOWPAN_HC1 and LOWPAN_HC2) to reduce the
93relatively large IPv6 and UDP headers down to (in the best case) several bytes.
94
95In Semptember 2011 the standard update was published - [RFC6282].
96It deprecates HC1 and HC2 compression and defines IPHC encoding format which is
97used in this Linux implementation.
98
99All the code related to 6lowpan you may find in files: net/ieee802154/6lowpan.*
100
101To setup 6lowpan interface you need (busybox release > 1.17.0):
1021. Add IEEE802.15.4 interface and initialize PANid;
1032. Add 6lowpan interface by command like:
104 # ip link add link wpan0 name lowpan0 type lowpan
1053. Set MAC (if needs):
106 # ip link set lowpan0 address de:ad:be:ef:ca:fe:ba:be
1074. Bring up 'lowpan0' interface
diff --git a/Documentation/networking/ifenslave.c b/Documentation/networking/ifenslave.c
index 65968fbf1e49..ac5debb2f16c 100644
--- a/Documentation/networking/ifenslave.c
+++ b/Documentation/networking/ifenslave.c
@@ -539,12 +539,14 @@ static int if_getconfig(char *ifname)
539 metric = 0; 539 metric = 0;
540 } else 540 } else
541 metric = ifr.ifr_metric; 541 metric = ifr.ifr_metric;
542 printf("The result of SIOCGIFMETRIC is %d\n", metric);
542 543
543 strcpy(ifr.ifr_name, ifname); 544 strcpy(ifr.ifr_name, ifname);
544 if (ioctl(skfd, SIOCGIFMTU, &ifr) < 0) 545 if (ioctl(skfd, SIOCGIFMTU, &ifr) < 0)
545 mtu = 0; 546 mtu = 0;
546 else 547 else
547 mtu = ifr.ifr_mtu; 548 mtu = ifr.ifr_mtu;
549 printf("The result of SIOCGIFMTU is %d\n", mtu);
548 550
549 strcpy(ifr.ifr_name, ifname); 551 strcpy(ifr.ifr_name, ifname);
550 if (ioctl(skfd, SIOCGIFDSTADDR, &ifr) < 0) { 552 if (ioctl(skfd, SIOCGIFDSTADDR, &ifr) < 0) {
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index f049a1ca186f..ad3e80e17b4f 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -31,6 +31,16 @@ neigh/default/gc_thresh3 - INTEGER
31 when using large numbers of interfaces and when communicating 31 when using large numbers of interfaces and when communicating
32 with large numbers of directly-connected peers. 32 with large numbers of directly-connected peers.
33 33
34neigh/default/unres_qlen_bytes - INTEGER
35 The maximum number of bytes which may be used by packets
36 queued for each unresolved address by other network layers.
37 (added in linux 3.3)
38
39neigh/default/unres_qlen - INTEGER
40 The maximum number of packets which may be queued for each
41 unresolved address by other network layers.
42 (deprecated in linux 3.3) : use unres_qlen_bytes instead.
43
34mtu_expires - INTEGER 44mtu_expires - INTEGER
35 Time, in seconds, that cached PMTU information is kept. 45 Time, in seconds, that cached PMTU information is kept.
36 46
@@ -165,6 +175,9 @@ tcp_congestion_control - STRING
165 connections. The algorithm "reno" is always available, but 175 connections. The algorithm "reno" is always available, but
166 additional choices may be available based on kernel configuration. 176 additional choices may be available based on kernel configuration.
167 Default is set as part of kernel configuration. 177 Default is set as part of kernel configuration.
178 For passive connections, the listener congestion control choice
179 is inherited.
180 [see setsockopt(listenfd, SOL_TCP, TCP_CONGESTION, "name" ...) ]
168 181
169tcp_cookie_size - INTEGER 182tcp_cookie_size - INTEGER
170 Default size of TCP Cookie Transactions (TCPCT) option, that may be 183 Default size of TCP Cookie Transactions (TCPCT) option, that may be
@@ -282,11 +295,11 @@ tcp_max_ssthresh - INTEGER
282 Default: 0 (off) 295 Default: 0 (off)
283 296
284tcp_max_syn_backlog - INTEGER 297tcp_max_syn_backlog - INTEGER
285 Maximal number of remembered connection requests, which are 298 Maximal number of remembered connection requests, which have not
286 still did not receive an acknowledgment from connecting client. 299 received an acknowledgment from connecting client.
287 Default value is 1024 for systems with more than 128Mb of memory, 300 The minimal value is 128 for low memory machines, and it will
288 and 128 for low memory machines. If server suffers of overload, 301 increase in proportion to the memory of machine.
289 try to increase this number. 302 If server suffers from overload, try increasing this number.
290 303
291tcp_max_tw_buckets - INTEGER 304tcp_max_tw_buckets - INTEGER
292 Maximal number of timewait sockets held by system simultaneously. 305 Maximal number of timewait sockets held by system simultaneously.
diff --git a/Documentation/networking/openvswitch.txt b/Documentation/networking/openvswitch.txt
new file mode 100644
index 000000000000..b8a048b8df3a
--- /dev/null
+++ b/Documentation/networking/openvswitch.txt
@@ -0,0 +1,195 @@
1Open vSwitch datapath developer documentation
2=============================================
3
4The Open vSwitch kernel module allows flexible userspace control over
5flow-level packet processing on selected network devices. It can be
6used to implement a plain Ethernet switch, network device bonding,
7VLAN processing, network access control, flow-based network control,
8and so on.
9
10The kernel module implements multiple "datapaths" (analogous to
11bridges), each of which can have multiple "vports" (analogous to ports
12within a bridge). Each datapath also has associated with it a "flow
13table" that userspace populates with "flows" that map from keys based
14on packet headers and metadata to sets of actions. The most common
15action forwards the packet to another vport; other actions are also
16implemented.
17
18When a packet arrives on a vport, the kernel module processes it by
19extracting its flow key and looking it up in the flow table. If there
20is a matching flow, it executes the associated actions. If there is
21no match, it queues the packet to userspace for processing (as part of
22its processing, userspace will likely set up a flow to handle further
23packets of the same type entirely in-kernel).
24
25
26Flow key compatibility
27----------------------
28
29Network protocols evolve over time. New protocols become important
30and existing protocols lose their prominence. For the Open vSwitch
31kernel module to remain relevant, it must be possible for newer
32versions to parse additional protocols as part of the flow key. It
33might even be desirable, someday, to drop support for parsing
34protocols that have become obsolete. Therefore, the Netlink interface
35to Open vSwitch is designed to allow carefully written userspace
36applications to work with any version of the flow key, past or future.
37
38To support this forward and backward compatibility, whenever the
39kernel module passes a packet to userspace, it also passes along the
40flow key that it parsed from the packet. Userspace then extracts its
41own notion of a flow key from the packet and compares it against the
42kernel-provided version:
43
44 - If userspace's notion of the flow key for the packet matches the
45 kernel's, then nothing special is necessary.
46
47 - If the kernel's flow key includes more fields than the userspace
48 version of the flow key, for example if the kernel decoded IPv6
49 headers but userspace stopped at the Ethernet type (because it
50 does not understand IPv6), then again nothing special is
51 necessary. Userspace can still set up a flow in the usual way,
52 as long as it uses the kernel-provided flow key to do it.
53
54 - If the userspace flow key includes more fields than the
55 kernel's, for example if userspace decoded an IPv6 header but
56 the kernel stopped at the Ethernet type, then userspace can
57 forward the packet manually, without setting up a flow in the
58 kernel. This case is bad for performance because every packet
59 that the kernel considers part of the flow must go to userspace,
60 but the forwarding behavior is correct. (If userspace can
61 determine that the values of the extra fields would not affect
62 forwarding behavior, then it could set up a flow anyway.)
63
64How flow keys evolve over time is important to making this work, so
65the following sections go into detail.
66
67
68Flow key format
69---------------
70
71A flow key is passed over a Netlink socket as a sequence of Netlink
72attributes. Some attributes represent packet metadata, defined as any
73information about a packet that cannot be extracted from the packet
74itself, e.g. the vport on which the packet was received. Most
75attributes, however, are extracted from headers within the packet,
76e.g. source and destination addresses from Ethernet, IP, or TCP
77headers.
78
79The <linux/openvswitch.h> header file defines the exact format of the
80flow key attributes. For informal explanatory purposes here, we write
81them as comma-separated strings, with parentheses indicating arguments
82and nesting. For example, the following could represent a flow key
83corresponding to a TCP packet that arrived on vport 1:
84
85 in_port(1), eth(src=e0:91:f5:21:d0:b2, dst=00:02:e3:0f:80:a4),
86 eth_type(0x0800), ipv4(src=172.16.0.20, dst=172.18.0.52, proto=17, tos=0,
87 frag=no), tcp(src=49163, dst=80)
88
89Often we ellipsize arguments not important to the discussion, e.g.:
90
91 in_port(1), eth(...), eth_type(0x0800), ipv4(...), tcp(...)
92
93
94Basic rule for evolving flow keys
95---------------------------------
96
97Some care is needed to really maintain forward and backward
98compatibility for applications that follow the rules listed under
99"Flow key compatibility" above.
100
101The basic rule is obvious:
102
103 ------------------------------------------------------------------
104 New network protocol support must only supplement existing flow
105 key attributes. It must not change the meaning of already defined
106 flow key attributes.
107 ------------------------------------------------------------------
108
109This rule does have less-obvious consequences so it is worth working
110through a few examples. Suppose, for example, that the kernel module
111did not already implement VLAN parsing. Instead, it just interpreted
112the 802.1Q TPID (0x8100) as the Ethertype then stopped parsing the
113packet. The flow key for any packet with an 802.1Q header would look
114essentially like this, ignoring metadata:
115
116 eth(...), eth_type(0x8100)
117
118Naively, to add VLAN support, it makes sense to add a new "vlan" flow
119key attribute to contain the VLAN tag, then continue to decode the
120encapsulated headers beyond the VLAN tag using the existing field
121definitions. With this change, an TCP packet in VLAN 10 would have a
122flow key much like this:
123
124 eth(...), vlan(vid=10, pcp=0), eth_type(0x0800), ip(proto=6, ...), tcp(...)
125
126But this change would negatively affect a userspace application that
127has not been updated to understand the new "vlan" flow key attribute.
128The application could, following the flow compatibility rules above,
129ignore the "vlan" attribute that it does not understand and therefore
130assume that the flow contained IP packets. This is a bad assumption
131(the flow only contains IP packets if one parses and skips over the
132802.1Q header) and it could cause the application's behavior to change
133across kernel versions even though it follows the compatibility rules.
134
135The solution is to use a set of nested attributes. This is, for
136example, why 802.1Q support uses nested attributes. A TCP packet in
137VLAN 10 is actually expressed as:
138
139 eth(...), eth_type(0x8100), vlan(vid=10, pcp=0), encap(eth_type(0x0800),
140 ip(proto=6, ...), tcp(...)))
141
142Notice how the "eth_type", "ip", and "tcp" flow key attributes are
143nested inside the "encap" attribute. Thus, an application that does
144not understand the "vlan" key will not see either of those attributes
145and therefore will not misinterpret them. (Also, the outer eth_type
146is still 0x8100, not changed to 0x0800.)
147
148Handling malformed packets
149--------------------------
150
151Don't drop packets in the kernel for malformed protocol headers, bad
152checksums, etc. This would prevent userspace from implementing a
153simple Ethernet switch that forwards every packet.
154
155Instead, in such a case, include an attribute with "empty" content.
156It doesn't matter if the empty content could be valid protocol values,
157as long as those values are rarely seen in practice, because userspace
158can always forward all packets with those values to userspace and
159handle them individually.
160
161For example, consider a packet that contains an IP header that
162indicates protocol 6 for TCP, but which is truncated just after the IP
163header, so that the TCP header is missing. The flow key for this
164packet would include a tcp attribute with all-zero src and dst, like
165this:
166
167 eth(...), eth_type(0x0800), ip(proto=6, ...), tcp(src=0, dst=0)
168
169As another example, consider a packet with an Ethernet type of 0x8100,
170indicating that a VLAN TCI should follow, but which is truncated just
171after the Ethernet type. The flow key for this packet would include
172an all-zero-bits vlan and an empty encap attribute, like this:
173
174 eth(...), eth_type(0x8100), vlan(0), encap()
175
176Unlike a TCP packet with source and destination ports 0, an
177all-zero-bits VLAN TCI is not that rare, so the CFI bit (aka
178VLAN_TAG_PRESENT inside the kernel) is ordinarily set in a vlan
179attribute expressly to allow this situation to be distinguished.
180Thus, the flow key in this second example unambiguously indicates a
181missing or malformed VLAN TCI.
182
183Other rules
184-----------
185
186The other rules for flow keys are much less subtle:
187
188 - Duplicate attributes are not allowed at a given nesting level.
189
190 - Ordering of attributes is not significant.
191
192 - When the kernel sends a given flow key to userspace, it always
193 composes it the same way. This allows userspace to hash and
194 compare entire flow keys that it may not be able to fully
195 interpret.
diff --git a/Documentation/networking/packet_mmap.txt b/Documentation/networking/packet_mmap.txt
index 4acea6603720..1c08a4b0981f 100644
--- a/Documentation/networking/packet_mmap.txt
+++ b/Documentation/networking/packet_mmap.txt
@@ -155,7 +155,7 @@ As capture, each frame contains two parts:
155 155
156 /* fill sockaddr_ll struct to prepare binding */ 156 /* fill sockaddr_ll struct to prepare binding */
157 my_addr.sll_family = AF_PACKET; 157 my_addr.sll_family = AF_PACKET;
158 my_addr.sll_protocol = ETH_P_ALL; 158 my_addr.sll_protocol = htons(ETH_P_ALL);
159 my_addr.sll_ifindex = s_ifr.ifr_ifindex; 159 my_addr.sll_ifindex = s_ifr.ifr_ifindex;
160 160
161 /* bind socket to eth0 */ 161 /* bind socket to eth0 */
diff --git a/Documentation/networking/scaling.txt b/Documentation/networking/scaling.txt
index a177de21d28e..579994afbe06 100644
--- a/Documentation/networking/scaling.txt
+++ b/Documentation/networking/scaling.txt
@@ -208,7 +208,7 @@ The counter in rps_dev_flow_table values records the length of the current
208CPU's backlog when a packet in this flow was last enqueued. Each backlog 208CPU's backlog when a packet in this flow was last enqueued. Each backlog
209queue has a head counter that is incremented on dequeue. A tail counter 209queue has a head counter that is incremented on dequeue. A tail counter
210is computed as head counter + queue length. In other words, the counter 210is computed as head counter + queue length. In other words, the counter
211in rps_dev_flow_table[i] records the last element in flow i that has 211in rps_dev_flow[i] records the last element in flow i that has
212been enqueued onto the currently designated CPU for flow i (of course, 212been enqueued onto the currently designated CPU for flow i (of course,
213entry i is actually selected by hash and multiple flows may hash to the 213entry i is actually selected by hash and multiple flows may hash to the
214same entry i). 214same entry i).
@@ -224,7 +224,7 @@ following is true:
224 224
225- The current CPU's queue head counter >= the recorded tail counter 225- The current CPU's queue head counter >= the recorded tail counter
226 value in rps_dev_flow[i] 226 value in rps_dev_flow[i]
227- The current CPU is unset (equal to NR_CPUS) 227- The current CPU is unset (equal to RPS_NO_CPU)
228- The current CPU is offline 228- The current CPU is offline
229 229
230After this check, the packet is sent to the (possibly updated) current 230After this check, the packet is sent to the (possibly updated) current
@@ -235,7 +235,7 @@ CPU.
235 235
236==== RFS Configuration 236==== RFS Configuration
237 237
238RFS is only available if the kconfig symbol CONFIG_RFS is enabled (on 238RFS is only available if the kconfig symbol CONFIG_RPS is enabled (on
239by default for SMP). The functionality remains disabled until explicitly 239by default for SMP). The functionality remains disabled until explicitly
240configured. The number of entries in the global flow table is set through: 240configured. The number of entries in the global flow table is set through:
241 241
@@ -258,7 +258,7 @@ For a single queue device, the rps_flow_cnt value for the single queue
258would normally be configured to the same value as rps_sock_flow_entries. 258would normally be configured to the same value as rps_sock_flow_entries.
259For a multi-queue device, the rps_flow_cnt for each queue might be 259For a multi-queue device, the rps_flow_cnt for each queue might be
260configured as rps_sock_flow_entries / N, where N is the number of 260configured as rps_sock_flow_entries / N, where N is the number of
261queues. So for instance, if rps_flow_entries is set to 32768 and there 261queues. So for instance, if rps_sock_flow_entries is set to 32768 and there
262are 16 configured receive queues, rps_flow_cnt for each queue might be 262are 16 configured receive queues, rps_flow_cnt for each queue might be
263configured as 2048. 263configured as 2048.
264 264
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt
index 8d67980fabe8..d0aeeadd264b 100644
--- a/Documentation/networking/stmmac.txt
+++ b/Documentation/networking/stmmac.txt
@@ -4,14 +4,16 @@ Copyright (C) 2007-2010 STMicroelectronics Ltd
4Author: Giuseppe Cavallaro <peppe.cavallaro@st.com> 4Author: Giuseppe Cavallaro <peppe.cavallaro@st.com>
5 5
6This is the driver for the MAC 10/100/1000 on-chip Ethernet controllers 6This is the driver for the MAC 10/100/1000 on-chip Ethernet controllers
7(Synopsys IP blocks); it has been fully tested on STLinux platforms. 7(Synopsys IP blocks).
8 8
9Currently this network device driver is for all STM embedded MAC/GMAC 9Currently this network device driver is for all STM embedded MAC/GMAC
10(i.e. 7xxx/5xxx SoCs) and it's known working on other platforms i.e. ARM SPEAr. 10(i.e. 7xxx/5xxx SoCs), SPEAr (arm), Loongson1B (mips) and XLINX XC2V3000
11FF1152AMT0221 D1215994A VIRTEX FPGA board.
11 12
12DWC Ether MAC 10/100/1000 Universal version 3.41a and DWC Ether MAC 10/100 13DWC Ether MAC 10/100/1000 Universal version 3.60a (and older) and DWC Ether MAC 10/100
13Universal version 4.0 have been used for developing the first code 14Universal version 4.0 have been used for developing this driver.
14implementation. 15
16This driver supports both the platform bus and PCI.
15 17
16Please, for more information also visit: www.stlinux.com 18Please, for more information also visit: www.stlinux.com
17 19
@@ -277,5 +279,5 @@ In fact, these can generate an huge amount of debug messages.
277 279
2786) TODO: 2806) TODO:
279 o XGMAC is not supported. 281 o XGMAC is not supported.
280 o Review the timer optimisation code to use an embedded device that will be 282 o Add the EEE - Energy Efficient Ethernet
281 available in new chip generations. 283 o Add the PTP - precision time protocol
diff --git a/Documentation/networking/team.txt b/Documentation/networking/team.txt
new file mode 100644
index 000000000000..5a013686b9ea
--- /dev/null
+++ b/Documentation/networking/team.txt
@@ -0,0 +1,2 @@
1Team devices are driven from userspace via libteam library which is here:
2 https://github.com/jpirko/libteam