path: root/Documentation
diff options
authorLinus Torvalds <>2011-08-24 09:11:08 -0700
committerLinus Torvalds <>2011-08-24 09:11:08 -0700
commit2da2c664ecbaace283d0d8bd7b55a5a038cbbc80 (patch)
treebdad3a5b2f64abb500e4b57152e91499fed08561 /Documentation
parent14c62e78dc1379185515be41903c4a667efc6d54 (diff)
parent11f3a6bdc2528d1ce2af50202dbf7138fdee1b34 (diff)
Merge git://
* git:// (29 commits) bridge: fix a possible net_device leak net: Documentation: RFC 2553bis is now RFC 3493 atm: br2684: Fix oops due to skb->dev being NULL ipv6: Fix ipv6_getsockopt for IPV6_2292PKTOPTIONS net: netdev-features.txt update to Documentation/networking/00-INDEX vlan: reset headers on accel emulation path forcedeth: call vlan_mode only if hw supports vlans via-velocity: remove non-tagged packet filtering bonding:reset backup and inactive flag of slave net_sched: fix port mirror/redirect stats reporting sit tunnels: propagate IPv6 transport class to IPv4 Type of Service gianfar: reduce stack usage in gianfar_ethtool.c net: minor update to Documentation/networking/scaling.txt net: add missing entries to Documentation/networking/00-INDEX gianfar: prevent buggy hw rx vlan tagging net: sh_eth: Fix build by forgot including linux/interrupt.h drivers/net/can/sja1000/plx_pci.c: eliminate double free usbnet/cdc_ncm: Don't use stack variables for DMA vmxnet3: Don't enable vlan filters in promiscuous mode. iwlagn: sysfs couldn't find the priv pointer ...
Diffstat (limited to 'Documentation')
3 files changed, 132 insertions, 9 deletions
diff --git a/Documentation/networking/00-INDEX b/Documentation/networking/00-INDEX
index 4edd78dfb362..bbce1215434a 100644
--- a/Documentation/networking/00-INDEX
+++ b/Documentation/networking/00-INDEX
@@ -1,13 +1,21 @@
- this file
+ - information on the 3Com TokenLink Velocity XL (3c5359) driver.
- information on the 3Com EtherLink Plus (3c505) driver.
+ - information on the 3Com Etherlink III Series Ethernet cards.
- info on the 6pack protocol, an alternative to KISS for AX.25
- info on the D-Link DE-600/DE-620 parallel port pocket adapters
- PLIP: The Parallel Line Internet Protocol device driver
+ - README for the Intel PRO/Wireless 2100 driver.
+ - README for the Intel PRO/Wireless 2915ABG and 2200BG driver.
- info on General Instrument/NextLevel SURFboard1000 cable modem.
@@ -20,8 +28,12 @@ atm.txt
- info on where to get ATM programs and support for Linux.
- info on using AX.25 and NET/ROM code for Linux
+ - B.A.T.M.A.N routing protocol on top of layer 2 Ethernet Frames.
- info on the driver for Baycom style amateur radio modems
+ - Linux Ethernet Bonding Driver HOWTO: link aggregation in Linux.
- where to get user space programs for ethernet bridging with Linux.
@@ -34,32 +46,60 @@ cxacru.txt
- Conexant AccessRunner USB ADSL Modem
- Conexant AccessRunner USB ADSL Modem configuration file parser
+ - Release Notes for the Chelsio N210 Linux device driver.
+ - the Datagram Congestion Control Protocol (DCCP) (RFC 4340..42).
- the Digital EtherWORKS DE4?? and DE5?? PCI Ethernet driver
- info on using the DECnet networking layer in Linux.
- the Digital DEPCA/EtherWORKS DE1?? and DE2?? LANCE Ethernet driver
+ - README for D-Link DL2000-based Gigabit Ethernet Adapters (dl2k.ko).
+ - README for the Simtec DM9000 Network driver.
- info on the Davicom DM9102(A)/DM9132/DM9801 fast ethernet driver.
+ - The DNS resolver module allows kernel servies to make DNS queries.
+ - Softnet driver issues.
- info on Intel's EtherExpress PRO/100 line of 10/100 boards
- info on Intel's E1000 line of gigabit ethernet boards
+ - README for the Intel Gigabit Ethernet Driver (e1000e).
- serial IP load balancing
- the Digital EtherWORKS 3 DE203/4/5 Ethernet driver
+ - Level Compressed Trie (LC-trie) notes: a structure for routing.
- Linux Socket Filtering
- FORE Systems PCA-200E/SBA-200E ATM NIC driver info.
- info on using Frame Relay/Data Link Connection Identifier (DLCI).
+ - Generic networking statistics for netlink users.
+ - The generic High Level Data Link Control (HDLC) layer.
- info on Generic Netlink
+ - Gianfar Ethernet Driver.
- Linux IEEE 802.15.4 implementation, API and drivers
+ - Configure network interfaces for parallel routing (bonding).
+ - README for the Intel Gigabit Ethernet Driver (igb).
+ - README for the Intel Gigabit Ethernet Driver (igbvf).
- /proc/sys/net/ipv4/* variables
@@ -68,41 +108,117 @@ ipddp.txt
- AppleTalk-IP Decapsulation and AppleTalk-IP Encapsulation
- Interphase PCI ATM (i)Chip IA Linux driver info.
+ - Options to the ipv6 kernel module.
+ - Per-inode explanation of the /proc/sys/net/ipv4/vs interface.
- where to get IrDA (infrared) utilities and info for Linux.
+ - README for the Intel 10 Gigabit Ethernet Driver (ixgb).
+ - README for the Intel 10 Gigabit Ethernet Driver (ixgbe).
+ - README for the Intel Virtual Function (VF) Driver (ixgbevf).
+ - User guide to the L2TP tunnel protocol.
- programming information of the LAPB module.
- the Apple or Farallon LocalTalk PC card driver
+ - HOWTO use packet injection with mac80211
- Behaviour of cards under Multicast
+ - HOWTO for multiqueue network device support.
+ - The network console module netconsole.ko: configuration and notes.
+ - Network interface features API description.
- info on network device driver functions exported to the kernel.
+ - Design of the network interface message level setting (NETIF_MSG_*).
+ - The Linux Near Field Communication (NFS) subsystem.
- IBM PCI Pit/Pit-Phy/Olympic Token Ring driver info.
+ - Overview of network interface operational states.
+ - User guide to memory mapped packet socket rings (PACKET_[RT]X_RING).
+ - The Phonet packet protocol used in Nokia cellular modems.
+ - The PHY abstraction layer.
+ - User guide to the kernel packet generator (pktgen.ko).
- IP policy-based routing
+ - Information about the generic PPP driver.
+ - Per inode overview of the /proc/net/tcp and /proc/net/tcp6 interfaces.
+ - Background on radiotap headers.
- Raylink Wireless LAN card driver info.
+ - Background on the reliable, ordered datagram delivery method RDS.
+ - Overview of the Linux wireless regulatory infrastructure.
+ - Guide to the RxRPC protocol.
+ - Release notes for Neterion Xframe I/II 10GbE driver.
+ - Explanation of network scaling techniques: RSS, RPS, RFS, aRFS, XPS.
+ - Notes on the Linux kernel implementation of the SCTP protocol.
+ - Explanation of the secid member in flow structures.
- SysKonnect FDDI (SK-5xxx, Compaq Netelligent) driver info.
- the driver for SMC's 9000 series of Ethernet cards
- SMC TokenCard TokenRing Linux driver info.
+ - README for the Spidernet Driver (as found in PS3 / Cell BE).
+ - README for the STMicro Synopsys Ethernet driver.
+ - rules for traffic control (tc) actions.
+ - overview of network packet timestamping variants.
- short blurb on how TCP output takes place.
+ - kernel tuning options for low rate 'thin' TCP streams.
- ThunderLAN (Compaq Netelligent 10/100, Olicom OC-2xxx) driver info.
- SysKonnect Token Ring ISA/PCI adapter driver info.
+ - Transparent proxy support user guide.
- TUN/TAP device driver, allowing user space Rx/Tx of packets.
+ - UDP-Lite protocol (RFC 3828) introduction.
- info on using 3Com Vortex (3c590, 3c592, 3c595, 3c597) Ethernet cards.
+ - README for the Neterion X3100 PCIe Server Adapter.
- general info on X.25 development.
- description of the X.25 Packet Layer to LAPB device interface.
+ - description of the statistics package for XFRM.
+ - sync patches for XFRM enable migration of an SA between hosts.
+ - description of the XFRM configuration options.
- info about Linux driver for Z8530 based HDLC cards for AX.25
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt
index db2a4067013c..81546990f41c 100644
--- a/Documentation/networking/ip-sysctl.txt
+++ b/Documentation/networking/ip-sysctl.txt
@@ -992,7 +992,7 @@ bindv6only - BOOLEAN
TRUE: disable IPv4-mapped address feature
FALSE: enable IPv4-mapped address feature
- Default: FALSE (as specified in RFC2553bis)
+ Default: FALSE (as specified in RFC3493)
IPv6 Fragmentation:
diff --git a/Documentation/networking/scaling.txt b/Documentation/networking/scaling.txt
index 7254b4b5910e..58fd7414e6c0 100644
--- a/Documentation/networking/scaling.txt
+++ b/Documentation/networking/scaling.txt
@@ -52,7 +52,8 @@ module parameter for specifying the number of hardware queues to
configure. In the bnx2x driver, for instance, this parameter is called
num_queues. A typical RSS configuration would be to have one receive queue
for each CPU if the device supports enough queues, or otherwise at least
-one for each cache domain at a particular cache level (L1, L2, etc.).
+one for each memory domain, where a memory domain is a set of CPUs that
+share a particular memory level (L1, L2, NUMA node, etc.).
The indirection table of an RSS device, which resolves a queue by masked
hash, is usually programmed by the driver at initialization. The
@@ -82,11 +83,17 @@ RSS should be enabled when latency is a concern or whenever receive
interrupt processing forms a bottleneck. Spreading load between CPUs
decreases queue length. For low latency networking, the optimal setting
is to allocate as many queues as there are CPUs in the system (or the
-NIC maximum, if lower). Because the aggregate number of interrupts grows
-with each additional queue, the most efficient high-rate configuration
+NIC maximum, if lower). The most efficient high-rate configuration
is likely the one with the smallest number of receive queues where no
-CPU that processes receive interrupts reaches 100% utilization. Per-cpu
-load can be observed using the mpstat utility.
+receive queue overflows due to a saturated CPU, because in default
+mode with interrupt coalescing enabled, the aggregate number of
+interrupts (and thus work) grows with each additional queue.
+Per-cpu load can be observed using the mpstat utility, but note that on
+processors with hyperthreading (HT), each hyperthread is represented as
+a separate CPU. For interrupt handling, HT has shown no benefit in
+initial tests, so limit the number of queues to the number of CPU cores
+in the system.
RPS: Receive Packet Steering
@@ -145,7 +152,7 @@ the bitmap.
== Suggested Configuration
For a single queue device, a typical RPS configuration would be to set
-the rps_cpus to the CPUs in the same cache domain of the interrupting
+the rps_cpus to the CPUs in the same memory domain of the interrupting
CPU. If NUMA locality is not an issue, this could also be all CPUs in
the system. At high interrupt rate, it might be wise to exclude the
interrupting CPU from the map since that already performs much work.
@@ -154,7 +161,7 @@ For a multi-queue system, if RSS is configured so that a hardware
receive queue is mapped to each CPU, then RPS is probably redundant
and unnecessary. If there are fewer hardware queues than CPUs, then
RPS might be beneficial if the rps_cpus for each queue are the ones that
-share the same cache domain as the interrupting CPU for that queue.
+share the same memory domain as the interrupting CPU for that queue.
RFS: Receive Flow Steering
@@ -326,7 +333,7 @@ The queue chosen for transmitting a particular flow is saved in the
corresponding socket structure for the flow (e.g. a TCP connection).
This transmit queue is used for subsequent packets sent on the flow to
prevent out of order (ooo) packets. The choice also amortizes the cost
-of calling get_xps_queues() over all packets in the connection. To avoid
+of calling get_xps_queues() over all packets in the flow. To avoid
ooo packets, the queue for a flow can subsequently only be changed if
skb->ooo_okay is set for a packet in the flow. This flag indicates that
there are no outstanding packets in the flow, so the transmit queue can