diff options
Diffstat (limited to 'Documentation')
26 files changed, 1521 insertions, 346 deletions
diff --git a/Documentation/ABI/testing/sysfs-class-net-batman-adv b/Documentation/ABI/testing/sysfs-class-net-batman-adv new file mode 100644 index 000000000000..38dd762def4b --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-net-batman-adv | |||
@@ -0,0 +1,14 @@ | |||
1 | |||
2 | What: /sys/class/net/<iface>/batman-adv/mesh_iface | ||
3 | Date: May 2010 | ||
4 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
5 | Description: | ||
6 | The /sys/class/net/<iface>/batman-adv/mesh_iface file | ||
7 | displays the batman mesh interface this <iface> | ||
8 | currently is associated with. | ||
9 | |||
10 | What: /sys/class/net/<iface>/batman-adv/iface_status | ||
11 | Date: May 2010 | ||
12 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
13 | Description: | ||
14 | Indicates the status of <iface> as it is seen by batman. | ||
diff --git a/Documentation/ABI/testing/sysfs-class-net-mesh b/Documentation/ABI/testing/sysfs-class-net-mesh new file mode 100644 index 000000000000..748fe1701d25 --- /dev/null +++ b/Documentation/ABI/testing/sysfs-class-net-mesh | |||
@@ -0,0 +1,69 @@ | |||
1 | |||
2 | What: /sys/class/net/<mesh_iface>/mesh/aggregated_ogms | ||
3 | Date: May 2010 | ||
4 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
5 | Description: | ||
6 | Indicates whether the batman protocol messages of the | ||
7 | mesh <mesh_iface> shall be aggregated or not. | ||
8 | |||
9 | What: /sys/class/net/<mesh_iface>/mesh/bonding | ||
10 | Date: June 2010 | ||
11 | Contact: Simon Wunderlich <siwu@hrz.tu-chemnitz.de> | ||
12 | Description: | ||
13 | Indicates whether the data traffic going through the | ||
14 | mesh will be sent using multiple interfaces at the | ||
15 | same time (if available). | ||
16 | |||
17 | What: /sys/class/net/<mesh_iface>/mesh/fragmentation | ||
18 | Date: October 2010 | ||
19 | Contact: Andreas Langer <an.langer@gmx.de> | ||
20 | Description: | ||
21 | Indicates whether the data traffic going through the | ||
22 | mesh will be fragmented or silently discarded if the | ||
23 | packet size exceeds the outgoing interface MTU. | ||
24 | |||
25 | What: /sys/class/net/<mesh_iface>/mesh/gw_bandwidth | ||
26 | Date: October 2010 | ||
27 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
28 | Description: | ||
29 | Defines the bandwidth which is propagated by this | ||
30 | node if gw_mode was set to 'server'. | ||
31 | |||
32 | What: /sys/class/net/<mesh_iface>/mesh/gw_mode | ||
33 | Date: October 2010 | ||
34 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
35 | Description: | ||
36 | Defines the state of the gateway features. Can be | ||
37 | either 'off', 'client' or 'server'. | ||
38 | |||
39 | What: /sys/class/net/<mesh_iface>/mesh/gw_sel_class | ||
40 | Date: October 2010 | ||
41 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
42 | Description: | ||
43 | Defines the selection criteria this node will use | ||
44 | to choose a gateway if gw_mode was set to 'client'. | ||
45 | |||
46 | What: /sys/class/net/<mesh_iface>/mesh/orig_interval | ||
47 | Date: May 2010 | ||
48 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
49 | Description: | ||
50 | Defines the interval in milliseconds in which batman | ||
51 | sends its protocol messages. | ||
52 | |||
53 | What: /sys/class/net/<mesh_iface>/mesh/hop_penalty | ||
54 | Date: Oct 2010 | ||
55 | Contact: Linus Lüssing <linus.luessing@web.de> | ||
56 | Description: | ||
57 | Defines the penalty which will be applied to an | ||
58 | originator message's tq-field on every hop. | ||
59 | |||
60 | What: /sys/class/net/<mesh_iface>/mesh/vis_mode | ||
61 | Date: May 2010 | ||
62 | Contact: Marek Lindner <lindner_marek@yahoo.de> | ||
63 | Description: | ||
64 | Each batman node only maintains information about its | ||
65 | own local neighborhood, therefore generating graphs | ||
66 | showing the topology of the entire mesh is not easily | ||
67 | feasible without having a central instance to collect | ||
68 | the local topologies from all nodes. This file allows | ||
69 | to activate the collecting (server) mode. | ||
diff --git a/Documentation/DocBook/80211.tmpl b/Documentation/DocBook/80211.tmpl index 19a1210c2530..03641a08e275 100644 --- a/Documentation/DocBook/80211.tmpl +++ b/Documentation/DocBook/80211.tmpl | |||
@@ -146,6 +146,7 @@ | |||
146 | !Finclude/net/cfg80211.h cfg80211_rx_mgmt | 146 | !Finclude/net/cfg80211.h cfg80211_rx_mgmt |
147 | !Finclude/net/cfg80211.h cfg80211_mgmt_tx_status | 147 | !Finclude/net/cfg80211.h cfg80211_mgmt_tx_status |
148 | !Finclude/net/cfg80211.h cfg80211_cqm_rssi_notify | 148 | !Finclude/net/cfg80211.h cfg80211_cqm_rssi_notify |
149 | !Finclude/net/cfg80211.h cfg80211_cqm_pktloss_notify | ||
149 | !Finclude/net/cfg80211.h cfg80211_michael_mic_failure | 150 | !Finclude/net/cfg80211.h cfg80211_michael_mic_failure |
150 | </chapter> | 151 | </chapter> |
151 | <chapter> | 152 | <chapter> |
@@ -332,10 +333,16 @@ | |||
332 | <title>functions/definitions</title> | 333 | <title>functions/definitions</title> |
333 | !Finclude/net/mac80211.h ieee80211_rx_status | 334 | !Finclude/net/mac80211.h ieee80211_rx_status |
334 | !Finclude/net/mac80211.h mac80211_rx_flags | 335 | !Finclude/net/mac80211.h mac80211_rx_flags |
336 | !Finclude/net/mac80211.h mac80211_tx_control_flags | ||
337 | !Finclude/net/mac80211.h mac80211_rate_control_flags | ||
338 | !Finclude/net/mac80211.h ieee80211_tx_rate | ||
335 | !Finclude/net/mac80211.h ieee80211_tx_info | 339 | !Finclude/net/mac80211.h ieee80211_tx_info |
340 | !Finclude/net/mac80211.h ieee80211_tx_info_clear_status | ||
336 | !Finclude/net/mac80211.h ieee80211_rx | 341 | !Finclude/net/mac80211.h ieee80211_rx |
342 | !Finclude/net/mac80211.h ieee80211_rx_ni | ||
337 | !Finclude/net/mac80211.h ieee80211_rx_irqsafe | 343 | !Finclude/net/mac80211.h ieee80211_rx_irqsafe |
338 | !Finclude/net/mac80211.h ieee80211_tx_status | 344 | !Finclude/net/mac80211.h ieee80211_tx_status |
345 | !Finclude/net/mac80211.h ieee80211_tx_status_ni | ||
339 | !Finclude/net/mac80211.h ieee80211_tx_status_irqsafe | 346 | !Finclude/net/mac80211.h ieee80211_tx_status_irqsafe |
340 | !Finclude/net/mac80211.h ieee80211_rts_get | 347 | !Finclude/net/mac80211.h ieee80211_rts_get |
341 | !Finclude/net/mac80211.h ieee80211_rts_duration | 348 | !Finclude/net/mac80211.h ieee80211_rts_duration |
@@ -346,6 +353,7 @@ | |||
346 | !Finclude/net/mac80211.h ieee80211_stop_queue | 353 | !Finclude/net/mac80211.h ieee80211_stop_queue |
347 | !Finclude/net/mac80211.h ieee80211_wake_queues | 354 | !Finclude/net/mac80211.h ieee80211_wake_queues |
348 | !Finclude/net/mac80211.h ieee80211_stop_queues | 355 | !Finclude/net/mac80211.h ieee80211_stop_queues |
356 | !Finclude/net/mac80211.h ieee80211_queue_stopped | ||
349 | </sect1> | 357 | </sect1> |
350 | </chapter> | 358 | </chapter> |
351 | 359 | ||
@@ -354,6 +362,13 @@ | |||
354 | !Pinclude/net/mac80211.h Frame filtering | 362 | !Pinclude/net/mac80211.h Frame filtering |
355 | !Finclude/net/mac80211.h ieee80211_filter_flags | 363 | !Finclude/net/mac80211.h ieee80211_filter_flags |
356 | </chapter> | 364 | </chapter> |
365 | |||
366 | <chapter id="workqueue"> | ||
367 | <title>The mac80211 workqueue</title> | ||
368 | !Pinclude/net/mac80211.h mac80211 workqueue | ||
369 | !Finclude/net/mac80211.h ieee80211_queue_work | ||
370 | !Finclude/net/mac80211.h ieee80211_queue_delayed_work | ||
371 | </chapter> | ||
357 | </part> | 372 | </part> |
358 | 373 | ||
359 | <part id="advanced"> | 374 | <part id="advanced"> |
@@ -374,6 +389,9 @@ | |||
374 | !Finclude/net/mac80211.h set_key_cmd | 389 | !Finclude/net/mac80211.h set_key_cmd |
375 | !Finclude/net/mac80211.h ieee80211_key_conf | 390 | !Finclude/net/mac80211.h ieee80211_key_conf |
376 | !Finclude/net/mac80211.h ieee80211_key_flags | 391 | !Finclude/net/mac80211.h ieee80211_key_flags |
392 | !Finclude/net/mac80211.h ieee80211_tkip_key_type | ||
393 | !Finclude/net/mac80211.h ieee80211_get_tkip_key | ||
394 | !Finclude/net/mac80211.h ieee80211_key_removed | ||
377 | </chapter> | 395 | </chapter> |
378 | 396 | ||
379 | <chapter id="powersave"> | 397 | <chapter id="powersave"> |
@@ -417,6 +435,18 @@ | |||
417 | supported by mac80211, add notes about supporting hw crypto | 435 | supported by mac80211, add notes about supporting hw crypto |
418 | with it. | 436 | with it. |
419 | </para> | 437 | </para> |
438 | !Finclude/net/mac80211.h ieee80211_iterate_active_interfaces | ||
439 | !Finclude/net/mac80211.h ieee80211_iterate_active_interfaces_atomic | ||
440 | </chapter> | ||
441 | |||
442 | <chapter id="station-handling"> | ||
443 | <title>Station handling</title> | ||
444 | <para>TODO</para> | ||
445 | !Finclude/net/mac80211.h ieee80211_sta | ||
446 | !Finclude/net/mac80211.h sta_notify_cmd | ||
447 | !Finclude/net/mac80211.h ieee80211_find_sta | ||
448 | !Finclude/net/mac80211.h ieee80211_find_sta_by_ifaddr | ||
449 | !Finclude/net/mac80211.h ieee80211_sta_block_awake | ||
420 | </chapter> | 450 | </chapter> |
421 | 451 | ||
422 | <chapter id="hardware-scan-offload"> | 452 | <chapter id="hardware-scan-offload"> |
@@ -424,6 +454,28 @@ | |||
424 | <para>TBD</para> | 454 | <para>TBD</para> |
425 | !Finclude/net/mac80211.h ieee80211_scan_completed | 455 | !Finclude/net/mac80211.h ieee80211_scan_completed |
426 | </chapter> | 456 | </chapter> |
457 | |||
458 | <chapter id="aggregation"> | ||
459 | <title>Aggregation</title> | ||
460 | <sect1> | ||
461 | <title>TX A-MPDU aggregation</title> | ||
462 | !Pnet/mac80211/agg-tx.c TX A-MPDU aggregation | ||
463 | !Cnet/mac80211/agg-tx.c | ||
464 | </sect1> | ||
465 | <sect1> | ||
466 | <title>RX A-MPDU aggregation</title> | ||
467 | !Pnet/mac80211/agg-rx.c RX A-MPDU aggregation | ||
468 | !Cnet/mac80211/agg-rx.c | ||
469 | </sect1> | ||
470 | !Finclude/net/mac80211.h ieee80211_ampdu_mlme_action | ||
471 | </chapter> | ||
472 | |||
473 | <chapter id="smps"> | ||
474 | <title>Spatial Multiplexing Powersave (SMPS)</title> | ||
475 | !Pinclude/net/mac80211.h Spatial multiplexing power save | ||
476 | !Finclude/net/mac80211.h ieee80211_request_smps | ||
477 | !Finclude/net/mac80211.h ieee80211_smps_mode | ||
478 | </chapter> | ||
427 | </part> | 479 | </part> |
428 | 480 | ||
429 | <part id="rate-control"> | 481 | <part id="rate-control"> |
@@ -435,9 +487,16 @@ | |||
435 | interface and how it relates to mac80211 and drivers. | 487 | interface and how it relates to mac80211 and drivers. |
436 | </para> | 488 | </para> |
437 | </partintro> | 489 | </partintro> |
438 | <chapter id="dummy"> | 490 | <chapter id="ratecontrol-api"> |
439 | <title>dummy chapter</title> | 491 | <title>Rate Control API</title> |
440 | <para>TBD</para> | 492 | <para>TBD</para> |
493 | !Finclude/net/mac80211.h ieee80211_start_tx_ba_session | ||
494 | !Finclude/net/mac80211.h ieee80211_start_tx_ba_cb_irqsafe | ||
495 | !Finclude/net/mac80211.h ieee80211_stop_tx_ba_session | ||
496 | !Finclude/net/mac80211.h ieee80211_stop_tx_ba_cb_irqsafe | ||
497 | !Finclude/net/mac80211.h rate_control_changed | ||
498 | !Finclude/net/mac80211.h ieee80211_tx_rate_control | ||
499 | !Finclude/net/mac80211.h rate_control_send_low | ||
441 | </chapter> | 500 | </chapter> |
442 | </part> | 501 | </part> |
443 | 502 | ||
@@ -485,6 +544,13 @@ | |||
485 | </sect1> | 544 | </sect1> |
486 | </chapter> | 545 | </chapter> |
487 | 546 | ||
547 | <chapter id="aggregation-internals"> | ||
548 | <title>Aggregation</title> | ||
549 | !Fnet/mac80211/sta_info.h sta_ampdu_mlme | ||
550 | !Fnet/mac80211/sta_info.h tid_ampdu_tx | ||
551 | !Fnet/mac80211/sta_info.h tid_ampdu_rx | ||
552 | </chapter> | ||
553 | |||
488 | <chapter id="synchronisation"> | 554 | <chapter id="synchronisation"> |
489 | <title>Synchronisation</title> | 555 | <title>Synchronisation</title> |
490 | <para>TBD</para> | 556 | <para>TBD</para> |
diff --git a/Documentation/RCU/trace.txt b/Documentation/RCU/trace.txt index a851118775d8..6a8c73f55b80 100644 --- a/Documentation/RCU/trace.txt +++ b/Documentation/RCU/trace.txt | |||
@@ -1,18 +1,22 @@ | |||
1 | CONFIG_RCU_TRACE debugfs Files and Formats | 1 | CONFIG_RCU_TRACE debugfs Files and Formats |
2 | 2 | ||
3 | 3 | ||
4 | The rcutree implementation of RCU provides debugfs trace output that | 4 | The rcutree and rcutiny implementations of RCU provide debugfs trace |
5 | summarizes counters and state. This information is useful for debugging | 5 | output that summarizes counters and state. This information is useful for |
6 | RCU itself, and can sometimes also help to debug abuses of RCU. | 6 | debugging RCU itself, and can sometimes also help to debug abuses of RCU. |
7 | The following sections describe the debugfs files and formats. | 7 | The following sections describe the debugfs files and formats, first |
8 | for rcutree and next for rcutiny. | ||
8 | 9 | ||
9 | 10 | ||
10 | Hierarchical RCU debugfs Files and Formats | 11 | CONFIG_TREE_RCU and CONFIG_TREE_PREEMPT_RCU debugfs Files and Formats |
11 | 12 | ||
12 | This implementation of RCU provides three debugfs files under the | 13 | These implementations of RCU provides five debugfs files under the |
13 | top-level directory RCU: rcu/rcudata (which displays fields in struct | 14 | top-level directory RCU: rcu/rcudata (which displays fields in struct |
14 | rcu_data), rcu/rcugp (which displays grace-period counters), and | 15 | rcu_data), rcu/rcudata.csv (which is a .csv spreadsheet version of |
15 | rcu/rcuhier (which displays the struct rcu_node hierarchy). | 16 | rcu/rcudata), rcu/rcugp (which displays grace-period counters), |
17 | rcu/rcuhier (which displays the struct rcu_node hierarchy), and | ||
18 | rcu/rcu_pending (which displays counts of the reasons that the | ||
19 | rcu_pending() function decided that there was core RCU work to do). | ||
16 | 20 | ||
17 | The output of "cat rcu/rcudata" looks as follows: | 21 | The output of "cat rcu/rcudata" looks as follows: |
18 | 22 | ||
@@ -130,7 +134,8 @@ o "ci" is the number of RCU callbacks that have been invoked for | |||
130 | been registered in absence of CPU-hotplug activity. | 134 | been registered in absence of CPU-hotplug activity. |
131 | 135 | ||
132 | o "co" is the number of RCU callbacks that have been orphaned due to | 136 | o "co" is the number of RCU callbacks that have been orphaned due to |
133 | this CPU going offline. | 137 | this CPU going offline. These orphaned callbacks have been moved |
138 | to an arbitrarily chosen online CPU. | ||
134 | 139 | ||
135 | o "ca" is the number of RCU callbacks that have been adopted due to | 140 | o "ca" is the number of RCU callbacks that have been adopted due to |
136 | other CPUs going offline. Note that ci+co-ca+ql is the number of | 141 | other CPUs going offline. Note that ci+co-ca+ql is the number of |
@@ -168,12 +173,12 @@ o "gpnum" is the number of grace periods that have started. It is | |||
168 | 173 | ||
169 | The output of "cat rcu/rcuhier" looks as follows, with very long lines: | 174 | The output of "cat rcu/rcuhier" looks as follows, with very long lines: |
170 | 175 | ||
171 | c=6902 g=6903 s=2 jfq=3 j=72c7 nfqs=13142/nfqsng=0(13142) fqlh=6 oqlen=0 | 176 | c=6902 g=6903 s=2 jfq=3 j=72c7 nfqs=13142/nfqsng=0(13142) fqlh=6 |
172 | 1/1 .>. 0:127 ^0 | 177 | 1/1 .>. 0:127 ^0 |
173 | 3/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 | 178 | 3/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 |
174 | 3/3f .>. 0:5 ^0 2/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 | 179 | 3/3f .>. 0:5 ^0 2/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 |
175 | rcu_bh: | 180 | rcu_bh: |
176 | c=-226 g=-226 s=1 jfq=-5701 j=72c7 nfqs=88/nfqsng=0(88) fqlh=0 oqlen=0 | 181 | c=-226 g=-226 s=1 jfq=-5701 j=72c7 nfqs=88/nfqsng=0(88) fqlh=0 |
177 | 0/1 .>. 0:127 ^0 | 182 | 0/1 .>. 0:127 ^0 |
178 | 0/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 | 183 | 0/3 .>. 0:35 ^0 0/0 .>. 36:71 ^1 0/0 .>. 72:107 ^2 0/0 .>. 108:127 ^3 |
179 | 0/3f .>. 0:5 ^0 0/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 | 184 | 0/3f .>. 0:5 ^0 0/3 .>. 6:11 ^1 0/0 .>. 12:17 ^2 0/0 .>. 18:23 ^3 0/0 .>. 24:29 ^4 0/0 .>. 30:35 ^5 0/0 .>. 36:41 ^0 0/0 .>. 42:47 ^1 0/0 .>. 48:53 ^2 0/0 .>. 54:59 ^3 0/0 .>. 60:65 ^4 0/0 .>. 66:71 ^5 0/0 .>. 72:77 ^0 0/0 .>. 78:83 ^1 0/0 .>. 84:89 ^2 0/0 .>. 90:95 ^3 0/0 .>. 96:101 ^4 0/0 .>. 102:107 ^5 0/0 .>. 108:113 ^0 0/0 .>. 114:119 ^1 0/0 .>. 120:125 ^2 0/0 .>. 126:127 ^3 |
@@ -212,11 +217,6 @@ o "fqlh" is the number of calls to force_quiescent_state() that | |||
212 | exited immediately (without even being counted in nfqs above) | 217 | exited immediately (without even being counted in nfqs above) |
213 | due to contention on ->fqslock. | 218 | due to contention on ->fqslock. |
214 | 219 | ||
215 | o "oqlen" is the number of callbacks on the "orphan" callback | ||
216 | list. RCU callbacks are placed on this list by CPUs going | ||
217 | offline, and are "adopted" either by the CPU helping the outgoing | ||
218 | CPU or by the next rcu_barrier*() call, whichever comes first. | ||
219 | |||
220 | o Each element of the form "1/1 0:127 ^0" represents one struct | 220 | o Each element of the form "1/1 0:127 ^0" represents one struct |
221 | rcu_node. Each line represents one level of the hierarchy, from | 221 | rcu_node. Each line represents one level of the hierarchy, from |
222 | root to leaves. It is best to think of the rcu_data structures | 222 | root to leaves. It is best to think of the rcu_data structures |
@@ -326,3 +326,115 @@ o "nn" is the number of times that this CPU needed nothing. Alert | |||
326 | readers will note that the rcu "nn" number for a given CPU very | 326 | readers will note that the rcu "nn" number for a given CPU very |
327 | closely matches the rcu_bh "np" number for that same CPU. This | 327 | closely matches the rcu_bh "np" number for that same CPU. This |
328 | is due to short-circuit evaluation in rcu_pending(). | 328 | is due to short-circuit evaluation in rcu_pending(). |
329 | |||
330 | |||
331 | CONFIG_TINY_RCU and CONFIG_TINY_PREEMPT_RCU debugfs Files and Formats | ||
332 | |||
333 | These implementations of RCU provides a single debugfs file under the | ||
334 | top-level directory RCU, namely rcu/rcudata, which displays fields in | ||
335 | rcu_bh_ctrlblk, rcu_sched_ctrlblk and, for CONFIG_TINY_PREEMPT_RCU, | ||
336 | rcu_preempt_ctrlblk. | ||
337 | |||
338 | The output of "cat rcu/rcudata" is as follows: | ||
339 | |||
340 | rcu_preempt: qlen=24 gp=1097669 g197/p197/c197 tasks=... | ||
341 | ttb=. btg=no ntb=184 neb=0 nnb=183 j=01f7 bt=0274 | ||
342 | normal balk: nt=1097669 gt=0 bt=371 b=0 ny=25073378 nos=0 | ||
343 | exp balk: bt=0 nos=0 | ||
344 | rcu_sched: qlen: 0 | ||
345 | rcu_bh: qlen: 0 | ||
346 | |||
347 | This is split into rcu_preempt, rcu_sched, and rcu_bh sections, with the | ||
348 | rcu_preempt section appearing only in CONFIG_TINY_PREEMPT_RCU builds. | ||
349 | The last three lines of the rcu_preempt section appear only in | ||
350 | CONFIG_RCU_BOOST kernel builds. The fields are as follows: | ||
351 | |||
352 | o "qlen" is the number of RCU callbacks currently waiting either | ||
353 | for an RCU grace period or waiting to be invoked. This is the | ||
354 | only field present for rcu_sched and rcu_bh, due to the | ||
355 | short-circuiting of grace period in those two cases. | ||
356 | |||
357 | o "gp" is the number of grace periods that have completed. | ||
358 | |||
359 | o "g197/p197/c197" displays the grace-period state, with the | ||
360 | "g" number being the number of grace periods that have started | ||
361 | (mod 256), the "p" number being the number of grace periods | ||
362 | that the CPU has responded to (also mod 256), and the "c" | ||
363 | number being the number of grace periods that have completed | ||
364 | (once again mode 256). | ||
365 | |||
366 | Why have both "gp" and "g"? Because the data flowing into | ||
367 | "gp" is only present in a CONFIG_RCU_TRACE kernel. | ||
368 | |||
369 | o "tasks" is a set of bits. The first bit is "T" if there are | ||
370 | currently tasks that have recently blocked within an RCU | ||
371 | read-side critical section, the second bit is "N" if any of the | ||
372 | aforementioned tasks are blocking the current RCU grace period, | ||
373 | and the third bit is "E" if any of the aforementioned tasks are | ||
374 | blocking the current expedited grace period. Each bit is "." | ||
375 | if the corresponding condition does not hold. | ||
376 | |||
377 | o "ttb" is a single bit. It is "B" if any of the blocked tasks | ||
378 | need to be priority boosted and "." otherwise. | ||
379 | |||
380 | o "btg" indicates whether boosting has been carried out during | ||
381 | the current grace period, with "exp" indicating that boosting | ||
382 | is in progress for an expedited grace period, "no" indicating | ||
383 | that boosting has not yet started for a normal grace period, | ||
384 | "begun" indicating that boosting has bebug for a normal grace | ||
385 | period, and "done" indicating that boosting has completed for | ||
386 | a normal grace period. | ||
387 | |||
388 | o "ntb" is the total number of tasks subjected to RCU priority boosting | ||
389 | periods since boot. | ||
390 | |||
391 | o "neb" is the number of expedited grace periods that have had | ||
392 | to resort to RCU priority boosting since boot. | ||
393 | |||
394 | o "nnb" is the number of normal grace periods that have had | ||
395 | to resort to RCU priority boosting since boot. | ||
396 | |||
397 | o "j" is the low-order 12 bits of the jiffies counter in hexadecimal. | ||
398 | |||
399 | o "bt" is the low-order 12 bits of the value that the jiffies counter | ||
400 | will have at the next time that boosting is scheduled to begin. | ||
401 | |||
402 | o In the line beginning with "normal balk", the fields are as follows: | ||
403 | |||
404 | o "nt" is the number of times that the system balked from | ||
405 | boosting because there were no blocked tasks to boost. | ||
406 | Note that the system will balk from boosting even if the | ||
407 | grace period is overdue when the currently running task | ||
408 | is looping within an RCU read-side critical section. | ||
409 | There is no point in boosting in this case, because | ||
410 | boosting a running task won't make it run any faster. | ||
411 | |||
412 | o "gt" is the number of times that the system balked | ||
413 | from boosting because, although there were blocked tasks, | ||
414 | none of them were preventing the current grace period | ||
415 | from completing. | ||
416 | |||
417 | o "bt" is the number of times that the system balked | ||
418 | from boosting because boosting was already in progress. | ||
419 | |||
420 | o "b" is the number of times that the system balked from | ||
421 | boosting because boosting had already completed for | ||
422 | the grace period in question. | ||
423 | |||
424 | o "ny" is the number of times that the system balked from | ||
425 | boosting because it was not yet time to start boosting | ||
426 | the grace period in question. | ||
427 | |||
428 | o "nos" is the number of times that the system balked from | ||
429 | boosting for inexplicable ("not otherwise specified") | ||
430 | reasons. This can actually happen due to races involving | ||
431 | increments of the jiffies counter. | ||
432 | |||
433 | o In the line beginning with "exp balk", the fields are as follows: | ||
434 | |||
435 | o "bt" is the number of times that the system balked from | ||
436 | boosting because there were no blocked tasks to boost. | ||
437 | |||
438 | o "nos" is the number of times that the system balked from | ||
439 | boosting for inexplicable ("not otherwise specified") | ||
440 | reasons. | ||
diff --git a/Documentation/arm/00-INDEX b/Documentation/arm/00-INDEX index ecf7d04bca26..91c24a1e8a9e 100644 --- a/Documentation/arm/00-INDEX +++ b/Documentation/arm/00-INDEX | |||
@@ -34,3 +34,5 @@ memory.txt | |||
34 | - description of the virtual memory layout | 34 | - description of the virtual memory layout |
35 | nwfpe/ | 35 | nwfpe/ |
36 | - NWFPE floating point emulator documentation | 36 | - NWFPE floating point emulator documentation |
37 | swp_emulation | ||
38 | - SWP/SWPB emulation handler/logging description | ||
diff --git a/Documentation/arm/swp_emulation b/Documentation/arm/swp_emulation new file mode 100644 index 000000000000..af903d22fd93 --- /dev/null +++ b/Documentation/arm/swp_emulation | |||
@@ -0,0 +1,27 @@ | |||
1 | Software emulation of deprecated SWP instruction (CONFIG_SWP_EMULATE) | ||
2 | --------------------------------------------------------------------- | ||
3 | |||
4 | ARMv6 architecture deprecates use of the SWP/SWPB instructions, and recommeds | ||
5 | moving to the load-locked/store-conditional instructions LDREX and STREX. | ||
6 | |||
7 | ARMv7 multiprocessing extensions introduce the ability to disable these | ||
8 | instructions, triggering an undefined instruction exception when executed. | ||
9 | Trapped instructions are emulated using an LDREX/STREX or LDREXB/STREXB | ||
10 | sequence. If a memory access fault (an abort) occurs, a segmentation fault is | ||
11 | signalled to the triggering process. | ||
12 | |||
13 | /proc/cpu/swp_emulation holds some statistics/information, including the PID of | ||
14 | the last process to trigger the emulation to be invocated. For example: | ||
15 | --- | ||
16 | Emulated SWP: 12 | ||
17 | Emulated SWPB: 0 | ||
18 | Aborted SWP{B}: 1 | ||
19 | Last process: 314 | ||
20 | --- | ||
21 | |||
22 | NOTE: when accessing uncached shared regions, LDREX/STREX rely on an external | ||
23 | transaction monitoring block called a global monitor to maintain update | ||
24 | atomicity. If your system does not implement a global monitor, this option can | ||
25 | cause programs that perform SWP operations to uncached memory to deadlock, as | ||
26 | the STREX operation will always fail. | ||
27 | |||
diff --git a/Documentation/dontdiff b/Documentation/dontdiff index d9bcffd59433..470d3dba1a69 100644 --- a/Documentation/dontdiff +++ b/Documentation/dontdiff | |||
@@ -62,6 +62,10 @@ aic7*reg_print.c* | |||
62 | aic7*seq.h* | 62 | aic7*seq.h* |
63 | aicasm | 63 | aicasm |
64 | aicdb.h* | 64 | aicdb.h* |
65 | altivec1.c | ||
66 | altivec2.c | ||
67 | altivec4.c | ||
68 | altivec8.c | ||
65 | asm-offsets.h | 69 | asm-offsets.h |
66 | asm_offsets.h | 70 | asm_offsets.h |
67 | autoconf.h* | 71 | autoconf.h* |
@@ -76,6 +80,7 @@ btfixupprep | |||
76 | build | 80 | build |
77 | bvmlinux | 81 | bvmlinux |
78 | bzImage* | 82 | bzImage* |
83 | capflags.c | ||
79 | classlist.h* | 84 | classlist.h* |
80 | comp*.log | 85 | comp*.log |
81 | compile.h* | 86 | compile.h* |
@@ -94,6 +99,7 @@ devlist.h* | |||
94 | docproc | 99 | docproc |
95 | elf2ecoff | 100 | elf2ecoff |
96 | elfconfig.h* | 101 | elfconfig.h* |
102 | evergreen_reg_safe.h | ||
97 | fixdep | 103 | fixdep |
98 | flask.h | 104 | flask.h |
99 | fore200e_mkfirm | 105 | fore200e_mkfirm |
@@ -108,9 +114,16 @@ genksyms | |||
108 | *_gray256.c | 114 | *_gray256.c |
109 | ihex2fw | 115 | ihex2fw |
110 | ikconfig.h* | 116 | ikconfig.h* |
117 | inat-tables.c | ||
111 | initramfs_data.cpio | 118 | initramfs_data.cpio |
112 | initramfs_data.cpio.gz | 119 | initramfs_data.cpio.gz |
113 | initramfs_list | 120 | initramfs_list |
121 | int16.c | ||
122 | int1.c | ||
123 | int2.c | ||
124 | int32.c | ||
125 | int4.c | ||
126 | int8.c | ||
114 | kallsyms | 127 | kallsyms |
115 | kconfig | 128 | kconfig |
116 | keywords.c | 129 | keywords.c |
@@ -140,6 +153,7 @@ mkprep | |||
140 | mktables | 153 | mktables |
141 | mktree | 154 | mktree |
142 | modpost | 155 | modpost |
156 | modules.builtin | ||
143 | modules.order | 157 | modules.order |
144 | modversions.h* | 158 | modversions.h* |
145 | ncscope.* | 159 | ncscope.* |
@@ -153,14 +167,23 @@ pca200e.bin | |||
153 | pca200e_ecd.bin2 | 167 | pca200e_ecd.bin2 |
154 | piggy.gz | 168 | piggy.gz |
155 | piggyback | 169 | piggyback |
170 | piggy.S | ||
156 | pnmtologo | 171 | pnmtologo |
157 | ppc_defs.h* | 172 | ppc_defs.h* |
158 | pss_boot.h | 173 | pss_boot.h |
159 | qconf | 174 | qconf |
175 | r100_reg_safe.h | ||
176 | r200_reg_safe.h | ||
177 | r300_reg_safe.h | ||
178 | r420_reg_safe.h | ||
179 | r600_reg_safe.h | ||
160 | raid6altivec*.c | 180 | raid6altivec*.c |
161 | raid6int*.c | 181 | raid6int*.c |
162 | raid6tables.c | 182 | raid6tables.c |
163 | relocs | 183 | relocs |
184 | rn50_reg_safe.h | ||
185 | rs600_reg_safe.h | ||
186 | rv515_reg_safe.h | ||
164 | series | 187 | series |
165 | setup | 188 | setup |
166 | setup.bin | 189 | setup.bin |
@@ -169,6 +192,7 @@ sImage | |||
169 | sm_tbl* | 192 | sm_tbl* |
170 | split-include | 193 | split-include |
171 | syscalltab.h | 194 | syscalltab.h |
195 | tables.c | ||
172 | tags | 196 | tags |
173 | tftpboot.img | 197 | tftpboot.img |
174 | timeconst.h | 198 | timeconst.h |
@@ -190,6 +214,7 @@ vmlinux | |||
190 | vmlinux-* | 214 | vmlinux-* |
191 | vmlinux.aout | 215 | vmlinux.aout |
192 | vmlinux.lds | 216 | vmlinux.lds |
217 | voffset.h | ||
193 | vsyscall.lds | 218 | vsyscall.lds |
194 | vsyscall_32.lds | 219 | vsyscall_32.lds |
195 | wanxlfw.inc | 220 | wanxlfw.inc |
@@ -200,3 +225,4 @@ wakeup.elf | |||
200 | wakeup.lds | 225 | wakeup.lds |
201 | zImage* | 226 | zImage* |
202 | zconf.hash.c | 227 | zconf.hash.c |
228 | zoffset.h | ||
diff --git a/Documentation/fb/udlfb.txt b/Documentation/fb/udlfb.txt new file mode 100644 index 000000000000..7fdde2a02a27 --- /dev/null +++ b/Documentation/fb/udlfb.txt | |||
@@ -0,0 +1,144 @@ | |||
1 | |||
2 | What is udlfb? | ||
3 | =============== | ||
4 | |||
5 | This is a driver for DisplayLink USB 2.0 era graphics chips. | ||
6 | |||
7 | DisplayLink chips provide simple hline/blit operations with some compression, | ||
8 | pairing that with a hardware framebuffer (16MB) on the other end of the | ||
9 | USB wire. That hardware framebuffer is able to drive the VGA, DVI, or HDMI | ||
10 | monitor with no CPU involvement until a pixel has to change. | ||
11 | |||
12 | The CPU or other local resource does all the rendering; optinally compares the | ||
13 | result with a local shadow of the remote hardware framebuffer to identify | ||
14 | the minimal set of pixels that have changed; and compresses and sends those | ||
15 | pixels line-by-line via USB bulk transfers. | ||
16 | |||
17 | Because of the efficiency of bulk transfers and a protocol on top that | ||
18 | does not require any acks - the effect is very low latency that | ||
19 | can support surprisingly high resolutions with good performance for | ||
20 | non-gaming and non-video applications. | ||
21 | |||
22 | Mode setting, EDID read, etc are other bulk or control transfers. Mode | ||
23 | setting is very flexible - able to set nearly arbitrary modes from any timing. | ||
24 | |||
25 | Advantages of USB graphics in general: | ||
26 | |||
27 | * Ability to add a nearly arbitrary number of displays to any USB 2.0 | ||
28 | capable system. On Linux, number of displays is limited by fbdev interface | ||
29 | (FB_MAX is currently 32). Of course, all USB devices on the same | ||
30 | host controller share the same 480Mbs USB 2.0 interface. | ||
31 | |||
32 | Advantages of supporting DisplayLink chips with kernel framebuffer interface: | ||
33 | |||
34 | * The actual hardware functionality of DisplayLink chips matches nearly | ||
35 | one-to-one with the fbdev interface, making the driver quite small and | ||
36 | tight relative to the functionality it provides. | ||
37 | * X servers and other applications can use the standard fbdev interface | ||
38 | from user mode to talk to the device, without needing to know anything | ||
39 | about USB or DisplayLink's protocol at all. A "displaylink" X driver | ||
40 | and a slightly modified "fbdev" X driver are among those that already do. | ||
41 | |||
42 | Disadvantages: | ||
43 | |||
44 | * Fbdev's mmap interface assumes a real hardware framebuffer is mapped. | ||
45 | In the case of USB graphics, it is just an allocated (virtual) buffer. | ||
46 | Writes need to be detected and encoded into USB bulk transfers by the CPU. | ||
47 | Accurate damage/changed area notifications work around this problem. | ||
48 | In the future, hopefully fbdev will be enhanced with an small standard | ||
49 | interface to allow mmap clients to report damage, for the benefit | ||
50 | of virtual or remote framebuffers. | ||
51 | * Fbdev does not arbitrate client ownership of the framebuffer well. | ||
52 | * Fbcon assumes the first framebuffer it finds should be consumed for console. | ||
53 | * It's not clear what the future of fbdev is, given the rise of KMS/DRM. | ||
54 | |||
55 | How to use it? | ||
56 | ============== | ||
57 | |||
58 | Udlfb, when loaded as a module, will match against all USB 2.0 generation | ||
59 | DisplayLink chips (Alex and Ollie family). It will then attempt to read the EDID | ||
60 | of the monitor, and set the best common mode between the DisplayLink device | ||
61 | and the monitor's capabilities. | ||
62 | |||
63 | If the DisplayLink device is successful, it will paint a "green screen" which | ||
64 | means that from a hardware and fbdev software perspective, everything is good. | ||
65 | |||
66 | At that point, a /dev/fb? interface will be present for user-mode applications | ||
67 | to open and begin writing to the framebuffer of the DisplayLink device using | ||
68 | standard fbdev calls. Note that if mmap() is used, by default the user mode | ||
69 | application must send down damage notifcations to trigger repaints of the | ||
70 | changed regions. Alternatively, udlfb can be recompiled with experimental | ||
71 | defio support enabled, to support a page-fault based detection mechanism | ||
72 | that can work without explicit notifcation. | ||
73 | |||
74 | The most common client of udlfb is xf86-video-displaylink or a modified | ||
75 | xf86-video-fbdev X server. These servers have no real DisplayLink specific | ||
76 | code. They write to the standard framebuffer interface and rely on udlfb | ||
77 | to do its thing. The one extra feature they have is the ability to report | ||
78 | rectangles from the X DAMAGE protocol extension down to udlfb via udlfb's | ||
79 | damage interface (which will hopefully be standardized for all virtual | ||
80 | framebuffers that need damage info). These damage notifications allow | ||
81 | udlfb to efficiently process the changed pixels. | ||
82 | |||
83 | Module Options | ||
84 | ============== | ||
85 | |||
86 | Special configuration for udlfb is usually unnecessary. There are a few | ||
87 | options, however. | ||
88 | |||
89 | From the command line, pass options to modprobe | ||
90 | modprobe udlfb defio=1 console=1 | ||
91 | |||
92 | Or for permanent option, create file like /etc/modprobe.d/options with text | ||
93 | options udlfb defio=1 console=1 | ||
94 | |||
95 | Accepted options: | ||
96 | |||
97 | fb_defio Make use of the fb_defio (CONFIG_FB_DEFERRED_IO) kernel | ||
98 | module to track changed areas of the framebuffer by page faults. | ||
99 | Standard fbdev applications that use mmap but that do not | ||
100 | report damage, may be able to work with this enabled. | ||
101 | Disabled by default because of overhead and other issues. | ||
102 | |||
103 | console Allow fbcon to attach to udlfb provided framebuffers. This | ||
104 | is disabled by default because fbcon will aggressively consume | ||
105 | the first framebuffer it finds, which isn't usually what the | ||
106 | user wants in the case of USB displays. | ||
107 | |||
108 | Sysfs Attributes | ||
109 | ================ | ||
110 | |||
111 | Udlfb creates several files in /sys/class/graphics/fb? | ||
112 | Where ? is the sequential framebuffer id of the particular DisplayLink device | ||
113 | |||
114 | edid If a valid EDID blob is written to this file (typically | ||
115 | by a udev rule), then udlfb will use this EDID as a | ||
116 | backup in case reading the actual EDID of the monitor | ||
117 | attached to the DisplayLink device fails. This is | ||
118 | especially useful for fixed panels, etc. that cannot | ||
119 | communicate their capabilities via EDID. Reading | ||
120 | this file returns the current EDID of the attached | ||
121 | monitor (or last backup value written). This is | ||
122 | useful to get the EDID of the attached monitor, | ||
123 | which can be passed to utilities like parse-edid. | ||
124 | |||
125 | metrics_bytes_rendered 32-bit count of pixel bytes rendered | ||
126 | |||
127 | metrics_bytes_identical 32-bit count of how many of those bytes were found to be | ||
128 | unchanged, based on a shadow framebuffer check | ||
129 | |||
130 | metrics_bytes_sent 32-bit count of how many bytes were transferred over | ||
131 | USB to communicate the resulting changed pixels to the | ||
132 | hardware. Includes compression and protocol overhead | ||
133 | |||
134 | metrics_cpu_kcycles_used 32-bit count of CPU cycles used in processing the | ||
135 | above pixels (in thousands of cycles). | ||
136 | |||
137 | metrics_reset Write-only. Any write to this file resets all metrics | ||
138 | above to zero. Note that the 32-bit counters above | ||
139 | roll over very quickly. To get reliable results, design | ||
140 | performance tests to start and finish in a very short | ||
141 | period of time (one minute or less is safe). | ||
142 | |||
143 | -- | ||
144 | Bernie Thompson <bernie@plugable.com> | ||
diff --git a/Documentation/filesystems/Locking b/Documentation/filesystems/Locking index b6426f15b4ae..33fa3e5d38fd 100644 --- a/Documentation/filesystems/Locking +++ b/Documentation/filesystems/Locking | |||
@@ -18,7 +18,6 @@ prototypes: | |||
18 | char *(*d_dname)((struct dentry *dentry, char *buffer, int buflen); | 18 | char *(*d_dname)((struct dentry *dentry, char *buffer, int buflen); |
19 | 19 | ||
20 | locking rules: | 20 | locking rules: |
21 | none have BKL | ||
22 | dcache_lock rename_lock ->d_lock may block | 21 | dcache_lock rename_lock ->d_lock may block |
23 | d_revalidate: no no no yes | 22 | d_revalidate: no no no yes |
24 | d_hash no no no yes | 23 | d_hash no no no yes |
@@ -42,18 +41,23 @@ ata *); | |||
42 | int (*rename) (struct inode *, struct dentry *, | 41 | int (*rename) (struct inode *, struct dentry *, |
43 | struct inode *, struct dentry *); | 42 | struct inode *, struct dentry *); |
44 | int (*readlink) (struct dentry *, char __user *,int); | 43 | int (*readlink) (struct dentry *, char __user *,int); |
45 | int (*follow_link) (struct dentry *, struct nameidata *); | 44 | void * (*follow_link) (struct dentry *, struct nameidata *); |
45 | void (*put_link) (struct dentry *, struct nameidata *, void *); | ||
46 | void (*truncate) (struct inode *); | 46 | void (*truncate) (struct inode *); |
47 | int (*permission) (struct inode *, int, struct nameidata *); | 47 | int (*permission) (struct inode *, int, struct nameidata *); |
48 | int (*check_acl)(struct inode *, int); | ||
48 | int (*setattr) (struct dentry *, struct iattr *); | 49 | int (*setattr) (struct dentry *, struct iattr *); |
49 | int (*getattr) (struct vfsmount *, struct dentry *, struct kstat *); | 50 | int (*getattr) (struct vfsmount *, struct dentry *, struct kstat *); |
50 | int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); | 51 | int (*setxattr) (struct dentry *, const char *,const void *,size_t,int); |
51 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); | 52 | ssize_t (*getxattr) (struct dentry *, const char *, void *, size_t); |
52 | ssize_t (*listxattr) (struct dentry *, char *, size_t); | 53 | ssize_t (*listxattr) (struct dentry *, char *, size_t); |
53 | int (*removexattr) (struct dentry *, const char *); | 54 | int (*removexattr) (struct dentry *, const char *); |
55 | void (*truncate_range)(struct inode *, loff_t, loff_t); | ||
56 | long (*fallocate)(struct inode *inode, int mode, loff_t offset, loff_t len); | ||
57 | int (*fiemap)(struct inode *, struct fiemap_extent_info *, u64 start, u64 len); | ||
54 | 58 | ||
55 | locking rules: | 59 | locking rules: |
56 | all may block, none have BKL | 60 | all may block |
57 | i_mutex(inode) | 61 | i_mutex(inode) |
58 | lookup: yes | 62 | lookup: yes |
59 | create: yes | 63 | create: yes |
@@ -66,19 +70,24 @@ rmdir: yes (both) (see below) | |||
66 | rename: yes (all) (see below) | 70 | rename: yes (all) (see below) |
67 | readlink: no | 71 | readlink: no |
68 | follow_link: no | 72 | follow_link: no |
73 | put_link: no | ||
69 | truncate: yes (see below) | 74 | truncate: yes (see below) |
70 | setattr: yes | 75 | setattr: yes |
71 | permission: no | 76 | permission: no |
77 | check_acl: no | ||
72 | getattr: no | 78 | getattr: no |
73 | setxattr: yes | 79 | setxattr: yes |
74 | getxattr: no | 80 | getxattr: no |
75 | listxattr: no | 81 | listxattr: no |
76 | removexattr: yes | 82 | removexattr: yes |
83 | truncate_range: yes | ||
84 | fallocate: no | ||
85 | fiemap: no | ||
77 | Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on | 86 | Additionally, ->rmdir(), ->unlink() and ->rename() have ->i_mutex on |
78 | victim. | 87 | victim. |
79 | cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. | 88 | cross-directory ->rename() has (per-superblock) ->s_vfs_rename_sem. |
80 | ->truncate() is never called directly - it's a callback, not a | 89 | ->truncate() is never called directly - it's a callback, not a |
81 | method. It's called by vmtruncate() - library function normally used by | 90 | method. It's called by vmtruncate() - deprecated library function used by |
82 | ->setattr(). Locking information above applies to that call (i.e. is | 91 | ->setattr(). Locking information above applies to that call (i.e. is |
83 | inherited from ->setattr() - vmtruncate() is used when ATTR_SIZE had been | 92 | inherited from ->setattr() - vmtruncate() is used when ATTR_SIZE had been |
84 | passed). | 93 | passed). |
@@ -91,7 +100,7 @@ prototypes: | |||
91 | struct inode *(*alloc_inode)(struct super_block *sb); | 100 | struct inode *(*alloc_inode)(struct super_block *sb); |
92 | void (*destroy_inode)(struct inode *); | 101 | void (*destroy_inode)(struct inode *); |
93 | void (*dirty_inode) (struct inode *); | 102 | void (*dirty_inode) (struct inode *); |
94 | int (*write_inode) (struct inode *, int); | 103 | int (*write_inode) (struct inode *, struct writeback_control *wbc); |
95 | int (*drop_inode) (struct inode *); | 104 | int (*drop_inode) (struct inode *); |
96 | void (*evict_inode) (struct inode *); | 105 | void (*evict_inode) (struct inode *); |
97 | void (*put_super) (struct super_block *); | 106 | void (*put_super) (struct super_block *); |
@@ -105,10 +114,10 @@ prototypes: | |||
105 | int (*show_options)(struct seq_file *, struct vfsmount *); | 114 | int (*show_options)(struct seq_file *, struct vfsmount *); |
106 | ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); | 115 | ssize_t (*quota_read)(struct super_block *, int, char *, size_t, loff_t); |
107 | ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); | 116 | ssize_t (*quota_write)(struct super_block *, int, const char *, size_t, loff_t); |
117 | int (*bdev_try_to_free_page)(struct super_block*, struct page*, gfp_t); | ||
108 | 118 | ||
109 | locking rules: | 119 | locking rules: |
110 | All may block [not true, see below] | 120 | All may block [not true, see below] |
111 | None have BKL | ||
112 | s_umount | 121 | s_umount |
113 | alloc_inode: | 122 | alloc_inode: |
114 | destroy_inode: | 123 | destroy_inode: |
@@ -127,6 +136,7 @@ umount_begin: no | |||
127 | show_options: no (namespace_sem) | 136 | show_options: no (namespace_sem) |
128 | quota_read: no (see below) | 137 | quota_read: no (see below) |
129 | quota_write: no (see below) | 138 | quota_write: no (see below) |
139 | bdev_try_to_free_page: no (see below) | ||
130 | 140 | ||
131 | ->statfs() has s_umount (shared) when called by ustat(2) (native or | 141 | ->statfs() has s_umount (shared) when called by ustat(2) (native or |
132 | compat), but that's an accident of bad API; s_umount is used to pin | 142 | compat), but that's an accident of bad API; s_umount is used to pin |
@@ -139,19 +149,25 @@ be the only ones operating on the quota file by the quota code (via | |||
139 | dqio_sem) (unless an admin really wants to screw up something and | 149 | dqio_sem) (unless an admin really wants to screw up something and |
140 | writes to quota files with quotas on). For other details about locking | 150 | writes to quota files with quotas on). For other details about locking |
141 | see also dquot_operations section. | 151 | see also dquot_operations section. |
152 | ->bdev_try_to_free_page is called from the ->releasepage handler of | ||
153 | the block device inode. See there for more details. | ||
142 | 154 | ||
143 | --------------------------- file_system_type --------------------------- | 155 | --------------------------- file_system_type --------------------------- |
144 | prototypes: | 156 | prototypes: |
145 | int (*get_sb) (struct file_system_type *, int, | 157 | int (*get_sb) (struct file_system_type *, int, |
146 | const char *, void *, struct vfsmount *); | 158 | const char *, void *, struct vfsmount *); |
159 | struct dentry *(*mount) (struct file_system_type *, int, | ||
160 | const char *, void *); | ||
147 | void (*kill_sb) (struct super_block *); | 161 | void (*kill_sb) (struct super_block *); |
148 | locking rules: | 162 | locking rules: |
149 | may block BKL | 163 | may block |
150 | get_sb yes no | 164 | get_sb yes |
151 | kill_sb yes no | 165 | mount yes |
166 | kill_sb yes | ||
152 | 167 | ||
153 | ->get_sb() returns error or 0 with locked superblock attached to the vfsmount | 168 | ->get_sb() returns error or 0 with locked superblock attached to the vfsmount |
154 | (exclusive on ->s_umount). | 169 | (exclusive on ->s_umount). |
170 | ->mount() returns ERR_PTR or the root dentry. | ||
155 | ->kill_sb() takes a write-locked superblock, does all shutdown work on it, | 171 | ->kill_sb() takes a write-locked superblock, does all shutdown work on it, |
156 | unlocks and drops the reference. | 172 | unlocks and drops the reference. |
157 | 173 | ||
@@ -176,27 +192,35 @@ prototypes: | |||
176 | void (*freepage)(struct page *); | 192 | void (*freepage)(struct page *); |
177 | int (*direct_IO)(int, struct kiocb *, const struct iovec *iov, | 193 | int (*direct_IO)(int, struct kiocb *, const struct iovec *iov, |
178 | loff_t offset, unsigned long nr_segs); | 194 | loff_t offset, unsigned long nr_segs); |
179 | int (*launder_page) (struct page *); | 195 | int (*get_xip_mem)(struct address_space *, pgoff_t, int, void **, |
196 | unsigned long *); | ||
197 | int (*migratepage)(struct address_space *, struct page *, struct page *); | ||
198 | int (*launder_page)(struct page *); | ||
199 | int (*is_partially_uptodate)(struct page *, read_descriptor_t *, unsigned long); | ||
200 | int (*error_remove_page)(struct address_space *, struct page *); | ||
180 | 201 | ||
181 | locking rules: | 202 | locking rules: |
182 | All except set_page_dirty and freepage may block | 203 | All except set_page_dirty and freepage may block |
183 | 204 | ||
184 | BKL PageLocked(page) i_mutex | 205 | PageLocked(page) i_mutex |
185 | writepage: no yes, unlocks (see below) | 206 | writepage: yes, unlocks (see below) |
186 | readpage: no yes, unlocks | 207 | readpage: yes, unlocks |
187 | sync_page: no maybe | 208 | sync_page: maybe |
188 | writepages: no | 209 | writepages: |
189 | set_page_dirty no no | 210 | set_page_dirty no |
190 | readpages: no | 211 | readpages: |
191 | write_begin: no locks the page yes | 212 | write_begin: locks the page yes |
192 | write_end: no yes, unlocks yes | 213 | write_end: yes, unlocks yes |
193 | perform_write: no n/a yes | 214 | bmap: |
194 | bmap: no | 215 | invalidatepage: yes |
195 | invalidatepage: no yes | 216 | releasepage: yes |
196 | releasepage: no yes | 217 | freepage: yes |
197 | freepage: no yes | 218 | direct_IO: |
198 | direct_IO: no | 219 | get_xip_mem: maybe |
199 | launder_page: no yes | 220 | migratepage: yes (both) |
221 | launder_page: yes | ||
222 | is_partially_uptodate: yes | ||
223 | error_remove_page: yes | ||
200 | 224 | ||
201 | ->write_begin(), ->write_end(), ->sync_page() and ->readpage() | 225 | ->write_begin(), ->write_end(), ->sync_page() and ->readpage() |
202 | may be called from the request handler (/dev/loop). | 226 | may be called from the request handler (/dev/loop). |
@@ -276,9 +300,8 @@ under spinlock (it cannot block) and is sometimes called with the page | |||
276 | not locked. | 300 | not locked. |
277 | 301 | ||
278 | ->bmap() is currently used by legacy ioctl() (FIBMAP) provided by some | 302 | ->bmap() is currently used by legacy ioctl() (FIBMAP) provided by some |
279 | filesystems and by the swapper. The latter will eventually go away. All | 303 | filesystems and by the swapper. The latter will eventually go away. Please, |
280 | instances do not actually need the BKL. Please, keep it that way and don't | 304 | keep it that way and don't breed new callers. |
281 | breed new callers. | ||
282 | 305 | ||
283 | ->invalidatepage() is called when the filesystem must attempt to drop | 306 | ->invalidatepage() is called when the filesystem must attempt to drop |
284 | some or all of the buffers from the page when it is being truncated. It | 307 | some or all of the buffers from the page when it is being truncated. It |
@@ -299,47 +322,37 @@ cleaned, or an error value if not. Note that in order to prevent the page | |||
299 | getting mapped back in and redirtied, it needs to be kept locked | 322 | getting mapped back in and redirtied, it needs to be kept locked |
300 | across the entire operation. | 323 | across the entire operation. |
301 | 324 | ||
302 | Note: currently almost all instances of address_space methods are | ||
303 | using BKL for internal serialization and that's one of the worst sources | ||
304 | of contention. Normally they are calling library functions (in fs/buffer.c) | ||
305 | and pass foo_get_block() as a callback (on local block-based filesystems, | ||
306 | indeed). BKL is not needed for library stuff and is usually taken by | ||
307 | foo_get_block(). It's an overkill, since block bitmaps can be protected by | ||
308 | internal fs locking and real critical areas are much smaller than the areas | ||
309 | filesystems protect now. | ||
310 | |||
311 | ----------------------- file_lock_operations ------------------------------ | 325 | ----------------------- file_lock_operations ------------------------------ |
312 | prototypes: | 326 | prototypes: |
313 | void (*fl_insert)(struct file_lock *); /* lock insertion callback */ | ||
314 | void (*fl_remove)(struct file_lock *); /* lock removal callback */ | ||
315 | void (*fl_copy_lock)(struct file_lock *, struct file_lock *); | 327 | void (*fl_copy_lock)(struct file_lock *, struct file_lock *); |
316 | void (*fl_release_private)(struct file_lock *); | 328 | void (*fl_release_private)(struct file_lock *); |
317 | 329 | ||
318 | 330 | ||
319 | locking rules: | 331 | locking rules: |
320 | BKL may block | 332 | file_lock_lock may block |
321 | fl_insert: yes no | 333 | fl_copy_lock: yes no |
322 | fl_remove: yes no | 334 | fl_release_private: maybe no |
323 | fl_copy_lock: yes no | ||
324 | fl_release_private: yes yes | ||
325 | 335 | ||
326 | ----------------------- lock_manager_operations --------------------------- | 336 | ----------------------- lock_manager_operations --------------------------- |
327 | prototypes: | 337 | prototypes: |
328 | int (*fl_compare_owner)(struct file_lock *, struct file_lock *); | 338 | int (*fl_compare_owner)(struct file_lock *, struct file_lock *); |
329 | void (*fl_notify)(struct file_lock *); /* unblock callback */ | 339 | void (*fl_notify)(struct file_lock *); /* unblock callback */ |
340 | int (*fl_grant)(struct file_lock *, struct file_lock *, int); | ||
330 | void (*fl_release_private)(struct file_lock *); | 341 | void (*fl_release_private)(struct file_lock *); |
331 | void (*fl_break)(struct file_lock *); /* break_lease callback */ | 342 | void (*fl_break)(struct file_lock *); /* break_lease callback */ |
343 | int (*fl_mylease)(struct file_lock *, struct file_lock *); | ||
344 | int (*fl_change)(struct file_lock **, int); | ||
332 | 345 | ||
333 | locking rules: | 346 | locking rules: |
334 | BKL may block | 347 | file_lock_lock may block |
335 | fl_compare_owner: yes no | 348 | fl_compare_owner: yes no |
336 | fl_notify: yes no | 349 | fl_notify: yes no |
337 | fl_release_private: yes yes | 350 | fl_grant: no no |
338 | fl_break: yes no | 351 | fl_release_private: maybe no |
339 | 352 | fl_break: yes no | |
340 | Currently only NFSD and NLM provide instances of this class. None of the | 353 | fl_mylease: yes no |
341 | them block. If you have out-of-tree instances - please, show up. Locking | 354 | fl_change yes no |
342 | in that area will change. | 355 | |
343 | --------------------------- buffer_head ----------------------------------- | 356 | --------------------------- buffer_head ----------------------------------- |
344 | prototypes: | 357 | prototypes: |
345 | void (*b_end_io)(struct buffer_head *bh, int uptodate); | 358 | void (*b_end_io)(struct buffer_head *bh, int uptodate); |
@@ -364,17 +377,17 @@ prototypes: | |||
364 | void (*swap_slot_free_notify) (struct block_device *, unsigned long); | 377 | void (*swap_slot_free_notify) (struct block_device *, unsigned long); |
365 | 378 | ||
366 | locking rules: | 379 | locking rules: |
367 | BKL bd_mutex | 380 | bd_mutex |
368 | open: no yes | 381 | open: yes |
369 | release: no yes | 382 | release: yes |
370 | ioctl: no no | 383 | ioctl: no |
371 | compat_ioctl: no no | 384 | compat_ioctl: no |
372 | direct_access: no no | 385 | direct_access: no |
373 | media_changed: no no | 386 | media_changed: no |
374 | unlock_native_capacity: no no | 387 | unlock_native_capacity: no |
375 | revalidate_disk: no no | 388 | revalidate_disk: no |
376 | getgeo: no no | 389 | getgeo: no |
377 | swap_slot_free_notify: no no (see below) | 390 | swap_slot_free_notify: no (see below) |
378 | 391 | ||
379 | media_changed, unlock_native_capacity and revalidate_disk are called only from | 392 | media_changed, unlock_native_capacity and revalidate_disk are called only from |
380 | check_disk_change(). | 393 | check_disk_change(). |
@@ -413,34 +426,21 @@ prototypes: | |||
413 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, | 426 | unsigned long (*get_unmapped_area)(struct file *, unsigned long, |
414 | unsigned long, unsigned long, unsigned long); | 427 | unsigned long, unsigned long, unsigned long); |
415 | int (*check_flags)(int); | 428 | int (*check_flags)(int); |
429 | int (*flock) (struct file *, int, struct file_lock *); | ||
430 | ssize_t (*splice_write)(struct pipe_inode_info *, struct file *, loff_t *, | ||
431 | size_t, unsigned int); | ||
432 | ssize_t (*splice_read)(struct file *, loff_t *, struct pipe_inode_info *, | ||
433 | size_t, unsigned int); | ||
434 | int (*setlease)(struct file *, long, struct file_lock **); | ||
416 | }; | 435 | }; |
417 | 436 | ||
418 | locking rules: | 437 | locking rules: |
419 | All may block. | 438 | All may block except for ->setlease. |
420 | BKL | 439 | No VFS locks held on entry except for ->fsync and ->setlease. |
421 | llseek: no (see below) | 440 | |
422 | read: no | 441 | ->fsync() has i_mutex on inode. |
423 | aio_read: no | 442 | |
424 | write: no | 443 | ->setlease has the file_list_lock held and must not sleep. |
425 | aio_write: no | ||
426 | readdir: no | ||
427 | poll: no | ||
428 | unlocked_ioctl: no | ||
429 | compat_ioctl: no | ||
430 | mmap: no | ||
431 | open: no | ||
432 | flush: no | ||
433 | release: no | ||
434 | fsync: no (see below) | ||
435 | aio_fsync: no | ||
436 | fasync: no | ||
437 | lock: yes | ||
438 | readv: no | ||
439 | writev: no | ||
440 | sendfile: no | ||
441 | sendpage: no | ||
442 | get_unmapped_area: no | ||
443 | check_flags: no | ||
444 | 444 | ||
445 | ->llseek() locking has moved from llseek to the individual llseek | 445 | ->llseek() locking has moved from llseek to the individual llseek |
446 | implementations. If your fs is not using generic_file_llseek, you | 446 | implementations. If your fs is not using generic_file_llseek, you |
@@ -450,17 +450,10 @@ mutex or just to use i_size_read() instead. | |||
450 | Note: this does not protect the file->f_pos against concurrent modifications | 450 | Note: this does not protect the file->f_pos against concurrent modifications |
451 | since this is something the userspace has to take care about. | 451 | since this is something the userspace has to take care about. |
452 | 452 | ||
453 | Note: ext2_release() was *the* source of contention on fs-intensive | 453 | ->fasync() is responsible for maintaining the FASYNC bit in filp->f_flags. |
454 | loads and dropping BKL on ->release() helps to get rid of that (we still | 454 | Most instances call fasync_helper(), which does that maintenance, so it's |
455 | grab BKL for cases when we close a file that had been opened r/w, but that | 455 | not normally something one needs to worry about. Return values > 0 will be |
456 | can and should be done using the internal locking with smaller critical areas). | 456 | mapped to zero in the VFS layer. |
457 | Current worst offender is ext2_get_block()... | ||
458 | |||
459 | ->fasync() is called without BKL protection, and is responsible for | ||
460 | maintaining the FASYNC bit in filp->f_flags. Most instances call | ||
461 | fasync_helper(), which does that maintenance, so it's not normally | ||
462 | something one needs to worry about. Return values > 0 will be mapped to | ||
463 | zero in the VFS layer. | ||
464 | 457 | ||
465 | ->readdir() and ->ioctl() on directories must be changed. Ideally we would | 458 | ->readdir() and ->ioctl() on directories must be changed. Ideally we would |
466 | move ->readdir() to inode_operations and use a separate method for directory | 459 | move ->readdir() to inode_operations and use a separate method for directory |
@@ -471,8 +464,6 @@ components. And there are other reasons why the current interface is a mess... | |||
471 | ->read on directories probably must go away - we should just enforce -EISDIR | 464 | ->read on directories probably must go away - we should just enforce -EISDIR |
472 | in sys_read() and friends. | 465 | in sys_read() and friends. |
473 | 466 | ||
474 | ->fsync() has i_mutex on inode. | ||
475 | |||
476 | --------------------------- dquot_operations ------------------------------- | 467 | --------------------------- dquot_operations ------------------------------- |
477 | prototypes: | 468 | prototypes: |
478 | int (*write_dquot) (struct dquot *); | 469 | int (*write_dquot) (struct dquot *); |
@@ -507,12 +498,12 @@ prototypes: | |||
507 | int (*access)(struct vm_area_struct *, unsigned long, void*, int, int); | 498 | int (*access)(struct vm_area_struct *, unsigned long, void*, int, int); |
508 | 499 | ||
509 | locking rules: | 500 | locking rules: |
510 | BKL mmap_sem PageLocked(page) | 501 | mmap_sem PageLocked(page) |
511 | open: no yes | 502 | open: yes |
512 | close: no yes | 503 | close: yes |
513 | fault: no yes can return with page locked | 504 | fault: yes can return with page locked |
514 | page_mkwrite: no yes can return with page locked | 505 | page_mkwrite: yes can return with page locked |
515 | access: no yes | 506 | access: yes |
516 | 507 | ||
517 | ->fault() is called when a previously not present pte is about | 508 | ->fault() is called when a previously not present pte is about |
518 | to be faulted in. The filesystem must find and return the page associated | 509 | to be faulted in. The filesystem must find and return the page associated |
@@ -539,6 +530,3 @@ VM_IO | VM_PFNMAP VMAs. | |||
539 | 530 | ||
540 | (if you break something or notice that it is broken and do not fix it yourself | 531 | (if you break something or notice that it is broken and do not fix it yourself |
541 | - at least put it here) | 532 | - at least put it here) |
542 | |||
543 | ipc/shm.c::shm_delete() - may need BKL. | ||
544 | ->read() and ->write() in many drivers are (probably) missing BKL. | ||
diff --git a/Documentation/kernel-docs.txt b/Documentation/kernel-docs.txt index 715eaaf1519d..9a8674629a07 100644 --- a/Documentation/kernel-docs.txt +++ b/Documentation/kernel-docs.txt | |||
@@ -537,7 +537,7 @@ | |||
537 | Notes: Further information in | 537 | Notes: Further information in |
538 | http://www.oreilly.com/catalog/linuxdrive2/ | 538 | http://www.oreilly.com/catalog/linuxdrive2/ |
539 | 539 | ||
540 | * Title: "Linux Device Drivers, 3nd Edition" | 540 | * Title: "Linux Device Drivers, 3rd Edition" |
541 | Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman | 541 | Authors: Jonathan Corbet, Alessandro Rubini, and Greg Kroah-Hartman |
542 | Publisher: O'Reilly & Associates. | 542 | Publisher: O'Reilly & Associates. |
543 | Date: 2005. | 543 | Date: 2005. |
@@ -592,14 +592,6 @@ | |||
592 | Pages: 600. | 592 | Pages: 600. |
593 | ISBN: 0-13-101908-2 | 593 | ISBN: 0-13-101908-2 |
594 | 594 | ||
595 | * Title: "The Design and Implementation of the 4.4 BSD UNIX | ||
596 | Operating System" | ||
597 | Author: Marshall Kirk McKusick, Keith Bostic, Michael J. Karels, | ||
598 | John S. Quarterman. | ||
599 | Publisher: Addison-Wesley. | ||
600 | Date: 1996. | ||
601 | ISBN: 0-201-54979-4 | ||
602 | |||
603 | * Title: "Programming for the real world - POSIX.4" | 595 | * Title: "Programming for the real world - POSIX.4" |
604 | Author: Bill O. Gallmeister. | 596 | Author: Bill O. Gallmeister. |
605 | Publisher: O'Reilly & Associates, Inc.. | 597 | Publisher: O'Reilly & Associates, Inc.. |
@@ -610,28 +602,13 @@ | |||
610 | POSIX. Good reference. | 602 | POSIX. Good reference. |
611 | 603 | ||
612 | * Title: "UNIX Systems for Modern Architectures: Symmetric | 604 | * Title: "UNIX Systems for Modern Architectures: Symmetric |
613 | Multiprocesssing and Caching for Kernel Programmers" | 605 | Multiprocessing and Caching for Kernel Programmers" |
614 | Author: Curt Schimmel. | 606 | Author: Curt Schimmel. |
615 | Publisher: Addison Wesley. | 607 | Publisher: Addison Wesley. |
616 | Date: June, 1994. | 608 | Date: June, 1994. |
617 | Pages: 432. | 609 | Pages: 432. |
618 | ISBN: 0-201-63338-8 | 610 | ISBN: 0-201-63338-8 |
619 | 611 | ||
620 | * Title: "The Design and Implementation of the 4.3 BSD UNIX | ||
621 | Operating System" | ||
622 | Author: Samuel J. Leffler, Marshall Kirk McKusick, Michael J. | ||
623 | Karels, John S. Quarterman. | ||
624 | Publisher: Addison-Wesley. | ||
625 | Date: 1989 (reprinted with corrections on October, 1990). | ||
626 | ISBN: 0-201-06196-1 | ||
627 | |||
628 | * Title: "The Design of the UNIX Operating System" | ||
629 | Author: Maurice J. Bach. | ||
630 | Publisher: Prentice Hall. | ||
631 | Date: 1986. | ||
632 | Pages: 471. | ||
633 | ISBN: 0-13-201757-1 | ||
634 | |||
635 | MISCELLANEOUS: | 612 | MISCELLANEOUS: |
636 | 613 | ||
637 | * Name: linux/Documentation | 614 | * Name: linux/Documentation |
diff --git a/Documentation/kernel-parameters.txt b/Documentation/kernel-parameters.txt index 8b61c9360999..f3dc951e949f 100644 --- a/Documentation/kernel-parameters.txt +++ b/Documentation/kernel-parameters.txt | |||
@@ -1579,20 +1579,12 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1579 | 1579 | ||
1580 | nmi_watchdog= [KNL,BUGS=X86] Debugging features for SMP kernels | 1580 | nmi_watchdog= [KNL,BUGS=X86] Debugging features for SMP kernels |
1581 | Format: [panic,][num] | 1581 | Format: [panic,][num] |
1582 | Valid num: 0,1,2 | 1582 | Valid num: 0 |
1583 | 0 - turn nmi_watchdog off | 1583 | 0 - turn nmi_watchdog off |
1584 | 1 - use the IO-APIC timer for the NMI watchdog | ||
1585 | 2 - use the local APIC for the NMI watchdog using | ||
1586 | a performance counter. Note: This will use one | ||
1587 | performance counter and the local APIC's performance | ||
1588 | vector. | ||
1589 | When panic is specified, panic when an NMI watchdog | 1584 | When panic is specified, panic when an NMI watchdog |
1590 | timeout occurs. | 1585 | timeout occurs. |
1591 | This is useful when you use a panic=... timeout and | 1586 | This is useful when you use a panic=... timeout and |
1592 | need the box quickly up again. | 1587 | need the box quickly up again. |
1593 | Instead of 1 and 2 it is possible to use the following | ||
1594 | symbolic names: lapic and ioapic | ||
1595 | Example: nmi_watchdog=2 or nmi_watchdog=panic,lapic | ||
1596 | 1588 | ||
1597 | netpoll.carrier_timeout= | 1589 | netpoll.carrier_timeout= |
1598 | [NET] Specifies amount of time (in seconds) that | 1590 | [NET] Specifies amount of time (in seconds) that |
@@ -1622,6 +1614,8 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1622 | noapic [SMP,APIC] Tells the kernel to not make use of any | 1614 | noapic [SMP,APIC] Tells the kernel to not make use of any |
1623 | IOAPICs that may be present in the system. | 1615 | IOAPICs that may be present in the system. |
1624 | 1616 | ||
1617 | noautogroup Disable scheduler automatic task group creation. | ||
1618 | |||
1625 | nobats [PPC] Do not use BATs for mapping kernel lowmem | 1619 | nobats [PPC] Do not use BATs for mapping kernel lowmem |
1626 | on "Classic" PPC cores. | 1620 | on "Classic" PPC cores. |
1627 | 1621 | ||
@@ -1759,7 +1753,7 @@ and is between 256 and 4096 characters. It is defined in the file | |||
1759 | 1753 | ||
1760 | nousb [USB] Disable the USB subsystem | 1754 | nousb [USB] Disable the USB subsystem |
1761 | 1755 | ||
1762 | nowatchdog [KNL] Disable the lockup detector. | 1756 | nowatchdog [KNL] Disable the lockup detector (NMI watchdog). |
1763 | 1757 | ||
1764 | nowb [ARM] | 1758 | nowb [ARM] |
1765 | 1759 | ||
@@ -2467,12 +2461,13 @@ and is between 256 and 4096 characters. It is defined in the file | |||
2467 | to facilitate early boot debugging. | 2461 | to facilitate early boot debugging. |
2468 | See also Documentation/trace/events.txt | 2462 | See also Documentation/trace/events.txt |
2469 | 2463 | ||
2470 | tsc= Disable clocksource-must-verify flag for TSC. | 2464 | tsc= Disable clocksource stability checks for TSC. |
2471 | Format: <string> | 2465 | Format: <string> |
2472 | [x86] reliable: mark tsc clocksource as reliable, this | 2466 | [x86] reliable: mark tsc clocksource as reliable, this |
2473 | disables clocksource verification at runtime. | 2467 | disables clocksource verification at runtime, as well |
2474 | Used to enable high-resolution timer mode on older | 2468 | as the stability checks done at bootup. Used to enable |
2475 | hardware, and in virtualized environment. | 2469 | high-resolution timer mode on older hardware, and in |
2470 | virtualized environment. | ||
2476 | [x86] noirqtime: Do not use TSC to do irq accounting. | 2471 | [x86] noirqtime: Do not use TSC to do irq accounting. |
2477 | Used to run time disable IRQ_TIME_ACCOUNTING on any | 2472 | Used to run time disable IRQ_TIME_ACCOUNTING on any |
2478 | platforms where RDTSC is slow and this accounting | 2473 | platforms where RDTSC is slow and this accounting |
diff --git a/Documentation/networking/LICENSE.qlcnic b/Documentation/networking/LICENSE.qlcnic new file mode 100644 index 000000000000..29ad4b106420 --- /dev/null +++ b/Documentation/networking/LICENSE.qlcnic | |||
@@ -0,0 +1,327 @@ | |||
1 | Copyright (c) 2009-2010 QLogic Corporation | ||
2 | QLogic Linux qlcnic NIC Driver | ||
3 | |||
4 | This program includes a device driver for Linux 2.6 that may be | ||
5 | distributed with QLogic hardware specific firmware binary file. | ||
6 | You may modify and redistribute the device driver code under the | ||
7 | GNU General Public License (a copy of which is attached hereto as | ||
8 | Exhibit A) published by the Free Software Foundation (version 2). | ||
9 | |||
10 | You may redistribute the hardware specific firmware binary file | ||
11 | under the following terms: | ||
12 | |||
13 | 1. Redistribution of source code (only if applicable), | ||
14 | must retain the above copyright notice, this list of | ||
15 | conditions and the following disclaimer. | ||
16 | |||
17 | 2. Redistribution in binary form must reproduce the above | ||
18 | copyright notice, this list of conditions and the | ||
19 | following disclaimer in the documentation and/or other | ||
20 | materials provided with the distribution. | ||
21 | |||
22 | 3. The name of QLogic Corporation may not be used to | ||
23 | endorse or promote products derived from this software | ||
24 | without specific prior written permission | ||
25 | |||
26 | REGARDLESS OF WHAT LICENSING MECHANISM IS USED OR APPLICABLE, | ||
27 | THIS PROGRAM IS PROVIDED BY QLOGIC CORPORATION "AS IS'' AND ANY | ||
28 | EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE | ||
29 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A | ||
30 | PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR | ||
31 | BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | ||
32 | EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED | ||
33 | TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, | ||
34 | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON | ||
35 | ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, | ||
36 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY | ||
37 | OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
38 | POSSIBILITY OF SUCH DAMAGE. | ||
39 | |||
40 | USER ACKNOWLEDGES AND AGREES THAT USE OF THIS PROGRAM WILL NOT | ||
41 | CREATE OR GIVE GROUNDS FOR A LICENSE BY IMPLICATION, ESTOPPEL, OR | ||
42 | OTHERWISE IN ANY INTELLECTUAL PROPERTY RIGHTS (PATENT, COPYRIGHT, | ||
43 | TRADE SECRET, MASK WORK, OR OTHER PROPRIETARY RIGHT) EMBODIED IN | ||
44 | ANY OTHER QLOGIC HARDWARE OR SOFTWARE EITHER SOLELY OR IN | ||
45 | COMBINATION WITH THIS PROGRAM. | ||
46 | |||
47 | |||
48 | EXHIBIT A | ||
49 | |||
50 | GNU GENERAL PUBLIC LICENSE | ||
51 | Version 2, June 1991 | ||
52 | |||
53 | Copyright (C) 1989, 1991 Free Software Foundation, Inc. | ||
54 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA | ||
55 | Everyone is permitted to copy and distribute verbatim copies | ||
56 | of this license document, but changing it is not allowed. | ||
57 | |||
58 | Preamble | ||
59 | |||
60 | The licenses for most software are designed to take away your | ||
61 | freedom to share and change it. By contrast, the GNU General Public | ||
62 | License is intended to guarantee your freedom to share and change free | ||
63 | software--to make sure the software is free for all its users. This | ||
64 | General Public License applies to most of the Free Software | ||
65 | Foundation's software and to any other program whose authors commit to | ||
66 | using it. (Some other Free Software Foundation software is covered by | ||
67 | the GNU Lesser General Public License instead.) You can apply it to | ||
68 | your programs, too. | ||
69 | |||
70 | When we speak of free software, we are referring to freedom, not | ||
71 | price. Our General Public Licenses are designed to make sure that you | ||
72 | have the freedom to distribute copies of free software (and charge for | ||
73 | this service if you wish), that you receive source code or can get it | ||
74 | if you want it, that you can change the software or use pieces of it | ||
75 | in new free programs; and that you know you can do these things. | ||
76 | |||
77 | To protect your rights, we need to make restrictions that forbid | ||
78 | anyone to deny you these rights or to ask you to surrender the rights. | ||
79 | These restrictions translate to certain responsibilities for you if you | ||
80 | distribute copies of the software, or if you modify it. | ||
81 | |||
82 | For example, if you distribute copies of such a program, whether | ||
83 | gratis or for a fee, you must give the recipients all the rights that | ||
84 | you have. You must make sure that they, too, receive or can get the | ||
85 | source code. And you must show them these terms so they know their | ||
86 | rights. | ||
87 | |||
88 | We protect your rights with two steps: (1) copyright the software, and | ||
89 | (2) offer you this license which gives you legal permission to copy, | ||
90 | distribute and/or modify the software. | ||
91 | |||
92 | Also, for each author's protection and ours, we want to make certain | ||
93 | that everyone understands that there is no warranty for this free | ||
94 | software. If the software is modified by someone else and passed on, we | ||
95 | want its recipients to know that what they have is not the original, so | ||
96 | that any problems introduced by others will not reflect on the original | ||
97 | authors' reputations. | ||
98 | |||
99 | Finally, any free program is threatened constantly by software | ||
100 | patents. We wish to avoid the danger that redistributors of a free | ||
101 | program will individually obtain patent licenses, in effect making the | ||
102 | program proprietary. To prevent this, we have made it clear that any | ||
103 | patent must be licensed for everyone's free use or not licensed at all. | ||
104 | |||
105 | The precise terms and conditions for copying, distribution and | ||
106 | modification follow. | ||
107 | |||
108 | GNU GENERAL PUBLIC LICENSE | ||
109 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION | ||
110 | |||
111 | 0. This License applies to any program or other work which contains | ||
112 | a notice placed by the copyright holder saying it may be distributed | ||
113 | under the terms of this General Public License. The "Program", below, | ||
114 | refers to any such program or work, and a "work based on the Program" | ||
115 | means either the Program or any derivative work under copyright law: | ||
116 | that is to say, a work containing the Program or a portion of it, | ||
117 | either verbatim or with modifications and/or translated into another | ||
118 | language. (Hereinafter, translation is included without limitation in | ||
119 | the term "modification".) Each licensee is addressed as "you". | ||
120 | |||
121 | Activities other than copying, distribution and modification are not | ||
122 | covered by this License; they are outside its scope. The act of | ||
123 | running the Program is not restricted, and the output from the Program | ||
124 | is covered only if its contents constitute a work based on the | ||
125 | Program (independent of having been made by running the Program). | ||
126 | Whether that is true depends on what the Program does. | ||
127 | |||
128 | 1. You may copy and distribute verbatim copies of the Program's | ||
129 | source code as you receive it, in any medium, provided that you | ||
130 | conspicuously and appropriately publish on each copy an appropriate | ||
131 | copyright notice and disclaimer of warranty; keep intact all the | ||
132 | notices that refer to this License and to the absence of any warranty; | ||
133 | and give any other recipients of the Program a copy of this License | ||
134 | along with the Program. | ||
135 | |||
136 | You may charge a fee for the physical act of transferring a copy, and | ||
137 | you may at your option offer warranty protection in exchange for a fee. | ||
138 | |||
139 | 2. You may modify your copy or copies of the Program or any portion | ||
140 | of it, thus forming a work based on the Program, and copy and | ||
141 | distribute such modifications or work under the terms of Section 1 | ||
142 | above, provided that you also meet all of these conditions: | ||
143 | |||
144 | a) You must cause the modified files to carry prominent notices | ||
145 | stating that you changed the files and the date of any change. | ||
146 | |||
147 | b) You must cause any work that you distribute or publish, that in | ||
148 | whole or in part contains or is derived from the Program or any | ||
149 | part thereof, to be licensed as a whole at no charge to all third | ||
150 | parties under the terms of this License. | ||
151 | |||
152 | c) If the modified program normally reads commands interactively | ||
153 | when run, you must cause it, when started running for such | ||
154 | interactive use in the most ordinary way, to print or display an | ||
155 | announcement including an appropriate copyright notice and a | ||
156 | notice that there is no warranty (or else, saying that you provide | ||
157 | a warranty) and that users may redistribute the program under | ||
158 | these conditions, and telling the user how to view a copy of this | ||
159 | License. (Exception: if the Program itself is interactive but | ||
160 | does not normally print such an announcement, your work based on | ||
161 | the Program is not required to print an announcement.) | ||
162 | |||
163 | These requirements apply to the modified work as a whole. If | ||
164 | identifiable sections of that work are not derived from the Program, | ||
165 | and can be reasonably considered independent and separate works in | ||
166 | themselves, then this License, and its terms, do not apply to those | ||
167 | sections when you distribute them as separate works. But when you | ||
168 | distribute the same sections as part of a whole which is a work based | ||
169 | on the Program, the distribution of the whole must be on the terms of | ||
170 | this License, whose permissions for other licensees extend to the | ||
171 | entire whole, and thus to each and every part regardless of who wrote it. | ||
172 | |||
173 | Thus, it is not the intent of this section to claim rights or contest | ||
174 | your rights to work written entirely by you; rather, the intent is to | ||
175 | exercise the right to control the distribution of derivative or | ||
176 | collective works based on the Program. | ||
177 | |||
178 | In addition, mere aggregation of another work not based on the Program | ||
179 | with the Program (or with a work based on the Program) on a volume of | ||
180 | a storage or distribution medium does not bring the other work under | ||
181 | the scope of this License. | ||
182 | |||
183 | 3. You may copy and distribute the Program (or a work based on it, | ||
184 | under Section 2) in object code or executable form under the terms of | ||
185 | Sections 1 and 2 above provided that you also do one of the following: | ||
186 | |||
187 | a) Accompany it with the complete corresponding machine-readable | ||
188 | source code, which must be distributed under the terms of Sections | ||
189 | 1 and 2 above on a medium customarily used for software interchange; or, | ||
190 | |||
191 | b) Accompany it with a written offer, valid for at least three | ||
192 | years, to give any third party, for a charge no more than your | ||
193 | cost of physically performing source distribution, a complete | ||
194 | machine-readable copy of the corresponding source code, to be | ||
195 | distributed under the terms of Sections 1 and 2 above on a medium | ||
196 | customarily used for software interchange; or, | ||
197 | |||
198 | c) Accompany it with the information you received as to the offer | ||
199 | to distribute corresponding source code. (This alternative is | ||
200 | allowed only for noncommercial distribution and only if you | ||
201 | received the program in object code or executable form with such | ||
202 | an offer, in accord with Subsection b above.) | ||
203 | |||
204 | The source code for a work means the preferred form of the work for | ||
205 | making modifications to it. For an executable work, complete source | ||
206 | code means all the source code for all modules it contains, plus any | ||
207 | associated interface definition files, plus the scripts used to | ||
208 | control compilation and installation of the executable. However, as a | ||
209 | special exception, the source code distributed need not include | ||
210 | anything that is normally distributed (in either source or binary | ||
211 | form) with the major components (compiler, kernel, and so on) of the | ||
212 | operating system on which the executable runs, unless that component | ||
213 | itself accompanies the executable. | ||
214 | |||
215 | If distribution of executable or object code is made by offering | ||
216 | access to copy from a designated place, then offering equivalent | ||
217 | access to copy the source code from the same place counts as | ||
218 | distribution of the source code, even though third parties are not | ||
219 | compelled to copy the source along with the object code. | ||
220 | |||
221 | 4. You may not copy, modify, sublicense, or distribute the Program | ||
222 | except as expressly provided under this License. Any attempt | ||
223 | otherwise to copy, modify, sublicense or distribute the Program is | ||
224 | void, and will automatically terminate your rights under this License. | ||
225 | However, parties who have received copies, or rights, from you under | ||
226 | this License will not have their licenses terminated so long as such | ||
227 | parties remain in full compliance. | ||
228 | |||
229 | 5. You are not required to accept this License, since you have not | ||
230 | signed it. However, nothing else grants you permission to modify or | ||
231 | distribute the Program or its derivative works. These actions are | ||
232 | prohibited by law if you do not accept this License. Therefore, by | ||
233 | modifying or distributing the Program (or any work based on the | ||
234 | Program), you indicate your acceptance of this License to do so, and | ||
235 | all its terms and conditions for copying, distributing or modifying | ||
236 | the Program or works based on it. | ||
237 | |||
238 | 6. Each time you redistribute the Program (or any work based on the | ||
239 | Program), the recipient automatically receives a license from the | ||
240 | original licensor to copy, distribute or modify the Program subject to | ||
241 | these terms and conditions. You may not impose any further | ||
242 | restrictions on the recipients' exercise of the rights granted herein. | ||
243 | You are not responsible for enforcing compliance by third parties to | ||
244 | this License. | ||
245 | |||
246 | 7. If, as a consequence of a court judgment or allegation of patent | ||
247 | infringement or for any other reason (not limited to patent issues), | ||
248 | conditions are imposed on you (whether by court order, agreement or | ||
249 | otherwise) that contradict the conditions of this License, they do not | ||
250 | excuse you from the conditions of this License. If you cannot | ||
251 | distribute so as to satisfy simultaneously your obligations under this | ||
252 | License and any other pertinent obligations, then as a consequence you | ||
253 | may not distribute the Program at all. For example, if a patent | ||
254 | license would not permit royalty-free redistribution of the Program by | ||
255 | all those who receive copies directly or indirectly through you, then | ||
256 | the only way you could satisfy both it and this License would be to | ||
257 | refrain entirely from distribution of the Program. | ||
258 | |||
259 | If any portion of this section is held invalid or unenforceable under | ||
260 | any particular circumstance, the balance of the section is intended to | ||
261 | apply and the section as a whole is intended to apply in other | ||
262 | circumstances. | ||
263 | |||
264 | It is not the purpose of this section to induce you to infringe any | ||
265 | patents or other property right claims or to contest validity of any | ||
266 | such claims; this section has the sole purpose of protecting the | ||
267 | integrity of the free software distribution system, which is | ||
268 | implemented by public license practices. Many people have made | ||
269 | generous contributions to the wide range of software distributed | ||
270 | through that system in reliance on consistent application of that | ||
271 | system; it is up to the author/donor to decide if he or she is willing | ||
272 | to distribute software through any other system and a licensee cannot | ||
273 | impose that choice. | ||
274 | |||
275 | This section is intended to make thoroughly clear what is believed to | ||
276 | be a consequence of the rest of this License. | ||
277 | |||
278 | 8. If the distribution and/or use of the Program is restricted in | ||
279 | certain countries either by patents or by copyrighted interfaces, the | ||
280 | original copyright holder who places the Program under this License | ||
281 | may add an explicit geographical distribution limitation excluding | ||
282 | those countries, so that distribution is permitted only in or among | ||
283 | countries not thus excluded. In such case, this License incorporates | ||
284 | the limitation as if written in the body of this License. | ||
285 | |||
286 | 9. The Free Software Foundation may publish revised and/or new versions | ||
287 | of the General Public License from time to time. Such new versions will | ||
288 | be similar in spirit to the present version, but may differ in detail to | ||
289 | address new problems or concerns. | ||
290 | |||
291 | Each version is given a distinguishing version number. If the Program | ||
292 | specifies a version number of this License which applies to it and "any | ||
293 | later version", you have the option of following the terms and conditions | ||
294 | either of that version or of any later version published by the Free | ||
295 | Software Foundation. If the Program does not specify a version number of | ||
296 | this License, you may choose any version ever published by the Free Software | ||
297 | Foundation. | ||
298 | |||
299 | 10. If you wish to incorporate parts of the Program into other free | ||
300 | programs whose distribution conditions are different, write to the author | ||
301 | to ask for permission. For software which is copyrighted by the Free | ||
302 | Software Foundation, write to the Free Software Foundation; we sometimes | ||
303 | make exceptions for this. Our decision will be guided by the two goals | ||
304 | of preserving the free status of all derivatives of our free software and | ||
305 | of promoting the sharing and reuse of software generally. | ||
306 | |||
307 | NO WARRANTY | ||
308 | |||
309 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY | ||
310 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN | ||
311 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES | ||
312 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED | ||
313 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | ||
314 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS | ||
315 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE | ||
316 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, | ||
317 | REPAIR OR CORRECTION. | ||
318 | |||
319 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING | ||
320 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR | ||
321 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, | ||
322 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING | ||
323 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED | ||
324 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY | ||
325 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER | ||
326 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE | ||
327 | POSSIBILITY OF SUCH DAMAGES. | ||
diff --git a/Documentation/networking/batman-adv.txt b/Documentation/networking/batman-adv.txt new file mode 100644 index 000000000000..77f0cdd5b0dd --- /dev/null +++ b/Documentation/networking/batman-adv.txt | |||
@@ -0,0 +1,240 @@ | |||
1 | [state: 21-11-2010] | ||
2 | |||
3 | BATMAN-ADV | ||
4 | ---------- | ||
5 | |||
6 | Batman advanced is a new approach to wireless networking which | ||
7 | does no longer operate on the IP basis. Unlike the batman daemon, | ||
8 | which exchanges information using UDP packets and sets routing | ||
9 | tables, batman-advanced operates on ISO/OSI Layer 2 only and uses | ||
10 | and routes (or better: bridges) Ethernet Frames. It emulates a | ||
11 | virtual network switch of all nodes participating. Therefore all | ||
12 | nodes appear to be link local, thus all higher operating proto- | ||
13 | cols won't be affected by any changes within the network. You can | ||
14 | run almost any protocol above batman advanced, prominent examples | ||
15 | are: IPv4, IPv6, DHCP, IPX. | ||
16 | |||
17 | Batman advanced was implemented as a Linux kernel driver to re- | ||
18 | duce the overhead to a minimum. It does not depend on any (other) | ||
19 | network driver, and can be used on wifi as well as ethernet lan, | ||
20 | vpn, etc ... (anything with ethernet-style layer 2). | ||
21 | |||
22 | CONFIGURATION | ||
23 | ------------- | ||
24 | |||
25 | Load the batman-adv module into your kernel: | ||
26 | |||
27 | # insmod batman-adv.ko | ||
28 | |||
29 | The module is now waiting for activation. You must add some in- | ||
30 | terfaces on which batman can operate. After loading the module | ||
31 | batman advanced will scan your systems interfaces to search for | ||
32 | compatible interfaces. Once found, it will create subfolders in | ||
33 | the /sys directories of each supported interface, e.g. | ||
34 | |||
35 | # ls /sys/class/net/eth0/batman_adv/ | ||
36 | # iface_status mesh_iface | ||
37 | |||
38 | If an interface does not have the "batman_adv" subfolder it prob- | ||
39 | ably is not supported. Not supported interfaces are: loopback, | ||
40 | non-ethernet and batman's own interfaces. | ||
41 | |||
42 | Note: After the module was loaded it will continuously watch for | ||
43 | new interfaces to verify the compatibility. There is no need to | ||
44 | reload the module if you plug your USB wifi adapter into your ma- | ||
45 | chine after batman advanced was initially loaded. | ||
46 | |||
47 | To activate a given interface simply write "bat0" into its | ||
48 | "mesh_iface" file inside the batman_adv subfolder: | ||
49 | |||
50 | # echo bat0 > /sys/class/net/eth0/batman_adv/mesh_iface | ||
51 | |||
52 | Repeat this step for all interfaces you wish to add. Now batman | ||
53 | starts using/broadcasting on this/these interface(s). | ||
54 | |||
55 | By reading the "iface_status" file you can check its status: | ||
56 | |||
57 | # cat /sys/class/net/eth0/batman_adv/iface_status | ||
58 | # active | ||
59 | |||
60 | To deactivate an interface you have to write "none" into its | ||
61 | "mesh_iface" file: | ||
62 | |||
63 | # echo none > /sys/class/net/eth0/batman_adv/mesh_iface | ||
64 | |||
65 | |||
66 | All mesh wide settings can be found in batman's own interface | ||
67 | folder: | ||
68 | |||
69 | # ls /sys/class/net/bat0/mesh/ | ||
70 | # aggregated_ogms bonding fragmentation orig_interval | ||
71 | # vis_mode | ||
72 | |||
73 | |||
74 | There is a special folder for debugging informations: | ||
75 | |||
76 | # ls /sys/kernel/debug/batman_adv/bat0/ | ||
77 | # originators socket transtable_global transtable_local | ||
78 | # vis_data | ||
79 | |||
80 | |||
81 | Some of the files contain all sort of status information regard- | ||
82 | ing the mesh network. For example, you can view the table of | ||
83 | originators (mesh participants) with: | ||
84 | |||
85 | # cat /sys/kernel/debug/batman_adv/bat0/originators | ||
86 | |||
87 | Other files allow to change batman's behaviour to better fit your | ||
88 | requirements. For instance, you can check the current originator | ||
89 | interval (value in milliseconds which determines how often batman | ||
90 | sends its broadcast packets): | ||
91 | |||
92 | # cat /sys/class/net/bat0/mesh/orig_interval | ||
93 | # 1000 | ||
94 | |||
95 | and also change its value: | ||
96 | |||
97 | # echo 3000 > /sys/class/net/bat0/mesh/orig_interval | ||
98 | |||
99 | In very mobile scenarios, you might want to adjust the originator | ||
100 | interval to a lower value. This will make the mesh more respon- | ||
101 | sive to topology changes, but will also increase the overhead. | ||
102 | |||
103 | |||
104 | USAGE | ||
105 | ----- | ||
106 | |||
107 | To make use of your newly created mesh, batman advanced provides | ||
108 | a new interface "bat0" which you should use from this point on. | ||
109 | All interfaces added to batman advanced are not relevant any | ||
110 | longer because batman handles them for you. Basically, one "hands | ||
111 | over" the data by using the batman interface and batman will make | ||
112 | sure it reaches its destination. | ||
113 | |||
114 | The "bat0" interface can be used like any other regular inter- | ||
115 | face. It needs an IP address which can be either statically con- | ||
116 | figured or dynamically (by using DHCP or similar services): | ||
117 | |||
118 | # NodeA: ifconfig bat0 192.168.0.1 | ||
119 | # NodeB: ifconfig bat0 192.168.0.2 | ||
120 | # NodeB: ping 192.168.0.1 | ||
121 | |||
122 | Note: In order to avoid problems remove all IP addresses previ- | ||
123 | ously assigned to interfaces now used by batman advanced, e.g. | ||
124 | |||
125 | # ifconfig eth0 0.0.0.0 | ||
126 | |||
127 | |||
128 | VISUALIZATION | ||
129 | ------------- | ||
130 | |||
131 | If you want topology visualization, at least one mesh node must | ||
132 | be configured as VIS-server: | ||
133 | |||
134 | # echo "server" > /sys/class/net/bat0/mesh/vis_mode | ||
135 | |||
136 | Each node is either configured as "server" or as "client" (de- | ||
137 | fault: "client"). Clients send their topology data to the server | ||
138 | next to them, and server synchronize with other servers. If there | ||
139 | is no server configured (default) within the mesh, no topology | ||
140 | information will be transmitted. With these "synchronizing | ||
141 | servers", there can be 1 or more vis servers sharing the same (or | ||
142 | at least very similar) data. | ||
143 | |||
144 | When configured as server, you can get a topology snapshot of | ||
145 | your mesh: | ||
146 | |||
147 | # cat /sys/kernel/debug/batman_adv/bat0/vis_data | ||
148 | |||
149 | This raw output is intended to be easily parsable and convertable | ||
150 | with other tools. Have a look at the batctl README if you want a | ||
151 | vis output in dot or json format for instance and how those out- | ||
152 | puts could then be visualised in an image. | ||
153 | |||
154 | The raw format consists of comma separated values per entry where | ||
155 | each entry is giving information about a certain source inter- | ||
156 | face. Each entry can/has to have the following values: | ||
157 | -> "mac" - mac address of an originator's source interface | ||
158 | (each line begins with it) | ||
159 | -> "TQ mac value" - src mac's link quality towards mac address | ||
160 | of a neighbor originator's interface which | ||
161 | is being used for routing | ||
162 | -> "HNA mac" - HNA announced by source mac | ||
163 | -> "PRIMARY" - this is a primary interface | ||
164 | -> "SEC mac" - secondary mac address of source | ||
165 | (requires preceding PRIMARY) | ||
166 | |||
167 | The TQ value has a range from 4 to 255 with 255 being the best. | ||
168 | The HNA entries are showing which hosts are connected to the mesh | ||
169 | via bat0 or being bridged into the mesh network. The PRIMARY/SEC | ||
170 | values are only applied on primary interfaces | ||
171 | |||
172 | |||
173 | LOGGING/DEBUGGING | ||
174 | ----------------- | ||
175 | |||
176 | All error messages, warnings and information messages are sent to | ||
177 | the kernel log. Depending on your operating system distribution | ||
178 | this can be read in one of a number of ways. Try using the com- | ||
179 | mands: dmesg, logread, or looking in the files /var/log/kern.log | ||
180 | or /var/log/syslog. All batman-adv messages are prefixed with | ||
181 | "batman-adv:" So to see just these messages try | ||
182 | |||
183 | # dmesg | grep batman-adv | ||
184 | |||
185 | When investigating problems with your mesh network it is some- | ||
186 | times necessary to see more detail debug messages. This must be | ||
187 | enabled when compiling the batman-adv module. When building bat- | ||
188 | man-adv as part of kernel, use "make menuconfig" and enable the | ||
189 | option "B.A.T.M.A.N. debugging". | ||
190 | |||
191 | Those additional debug messages can be accessed using a special | ||
192 | file in debugfs | ||
193 | |||
194 | # cat /sys/kernel/debug/batman_adv/bat0/log | ||
195 | |||
196 | The additional debug output is by default disabled. It can be en- | ||
197 | abled during run time. Following log_levels are defined: | ||
198 | |||
199 | 0 - All debug output disabled | ||
200 | 1 - Enable messages related to routing / flooding / broadcasting | ||
201 | 2 - Enable route or hna added / changed / deleted | ||
202 | 3 - Enable all messages | ||
203 | |||
204 | The debug output can be changed at runtime using the file | ||
205 | /sys/class/net/bat0/mesh/log_level. e.g. | ||
206 | |||
207 | # echo 2 > /sys/class/net/bat0/mesh/log_level | ||
208 | |||
209 | will enable debug messages for when routes or HNAs change. | ||
210 | |||
211 | |||
212 | BATCTL | ||
213 | ------ | ||
214 | |||
215 | As batman advanced operates on layer 2 all hosts participating in | ||
216 | the virtual switch are completely transparent for all protocols | ||
217 | above layer 2. Therefore the common diagnosis tools do not work | ||
218 | as expected. To overcome these problems batctl was created. At | ||
219 | the moment the batctl contains ping, traceroute, tcpdump and | ||
220 | interfaces to the kernel module settings. | ||
221 | |||
222 | For more information, please see the manpage (man batctl). | ||
223 | |||
224 | batctl is available on http://www.open-mesh.org/ | ||
225 | |||
226 | |||
227 | CONTACT | ||
228 | ------- | ||
229 | |||
230 | Please send us comments, experiences, questions, anything :) | ||
231 | |||
232 | IRC: #batman on irc.freenode.org | ||
233 | Mailing-list: b.a.t.m.a.n@b.a.t.m.a.n@lists.open-mesh.org | ||
234 | (optional subscription at | ||
235 | https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n) | ||
236 | |||
237 | You can also contact the Authors: | ||
238 | |||
239 | Marek Lindner <lindner_marek@yahoo.de> | ||
240 | Simon Wunderlich <siwu@hrz.tu-chemnitz.de> | ||
diff --git a/Documentation/networking/dccp.txt b/Documentation/networking/dccp.txt index 271d524a4c8d..b395ca6a49f2 100644 --- a/Documentation/networking/dccp.txt +++ b/Documentation/networking/dccp.txt | |||
@@ -47,6 +47,26 @@ http://linux-net.osdl.org/index.php/DCCP_Testing#Experimental_DCCP_source_tree | |||
47 | 47 | ||
48 | Socket options | 48 | Socket options |
49 | ============== | 49 | ============== |
50 | DCCP_SOCKOPT_QPOLICY_ID sets the dequeuing policy for outgoing packets. It takes | ||
51 | a policy ID as argument and can only be set before the connection (i.e. changes | ||
52 | during an established connection are not supported). Currently, two policies are | ||
53 | defined: the "simple" policy (DCCPQ_POLICY_SIMPLE), which does nothing special, | ||
54 | and a priority-based variant (DCCPQ_POLICY_PRIO). The latter allows to pass an | ||
55 | u32 priority value as ancillary data to sendmsg(), where higher numbers indicate | ||
56 | a higher packet priority (similar to SO_PRIORITY). This ancillary data needs to | ||
57 | be formatted using a cmsg(3) message header filled in as follows: | ||
58 | cmsg->cmsg_level = SOL_DCCP; | ||
59 | cmsg->cmsg_type = DCCP_SCM_PRIORITY; | ||
60 | cmsg->cmsg_len = CMSG_LEN(sizeof(uint32_t)); /* or CMSG_LEN(4) */ | ||
61 | |||
62 | DCCP_SOCKOPT_QPOLICY_TXQLEN sets the maximum length of the output queue. A zero | ||
63 | value is always interpreted as unbounded queue length. If different from zero, | ||
64 | the interpretation of this parameter depends on the current dequeuing policy | ||
65 | (see above): the "simple" policy will enforce a fixed queue size by returning | ||
66 | EAGAIN, whereas the "prio" policy enforces a fixed queue length by dropping the | ||
67 | lowest-priority packet first. The default value for this parameter is | ||
68 | initialised from /proc/sys/net/dccp/default/tx_qlen. | ||
69 | |||
50 | DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of | 70 | DCCP_SOCKOPT_SERVICE sets the service. The specification mandates use of |
51 | service codes (RFC 4340, sec. 8.1.2); if this socket option is not set, | 71 | service codes (RFC 4340, sec. 8.1.2); if this socket option is not set, |
52 | the socket will fall back to 0 (which means that no meaningful service code | 72 | the socket will fall back to 0 (which means that no meaningful service code |
diff --git a/Documentation/networking/e100.txt b/Documentation/networking/e100.txt index 944aa55e79f8..162f323a7a1f 100644 --- a/Documentation/networking/e100.txt +++ b/Documentation/networking/e100.txt | |||
@@ -72,7 +72,7 @@ Tx Descriptors: Number of transmit descriptors. A transmit descriptor is a data | |||
72 | ethtool -G eth? tx n, where n is the number of desired tx descriptors. | 72 | ethtool -G eth? tx n, where n is the number of desired tx descriptors. |
73 | 73 | ||
74 | Speed/Duplex: The driver auto-negotiates the link speed and duplex settings by | 74 | Speed/Duplex: The driver auto-negotiates the link speed and duplex settings by |
75 | default. Ethtool can be used as follows to force speed/duplex. | 75 | default. The ethtool utility can be used as follows to force speed/duplex. |
76 | 76 | ||
77 | ethtool -s eth? autoneg off speed {10|100} duplex {full|half} | 77 | ethtool -s eth? autoneg off speed {10|100} duplex {full|half} |
78 | 78 | ||
@@ -126,30 +126,21 @@ Additional Configurations | |||
126 | ------- | 126 | ------- |
127 | 127 | ||
128 | The driver utilizes the ethtool interface for driver configuration and | 128 | The driver utilizes the ethtool interface for driver configuration and |
129 | diagnostics, as well as displaying statistical information. Ethtool | 129 | diagnostics, as well as displaying statistical information. The ethtool |
130 | version 1.6 or later is required for this functionality. | 130 | version 1.6 or later is required for this functionality. |
131 | 131 | ||
132 | The latest release of ethtool can be found from | 132 | The latest release of ethtool can be found from |
133 | http://sourceforge.net/projects/gkernel. | 133 | http://ftp.kernel.org/pub/software/network/ethtool/ |
134 | |||
135 | NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support | ||
136 | for a more complete ethtool feature set can be enabled by upgrading | ||
137 | ethtool to ethtool-1.8.1. | ||
138 | |||
139 | 134 | ||
140 | Enabling Wake on LAN* (WoL) | 135 | Enabling Wake on LAN* (WoL) |
141 | --------------------------- | 136 | --------------------------- |
142 | WoL is provided through the Ethtool* utility. Ethtool is included with Red | 137 | WoL is provided through the ethtool* utility. For instructions on enabling |
143 | Hat* 8.0. For other Linux distributions, download and install Ethtool from | 138 | WoL with ethtool, refer to the ethtool man page. |
144 | the following website: http://sourceforge.net/projects/gkernel. | ||
145 | |||
146 | For instructions on enabling WoL with Ethtool, refer to the Ethtool man page. | ||
147 | 139 | ||
148 | WoL will be enabled on the system during the next shut down or reboot. For | 140 | WoL will be enabled on the system during the next shut down or reboot. For |
149 | this driver version, in order to enable WoL, the e100 driver must be | 141 | this driver version, in order to enable WoL, the e100 driver must be |
150 | loaded when shutting down or rebooting the system. | 142 | loaded when shutting down or rebooting the system. |
151 | 143 | ||
152 | |||
153 | NAPI | 144 | NAPI |
154 | ---- | 145 | ---- |
155 | 146 | ||
diff --git a/Documentation/networking/e1000.txt b/Documentation/networking/e1000.txt index d9271e74e488..71ca95855671 100644 --- a/Documentation/networking/e1000.txt +++ b/Documentation/networking/e1000.txt | |||
@@ -79,7 +79,7 @@ InterruptThrottleRate | |||
79 | --------------------- | 79 | --------------------- |
80 | (not supported on Intel(R) 82542, 82543 or 82544-based adapters) | 80 | (not supported on Intel(R) 82542, 82543 or 82544-based adapters) |
81 | Valid Range: 0,1,3,4,100-100000 (0=off, 1=dynamic, 3=dynamic conservative, | 81 | Valid Range: 0,1,3,4,100-100000 (0=off, 1=dynamic, 3=dynamic conservative, |
82 | 4=simplified balancing) | 82 | 4=simplified balancing) |
83 | Default Value: 3 | 83 | Default Value: 3 |
84 | 84 | ||
85 | The driver can limit the amount of interrupts per second that the adapter | 85 | The driver can limit the amount of interrupts per second that the adapter |
@@ -124,8 +124,8 @@ InterruptThrottleRate is set to mode 1. In this mode, which operates | |||
124 | the same as mode 3, the InterruptThrottleRate will be increased stepwise to | 124 | the same as mode 3, the InterruptThrottleRate will be increased stepwise to |
125 | 70000 for traffic in class "Lowest latency". | 125 | 70000 for traffic in class "Lowest latency". |
126 | 126 | ||
127 | In simplified mode the interrupt rate is based on the ratio of Tx and | 127 | In simplified mode the interrupt rate is based on the ratio of TX and |
128 | Rx traffic. If the bytes per second rate is approximately equal, the | 128 | RX traffic. If the bytes per second rate is approximately equal, the |
129 | interrupt rate will drop as low as 2000 interrupts per second. If the | 129 | interrupt rate will drop as low as 2000 interrupts per second. If the |
130 | traffic is mostly transmit or mostly receive, the interrupt rate could | 130 | traffic is mostly transmit or mostly receive, the interrupt rate could |
131 | be as high as 8000. | 131 | be as high as 8000. |
@@ -245,7 +245,7 @@ NOTE: Depending on the available system resources, the request for a | |||
245 | TxDescriptorStep | 245 | TxDescriptorStep |
246 | ---------------- | 246 | ---------------- |
247 | Valid Range: 1 (use every Tx Descriptor) | 247 | Valid Range: 1 (use every Tx Descriptor) |
248 | 4 (use every 4th Tx Descriptor) | 248 | 4 (use every 4th Tx Descriptor) |
249 | 249 | ||
250 | Default Value: 1 (use every Tx Descriptor) | 250 | Default Value: 1 (use every Tx Descriptor) |
251 | 251 | ||
@@ -312,7 +312,7 @@ Valid Range: 0-xxxxxxx (0=off) | |||
312 | Default Value: 256 | 312 | Default Value: 256 |
313 | Usage: insmod e1000.ko copybreak=128 | 313 | Usage: insmod e1000.ko copybreak=128 |
314 | 314 | ||
315 | Driver copies all packets below or equaling this size to a fresh Rx | 315 | Driver copies all packets below or equaling this size to a fresh RX |
316 | buffer before handing it up the stack. | 316 | buffer before handing it up the stack. |
317 | 317 | ||
318 | This parameter is different than other parameters, in that it is a | 318 | This parameter is different than other parameters, in that it is a |
@@ -431,15 +431,15 @@ Additional Configurations | |||
431 | Ethtool | 431 | Ethtool |
432 | ------- | 432 | ------- |
433 | The driver utilizes the ethtool interface for driver configuration and | 433 | The driver utilizes the ethtool interface for driver configuration and |
434 | diagnostics, as well as displaying statistical information. Ethtool | 434 | diagnostics, as well as displaying statistical information. The ethtool |
435 | version 1.6 or later is required for this functionality. | 435 | version 1.6 or later is required for this functionality. |
436 | 436 | ||
437 | The latest release of ethtool can be found from | 437 | The latest release of ethtool can be found from |
438 | http://sourceforge.net/projects/gkernel. | 438 | http://ftp.kernel.org/pub/software/network/ethtool/ |
439 | 439 | ||
440 | Enabling Wake on LAN* (WoL) | 440 | Enabling Wake on LAN* (WoL) |
441 | --------------------------- | 441 | --------------------------- |
442 | WoL is configured through the Ethtool* utility. | 442 | WoL is configured through the ethtool* utility. |
443 | 443 | ||
444 | WoL will be enabled on the system during the next shut down or reboot. | 444 | WoL will be enabled on the system during the next shut down or reboot. |
445 | For this driver version, in order to enable WoL, the e1000 driver must be | 445 | For this driver version, in order to enable WoL, the e1000 driver must be |
diff --git a/Documentation/networking/e1000e.txt b/Documentation/networking/e1000e.txt index 6aa048badf32..97b5ba942ebf 100644 --- a/Documentation/networking/e1000e.txt +++ b/Documentation/networking/e1000e.txt | |||
@@ -1,5 +1,5 @@ | |||
1 | Linux* Driver for Intel(R) Network Connection | 1 | Linux* Driver for Intel(R) Network Connection |
2 | =============================================================== | 2 | ============================================= |
3 | 3 | ||
4 | Intel Gigabit Linux driver. | 4 | Intel Gigabit Linux driver. |
5 | Copyright(c) 1999 - 2010 Intel Corporation. | 5 | Copyright(c) 1999 - 2010 Intel Corporation. |
@@ -61,6 +61,12 @@ per second, even if more packets have come in. This reduces interrupt | |||
61 | load on the system and can lower CPU utilization under heavy load, | 61 | load on the system and can lower CPU utilization under heavy load, |
62 | but will increase latency as packets are not processed as quickly. | 62 | but will increase latency as packets are not processed as quickly. |
63 | 63 | ||
64 | The default behaviour of the driver previously assumed a static | ||
65 | InterruptThrottleRate value of 8000, providing a good fallback value for | ||
66 | all traffic types, but lacking in small packet performance and latency. | ||
67 | The hardware can handle many more small packets per second however, and | ||
68 | for this reason an adaptive interrupt moderation algorithm was implemented. | ||
69 | |||
64 | The driver has two adaptive modes (setting 1 or 3) in which | 70 | The driver has two adaptive modes (setting 1 or 3) in which |
65 | it dynamically adjusts the InterruptThrottleRate value based on the traffic | 71 | it dynamically adjusts the InterruptThrottleRate value based on the traffic |
66 | that it receives. After determining the type of incoming traffic in the last | 72 | that it receives. After determining the type of incoming traffic in the last |
@@ -86,8 +92,8 @@ InterruptThrottleRate is set to mode 1. In this mode, which operates | |||
86 | the same as mode 3, the InterruptThrottleRate will be increased stepwise to | 92 | the same as mode 3, the InterruptThrottleRate will be increased stepwise to |
87 | 70000 for traffic in class "Lowest latency". | 93 | 70000 for traffic in class "Lowest latency". |
88 | 94 | ||
89 | In simplified mode the interrupt rate is based on the ratio of Tx and | 95 | In simplified mode the interrupt rate is based on the ratio of TX and |
90 | Rx traffic. If the bytes per second rate is approximately equal the | 96 | RX traffic. If the bytes per second rate is approximately equal, the |
91 | interrupt rate will drop as low as 2000 interrupts per second. If the | 97 | interrupt rate will drop as low as 2000 interrupts per second. If the |
92 | traffic is mostly transmit or mostly receive, the interrupt rate could | 98 | traffic is mostly transmit or mostly receive, the interrupt rate could |
93 | be as high as 8000. | 99 | be as high as 8000. |
@@ -177,7 +183,7 @@ Copybreak | |||
177 | Valid Range: 0-xxxxxxx (0=off) | 183 | Valid Range: 0-xxxxxxx (0=off) |
178 | Default Value: 256 | 184 | Default Value: 256 |
179 | 185 | ||
180 | Driver copies all packets below or equaling this size to a fresh Rx | 186 | Driver copies all packets below or equaling this size to a fresh RX |
181 | buffer before handing it up the stack. | 187 | buffer before handing it up the stack. |
182 | 188 | ||
183 | This parameter is different than other parameters, in that it is a | 189 | This parameter is different than other parameters, in that it is a |
@@ -223,17 +229,17 @@ loading or enabling the driver, try disabling this feature. | |||
223 | 229 | ||
224 | WriteProtectNVM | 230 | WriteProtectNVM |
225 | --------------- | 231 | --------------- |
226 | Valid Range: 0-1 | 232 | Valid Range: 0,1 |
227 | Default Value: 1 (enabled) | 233 | Default Value: 1 |
228 | 234 | ||
229 | Set the hardware to ignore all write/erase cycles to the GbE region in the | 235 | If set to 1, configure the hardware to ignore all write/erase cycles to the |
230 | ICHx NVM (non-volatile memory). This feature can be disabled by the | 236 | GbE region in the ICHx NVM (in order to prevent accidental corruption of the |
231 | WriteProtectNVM module parameter (enabled by default) only after a hardware | 237 | NVM). This feature can be disabled by setting the parameter to 0 during initial |
232 | reset, but the machine must be power cycled before trying to enable writes. | 238 | driver load. |
233 | 239 | NOTE: The machine must be power cycled (full off/on) when enabling NVM writes | |
234 | Note: the kernel boot option iomem=relaxed may need to be set if the kernel | 240 | via setting the parameter to zero. Once the NVM has been locked (via the |
235 | config option CONFIG_STRICT_DEVMEM=y, if the root user wants to write the | 241 | parameter at 1 when the driver loads) it cannot be unlocked except via power |
236 | NVM from user space via ethtool. | 242 | cycle. |
237 | 243 | ||
238 | Additional Configurations | 244 | Additional Configurations |
239 | ========================= | 245 | ========================= |
@@ -259,32 +265,30 @@ Additional Configurations | |||
259 | - Some adapters limit Jumbo Frames sized packets to a maximum of | 265 | - Some adapters limit Jumbo Frames sized packets to a maximum of |
260 | 4096 bytes and some adapters do not support Jumbo Frames. | 266 | 4096 bytes and some adapters do not support Jumbo Frames. |
261 | 267 | ||
262 | |||
263 | Ethtool | 268 | Ethtool |
264 | ------- | 269 | ------- |
265 | The driver utilizes the ethtool interface for driver configuration and | 270 | The driver utilizes the ethtool interface for driver configuration and |
266 | diagnostics, as well as displaying statistical information. We | 271 | diagnostics, as well as displaying statistical information. We |
267 | strongly recommend downloading the latest version of Ethtool at: | 272 | strongly recommend downloading the latest version of ethtool at: |
268 | 273 | ||
269 | http://sourceforge.net/projects/gkernel. | 274 | http://ftp.kernel.org/pub/software/network/ethtool/ |
270 | 275 | ||
271 | Speed and Duplex | 276 | Speed and Duplex |
272 | ---------------- | 277 | ---------------- |
273 | Speed and Duplex are configured through the Ethtool* utility. For | 278 | Speed and Duplex are configured through the ethtool* utility. For |
274 | instructions, refer to the Ethtool man page. | 279 | instructions, refer to the ethtool man page. |
275 | 280 | ||
276 | Enabling Wake on LAN* (WoL) | 281 | Enabling Wake on LAN* (WoL) |
277 | --------------------------- | 282 | --------------------------- |
278 | WoL is configured through the Ethtool* utility. For instructions on | 283 | WoL is configured through the ethtool* utility. For instructions on |
279 | enabling WoL with Ethtool, refer to the Ethtool man page. | 284 | enabling WoL with ethtool, refer to the ethtool man page. |
280 | 285 | ||
281 | WoL will be enabled on the system during the next shut down or reboot. | 286 | WoL will be enabled on the system during the next shut down or reboot. |
282 | For this driver version, in order to enable WoL, the e1000e driver must be | 287 | For this driver version, in order to enable WoL, the e1000e driver must be |
283 | loaded when shutting down or rebooting the system. | 288 | loaded when shutting down or rebooting the system. |
284 | 289 | ||
285 | In most cases Wake On LAN is only supported on port A for multiple port | 290 | In most cases Wake On LAN is only supported on port A for multiple port |
286 | adapters. To verify if a port supports Wake on LAN run ethtool eth<X>. | 291 | adapters. To verify if a port supports Wake on Lan run ethtool eth<X>. |
287 | |||
288 | 292 | ||
289 | Support | 293 | Support |
290 | ======= | 294 | ======= |
diff --git a/Documentation/networking/igb.txt b/Documentation/networking/igb.txt index ab2d71831892..98953c0d5342 100644 --- a/Documentation/networking/igb.txt +++ b/Documentation/networking/igb.txt | |||
@@ -36,6 +36,7 @@ Default Value: 0 | |||
36 | This parameter adds support for SR-IOV. It causes the driver to spawn up to | 36 | This parameter adds support for SR-IOV. It causes the driver to spawn up to |
37 | max_vfs worth of virtual function. | 37 | max_vfs worth of virtual function. |
38 | 38 | ||
39 | |||
39 | Additional Configurations | 40 | Additional Configurations |
40 | ========================= | 41 | ========================= |
41 | 42 | ||
@@ -60,15 +61,16 @@ Additional Configurations | |||
60 | Ethtool | 61 | Ethtool |
61 | ------- | 62 | ------- |
62 | The driver utilizes the ethtool interface for driver configuration and | 63 | The driver utilizes the ethtool interface for driver configuration and |
63 | diagnostics, as well as displaying statistical information. | 64 | diagnostics, as well as displaying statistical information. The latest |
65 | version of ethtool can be found at: | ||
64 | 66 | ||
65 | http://sourceforge.net/projects/gkernel. | 67 | http://ftp.kernel.org/pub/software/network/ethtool/ |
66 | 68 | ||
67 | Enabling Wake on LAN* (WoL) | 69 | Enabling Wake on LAN* (WoL) |
68 | --------------------------- | 70 | --------------------------- |
69 | WoL is configured through the Ethtool* utility. | 71 | WoL is configured through the ethtool* utility. |
70 | 72 | ||
71 | For instructions on enabling WoL with Ethtool, refer to the Ethtool man page. | 73 | For instructions on enabling WoL with ethtool, refer to the ethtool man page. |
72 | 74 | ||
73 | WoL will be enabled on the system during the next shut down or reboot. | 75 | WoL will be enabled on the system during the next shut down or reboot. |
74 | For this driver version, in order to enable WoL, the igb driver must be | 76 | For this driver version, in order to enable WoL, the igb driver must be |
@@ -91,31 +93,6 @@ Additional Configurations | |||
91 | REQUIREMENTS: MSI-X support is required for Multiqueue. If MSI-X is not | 93 | REQUIREMENTS: MSI-X support is required for Multiqueue. If MSI-X is not |
92 | found, the system will fallback to MSI or to Legacy interrupts. | 94 | found, the system will fallback to MSI or to Legacy interrupts. |
93 | 95 | ||
94 | LRO | ||
95 | --- | ||
96 | Large Receive Offload (LRO) is a technique for increasing inbound throughput | ||
97 | of high-bandwidth network connections by reducing CPU overhead. It works by | ||
98 | aggregating multiple incoming packets from a single stream into a larger | ||
99 | buffer before they are passed higher up the networking stack, thus reducing | ||
100 | the number of packets that have to be processed. LRO combines multiple | ||
101 | Ethernet frames into a single receive in the stack, thereby potentially | ||
102 | decreasing CPU utilization for receives. | ||
103 | |||
104 | NOTE: You need to have inet_lro enabled via either the CONFIG_INET_LRO or | ||
105 | CONFIG_INET_LRO_MODULE kernel config option. Additionally, if | ||
106 | CONFIG_INET_LRO_MODULE is used, the inet_lro module needs to be loaded | ||
107 | before the igb driver. | ||
108 | |||
109 | You can verify that the driver is using LRO by looking at these counters in | ||
110 | Ethtool: | ||
111 | |||
112 | lro_aggregated - count of total packets that were combined | ||
113 | lro_flushed - counts the number of packets flushed out of LRO | ||
114 | lro_no_desc - counts the number of times an LRO descriptor was not available | ||
115 | for the LRO packet | ||
116 | |||
117 | NOTE: IPv6 and UDP are not supported by LRO. | ||
118 | |||
119 | Support | 96 | Support |
120 | ======= | 97 | ======= |
121 | 98 | ||
diff --git a/Documentation/networking/igbvf.txt b/Documentation/networking/igbvf.txt index 056028138d9c..cbfe4ee65533 100644 --- a/Documentation/networking/igbvf.txt +++ b/Documentation/networking/igbvf.txt | |||
@@ -58,9 +58,11 @@ Additional Configurations | |||
58 | Ethtool | 58 | Ethtool |
59 | ------- | 59 | ------- |
60 | The driver utilizes the ethtool interface for driver configuration and | 60 | The driver utilizes the ethtool interface for driver configuration and |
61 | diagnostics, as well as displaying statistical information. | 61 | diagnostics, as well as displaying statistical information. The ethtool |
62 | version 3.0 or later is required for this functionality, although we | ||
63 | strongly recommend downloading the latest version at: | ||
62 | 64 | ||
63 | http://sourceforge.net/projects/gkernel. | 65 | http://ftp.kernel.org/pub/software/network/ethtool/ |
64 | 66 | ||
65 | Support | 67 | Support |
66 | ======= | 68 | ======= |
diff --git a/Documentation/networking/ip-sysctl.txt b/Documentation/networking/ip-sysctl.txt index 3c5e465296e1..d99940dcfc44 100644 --- a/Documentation/networking/ip-sysctl.txt +++ b/Documentation/networking/ip-sysctl.txt | |||
@@ -11,7 +11,9 @@ ip_forward - BOOLEAN | |||
11 | for routers) | 11 | for routers) |
12 | 12 | ||
13 | ip_default_ttl - INTEGER | 13 | ip_default_ttl - INTEGER |
14 | default 64 | 14 | Default value of TTL field (Time To Live) for outgoing (but not |
15 | forwarded) IP packets. Should be between 1 and 255 inclusive. | ||
16 | Default: 64 (as recommended by RFC1700) | ||
15 | 17 | ||
16 | ip_no_pmtu_disc - BOOLEAN | 18 | ip_no_pmtu_disc - BOOLEAN |
17 | Disable Path MTU Discovery. | 19 | Disable Path MTU Discovery. |
@@ -708,10 +710,28 @@ igmp_max_memberships - INTEGER | |||
708 | Change the maximum number of multicast groups we can subscribe to. | 710 | Change the maximum number of multicast groups we can subscribe to. |
709 | Default: 20 | 711 | Default: 20 |
710 | 712 | ||
711 | conf/interface/* changes special settings per interface (where "interface" is | 713 | Theoretical maximum value is bounded by having to send a membership |
712 | the name of your network interface) | 714 | report in a single datagram (i.e. the report can't span multiple |
713 | conf/all/* is special, changes the settings for all interfaces | 715 | datagrams, or risk confusing the switch and leaving groups you don't |
716 | intend to). | ||
714 | 717 | ||
718 | The number of supported groups 'M' is bounded by the number of group | ||
719 | report entries you can fit into a single datagram of 65535 bytes. | ||
720 | |||
721 | M = 65536-sizeof (ip header)/(sizeof(Group record)) | ||
722 | |||
723 | Group records are variable length, with a minimum of 12 bytes. | ||
724 | So net.ipv4.igmp_max_memberships should not be set higher than: | ||
725 | |||
726 | (65536-24) / 12 = 5459 | ||
727 | |||
728 | The value 5459 assumes no IP header options, so in practice | ||
729 | this number may be lower. | ||
730 | |||
731 | conf/interface/* changes special settings per interface (where | ||
732 | "interface" is the name of your network interface) | ||
733 | |||
734 | conf/all/* is special, changes the settings for all interfaces | ||
715 | 735 | ||
716 | log_martians - BOOLEAN | 736 | log_martians - BOOLEAN |
717 | Log packets with impossible addresses to kernel log. | 737 | Log packets with impossible addresses to kernel log. |
diff --git a/Documentation/networking/ixgb.txt b/Documentation/networking/ixgb.txt index a0d0ffb5e584..e196f16df313 100644 --- a/Documentation/networking/ixgb.txt +++ b/Documentation/networking/ixgb.txt | |||
@@ -309,15 +309,15 @@ Additional Configurations | |||
309 | Ethtool | 309 | Ethtool |
310 | ------- | 310 | ------- |
311 | The driver utilizes the ethtool interface for driver configuration and | 311 | The driver utilizes the ethtool interface for driver configuration and |
312 | diagnostics, as well as displaying statistical information. Ethtool | 312 | diagnostics, as well as displaying statistical information. The ethtool |
313 | version 1.6 or later is required for this functionality. | 313 | version 1.6 or later is required for this functionality. |
314 | 314 | ||
315 | The latest release of ethtool can be found from | 315 | The latest release of ethtool can be found from |
316 | http://sourceforge.net/projects/gkernel | 316 | http://ftp.kernel.org/pub/software/network/ethtool/ |
317 | 317 | ||
318 | NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support | 318 | NOTE: The ethtool version 1.6 only supports a limited set of ethtool options. |
319 | for a more complete ethtool feature set can be enabled by upgrading | 319 | Support for a more complete ethtool feature set can be enabled by |
320 | to the latest version. | 320 | upgrading to the latest version. |
321 | 321 | ||
322 | 322 | ||
323 | NAPI | 323 | NAPI |
diff --git a/Documentation/networking/ixgbe.txt b/Documentation/networking/ixgbe.txt index eeb68685c788..af77ed3c4172 100644 --- a/Documentation/networking/ixgbe.txt +++ b/Documentation/networking/ixgbe.txt | |||
@@ -1,107 +1,126 @@ | |||
1 | Linux Base Driver for 10 Gigabit PCI Express Intel(R) Network Connection | 1 | Linux Base Driver for 10 Gigabit PCI Express Intel(R) Network Connection |
2 | ======================================================================== | 2 | ======================================================================== |
3 | 3 | ||
4 | March 10, 2009 | 4 | Intel Gigabit Linux driver. |
5 | 5 | Copyright(c) 1999 - 2010 Intel Corporation. | |
6 | 6 | ||
7 | Contents | 7 | Contents |
8 | ======== | 8 | ======== |
9 | 9 | ||
10 | - In This Release | ||
11 | - Identifying Your Adapter | 10 | - Identifying Your Adapter |
12 | - Building and Installation | ||
13 | - Additional Configurations | 11 | - Additional Configurations |
12 | - Performance Tuning | ||
13 | - Known Issues | ||
14 | - Support | 14 | - Support |
15 | 15 | ||
16 | Identifying Your Adapter | ||
17 | ======================== | ||
16 | 18 | ||
19 | The driver in this release is compatible with 82598 and 82599-based Intel | ||
20 | Network Connections. | ||
17 | 21 | ||
18 | In This Release | 22 | For more information on how to identify your adapter, go to the Adapter & |
19 | =============== | 23 | Driver ID Guide at: |
20 | 24 | ||
21 | This file describes the ixgbe Linux Base Driver for the 10 Gigabit PCI | 25 | http://support.intel.com/support/network/sb/CS-012904.htm |
22 | Express Intel(R) Network Connection. This driver includes support for | ||
23 | Itanium(R)2-based systems. | ||
24 | 26 | ||
25 | For questions related to hardware requirements, refer to the documentation | 27 | SFP+ Devices with Pluggable Optics |
26 | supplied with your 10 Gigabit adapter. All hardware requirements listed apply | 28 | ---------------------------------- |
27 | to use with Linux. | ||
28 | 29 | ||
29 | The following features are available in this kernel: | 30 | 82599-BASED ADAPTERS |
30 | - Native VLANs | ||
31 | - Channel Bonding (teaming) | ||
32 | - SNMP | ||
33 | - Generic Receive Offload | ||
34 | - Data Center Bridging | ||
35 | 31 | ||
36 | Channel Bonding documentation can be found in the Linux kernel source: | 32 | NOTES: If your 82599-based Intel(R) Network Adapter came with Intel optics, or |
37 | /Documentation/networking/bonding.txt | 33 | is an Intel(R) Ethernet Server Adapter X520-2, then it only supports Intel |
34 | optics and/or the direct attach cables listed below. | ||
38 | 35 | ||
39 | Ethtool, lspci, and ifconfig can be used to display device and driver | 36 | When 82599-based SFP+ devices are connected back to back, they should be set to |
40 | specific information. | 37 | the same Speed setting via ethtool. Results may vary if you mix speed settings. |
38 | 82598-based adapters support all passive direct attach cables that comply | ||
39 | with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. Active direct attach | ||
40 | cables are not supported. | ||
41 | 41 | ||
42 | Supplier Type Part Numbers | ||
42 | 43 | ||
43 | Identifying Your Adapter | 44 | SR Modules |
44 | ======================== | 45 | Intel DUAL RATE 1G/10G SFP+ SR (bailed) FTLX8571D3BCV-IT |
46 | Intel DUAL RATE 1G/10G SFP+ SR (bailed) AFBR-703SDDZ-IN1 | ||
47 | Intel DUAL RATE 1G/10G SFP+ SR (bailed) AFBR-703SDZ-IN2 | ||
48 | LR Modules | ||
49 | Intel DUAL RATE 1G/10G SFP+ LR (bailed) FTLX1471D3BCV-IT | ||
50 | Intel DUAL RATE 1G/10G SFP+ LR (bailed) AFCT-701SDDZ-IN1 | ||
51 | Intel DUAL RATE 1G/10G SFP+ LR (bailed) AFCT-701SDZ-IN2 | ||
45 | 52 | ||
46 | This driver supports devices based on the 82598 controller and the 82599 | 53 | The following is a list of 3rd party SFP+ modules and direct attach cables that |
47 | controller. | 54 | have received some testing. Not all modules are applicable to all devices. |
48 | 55 | ||
49 | For specific information on identifying which adapter you have, please visit: | 56 | Supplier Type Part Numbers |
50 | 57 | ||
51 | http://support.intel.com/support/network/sb/CS-008441.htm | 58 | Finisar SFP+ SR bailed, 10g single rate FTLX8571D3BCL |
59 | Avago SFP+ SR bailed, 10g single rate AFBR-700SDZ | ||
60 | Finisar SFP+ LR bailed, 10g single rate FTLX1471D3BCL | ||
52 | 61 | ||
62 | Finisar DUAL RATE 1G/10G SFP+ SR (No Bail) FTLX8571D3QCV-IT | ||
63 | Avago DUAL RATE 1G/10G SFP+ SR (No Bail) AFBR-703SDZ-IN1 | ||
64 | Finisar DUAL RATE 1G/10G SFP+ LR (No Bail) FTLX1471D3QCV-IT | ||
65 | Avago DUAL RATE 1G/10G SFP+ LR (No Bail) AFCT-701SDZ-IN1 | ||
66 | Finistar 1000BASE-T SFP FCLF8522P2BTL | ||
67 | Avago 1000BASE-T SFP ABCU-5710RZ | ||
53 | 68 | ||
54 | Building and Installation | 69 | 82599-based adapters support all passive and active limiting direct attach |
55 | ========================= | 70 | cables that comply with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. |
56 | 71 | ||
57 | select m for "Intel(R) 10GbE PCI Express adapters support" located at: | 72 | Laser turns off for SFP+ when ifconfig down |
58 | Location: | 73 | ------------------------------------------- |
59 | -> Device Drivers | 74 | "ifconfig down" turns off the laser for 82599-based SFP+ fiber adapters. |
60 | -> Network device support (NETDEVICES [=y]) | 75 | "ifconfig up" turns on the later. |
61 | -> Ethernet (10000 Mbit) (NETDEV_10000 [=y]) | ||
62 | 76 | ||
63 | 1. make modules & make modules_install | ||
64 | 77 | ||
65 | 2. Load the module: | 78 | 82598-BASED ADAPTERS |
66 | 79 | ||
67 | # modprobe ixgbe | 80 | NOTES for 82598-Based Adapters: |
81 | - Intel(R) Network Adapters that support removable optical modules only support | ||
82 | their original module type (i.e., the Intel(R) 10 Gigabit SR Dual Port | ||
83 | Express Module only supports SR optical modules). If you plug in a different | ||
84 | type of module, the driver will not load. | ||
85 | - Hot Swapping/hot plugging optical modules is not supported. | ||
86 | - Only single speed, 10 gigabit modules are supported. | ||
87 | - LAN on Motherboard (LOMs) may support DA, SR, or LR modules. Other module | ||
88 | types are not supported. Please see your system documentation for details. | ||
68 | 89 | ||
69 | The insmod command can be used if the full | 90 | The following is a list of 3rd party SFP+ modules and direct attach cables that |
70 | path to the driver module is specified. For example: | 91 | have received some testing. Not all modules are applicable to all devices. |
71 | 92 | ||
72 | insmod /lib/modules/<KERNEL VERSION>/kernel/drivers/net/ixgbe/ixgbe.ko | 93 | Supplier Type Part Numbers |
73 | 94 | ||
74 | With 2.6 based kernels also make sure that older ixgbe drivers are | 95 | Finisar SFP+ SR bailed, 10g single rate FTLX8571D3BCL |
75 | removed from the kernel, before loading the new module: | 96 | Avago SFP+ SR bailed, 10g single rate AFBR-700SDZ |
97 | Finisar SFP+ LR bailed, 10g single rate FTLX1471D3BCL | ||
76 | 98 | ||
77 | rmmod ixgbe; modprobe ixgbe | 99 | 82598-based adapters support all passive direct attach cables that comply |
100 | with SFF-8431 v4.1 and SFF-8472 v10.4 specifications. Active direct attach | ||
101 | cables are not supported. | ||
78 | 102 | ||
79 | 3. Assign an IP address to the interface by entering the following, where | ||
80 | x is the interface number: | ||
81 | 103 | ||
82 | ifconfig ethx <IP_address> | 104 | Flow Control |
105 | ------------ | ||
106 | Ethernet Flow Control (IEEE 802.3x) can be configured with ethtool to enable | ||
107 | receiving and transmitting pause frames for ixgbe. When TX is enabled, PAUSE | ||
108 | frames are generated when the receive packet buffer crosses a predefined | ||
109 | threshold. When rx is enabled, the transmit unit will halt for the time delay | ||
110 | specified when a PAUSE frame is received. | ||
83 | 111 | ||
84 | 4. Verify that the interface works. Enter the following, where <IP_address> | 112 | Flow Control is enabled by default. If you want to disable a flow control |
85 | is the IP address for another machine on the same subnet as the interface | 113 | capable link partner, use ethtool: |
86 | that is being tested: | ||
87 | 114 | ||
88 | ping <IP_address> | 115 | ethtool -A eth? autoneg off RX off TX off |
89 | 116 | ||
117 | NOTE: For 82598 backplane cards entering 1 gig mode, flow control default | ||
118 | behavior is changed to off. Flow control in 1 gig mode on these devices can | ||
119 | lead to Tx hangs. | ||
90 | 120 | ||
91 | Additional Configurations | 121 | Additional Configurations |
92 | ========================= | 122 | ========================= |
93 | 123 | ||
94 | Viewing Link Messages | ||
95 | --------------------- | ||
96 | Link messages will not be displayed to the console if the distribution is | ||
97 | restricting system messages. In order to see network driver link messages on | ||
98 | your console, set dmesg to eight by entering the following: | ||
99 | |||
100 | dmesg -n 8 | ||
101 | |||
102 | NOTE: This setting is not saved across reboots. | ||
103 | |||
104 | |||
105 | Jumbo Frames | 124 | Jumbo Frames |
106 | ------------ | 125 | ------------ |
107 | The driver supports Jumbo Frames for all adapters. Jumbo Frames support is | 126 | The driver supports Jumbo Frames for all adapters. Jumbo Frames support is |
@@ -123,13 +142,8 @@ Additional Configurations | |||
123 | other protocols besides TCP. It's also safe to use with configurations that | 142 | other protocols besides TCP. It's also safe to use with configurations that |
124 | are problematic for LRO, namely bridging and iSCSI. | 143 | are problematic for LRO, namely bridging and iSCSI. |
125 | 144 | ||
126 | GRO is enabled by default in the driver. Future versions of ethtool will | ||
127 | support disabling and re-enabling GRO on the fly. | ||
128 | |||
129 | |||
130 | Data Center Bridging, aka DCB | 145 | Data Center Bridging, aka DCB |
131 | ----------------------------- | 146 | ----------------------------- |
132 | |||
133 | DCB is a configuration Quality of Service implementation in hardware. | 147 | DCB is a configuration Quality of Service implementation in hardware. |
134 | It uses the VLAN priority tag (802.1p) to filter traffic. That means | 148 | It uses the VLAN priority tag (802.1p) to filter traffic. That means |
135 | that there are 8 different priorities that traffic can be filtered into. | 149 | that there are 8 different priorities that traffic can be filtered into. |
@@ -163,24 +177,71 @@ Additional Configurations | |||
163 | 177 | ||
164 | http://e1000.sf.net | 178 | http://e1000.sf.net |
165 | 179 | ||
166 | |||
167 | Ethtool | 180 | Ethtool |
168 | ------- | 181 | ------- |
169 | The driver utilizes the ethtool interface for driver configuration and | 182 | The driver utilizes the ethtool interface for driver configuration and |
170 | diagnostics, as well as displaying statistical information. Ethtool | 183 | diagnostics, as well as displaying statistical information. The latest |
171 | version 3.0 or later is required for this functionality. | 184 | ethtool version is required for this functionality. |
172 | 185 | ||
173 | The latest release of ethtool can be found from | 186 | The latest release of ethtool can be found from |
174 | http://sourceforge.net/projects/gkernel. | 187 | http://ftp.kernel.org/pub/software/network/ethtool/ |
175 | 188 | ||
176 | 189 | FCoE | |
177 | NAPI | ||
178 | ---- | 190 | ---- |
191 | This release of the ixgbe driver contains new code to enable users to use | ||
192 | Fiber Channel over Ethernet (FCoE) and Data Center Bridging (DCB) | ||
193 | functionality that is supported by the 82598-based hardware. This code has | ||
194 | no default effect on the regular driver operation, and configuring DCB and | ||
195 | FCoE is outside the scope of this driver README. Refer to | ||
196 | http://www.open-fcoe.org/ for FCoE project information and contact | ||
197 | e1000-eedc@lists.sourceforge.net for DCB information. | ||
198 | |||
199 | MAC and VLAN anti-spoofing feature | ||
200 | ---------------------------------- | ||
201 | When a malicious driver attempts to send a spoofed packet, it is dropped by | ||
202 | the hardware and not transmitted. An interrupt is sent to the PF driver | ||
203 | notifying it of the spoof attempt. | ||
204 | |||
205 | When a spoofed packet is detected the PF driver will send the following | ||
206 | message to the system log (displayed by the "dmesg" command): | ||
207 | |||
208 | Spoof event(s) detected on VF (n) | ||
209 | |||
210 | Where n=the VF that attempted to do the spoofing. | ||
211 | |||
212 | |||
213 | Performance Tuning | ||
214 | ================== | ||
215 | |||
216 | An excellent article on performance tuning can be found at: | ||
217 | |||
218 | http://www.redhat.com/promo/summit/2008/downloads/pdf/Thursday/Mark_Wagner.pdf | ||
219 | |||
220 | |||
221 | Known Issues | ||
222 | ============ | ||
223 | |||
224 | Enabling SR-IOV in a 32-bit Microsoft* Windows* Server 2008 Guest OS using | ||
225 | Intel (R) 82576-based GbE or Intel (R) 82599-based 10GbE controller under KVM | ||
226 | ----------------------------------------------------------------------------- | ||
227 | KVM Hypervisor/VMM supports direct assignment of a PCIe device to a VM. This | ||
228 | includes traditional PCIe devices, as well as SR-IOV-capable devices using | ||
229 | Intel 82576-based and 82599-based controllers. | ||
230 | |||
231 | While direct assignment of a PCIe device or an SR-IOV Virtual Function (VF) | ||
232 | to a Linux-based VM running 2.6.32 or later kernel works fine, there is a | ||
233 | known issue with Microsoft Windows Server 2008 VM that results in a "yellow | ||
234 | bang" error. This problem is within the KVM VMM itself, not the Intel driver, | ||
235 | or the SR-IOV logic of the VMM, but rather that KVM emulates an older CPU | ||
236 | model for the guests, and this older CPU model does not support MSI-X | ||
237 | interrupts, which is a requirement for Intel SR-IOV. | ||
179 | 238 | ||
180 | NAPI (Rx polling mode) is supported in the ixgbe driver. NAPI is enabled | 239 | If you wish to use the Intel 82576 or 82599-based controllers in SR-IOV mode |
181 | by default in the driver. | 240 | with KVM and a Microsoft Windows Server 2008 guest try the following |
241 | workaround. The workaround is to tell KVM to emulate a different model of CPU | ||
242 | when using qemu to create the KVM guest: | ||
182 | 243 | ||
183 | See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. | 244 | "-cpu qemu64,model=13" |
184 | 245 | ||
185 | 246 | ||
186 | Support | 247 | Support |
diff --git a/Documentation/networking/ixgbevf.txt b/Documentation/networking/ixgbevf.txt index 21dd5d15b6b4..5a91a41fa946 100644 --- a/Documentation/networking/ixgbevf.txt +++ b/Documentation/networking/ixgbevf.txt | |||
@@ -35,10 +35,6 @@ Driver ID Guide at: | |||
35 | Known Issues/Troubleshooting | 35 | Known Issues/Troubleshooting |
36 | ============================ | 36 | ============================ |
37 | 37 | ||
38 | Unloading Physical Function (PF) Driver Causes System Reboots When VM is | ||
39 | Running and VF is Loaded on the VM | ||
40 | ------------------------------------------------------------------------ | ||
41 | Do not unload the PF driver (ixgbe) while VFs are assigned to guests. | ||
42 | 38 | ||
43 | Support | 39 | Support |
44 | ======= | 40 | ======= |
diff --git a/Documentation/networking/stmmac.txt b/Documentation/networking/stmmac.txt index 7ee770b5ef5f..80a7a3454902 100644 --- a/Documentation/networking/stmmac.txt +++ b/Documentation/networking/stmmac.txt | |||
@@ -7,7 +7,7 @@ This 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); it has been fully tested on STLinux platforms. |
8 | 8 | ||
9 | Currently this network device driver is for all STM embedded MAC/GMAC | 9 | Currently this network device driver is for all STM embedded MAC/GMAC |
10 | (7xxx SoCs). | 10 | (7xxx SoCs). Other platforms start using it i.e. ARM SPEAr. |
11 | 11 | ||
12 | DWC Ether MAC 10/100/1000 Universal version 3.41a and DWC Ether MAC 10/100 | 12 | DWC Ether MAC 10/100/1000 Universal version 3.41a and DWC Ether MAC 10/100 |
13 | Universal version 4.0 have been used for developing the first code | 13 | Universal version 4.0 have been used for developing the first code |
@@ -95,9 +95,14 @@ Several information came from the platform; please refer to the | |||
95 | driver's Header file in include/linux directory. | 95 | driver's Header file in include/linux directory. |
96 | 96 | ||
97 | struct plat_stmmacenet_data { | 97 | struct plat_stmmacenet_data { |
98 | int bus_id; | 98 | int bus_id; |
99 | int pbl; | 99 | int pbl; |
100 | int has_gmac; | 100 | int clk_csr; |
101 | int has_gmac; | ||
102 | int enh_desc; | ||
103 | int tx_coe; | ||
104 | int bugged_jumbo; | ||
105 | int pmt; | ||
101 | void (*fix_mac_speed)(void *priv, unsigned int speed); | 106 | void (*fix_mac_speed)(void *priv, unsigned int speed); |
102 | void (*bus_setup)(unsigned long ioaddr); | 107 | void (*bus_setup)(unsigned long ioaddr); |
103 | #ifdef CONFIG_STM_DRIVERS | 108 | #ifdef CONFIG_STM_DRIVERS |
@@ -114,6 +119,12 @@ Where: | |||
114 | registers (on STM platforms); | 119 | registers (on STM platforms); |
115 | - has_gmac: GMAC core is on board (get it at run-time in the next step); | 120 | - has_gmac: GMAC core is on board (get it at run-time in the next step); |
116 | - bus_id: bus identifier. | 121 | - bus_id: bus identifier. |
122 | - tx_coe: core is able to perform the tx csum in HW. | ||
123 | - enh_desc: if sets the MAC will use the enhanced descriptor structure. | ||
124 | - clk_csr: CSR Clock range selection. | ||
125 | - bugged_jumbo: some HWs are not able to perform the csum in HW for | ||
126 | over-sized frames due to limited buffer sizes. Setting this | ||
127 | flag the csum will be done in SW on JUMBO frames. | ||
117 | 128 | ||
118 | struct plat_stmmacphy_data { | 129 | struct plat_stmmacphy_data { |
119 | int bus_id; | 130 | int bus_id; |
@@ -131,13 +142,28 @@ Where: | |||
131 | - interface: physical MII interface mode; | 142 | - interface: physical MII interface mode; |
132 | - phy_reset: hook to reset HW function. | 143 | - phy_reset: hook to reset HW function. |
133 | 144 | ||
145 | SOURCES: | ||
146 | - Kconfig | ||
147 | - Makefile | ||
148 | - stmmac_main.c: main network device driver; | ||
149 | - stmmac_mdio.c: mdio functions; | ||
150 | - stmmac_ethtool.c: ethtool support; | ||
151 | - stmmac_timer.[ch]: timer code used for mitigating the driver dma interrupts | ||
152 | Only tested on ST40 platforms based. | ||
153 | - stmmac.h: private driver structure; | ||
154 | - common.h: common definitions and VFTs; | ||
155 | - descs.h: descriptor structure definitions; | ||
156 | - dwmac1000_core.c: GMAC core functions; | ||
157 | - dwmac1000_dma.c: dma functions for the GMAC chip; | ||
158 | - dwmac1000.h: specific header file for the GMAC; | ||
159 | - dwmac100_core: MAC 100 core and dma code; | ||
160 | - dwmac100_dma.c: dma funtions for the MAC chip; | ||
161 | - dwmac1000.h: specific header file for the MAC; | ||
162 | - dwmac_lib.c: generic DMA functions shared among chips | ||
163 | - enh_desc.c: functions for handling enhanced descriptors | ||
164 | - norm_desc.c: functions for handling normal descriptors | ||
165 | |||
134 | TODO: | 166 | TODO: |
135 | - Continue to make the driver more generic and suitable for other Synopsys | 167 | - XGMAC controller is not supported. |
136 | Ethernet controllers used on other architectures (i.e. ARM). | ||
137 | - 10G controllers are not supported. | ||
138 | - MAC uses Normal descriptors and GMAC uses enhanced ones. | ||
139 | This is a limit that should be reviewed. MAC could want to | ||
140 | use the enhanced structure. | ||
141 | - Checksumming: Rx/Tx csum is done in HW in case of GMAC only. | ||
142 | - Review the timer optimisation code to use an embedded device that seems to be | 168 | - Review the timer optimisation code to use an embedded device that seems to be |
143 | available in new chip generations. | 169 | available in new chip generations. |
diff --git a/Documentation/trace/events-power.txt b/Documentation/trace/events-power.txt new file mode 100644 index 000000000000..96d87b67fe37 --- /dev/null +++ b/Documentation/trace/events-power.txt | |||
@@ -0,0 +1,90 @@ | |||
1 | |||
2 | Subsystem Trace Points: power | ||
3 | |||
4 | The power tracing system captures events related to power transitions | ||
5 | within the kernel. Broadly speaking there are three major subheadings: | ||
6 | |||
7 | o Power state switch which reports events related to suspend (S-states), | ||
8 | cpuidle (C-states) and cpufreq (P-states) | ||
9 | o System clock related changes | ||
10 | o Power domains related changes and transitions | ||
11 | |||
12 | This document describes what each of the tracepoints is and why they | ||
13 | might be useful. | ||
14 | |||
15 | Cf. include/trace/events/power.h for the events definitions. | ||
16 | |||
17 | 1. Power state switch events | ||
18 | ============================ | ||
19 | |||
20 | 1.1 New trace API | ||
21 | ----------------- | ||
22 | |||
23 | A 'cpu' event class gathers the CPU-related events: cpuidle and | ||
24 | cpufreq. | ||
25 | |||
26 | cpu_idle "state=%lu cpu_id=%lu" | ||
27 | cpu_frequency "state=%lu cpu_id=%lu" | ||
28 | |||
29 | A suspend event is used to indicate the system going in and out of the | ||
30 | suspend mode: | ||
31 | |||
32 | machine_suspend "state=%lu" | ||
33 | |||
34 | |||
35 | Note: the value of '-1' or '4294967295' for state means an exit from the current state, | ||
36 | i.e. trace_cpu_idle(4, smp_processor_id()) means that the system | ||
37 | enters the idle state 4, while trace_cpu_idle(PWR_EVENT_EXIT, smp_processor_id()) | ||
38 | means that the system exits the previous idle state. | ||
39 | |||
40 | The event which has 'state=4294967295' in the trace is very important to the user | ||
41 | space tools which are using it to detect the end of the current state, and so to | ||
42 | correctly draw the states diagrams and to calculate accurate statistics etc. | ||
43 | |||
44 | 1.2 DEPRECATED trace API | ||
45 | ------------------------ | ||
46 | |||
47 | A new Kconfig option CONFIG_EVENT_POWER_TRACING_DEPRECATED with the default value of | ||
48 | 'y' has been created. This allows the legacy trace power API to be used conjointly | ||
49 | with the new trace API. | ||
50 | The Kconfig option, the old trace API (in include/trace/events/power.h) and the | ||
51 | old trace points will disappear in a future release (namely 2.6.41). | ||
52 | |||
53 | power_start "type=%lu state=%lu cpu_id=%lu" | ||
54 | power_frequency "type=%lu state=%lu cpu_id=%lu" | ||
55 | power_end "cpu_id=%lu" | ||
56 | |||
57 | The 'type' parameter takes one of those macros: | ||
58 | . POWER_NONE = 0, | ||
59 | . POWER_CSTATE = 1, /* C-State */ | ||
60 | . POWER_PSTATE = 2, /* Fequency change or DVFS */ | ||
61 | |||
62 | The 'state' parameter is set depending on the type: | ||
63 | . Target C-state for type=POWER_CSTATE, | ||
64 | . Target frequency for type=POWER_PSTATE, | ||
65 | |||
66 | power_end is used to indicate the exit of a state, corresponding to the latest | ||
67 | power_start event. | ||
68 | |||
69 | 2. Clocks events | ||
70 | ================ | ||
71 | The clock events are used for clock enable/disable and for | ||
72 | clock rate change. | ||
73 | |||
74 | clock_enable "%s state=%lu cpu_id=%lu" | ||
75 | clock_disable "%s state=%lu cpu_id=%lu" | ||
76 | clock_set_rate "%s state=%lu cpu_id=%lu" | ||
77 | |||
78 | The first parameter gives the clock name (e.g. "gpio1_iclk"). | ||
79 | The second parameter is '1' for enable, '0' for disable, the target | ||
80 | clock rate for set_rate. | ||
81 | |||
82 | 3. Power domains events | ||
83 | ======================= | ||
84 | The power domain events are used for power domains transitions | ||
85 | |||
86 | power_domain_target "%s state=%lu cpu_id=%lu" | ||
87 | |||
88 | The first parameter gives the power domain name (e.g. "mpu_pwrdm"). | ||
89 | The second parameter is the power domain target state. | ||
90 | |||
diff --git a/Documentation/x86/boot.txt b/Documentation/x86/boot.txt index 30b43e1b2697..bdeb81ccb5f6 100644 --- a/Documentation/x86/boot.txt +++ b/Documentation/x86/boot.txt | |||
@@ -600,6 +600,7 @@ Protocol: 2.07+ | |||
600 | 0x00000001 lguest | 600 | 0x00000001 lguest |
601 | 0x00000002 Xen | 601 | 0x00000002 Xen |
602 | 0x00000003 Moorestown MID | 602 | 0x00000003 Moorestown MID |
603 | 0x00000004 CE4100 TV Platform | ||
603 | 604 | ||
604 | Field name: hardware_subarch_data | 605 | Field name: hardware_subarch_data |
605 | Type: write (subarch-dependent) | 606 | Type: write (subarch-dependent) |