Skip to content

Commit 3f365cf

Browse files
author
Ingo Molnar
committed
Merge branch 'sched/urgent' into x86/mm, to pick up dependent fix
Andy will need the following scheduler fix for the PCID series: 252d2a4: sched/core: Idle_task_exit() shouldn't use switch_mm_irqs_off() So do a cross-merge. Signed-off-by: Ingo Molnar <mingo@kernel.org>
2 parents bbf79d2 + 252d2a4 commit 3f365cf

File tree

318 files changed

+2705
-1551
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

318 files changed

+2705
-1551
lines changed

Documentation/admin-guide/kernel-parameters.txt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -866,6 +866,15 @@
866866

867867
dscc4.setup= [NET]
868868

869+
dt_cpu_ftrs= [PPC]
870+
Format: {"off" | "known"}
871+
Control how the dt_cpu_ftrs device-tree binding is
872+
used for CPU feature discovery and setup (if it
873+
exists).
874+
off: Do not use it, fall back to legacy cpu table.
875+
known: Do not pass through unknown features to guests
876+
or userspace, only those that the kernel is aware of.
877+
869878
dump_apple_properties [X86]
870879
Dump name and content of EFI device properties on
871880
x86 Macs. Useful for driver authors to determine

Documentation/devicetree/bindings/net/dsa/marvell.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@ Optional properties:
2626
- interrupt-controller : Indicates the switch is itself an interrupt
2727
controller. This is used for the PHY interrupts.
2828
#interrupt-cells = <2> : Controller uses two cells, number and flag
29+
- eeprom-length : Set to the length of an EEPROM connected to the
30+
switch. Must be set if the switch can not detect
31+
the presence and/or size of a connected EEPROM,
32+
otherwise optional.
2933
- mdio : Container of PHY and devices on the switches MDIO
3034
bus.
3135
- mdio? : Container of PHYs and devices on the external MDIO

Documentation/networking/dpaa.txt

Lines changed: 194 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,194 @@
1+
The QorIQ DPAA Ethernet Driver
2+
==============================
3+
4+
Authors:
5+
Madalin Bucur <madalin.bucur@nxp.com>
6+
Camelia Groza <camelia.groza@nxp.com>
7+
8+
Contents
9+
========
10+
11+
- DPAA Ethernet Overview
12+
- DPAA Ethernet Supported SoCs
13+
- Configuring DPAA Ethernet in your kernel
14+
- DPAA Ethernet Frame Processing
15+
- DPAA Ethernet Features
16+
- Debugging
17+
18+
DPAA Ethernet Overview
19+
======================
20+
21+
DPAA stands for Data Path Acceleration Architecture and it is a
22+
set of networking acceleration IPs that are available on several
23+
generations of SoCs, both on PowerPC and ARM64.
24+
25+
The Freescale DPAA architecture consists of a series of hardware blocks
26+
that support Ethernet connectivity. The Ethernet driver depends upon the
27+
following drivers in the Linux kernel:
28+
29+
- Peripheral Access Memory Unit (PAMU) (* needed only for PPC platforms)
30+
drivers/iommu/fsl_*
31+
- Frame Manager (FMan)
32+
drivers/net/ethernet/freescale/fman
33+
- Queue Manager (QMan), Buffer Manager (BMan)
34+
drivers/soc/fsl/qbman
35+
36+
A simplified view of the dpaa_eth interfaces mapped to FMan MACs:
37+
38+
dpaa_eth /eth0\ ... /ethN\
39+
driver | | | |
40+
------------- ---- ----------- ---- -------------
41+
-Ports / Tx Rx \ ... / Tx Rx \
42+
FMan | | | |
43+
-MACs | MAC0 | | MACN |
44+
/ dtsec0 \ ... / dtsecN \ (or tgec)
45+
/ \ / \(or memac)
46+
--------- -------------- --- -------------- ---------
47+
FMan, FMan Port, FMan SP, FMan MURAM drivers
48+
---------------------------------------------------------
49+
FMan HW blocks: MURAM, MACs, Ports, SP
50+
---------------------------------------------------------
51+
52+
The dpaa_eth relation to the QMan, BMan and FMan:
53+
________________________________
54+
dpaa_eth / eth0 \
55+
driver / \
56+
--------- -^- -^- -^- --- ---------
57+
QMan driver / \ / \ / \ \ / | BMan |
58+
|Rx | |Rx | |Tx | |Tx | | driver |
59+
--------- |Dfl| |Err| |Cnf| |FQs| | |
60+
QMan HW |FQ | |FQ | |FQs| | | | |
61+
/ \ / \ / \ \ / | |
62+
--------- --- --- --- -v- ---------
63+
| FMan QMI | |
64+
| FMan HW FMan BMI | BMan HW |
65+
----------------------- --------
66+
67+
where the acronyms used above (and in the code) are:
68+
DPAA = Data Path Acceleration Architecture
69+
FMan = DPAA Frame Manager
70+
QMan = DPAA Queue Manager
71+
BMan = DPAA Buffers Manager
72+
QMI = QMan interface in FMan
73+
BMI = BMan interface in FMan
74+
FMan SP = FMan Storage Profiles
75+
MURAM = Multi-user RAM in FMan
76+
FQ = QMan Frame Queue
77+
Rx Dfl FQ = default reception FQ
78+
Rx Err FQ = Rx error frames FQ
79+
Tx Cnf FQ = Tx confirmation FQs
80+
Tx FQs = transmission frame queues
81+
dtsec = datapath three speed Ethernet controller (10/100/1000 Mbps)
82+
tgec = ten gigabit Ethernet controller (10 Gbps)
83+
memac = multirate Ethernet MAC (10/100/1000/10000)
84+
85+
DPAA Ethernet Supported SoCs
86+
============================
87+
88+
The DPAA drivers enable the Ethernet controllers present on the following SoCs:
89+
90+
# PPC
91+
P1023
92+
P2041
93+
P3041
94+
P4080
95+
P5020
96+
P5040
97+
T1023
98+
T1024
99+
T1040
100+
T1042
101+
T2080
102+
T4240
103+
B4860
104+
105+
# ARM
106+
LS1043A
107+
LS1046A
108+
109+
Configuring DPAA Ethernet in your kernel
110+
========================================
111+
112+
To enable the DPAA Ethernet driver, the following Kconfig options are required:
113+
114+
# common for arch/arm64 and arch/powerpc platforms
115+
CONFIG_FSL_DPAA=y
116+
CONFIG_FSL_FMAN=y
117+
CONFIG_FSL_DPAA_ETH=y
118+
CONFIG_FSL_XGMAC_MDIO=y
119+
120+
# for arch/powerpc only
121+
CONFIG_FSL_PAMU=y
122+
123+
# common options needed for the PHYs used on the RDBs
124+
CONFIG_VITESSE_PHY=y
125+
CONFIG_REALTEK_PHY=y
126+
CONFIG_AQUANTIA_PHY=y
127+
128+
DPAA Ethernet Frame Processing
129+
==============================
130+
131+
On Rx, buffers for the incoming frames are retrieved from one of the three
132+
existing buffers pools. The driver initializes and seeds these, each with
133+
buffers of different sizes: 1KB, 2KB and 4KB.
134+
135+
On Tx, all transmitted frames are returned to the driver through Tx
136+
confirmation frame queues. The driver is then responsible for freeing the
137+
buffers. In order to do this properly, a backpointer is added to the buffer
138+
before transmission that points to the skb. When the buffer returns to the
139+
driver on a confirmation FQ, the skb can be correctly consumed.
140+
141+
DPAA Ethernet Features
142+
======================
143+
144+
Currently the DPAA Ethernet driver enables the basic features required for
145+
a Linux Ethernet driver. The support for advanced features will be added
146+
gradually.
147+
148+
The driver has Rx and Tx checksum offloading for UDP and TCP. Currently the Rx
149+
checksum offload feature is enabled by default and cannot be controlled through
150+
ethtool.
151+
152+
The driver has support for multiple prioritized Tx traffic classes. Priorities
153+
range from 0 (lowest) to 3 (highest). These are mapped to HW workqueues with
154+
strict priority levels. Each traffic class contains NR_CPU TX queues. By
155+
default, only one traffic class is enabled and the lowest priority Tx queues
156+
are used. Higher priority traffic classes can be enabled with the mqprio
157+
qdisc. For example, all four traffic classes are enabled on an interface with
158+
the following command. Furthermore, skb priority levels are mapped to traffic
159+
classes as follows:
160+
161+
* priorities 0 to 3 - traffic class 0 (low priority)
162+
* priorities 4 to 7 - traffic class 1 (medium-low priority)
163+
* priorities 8 to 11 - traffic class 2 (medium-high priority)
164+
* priorities 12 to 15 - traffic class 3 (high priority)
165+
166+
tc qdisc add dev <int> root handle 1: \
167+
mqprio num_tc 4 map 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 hw 1
168+
169+
Debugging
170+
=========
171+
172+
The following statistics are exported for each interface through ethtool:
173+
174+
- interrupt count per CPU
175+
- Rx packets count per CPU
176+
- Tx packets count per CPU
177+
- Tx confirmed packets count per CPU
178+
- Tx S/G frames count per CPU
179+
- Tx error count per CPU
180+
- Rx error count per CPU
181+
- Rx error count per type
182+
- congestion related statistics:
183+
- congestion status
184+
- time spent in congestion
185+
- number of time the device entered congestion
186+
- dropped packets count per cause
187+
188+
The driver also exports the following information in sysfs:
189+
190+
- the FQ IDs for each FQ type
191+
/sys/devices/platform/dpaa-ethernet.0/net/<int>/fqids
192+
193+
- the IDs of the buffer pools in use
194+
/sys/devices/platform/dpaa-ethernet.0/net/<int>/bpids

Documentation/networking/tcp.txt

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
TCP protocol
22
============
33

4-
Last updated: 9 February 2008
4+
Last updated: 3 June 2017
55

66
Contents
77
========
@@ -29,18 +29,19 @@ As of 2.6.13, Linux supports pluggable congestion control algorithms.
2929
A congestion control mechanism can be registered through functions in
3030
tcp_cong.c. The functions used by the congestion control mechanism are
3131
registered via passing a tcp_congestion_ops struct to
32-
tcp_register_congestion_control. As a minimum name, ssthresh,
33-
cong_avoid must be valid.
32+
tcp_register_congestion_control. As a minimum, the congestion control
33+
mechanism must provide a valid name and must implement either ssthresh,
34+
cong_avoid and undo_cwnd hooks or the "omnipotent" cong_control hook.
3435

3536
Private data for a congestion control mechanism is stored in tp->ca_priv.
3637
tcp_ca(tp) returns a pointer to this space. This is preallocated space - it
3738
is important to check the size of your private data will fit this space, or
38-
alternatively space could be allocated elsewhere and a pointer to it could
39+
alternatively, space could be allocated elsewhere and a pointer to it could
3940
be stored here.
4041

4142
There are three kinds of congestion control algorithms currently: The
4243
simplest ones are derived from TCP reno (highspeed, scalable) and just
43-
provide an alternative the congestion window calculation. More complex
44+
provide an alternative congestion window calculation. More complex
4445
ones like BIC try to look at other events to provide better
4546
heuristics. There are also round trip time based algorithms like
4647
Vegas and Westwood+.
@@ -49,21 +50,15 @@ Good TCP congestion control is a complex problem because the algorithm
4950
needs to maintain fairness and performance. Please review current
5051
research and RFC's before developing new modules.
5152

52-
The method that is used to determine which congestion control mechanism is
53-
determined by the setting of the sysctl net.ipv4.tcp_congestion_control.
54-
The default congestion control will be the last one registered (LIFO);
55-
so if you built everything as modules, the default will be reno. If you
56-
build with the defaults from Kconfig, then CUBIC will be builtin (not a
57-
module) and it will end up the default.
53+
The default congestion control mechanism is chosen based on the
54+
DEFAULT_TCP_CONG Kconfig parameter. If you really want a particular default
55+
value then you can set it using sysctl net.ipv4.tcp_congestion_control. The
56+
module will be autoloaded if needed and you will get the expected protocol. If
57+
you ask for an unknown congestion method, then the sysctl attempt will fail.
5858

59-
If you really want a particular default value then you will need
60-
to set it with the sysctl. If you use a sysctl, the module will be autoloaded
61-
if needed and you will get the expected protocol. If you ask for an
62-
unknown congestion method, then the sysctl attempt will fail.
63-
64-
If you remove a tcp congestion control module, then you will get the next
59+
If you remove a TCP congestion control module, then you will get the next
6560
available one. Since reno cannot be built as a module, and cannot be
66-
deleted, it will always be available.
61+
removed, it will always be available.
6762

6863
How the new TCP output machine [nyi] works.
6964
===========================================

0 commit comments

Comments
 (0)