Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6: (27 commits)
net: clear heap allocation for ETHTOOL_GRXCLSRLALL
isdn: strcpy() => strlcpy()
Revert "mac80211: use netif_receive_skb in ieee80211_tx_status callpath"
mac80211: delete AddBA response timer
ath9k_hw: fix regression in ANI listen time calculation
caif: fix two caif_connect() bugs
bonding: fix WARN_ON when writing to bond_master sysfs file
skge: add quirk to limit DMA
MAINTAINERS: update Intel LAN Ethernet info
e1000e.txt: Add e1000e documentation
e1000.txt: Update e1000 documentation
ixgbevf.txt: Update ixgbevf documentation
cls_u32: signedness bug
Bluetooth: Disallow to change L2CAP_OPTIONS values when connected
sctp: Fix out-of-bounds reading in sctp_asoc_get_hmac()
sctp: prevent reading out-of-bounds memory
ipv4: correct IGMP behavior on v3 query during v2-compatibility mode
netdev: Depend on INET before selecting INET_LRO
Revert "ipv4: Make INET_LRO a bool instead of tristate."
net: Fix the condition passed to sk_wait_event()
...

+590 -380
+96 -277
Documentation/networking/e1000.txt
··· 1 1 Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters 2 2 =============================================================== 3 3 4 - September 26, 2006 5 - 4 + Intel Gigabit Linux driver. 5 + Copyright(c) 1999 - 2010 Intel Corporation. 6 6 7 7 Contents 8 8 ======== 9 9 10 - - In This Release 11 10 - Identifying Your Adapter 12 - - Building and Installation 13 11 - Command Line Parameters 14 12 - Speed and Duplex Configuration 15 13 - Additional Configurations 16 - - Known Issues 17 14 - Support 18 - 19 - 20 - In This Release 21 - =============== 22 - 23 - This file describes the Linux* Base Driver for the Intel(R) PRO/1000 Family 24 - of Adapters. This driver includes support for Itanium(R)2-based systems. 25 - 26 - For questions related to hardware requirements, refer to the documentation 27 - supplied with your Intel PRO/1000 adapter. All hardware requirements listed 28 - apply to use with Linux. 29 - 30 - The following features are now available in supported kernels: 31 - - Native VLANs 32 - - Channel Bonding (teaming) 33 - - SNMP 34 - 35 - Channel Bonding documentation can be found in the Linux kernel source: 36 - /Documentation/networking/bonding.txt 37 - 38 - The driver information previously displayed in the /proc filesystem is not 39 - supported in this release. Alternatively, you can use ethtool (version 1.6 40 - or later), lspci, and ifconfig to obtain the same information. 41 - 42 - Instructions on updating ethtool can be found in the section "Additional 43 - Configurations" later in this document. 44 - 45 - NOTE: The Intel(R) 82562v 10/100 Network Connection only provides 10/100 46 - support. 47 - 48 15 49 16 Identifying Your Adapter 50 17 ======================== ··· 19 52 For more information on how to identify your adapter, go to the Adapter & 20 53 Driver ID Guide at: 21 54 22 - http://support.intel.com/support/network/adapter/pro100/21397.htm 55 + http://support.intel.com/support/go/network/adapter/idguide.htm 23 56 24 57 For the latest Intel network drivers for Linux, refer to the following 25 58 website. In the search field, enter your adapter name or type, or use the 26 59 networking link on the left to search for your adapter: 27 60 28 - http://downloadfinder.intel.com/scripts-df/support_intel.asp 29 - 61 + http://support.intel.com/support/go/network/adapter/home.htm 30 62 31 63 Command Line Parameters 32 64 ======================= 33 - 34 - If the driver is built as a module, the following optional parameters 35 - are used by entering them on the command line with the modprobe command 36 - using this syntax: 37 - 38 - modprobe e1000 [<option>=<VAL1>,<VAL2>,...] 39 - 40 - For example, with two PRO/1000 PCI adapters, entering: 41 - 42 - modprobe e1000 TxDescriptors=80,128 43 - 44 - loads the e1000 driver with 80 TX descriptors for the first adapter and 45 - 128 TX descriptors for the second adapter. 46 65 47 66 The default value for each parameter is generally the recommended setting, 48 67 unless otherwise noted. ··· 41 88 RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay 42 89 parameters, see the application note at: 43 90 http://www.intel.com/design/network/applnots/ap450.htm 44 - 45 - A descriptor describes a data buffer and attributes related to 46 - the data buffer. This information is accessed by the hardware. 47 - 48 91 49 92 AutoNeg 50 93 ------- ··· 55 106 NOTE: Refer to the Speed and Duplex section of this readme for more 56 107 information on the AutoNeg parameter. 57 108 58 - 59 109 Duplex 60 110 ------ 61 111 (Supported only on adapters with copper connections) ··· 67 119 link partner is forced (either full or half), Duplex defaults to half- 68 120 duplex. 69 121 70 - 71 122 FlowControl 72 123 ----------- 73 124 Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) ··· 75 128 This parameter controls the automatic generation(Tx) and response(Rx) 76 129 to Ethernet PAUSE frames. 77 130 78 - 79 131 InterruptThrottleRate 80 132 --------------------- 81 133 (not supported on Intel(R) 82542, 82543 or 82544-based adapters) 82 - Valid Range: 0,1,3,100-100000 (0=off, 1=dynamic, 3=dynamic conservative) 134 + Valid Range: 0,1,3,4,100-100000 (0=off, 1=dynamic, 3=dynamic conservative, 135 + 4=simplified balancing) 83 136 Default Value: 3 84 137 85 138 The driver can limit the amount of interrupts per second that the adapter 86 - will generate for incoming packets. It does this by writing a value to the 87 - adapter that is based on the maximum amount of interrupts that the adapter 139 + will generate for incoming packets. It does this by writing a value to the 140 + adapter that is based on the maximum amount of interrupts that the adapter 88 141 will generate per second. 89 142 90 143 Setting InterruptThrottleRate to a value greater or equal to 100 ··· 93 146 load on the system and can lower CPU utilization under heavy load, 94 147 but will increase latency as packets are not processed as quickly. 95 148 96 - The default behaviour of the driver previously assumed a static 97 - InterruptThrottleRate value of 8000, providing a good fallback value for 98 - all traffic types,but lacking in small packet performance and latency. 99 - The hardware can handle many more small packets per second however, and 149 + The default behaviour of the driver previously assumed a static 150 + InterruptThrottleRate value of 8000, providing a good fallback value for 151 + all traffic types,but lacking in small packet performance and latency. 152 + The hardware can handle many more small packets per second however, and 100 153 for this reason an adaptive interrupt moderation algorithm was implemented. 101 154 102 155 Since 7.3.x, the driver has two adaptive modes (setting 1 or 3) in which 103 - it dynamically adjusts the InterruptThrottleRate value based on the traffic 156 + it dynamically adjusts the InterruptThrottleRate value based on the traffic 104 157 that it receives. After determining the type of incoming traffic in the last 105 - timeframe, it will adjust the InterruptThrottleRate to an appropriate value 158 + timeframe, it will adjust the InterruptThrottleRate to an appropriate value 106 159 for that traffic. 107 160 108 161 The algorithm classifies the incoming traffic every interval into 109 - classes. Once the class is determined, the InterruptThrottleRate value is 110 - adjusted to suit that traffic type the best. There are three classes defined: 162 + classes. Once the class is determined, the InterruptThrottleRate value is 163 + adjusted to suit that traffic type the best. There are three classes defined: 111 164 "Bulk traffic", for large amounts of packets of normal size; "Low latency", 112 165 for small amounts of traffic and/or a significant percentage of small 113 - packets; and "Lowest latency", for almost completely small packets or 166 + packets; and "Lowest latency", for almost completely small packets or 114 167 minimal traffic. 115 168 116 - In dynamic conservative mode, the InterruptThrottleRate value is set to 4000 117 - for traffic that falls in class "Bulk traffic". If traffic falls in the "Low 118 - latency" or "Lowest latency" class, the InterruptThrottleRate is increased 169 + In dynamic conservative mode, the InterruptThrottleRate value is set to 4000 170 + for traffic that falls in class "Bulk traffic". If traffic falls in the "Low 171 + latency" or "Lowest latency" class, the InterruptThrottleRate is increased 119 172 stepwise to 20000. This default mode is suitable for most applications. 120 173 121 174 For situations where low latency is vital such as cluster or 122 175 grid computing, the algorithm can reduce latency even more when 123 176 InterruptThrottleRate is set to mode 1. In this mode, which operates 124 - the same as mode 3, the InterruptThrottleRate will be increased stepwise to 177 + the same as mode 3, the InterruptThrottleRate will be increased stepwise to 125 178 70000 for traffic in class "Lowest latency". 179 + 180 + In simplified mode the interrupt rate is based on the ratio of Tx and 181 + Rx traffic. If the bytes per second rate is approximately equal, the 182 + interrupt rate will drop as low as 2000 interrupts per second. If the 183 + traffic is mostly transmit or mostly receive, the interrupt rate could 184 + be as high as 8000. 126 185 127 186 Setting InterruptThrottleRate to 0 turns off any interrupt moderation 128 187 and may improve small packet latency, but is generally not suitable ··· 165 212 be platform-specific. If CPU utilization is not a concern, use 166 213 RX_POLLING (NAPI) and default driver settings. 167 214 168 - 169 - 170 215 RxDescriptors 171 216 ------------- 172 217 Valid Range: 80-256 for 82542 and 82543-based adapters ··· 176 225 incoming packets, at the expense of increased system memory utilization. 177 226 178 227 Each descriptor is 16 bytes. A receive buffer is also allocated for each 179 - descriptor and can be either 2048, 4096, 8192, or 16384 bytes, depending 228 + descriptor and can be either 2048, 4096, 8192, or 16384 bytes, depending 180 229 on the MTU setting. The maximum MTU size is 16110. 181 230 182 - NOTE: MTU designates the frame size. It only needs to be set for Jumbo 183 - Frames. Depending on the available system resources, the request 184 - for a higher number of receive descriptors may be denied. In this 231 + NOTE: MTU designates the frame size. It only needs to be set for Jumbo 232 + Frames. Depending on the available system resources, the request 233 + for a higher number of receive descriptors may be denied. In this 185 234 case, use a lower number. 186 - 187 235 188 236 RxIntDelay 189 237 ---------- ··· 204 254 restoring the network connection. To eliminate the potential 205 255 for the hang ensure that RxIntDelay is set to 0. 206 256 207 - 208 257 RxAbsIntDelay 209 258 ------------- 210 259 (This parameter is supported only on 82540, 82545 and later adapters.) ··· 217 268 along with RxIntDelay, may improve traffic throughput in specific network 218 269 conditions. 219 270 220 - 221 271 Speed 222 272 ----- 223 273 (This parameter is supported only on adapters with copper connections.) ··· 227 279 (Mbps). If this parameter is not specified or is set to 0 and the link 228 280 partner is set to auto-negotiate, the board will auto-detect the correct 229 281 speed. Duplex should also be set when Speed is set to either 10 or 100. 230 - 231 282 232 283 TxDescriptors 233 284 ------------- ··· 242 295 higher number of transmit descriptors may be denied. In this case, 243 296 use a lower number. 244 297 298 + TxDescriptorStep 299 + ---------------- 300 + Valid Range: 1 (use every Tx Descriptor) 301 + 4 (use every 4th Tx Descriptor) 302 + 303 + Default Value: 1 (use every Tx Descriptor) 304 + 305 + On certain non-Intel architectures, it has been observed that intense TX 306 + traffic bursts of short packets may result in an improper descriptor 307 + writeback. If this occurs, the driver will report a "TX Timeout" and reset 308 + the adapter, after which the transmit flow will restart, though data may 309 + have stalled for as much as 10 seconds before it resumes. 310 + 311 + The improper writeback does not occur on the first descriptor in a system 312 + memory cache-line, which is typically 32 bytes, or 4 descriptors long. 313 + 314 + Setting TxDescriptorStep to a value of 4 will ensure that all TX descriptors 315 + are aligned to the start of a system memory cache line, and so this problem 316 + will not occur. 317 + 318 + NOTES: Setting TxDescriptorStep to 4 effectively reduces the number of 319 + TxDescriptors available for transmits to 1/4 of the normal allocation. 320 + This has a possible negative performance impact, which may be 321 + compensated for by allocating more descriptors using the TxDescriptors 322 + module parameter. 323 + 324 + There are other conditions which may result in "TX Timeout", which will 325 + not be resolved by the use of the TxDescriptorStep parameter. As the 326 + issue addressed by this parameter has never been observed on Intel 327 + Architecture platforms, it should not be used on Intel platforms. 245 328 246 329 TxIntDelay 247 330 ---------- ··· 283 306 efficiency if properly tuned for specific network traffic. If the 284 307 system is reporting dropped transmits, this value may be set too high 285 308 causing the driver to run out of available transmit descriptors. 286 - 287 309 288 310 TxAbsIntDelay 289 311 ------------- ··· 306 330 A value of '1' indicates that the driver should enable IP checksum 307 331 offload for received packets (both UDP and TCP) to the adapter hardware. 308 332 333 + Copybreak 334 + --------- 335 + Valid Range: 0-xxxxxxx (0=off) 336 + Default Value: 256 337 + Usage: insmod e1000.ko copybreak=128 338 + 339 + Driver copies all packets below or equaling this size to a fresh Rx 340 + buffer before handing it up the stack. 341 + 342 + This parameter is different than other parameters, in that it is a 343 + single (not 1,1,1 etc.) parameter applied to all driver instances and 344 + it is also available during runtime at 345 + /sys/module/e1000/parameters/copybreak 346 + 347 + SmartPowerDownEnable 348 + -------------------- 349 + Valid Range: 0-1 350 + Default Value: 0 (disabled) 351 + 352 + Allows PHY to turn off in lower power states. The user can turn off 353 + this parameter in supported chipsets. 354 + 355 + KumeranLockLoss 356 + --------------- 357 + Valid Range: 0-1 358 + Default Value: 1 (enabled) 359 + 360 + This workaround skips resetting the PHY at shutdown for the initial 361 + silicon releases of ICH8 systems. 309 362 310 363 Speed and Duplex Configuration 311 364 ============================== ··· 390 385 parameter should not be used. Instead, use the Speed and Duplex parameters 391 386 previously mentioned to force the adapter to the same speed and duplex. 392 387 393 - 394 388 Additional Configurations 395 389 ========================= 396 - 397 - Configuring the Driver on Different Distributions 398 - ------------------------------------------------- 399 - Configuring a network driver to load properly when the system is started 400 - is distribution dependent. Typically, the configuration process involves 401 - adding an alias line to /etc/modules.conf or /etc/modprobe.conf as well 402 - as editing other system startup scripts and/or configuration files. Many 403 - popular Linux distributions ship with tools to make these changes for you. 404 - To learn the proper way to configure a network device for your system, 405 - refer to your distribution documentation. If during this process you are 406 - asked for the driver or module name, the name for the Linux Base Driver 407 - for the Intel(R) PRO/1000 Family of Adapters is e1000. 408 - 409 - As an example, if you install the e1000 driver for two PRO/1000 adapters 410 - (eth0 and eth1) and set the speed and duplex to 10full and 100half, add 411 - the following to modules.conf or or modprobe.conf: 412 - 413 - alias eth0 e1000 414 - alias eth1 e1000 415 - options e1000 Speed=10,100 Duplex=2,1 416 - 417 - Viewing Link Messages 418 - --------------------- 419 - Link messages will not be displayed to the console if the distribution is 420 - restricting system messages. In order to see network driver link messages 421 - on your console, set dmesg to eight by entering the following: 422 - 423 - dmesg -n 8 424 - 425 - NOTE: This setting is not saved across reboots. 426 390 427 391 Jumbo Frames 428 392 ------------ ··· 411 437 setting in a different location. 412 438 413 439 Notes: 414 - 415 - - To enable Jumbo Frames, increase the MTU size on the interface beyond 416 - 1500. 440 + Degradation in throughput performance may be observed in some Jumbo frames 441 + environments. If this is observed, increasing the application's socket buffer 442 + size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values may help. 443 + See the specific application manual and /usr/src/linux*/Documentation/ 444 + networking/ip-sysctl.txt for more details. 417 445 418 446 - The maximum MTU setting for Jumbo Frames is 16110. This value coincides 419 447 with the maximum Jumbo Frames size of 16128. ··· 423 447 - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or 424 448 loss of link. 425 449 426 - - Some Intel gigabit adapters that support Jumbo Frames have a frame size 427 - limit of 9238 bytes, with a corresponding MTU size limit of 9216 bytes. 428 - The adapters with this limitation are based on the Intel(R) 82571EB, 429 - 82572EI, 82573L and 80003ES2LAN controller. These correspond to the 430 - following product names: 431 - Intel(R) PRO/1000 PT Server Adapter 432 - Intel(R) PRO/1000 PT Desktop Adapter 433 - Intel(R) PRO/1000 PT Network Connection 434 - Intel(R) PRO/1000 PT Dual Port Server Adapter 435 - Intel(R) PRO/1000 PT Dual Port Network Connection 436 - Intel(R) PRO/1000 PF Server Adapter 437 - Intel(R) PRO/1000 PF Network Connection 438 - Intel(R) PRO/1000 PF Dual Port Server Adapter 439 - Intel(R) PRO/1000 PB Server Connection 440 - Intel(R) PRO/1000 PL Network Connection 441 - Intel(R) PRO/1000 EB Network Connection with I/O Acceleration 442 - Intel(R) PRO/1000 EB Backplane Connection with I/O Acceleration 443 - Intel(R) PRO/1000 PT Quad Port Server Adapter 444 - 445 450 - Adapters based on the Intel(R) 82542 and 82573V/E controller do not 446 451 support Jumbo Frames. These correspond to the following product names: 447 452 Intel(R) PRO/1000 Gigabit Server Adapter 448 453 Intel(R) PRO/1000 PM Network Connection 449 - 450 - - The following adapters do not support Jumbo Frames: 451 - Intel(R) 82562V 10/100 Network Connection 452 - Intel(R) 82566DM Gigabit Network Connection 453 - Intel(R) 82566DC Gigabit Network Connection 454 - Intel(R) 82566MM Gigabit Network Connection 455 - Intel(R) 82566MC Gigabit Network Connection 456 - Intel(R) 82562GT 10/100 Network Connection 457 - Intel(R) 82562G 10/100 Network Connection 458 - 459 454 460 455 Ethtool 461 456 ------- ··· 437 490 The latest release of ethtool can be found from 438 491 http://sourceforge.net/projects/gkernel. 439 492 440 - NOTE: Ethtool 1.6 only supports a limited set of ethtool options. Support 441 - for a more complete ethtool feature set can be enabled by upgrading 442 - ethtool to ethtool-1.8.1. 443 - 444 493 Enabling Wake on LAN* (WoL) 445 494 --------------------------- 446 - WoL is configured through the Ethtool* utility. Ethtool is included with 447 - all versions of Red Hat after Red Hat 7.2. For other Linux distributions, 448 - download and install Ethtool from the following website: 449 - http://sourceforge.net/projects/gkernel. 450 - 451 - For instructions on enabling WoL with Ethtool, refer to the website listed 452 - above. 495 + WoL is configured through the Ethtool* utility. 453 496 454 497 WoL will be enabled on the system during the next shut down or reboot. 455 498 For this driver version, in order to enable WoL, the e1000 driver must be 456 499 loaded when shutting down or rebooting the system. 457 - 458 - Wake On LAN is only supported on port A for the following devices: 459 - Intel(R) PRO/1000 PT Dual Port Network Connection 460 - Intel(R) PRO/1000 PT Dual Port Server Connection 461 - Intel(R) PRO/1000 PT Dual Port Server Adapter 462 - Intel(R) PRO/1000 PF Dual Port Server Adapter 463 - Intel(R) PRO/1000 PT Quad Port Server Adapter 464 - 465 - NAPI 466 - ---- 467 - NAPI (Rx polling mode) is enabled in the e1000 driver. 468 - 469 - See www.cyberus.ca/~hadi/usenix-paper.tgz for more information on NAPI. 470 - 471 - 472 - Known Issues 473 - ============ 474 - 475 - Dropped Receive Packets on Half-duplex 10/100 Networks 476 - ------------------------------------------------------ 477 - If you have an Intel PCI Express adapter running at 10mbps or 100mbps, half- 478 - duplex, you may observe occasional dropped receive packets. There are no 479 - workarounds for this problem in this network configuration. The network must 480 - be updated to operate in full-duplex, and/or 1000mbps only. 481 - 482 - Jumbo Frames System Requirement 483 - ------------------------------- 484 - Memory allocation failures have been observed on Linux systems with 64 MB 485 - of RAM or less that are running Jumbo Frames. If you are using Jumbo 486 - Frames, your system may require more than the advertised minimum 487 - requirement of 64 MB of system memory. 488 - 489 - Performance Degradation with Jumbo Frames 490 - ----------------------------------------- 491 - Degradation in throughput performance may be observed in some Jumbo frames 492 - environments. If this is observed, increasing the application's socket 493 - buffer size and/or increasing the /proc/sys/net/ipv4/tcp_*mem entry values 494 - may help. See the specific application manual and 495 - /usr/src/linux*/Documentation/ 496 - networking/ip-sysctl.txt for more details. 497 - 498 - Jumbo Frames on Foundry BigIron 8000 switch 499 - ------------------------------------------- 500 - There is a known issue using Jumbo frames when connected to a Foundry 501 - BigIron 8000 switch. This is a 3rd party limitation. If you experience 502 - loss of packets, lower the MTU size. 503 - 504 - Allocating Rx Buffers when Using Jumbo Frames 505 - --------------------------------------------- 506 - Allocating Rx buffers when using Jumbo Frames on 2.6.x kernels may fail if 507 - the available memory is heavily fragmented. This issue may be seen with PCI-X 508 - adapters or with packet split disabled. This can be reduced or eliminated 509 - by changing the amount of available memory for receive buffer allocation, by 510 - increasing /proc/sys/vm/min_free_kbytes. 511 - 512 - Multiple Interfaces on Same Ethernet Broadcast Network 513 - ------------------------------------------------------ 514 - Due to the default ARP behavior on Linux, it is not possible to have 515 - one system on two IP networks in the same Ethernet broadcast domain 516 - (non-partitioned switch) behave as expected. All Ethernet interfaces 517 - will respond to IP traffic for any IP address assigned to the system. 518 - This results in unbalanced receive traffic. 519 - 520 - If you have multiple interfaces in a server, either turn on ARP 521 - filtering by entering: 522 - 523 - echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter 524 - (this only works if your kernel's version is higher than 2.4.5), 525 - 526 - NOTE: This setting is not saved across reboots. The configuration 527 - change can be made permanent by adding the line: 528 - net.ipv4.conf.all.arp_filter = 1 529 - to the file /etc/sysctl.conf 530 - 531 - or, 532 - 533 - install the interfaces in separate broadcast domains (either in 534 - different switches or in a switch partitioned to VLANs). 535 - 536 - 82541/82547 can't link or are slow to link with some link partners 537 - ----------------------------------------------------------------- 538 - There is a known compatibility issue with 82541/82547 and some 539 - low-end switches where the link will not be established, or will 540 - be slow to establish. In particular, these switches are known to 541 - be incompatible with 82541/82547: 542 - 543 - Planex FXG-08TE 544 - I-O Data ETG-SH8 545 - 546 - To workaround this issue, the driver can be compiled with an override 547 - of the PHY's master/slave setting. Forcing master or forcing slave 548 - mode will improve time-to-link. 549 - 550 - # make CFLAGS_EXTRA=-DE1000_MASTER_SLAVE=<n> 551 - 552 - Where <n> is: 553 - 554 - 0 = Hardware default 555 - 1 = Master mode 556 - 2 = Slave mode 557 - 3 = Auto master/slave 558 - 559 - Disable rx flow control with ethtool 560 - ------------------------------------ 561 - In order to disable receive flow control using ethtool, you must turn 562 - off auto-negotiation on the same command line. 563 - 564 - For example: 565 - 566 - ethtool -A eth? autoneg off rx off 567 - 568 - Unplugging network cable while ethtool -p is running 569 - ---------------------------------------------------- 570 - In kernel versions 2.5.50 and later (including 2.6 kernel), unplugging 571 - the network cable while ethtool -p is running will cause the system to 572 - become unresponsive to keyboard commands, except for control-alt-delete. 573 - Restarting the system appears to be the only remedy. 574 - 575 500 576 501 Support 577 502 =======
+302
Documentation/networking/e1000e.txt
··· 1 + Linux* Driver for Intel(R) Network Connection 2 + =============================================================== 3 + 4 + Intel Gigabit Linux driver. 5 + Copyright(c) 1999 - 2010 Intel Corporation. 6 + 7 + Contents 8 + ======== 9 + 10 + - Identifying Your Adapter 11 + - Command Line Parameters 12 + - Additional Configurations 13 + - Support 14 + 15 + Identifying Your Adapter 16 + ======================== 17 + 18 + The e1000e driver supports all PCI Express Intel(R) Gigabit Network 19 + Connections, except those that are 82575, 82576 and 82580-based*. 20 + 21 + * NOTE: The Intel(R) PRO/1000 P Dual Port Server Adapter is supported by 22 + the e1000 driver, not the e1000e driver due to the 82546 part being used 23 + behind a PCI Express bridge. 24 + 25 + For more information on how to identify your adapter, go to the Adapter & 26 + Driver ID Guide at: 27 + 28 + http://support.intel.com/support/go/network/adapter/idguide.htm 29 + 30 + For the latest Intel network drivers for Linux, refer to the following 31 + website. In the search field, enter your adapter name or type, or use the 32 + networking link on the left to search for your adapter: 33 + 34 + http://support.intel.com/support/go/network/adapter/home.htm 35 + 36 + Command Line Parameters 37 + ======================= 38 + 39 + The default value for each parameter is generally the recommended setting, 40 + unless otherwise noted. 41 + 42 + NOTES: For more information about the InterruptThrottleRate, 43 + RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay 44 + parameters, see the application note at: 45 + http://www.intel.com/design/network/applnots/ap450.htm 46 + 47 + InterruptThrottleRate 48 + --------------------- 49 + Valid Range: 0,1,3,4,100-100000 (0=off, 1=dynamic, 3=dynamic conservative, 50 + 4=simplified balancing) 51 + Default Value: 3 52 + 53 + The driver can limit the amount of interrupts per second that the adapter 54 + will generate for incoming packets. It does this by writing a value to the 55 + adapter that is based on the maximum amount of interrupts that the adapter 56 + will generate per second. 57 + 58 + Setting InterruptThrottleRate to a value greater or equal to 100 59 + will program the adapter to send out a maximum of that many interrupts 60 + 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, 62 + but will increase latency as packets are not processed as quickly. 63 + 64 + The driver has two adaptive modes (setting 1 or 3) in which 65 + it dynamically adjusts the InterruptThrottleRate value based on the traffic 66 + that it receives. After determining the type of incoming traffic in the last 67 + timeframe, it will adjust the InterruptThrottleRate to an appropriate value 68 + for that traffic. 69 + 70 + The algorithm classifies the incoming traffic every interval into 71 + classes. Once the class is determined, the InterruptThrottleRate value is 72 + adjusted to suit that traffic type the best. There are three classes defined: 73 + "Bulk traffic", for large amounts of packets of normal size; "Low latency", 74 + for small amounts of traffic and/or a significant percentage of small 75 + packets; and "Lowest latency", for almost completely small packets or 76 + minimal traffic. 77 + 78 + In dynamic conservative mode, the InterruptThrottleRate value is set to 4000 79 + for traffic that falls in class "Bulk traffic". If traffic falls in the "Low 80 + latency" or "Lowest latency" class, the InterruptThrottleRate is increased 81 + stepwise to 20000. This default mode is suitable for most applications. 82 + 83 + For situations where low latency is vital such as cluster or 84 + grid computing, the algorithm can reduce latency even more when 85 + InterruptThrottleRate is set to mode 1. In this mode, which operates 86 + the same as mode 3, the InterruptThrottleRate will be increased stepwise to 87 + 70000 for traffic in class "Lowest latency". 88 + 89 + 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 91 + 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 93 + be as high as 8000. 94 + 95 + Setting InterruptThrottleRate to 0 turns off any interrupt moderation 96 + and may improve small packet latency, but is generally not suitable 97 + for bulk throughput traffic. 98 + 99 + NOTE: InterruptThrottleRate takes precedence over the TxAbsIntDelay and 100 + RxAbsIntDelay parameters. In other words, minimizing the receive 101 + and/or transmit absolute delays does not force the controller to 102 + generate more interrupts than what the Interrupt Throttle Rate 103 + allows. 104 + 105 + NOTE: When e1000e is loaded with default settings and multiple adapters 106 + are in use simultaneously, the CPU utilization may increase non- 107 + linearly. In order to limit the CPU utilization without impacting 108 + the overall throughput, we recommend that you load the driver as 109 + follows: 110 + 111 + modprobe e1000e InterruptThrottleRate=3000,3000,3000 112 + 113 + This sets the InterruptThrottleRate to 3000 interrupts/sec for 114 + the first, second, and third instances of the driver. The range 115 + of 2000 to 3000 interrupts per second works on a majority of 116 + systems and is a good starting point, but the optimal value will 117 + be platform-specific. If CPU utilization is not a concern, use 118 + RX_POLLING (NAPI) and default driver settings. 119 + 120 + RxIntDelay 121 + ---------- 122 + Valid Range: 0-65535 (0=off) 123 + Default Value: 0 124 + 125 + This value delays the generation of receive interrupts in units of 1.024 126 + microseconds. Receive interrupt reduction can improve CPU efficiency if 127 + properly tuned for specific network traffic. Increasing this value adds 128 + extra latency to frame reception and can end up decreasing the throughput 129 + of TCP traffic. If the system is reporting dropped receives, this value 130 + may be set too high, causing the driver to run out of available receive 131 + descriptors. 132 + 133 + CAUTION: When setting RxIntDelay to a value other than 0, adapters may 134 + hang (stop transmitting) under certain network conditions. If 135 + this occurs a NETDEV WATCHDOG message is logged in the system 136 + event log. In addition, the controller is automatically reset, 137 + restoring the network connection. To eliminate the potential 138 + for the hang ensure that RxIntDelay is set to 0. 139 + 140 + RxAbsIntDelay 141 + ------------- 142 + Valid Range: 0-65535 (0=off) 143 + Default Value: 8 144 + 145 + This value, in units of 1.024 microseconds, limits the delay in which a 146 + receive interrupt is generated. Useful only if RxIntDelay is non-zero, 147 + this value ensures that an interrupt is generated after the initial 148 + packet is received within the set amount of time. Proper tuning, 149 + along with RxIntDelay, may improve traffic throughput in specific network 150 + conditions. 151 + 152 + TxIntDelay 153 + ---------- 154 + Valid Range: 0-65535 (0=off) 155 + Default Value: 8 156 + 157 + This value delays the generation of transmit interrupts in units of 158 + 1.024 microseconds. Transmit interrupt reduction can improve CPU 159 + efficiency if properly tuned for specific network traffic. If the 160 + system is reporting dropped transmits, this value may be set too high 161 + causing the driver to run out of available transmit descriptors. 162 + 163 + TxAbsIntDelay 164 + ------------- 165 + Valid Range: 0-65535 (0=off) 166 + Default Value: 32 167 + 168 + This value, in units of 1.024 microseconds, limits the delay in which a 169 + transmit interrupt is generated. Useful only if TxIntDelay is non-zero, 170 + this value ensures that an interrupt is generated after the initial 171 + packet is sent on the wire within the set amount of time. Proper tuning, 172 + along with TxIntDelay, may improve traffic throughput in specific 173 + network conditions. 174 + 175 + Copybreak 176 + --------- 177 + Valid Range: 0-xxxxxxx (0=off) 178 + Default Value: 256 179 + 180 + Driver copies all packets below or equaling this size to a fresh Rx 181 + buffer before handing it up the stack. 182 + 183 + This parameter is different than other parameters, in that it is a 184 + single (not 1,1,1 etc.) parameter applied to all driver instances and 185 + it is also available during runtime at 186 + /sys/module/e1000e/parameters/copybreak 187 + 188 + SmartPowerDownEnable 189 + -------------------- 190 + Valid Range: 0-1 191 + Default Value: 0 (disabled) 192 + 193 + Allows PHY to turn off in lower power states. The user can set this parameter 194 + in supported chipsets. 195 + 196 + KumeranLockLoss 197 + --------------- 198 + Valid Range: 0-1 199 + Default Value: 1 (enabled) 200 + 201 + This workaround skips resetting the PHY at shutdown for the initial 202 + silicon releases of ICH8 systems. 203 + 204 + IntMode 205 + ------- 206 + Valid Range: 0-2 (0=legacy, 1=MSI, 2=MSI-X) 207 + Default Value: 2 208 + 209 + Allows changing the interrupt mode at module load time, without requiring a 210 + recompile. If the driver load fails to enable a specific interrupt mode, the 211 + driver will try other interrupt modes, from least to most compatible. The 212 + interrupt order is MSI-X, MSI, Legacy. If specifying MSI (IntMode=1) 213 + interrupts, only MSI and Legacy will be attempted. 214 + 215 + CrcStripping 216 + ------------ 217 + Valid Range: 0-1 218 + Default Value: 1 (enabled) 219 + 220 + Strip the CRC from received packets before sending up the network stack. If 221 + you have a machine with a BMC enabled but cannot receive IPMI traffic after 222 + loading or enabling the driver, try disabling this feature. 223 + 224 + WriteProtectNVM 225 + --------------- 226 + Valid Range: 0-1 227 + Default Value: 1 (enabled) 228 + 229 + Set the hardware to ignore all write/erase cycles to the GbE region in the 230 + ICHx NVM (non-volatile memory). This feature can be disabled by the 231 + WriteProtectNVM module parameter (enabled by default) only after a hardware 232 + reset, but the machine must be power cycled before trying to enable writes. 233 + 234 + Note: the kernel boot option iomem=relaxed may need to be set if the kernel 235 + config option CONFIG_STRICT_DEVMEM=y, if the root user wants to write the 236 + NVM from user space via ethtool. 237 + 238 + Additional Configurations 239 + ========================= 240 + 241 + Jumbo Frames 242 + ------------ 243 + Jumbo Frames support is enabled by changing the MTU to a value larger than 244 + the default of 1500. Use the ifconfig command to increase the MTU size. 245 + For example: 246 + 247 + ifconfig eth<x> mtu 9000 up 248 + 249 + This setting is not saved across reboots. 250 + 251 + Notes: 252 + 253 + - The maximum MTU setting for Jumbo Frames is 9216. This value coincides 254 + with the maximum Jumbo Frames size of 9234 bytes. 255 + 256 + - Using Jumbo Frames at 10 or 100 Mbps is not supported and may result in 257 + poor performance or loss of link. 258 + 259 + - Some adapters limit Jumbo Frames sized packets to a maximum of 260 + 4096 bytes and some adapters do not support Jumbo Frames. 261 + 262 + 263 + Ethtool 264 + ------- 265 + The driver utilizes the ethtool interface for driver configuration and 266 + diagnostics, as well as displaying statistical information. We 267 + strongly recommend downloading the latest version of Ethtool at: 268 + 269 + http://sourceforge.net/projects/gkernel. 270 + 271 + Speed and Duplex 272 + ---------------- 273 + Speed and Duplex are configured through the Ethtool* utility. For 274 + instructions, refer to the Ethtool man page. 275 + 276 + Enabling Wake on LAN* (WoL) 277 + --------------------------- 278 + WoL is configured through the Ethtool* utility. For instructions on 279 + enabling WoL with Ethtool, refer to the Ethtool man page. 280 + 281 + 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 283 + loaded when shutting down or rebooting the system. 284 + 285 + 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>. 287 + 288 + 289 + Support 290 + ======= 291 + 292 + For general information, go to the Intel support website at: 293 + 294 + www.intel.com/support/ 295 + 296 + or the Intel Wired Networking project hosted by Sourceforge at: 297 + 298 + http://sourceforge.net/projects/e1000 299 + 300 + If an issue is identified with the released source code on the supported 301 + kernel with a supported adapter, email the specific information related 302 + to the issue to e1000-devel@lists.sf.net
+3 -37
Documentation/networking/ixgbevf.txt
··· 1 1 Linux* Base Driver for Intel(R) Network Connection 2 2 ================================================== 3 3 4 - November 24, 2009 4 + Intel Gigabit Linux driver. 5 + Copyright(c) 1999 - 2010 Intel Corporation. 5 6 6 7 Contents 7 8 ======== 8 9 9 - - In This Release 10 10 - Identifying Your Adapter 11 11 - Known Issues/Troubleshooting 12 12 - Support 13 - 14 - In This Release 15 - =============== 16 13 17 14 This file describes the ixgbevf Linux* Base Driver for Intel Network 18 15 Connection. ··· 30 33 For more information on how to identify your adapter, go to the Adapter & 31 34 Driver ID Guide at: 32 35 33 - http://support.intel.com/support/network/sb/CS-008441.htm 36 + http://support.intel.com/support/go/network/adapter/idguide.htm 34 37 35 38 Known Issues/Troubleshooting 36 39 ============================ ··· 54 57 If an issue is identified with the released source code on the supported 55 58 kernel with a supported adapter, email the specific information related 56 59 to the issue to e1000-devel@lists.sf.net 57 - 58 - License 59 - ======= 60 - 61 - Intel 10 Gigabit Linux driver. 62 - Copyright(c) 1999 - 2009 Intel Corporation. 63 - 64 - This program is free software; you can redistribute it and/or modify it 65 - under the terms and conditions of the GNU General Public License, 66 - version 2, as published by the Free Software Foundation. 67 - 68 - This program is distributed in the hope it will be useful, but WITHOUT 69 - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 70 - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 71 - more details. 72 - 73 - You should have received a copy of the GNU General Public License along with 74 - this program; if not, write to the Free Software Foundation, Inc., 75 - 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA. 76 - 77 - The full GNU General Public License is included in this distribution in 78 - the file called "COPYING". 79 - 80 - Trademarks 81 - ========== 82 - 83 - Intel, Itanium, and Pentium are trademarks or registered trademarks of 84 - Intel Corporation or its subsidiaries in the United States and other 85 - countries. 86 - 87 - * Other names and brands may be claimed as the property of others.
+14 -2
MAINTAINERS
··· 3073 3073 S: Maintained 3074 3074 F: drivers/net/ixp2000/ 3075 3075 3076 - INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe) 3076 + INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf) 3077 3077 M: Jeff Kirsher <jeffrey.t.kirsher@intel.com> 3078 3078 M: Jesse Brandeburg <jesse.brandeburg@intel.com> 3079 3079 M: Bruce Allan <bruce.w.allan@intel.com> 3080 - M: Alex Duyck <alexander.h.duyck@intel.com> 3080 + M: Carolyn Wyborny <carolyn.wyborny@intel.com> 3081 + M: Don Skidmore <donald.c.skidmore@intel.com> 3082 + M: Greg Rose <gregory.v.rose@intel.com> 3081 3083 M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> 3084 + M: Alex Duyck <alexander.h.duyck@intel.com> 3082 3085 M: John Ronciak <john.ronciak@intel.com> 3083 3086 L: e1000-devel@lists.sourceforge.net 3084 3087 W: http://e1000.sourceforge.net/ 3085 3088 S: Supported 3089 + F: Documentation/networking/e100.txt 3090 + F: Documentation/networking/e1000.txt 3091 + F: Documentation/networking/e1000e.txt 3092 + F: Documentation/networking/igb.txt 3093 + F: Documentation/networking/igbvf.txt 3094 + F: Documentation/networking/ixgb.txt 3095 + F: Documentation/networking/ixgbe.txt 3096 + F: Documentation/networking/ixgbevf.txt 3086 3097 F: drivers/net/e100.c 3087 3098 F: drivers/net/e1000/ 3088 3099 F: drivers/net/e1000e/ ··· 3101 3090 F: drivers/net/igbvf/ 3102 3091 F: drivers/net/ixgb/ 3103 3092 F: drivers/net/ixgbe/ 3093 + F: drivers/net/ixgbevf/ 3104 3094 3105 3095 INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT 3106 3096 L: linux-wireless@vger.kernel.org
+14 -4
drivers/isdn/sc/interrupt.c
··· 112 112 } 113 113 else if(callid>=0x0000 && callid<=0x7FFF) 114 114 { 115 + int len; 116 + 115 117 pr_debug("%s: Got Incoming Call\n", 116 118 sc_adapter[card]->devicename); 117 - strcpy(setup.phone,&(rcvmsg.msg_data.byte_array[4])); 118 - strcpy(setup.eazmsn, 119 - sc_adapter[card]->channel[rcvmsg.phy_link_no-1].dn); 119 + len = strlcpy(setup.phone, &(rcvmsg.msg_data.byte_array[4]), 120 + sizeof(setup.phone)); 121 + if (len >= sizeof(setup.phone)) 122 + continue; 123 + len = strlcpy(setup.eazmsn, 124 + sc_adapter[card]->channel[rcvmsg.phy_link_no - 1].dn, 125 + sizeof(setup.eazmsn)); 126 + if (len >= sizeof(setup.eazmsn)) 127 + continue; 120 128 setup.si1 = 7; 121 129 setup.si2 = 0; 122 130 setup.plan = 0; ··· 184 176 * Handle a GetMyNumber Rsp 185 177 */ 186 178 if (IS_CE_MESSAGE(rcvmsg,Call,0,GetMyNumber)){ 187 - strcpy(sc_adapter[card]->channel[rcvmsg.phy_link_no-1].dn,rcvmsg.msg_data.byte_array); 179 + strlcpy(sc_adapter[card]->channel[rcvmsg.phy_link_no - 1].dn, 180 + rcvmsg.msg_data.byte_array, 181 + sizeof(rcvmsg.msg_data.byte_array)); 188 182 continue; 189 183 } 190 184
+2 -2
drivers/net/Kconfig
··· 2428 2428 2429 2429 config MV643XX_ETH 2430 2430 tristate "Marvell Discovery (643XX) and Orion ethernet support" 2431 - depends on MV64X60 || PPC32 || PLAT_ORION 2431 + depends on (MV64X60 || PPC32 || PLAT_ORION) && INET 2432 2432 select INET_LRO 2433 2433 select PHYLIB 2434 2434 help ··· 2803 2803 2804 2804 config PASEMI_MAC 2805 2805 tristate "PA Semi 1/10Gbit MAC" 2806 - depends on PPC_PASEMI && PCI 2806 + depends on PPC_PASEMI && PCI && INET 2807 2807 select PHYLIB 2808 2808 select INET_LRO 2809 2809 help
+9
drivers/net/bonding/bond_main.c
··· 5164 5164 res = dev_alloc_name(bond_dev, "bond%d"); 5165 5165 if (res < 0) 5166 5166 goto out; 5167 + } else { 5168 + /* 5169 + * If we're given a name to register 5170 + * we need to ensure that its not already 5171 + * registered 5172 + */ 5173 + res = -EEXIST; 5174 + if (__dev_get_by_name(net, name) != NULL) 5175 + goto out; 5167 5176 } 5168 5177 5169 5178 res = register_netdevice(bond_dev);
+17 -1
drivers/net/skge.c
··· 43 43 #include <linux/seq_file.h> 44 44 #include <linux/mii.h> 45 45 #include <linux/slab.h> 46 + #include <linux/dmi.h> 46 47 #include <asm/irq.h> 47 48 48 49 #include "skge.h" ··· 3869 3868 netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); 3870 3869 } 3871 3870 3871 + static int only_32bit_dma; 3872 + 3872 3873 static int __devinit skge_probe(struct pci_dev *pdev, 3873 3874 const struct pci_device_id *ent) 3874 3875 { ··· 3892 3889 3893 3890 pci_set_master(pdev); 3894 3891 3895 - if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { 3892 + if (!only_32bit_dma && !pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { 3896 3893 using_dac = 1; 3897 3894 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); 3898 3895 } else if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { ··· 4150 4147 .shutdown = skge_shutdown, 4151 4148 }; 4152 4149 4150 + static struct dmi_system_id skge_32bit_dma_boards[] = { 4151 + { 4152 + .ident = "Gigabyte nForce boards", 4153 + .matches = { 4154 + DMI_MATCH(DMI_BOARD_VENDOR, "Gigabyte Technology Co"), 4155 + DMI_MATCH(DMI_BOARD_NAME, "nForce"), 4156 + }, 4157 + }, 4158 + {} 4159 + }; 4160 + 4153 4161 static int __init skge_init_module(void) 4154 4162 { 4163 + if (dmi_check_system(skge_32bit_dma_boards)) 4164 + only_32bit_dma = 1; 4155 4165 skge_debug_init(); 4156 4166 return pci_register_driver(&skge_driver); 4157 4167 }
+1 -1
drivers/net/wireless/ath/ath9k/ani.c
··· 543 543 if (conf_is_ht40(conf)) 544 544 return clockrate * 2; 545 545 546 - return clockrate * 2; 546 + return clockrate; 547 547 } 548 548 549 549 static int32_t ath9k_hw_ani_get_listen_time(struct ath_hw *ah)
+18
include/net/bluetooth/bluetooth.h
··· 161 161 { 162 162 struct sk_buff *skb; 163 163 164 + release_sock(sk); 164 165 if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) { 165 166 skb_reserve(skb, BT_SKB_RESERVE); 166 167 bt_cb(skb)->incoming = 0; 167 168 } 169 + lock_sock(sk); 170 + 171 + if (!skb && *err) 172 + return NULL; 173 + 174 + *err = sock_error(sk); 175 + if (*err) 176 + goto out; 177 + 178 + if (sk->sk_shutdown) { 179 + *err = -ECONNRESET; 180 + goto out; 181 + } 168 182 169 183 return skb; 184 + 185 + out: 186 + kfree_skb(skb); 187 + return NULL; 170 188 } 171 189 172 190 int bt_err(__u16 code);
+29 -33
net/bluetooth/l2cap.c
··· 1441 1441 1442 1442 static void l2cap_streaming_send(struct sock *sk) 1443 1443 { 1444 - struct sk_buff *skb, *tx_skb; 1444 + struct sk_buff *skb; 1445 1445 struct l2cap_pinfo *pi = l2cap_pi(sk); 1446 1446 u16 control, fcs; 1447 1447 1448 - while ((skb = sk->sk_send_head)) { 1449 - tx_skb = skb_clone(skb, GFP_ATOMIC); 1450 - 1451 - control = get_unaligned_le16(tx_skb->data + L2CAP_HDR_SIZE); 1448 + while ((skb = skb_dequeue(TX_QUEUE(sk)))) { 1449 + control = get_unaligned_le16(skb->data + L2CAP_HDR_SIZE); 1452 1450 control |= pi->next_tx_seq << L2CAP_CTRL_TXSEQ_SHIFT; 1453 - put_unaligned_le16(control, tx_skb->data + L2CAP_HDR_SIZE); 1451 + put_unaligned_le16(control, skb->data + L2CAP_HDR_SIZE); 1454 1452 1455 1453 if (pi->fcs == L2CAP_FCS_CRC16) { 1456 - fcs = crc16(0, (u8 *)tx_skb->data, tx_skb->len - 2); 1457 - put_unaligned_le16(fcs, tx_skb->data + tx_skb->len - 2); 1454 + fcs = crc16(0, (u8 *)skb->data, skb->len - 2); 1455 + put_unaligned_le16(fcs, skb->data + skb->len - 2); 1458 1456 } 1459 1457 1460 - l2cap_do_send(sk, tx_skb); 1458 + l2cap_do_send(sk, skb); 1461 1459 1462 1460 pi->next_tx_seq = (pi->next_tx_seq + 1) % 64; 1463 - 1464 - if (skb_queue_is_last(TX_QUEUE(sk), skb)) 1465 - sk->sk_send_head = NULL; 1466 - else 1467 - sk->sk_send_head = skb_queue_next(TX_QUEUE(sk), skb); 1468 - 1469 - skb = skb_dequeue(TX_QUEUE(sk)); 1470 - kfree_skb(skb); 1471 1461 } 1472 1462 } 1473 1463 ··· 1950 1960 1951 1961 switch (optname) { 1952 1962 case L2CAP_OPTIONS: 1963 + if (sk->sk_state == BT_CONNECTED) { 1964 + err = -EINVAL; 1965 + break; 1966 + } 1967 + 1953 1968 opts.imtu = l2cap_pi(sk)->imtu; 1954 1969 opts.omtu = l2cap_pi(sk)->omtu; 1955 1970 opts.flush_to = l2cap_pi(sk)->flush_to; ··· 2766 2771 case L2CAP_CONF_MTU: 2767 2772 if (val < L2CAP_DEFAULT_MIN_MTU) { 2768 2773 *result = L2CAP_CONF_UNACCEPT; 2769 - pi->omtu = L2CAP_DEFAULT_MIN_MTU; 2774 + pi->imtu = L2CAP_DEFAULT_MIN_MTU; 2770 2775 } else 2771 - pi->omtu = val; 2772 - l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->omtu); 2776 + pi->imtu = val; 2777 + l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu); 2773 2778 break; 2774 2779 2775 2780 case L2CAP_CONF_FLUSH_TO: ··· 3066 3071 return 0; 3067 3072 } 3068 3073 3074 + static inline void set_default_fcs(struct l2cap_pinfo *pi) 3075 + { 3076 + /* FCS is enabled only in ERTM or streaming mode, if one or both 3077 + * sides request it. 3078 + */ 3079 + if (pi->mode != L2CAP_MODE_ERTM && pi->mode != L2CAP_MODE_STREAMING) 3080 + pi->fcs = L2CAP_FCS_NONE; 3081 + else if (!(pi->conf_state & L2CAP_CONF_NO_FCS_RECV)) 3082 + pi->fcs = L2CAP_FCS_CRC16; 3083 + } 3084 + 3069 3085 static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u16 cmd_len, u8 *data) 3070 3086 { 3071 3087 struct l2cap_conf_req *req = (struct l2cap_conf_req *) data; ··· 3094 3088 if (!sk) 3095 3089 return -ENOENT; 3096 3090 3097 - if (sk->sk_state != BT_CONFIG) { 3098 - struct l2cap_cmd_rej rej; 3099 - 3100 - rej.reason = cpu_to_le16(0x0002); 3101 - l2cap_send_cmd(conn, cmd->ident, L2CAP_COMMAND_REJ, 3102 - sizeof(rej), &rej); 3091 + if (sk->sk_state == BT_DISCONN) 3103 3092 goto unlock; 3104 - } 3105 3093 3106 3094 /* Reject if config buffer is too small. */ 3107 3095 len = cmd_len - sizeof(*req); ··· 3135 3135 goto unlock; 3136 3136 3137 3137 if (l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE) { 3138 - if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_NO_FCS_RECV) || 3139 - l2cap_pi(sk)->fcs != L2CAP_FCS_NONE) 3140 - l2cap_pi(sk)->fcs = L2CAP_FCS_CRC16; 3138 + set_default_fcs(l2cap_pi(sk)); 3141 3139 3142 3140 sk->sk_state = BT_CONNECTED; 3143 3141 ··· 3223 3225 l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE; 3224 3226 3225 3227 if (l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE) { 3226 - if (!(l2cap_pi(sk)->conf_state & L2CAP_CONF_NO_FCS_RECV) || 3227 - l2cap_pi(sk)->fcs != L2CAP_FCS_NONE) 3228 - l2cap_pi(sk)->fcs = L2CAP_FCS_CRC16; 3228 + set_default_fcs(l2cap_pi(sk)); 3229 3229 3230 3230 sk->sk_state = BT_CONNECTED; 3231 3231 l2cap_pi(sk)->next_tx_seq = 0;
+4
net/bluetooth/rfcomm/sock.c
··· 82 82 static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err) 83 83 { 84 84 struct sock *sk = d->owner, *parent; 85 + unsigned long flags; 86 + 85 87 if (!sk) 86 88 return; 87 89 88 90 BT_DBG("dlc %p state %ld err %d", d, d->state, err); 89 91 92 + local_irq_save(flags); 90 93 bh_lock_sock(sk); 91 94 92 95 if (err) ··· 111 108 } 112 109 113 110 bh_unlock_sock(sk); 111 + local_irq_restore(flags); 114 112 115 113 if (parent && sock_flag(sk, SOCK_ZAPPED)) { 116 114 /* We have to drop DLC lock here, otherwise
+15 -6
net/caif/caif_socket.c
··· 827 827 long timeo; 828 828 int err; 829 829 int ifindex, headroom, tailroom; 830 + unsigned int mtu; 830 831 struct net_device *dev; 831 832 832 833 lock_sock(sk); ··· 897 896 cf_sk->sk.sk_state = CAIF_DISCONNECTED; 898 897 goto out; 899 898 } 900 - dev = dev_get_by_index(sock_net(sk), ifindex); 899 + 900 + err = -ENODEV; 901 + rcu_read_lock(); 902 + dev = dev_get_by_index_rcu(sock_net(sk), ifindex); 903 + if (!dev) { 904 + rcu_read_unlock(); 905 + goto out; 906 + } 901 907 cf_sk->headroom = LL_RESERVED_SPACE_EXTRA(dev, headroom); 908 + mtu = dev->mtu; 909 + rcu_read_unlock(); 910 + 902 911 cf_sk->tailroom = tailroom; 903 - cf_sk->maxframe = dev->mtu - (headroom + tailroom); 904 - dev_put(dev); 912 + cf_sk->maxframe = mtu - (headroom + tailroom); 905 913 if (cf_sk->maxframe < 1) { 906 - pr_warning("CAIF: %s(): CAIF Interface MTU too small (%d)\n", 907 - __func__, dev->mtu); 908 - err = -ENODEV; 914 + pr_warning("CAIF: %s(): CAIF Interface MTU too small (%u)\n", 915 + __func__, mtu); 909 916 goto out; 910 917 } 911 918
+1 -1
net/core/ethtool.c
··· 348 348 if (info.cmd == ETHTOOL_GRXCLSRLALL) { 349 349 if (info.rule_cnt > 0) { 350 350 if (info.rule_cnt <= KMALLOC_MAX_SIZE / sizeof(u32)) 351 - rule_buf = kmalloc(info.rule_cnt * sizeof(u32), 351 + rule_buf = kzalloc(info.rule_cnt * sizeof(u32), 352 352 GFP_USER); 353 353 if (!rule_buf) 354 354 return -ENOMEM;
+4 -4
net/core/stream.c
··· 141 141 142 142 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); 143 143 sk->sk_write_pending++; 144 - sk_wait_event(sk, &current_timeo, !sk->sk_err && 145 - !(sk->sk_shutdown & SEND_SHUTDOWN) && 146 - sk_stream_memory_free(sk) && 147 - vm_wait); 144 + sk_wait_event(sk, &current_timeo, sk->sk_err || 145 + (sk->sk_shutdown & SEND_SHUTDOWN) || 146 + (sk_stream_memory_free(sk) && 147 + !vm_wait)); 148 148 sk->sk_write_pending--; 149 149 150 150 if (vm_wait) {
+1 -1
net/ipv4/Kconfig
··· 413 413 If unsure, say Y. 414 414 415 415 config INET_LRO 416 - bool "Large Receive Offload (ipv4/tcp)" 416 + tristate "Large Receive Offload (ipv4/tcp)" 417 417 default y 418 418 ---help--- 419 419 Support for Large Receive Offload (ipv4/tcp).
+13 -1
net/ipv4/igmp.c
··· 834 834 int mark = 0; 835 835 836 836 837 - if (len == 8 || IGMP_V2_SEEN(in_dev)) { 837 + if (len == 8) { 838 838 if (ih->code == 0) { 839 839 /* Alas, old v1 router presents here. */ 840 840 ··· 856 856 igmpv3_clear_delrec(in_dev); 857 857 } else if (len < 12) { 858 858 return; /* ignore bogus packet; freed by caller */ 859 + } else if (IGMP_V1_SEEN(in_dev)) { 860 + /* This is a v3 query with v1 queriers present */ 861 + max_delay = IGMP_Query_Response_Interval; 862 + group = 0; 863 + } else if (IGMP_V2_SEEN(in_dev)) { 864 + /* this is a v3 query with v2 queriers present; 865 + * Interpretation of the max_delay code is problematic here. 866 + * A real v2 host would use ih_code directly, while v3 has a 867 + * different encoding. We use the v3 encoding as more likely 868 + * to be intended in a v3 query. 869 + */ 870 + max_delay = IGMPV3_MRC(ih3->code)*(HZ/IGMP_TIMER_SCALE); 859 871 } else { /* v3 */ 860 872 if (!pskb_may_pull(skb, sizeof(struct igmpv3_query))) 861 873 return;
+24 -4
net/ipv6/route.c
··· 1556 1556 * i.e. Path MTU discovery 1557 1557 */ 1558 1558 1559 - void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr, 1560 - struct net_device *dev, u32 pmtu) 1559 + static void rt6_do_pmtu_disc(struct in6_addr *daddr, struct in6_addr *saddr, 1560 + struct net *net, u32 pmtu, int ifindex) 1561 1561 { 1562 1562 struct rt6_info *rt, *nrt; 1563 - struct net *net = dev_net(dev); 1564 1563 int allfrag = 0; 1565 1564 1566 - rt = rt6_lookup(net, daddr, saddr, dev->ifindex, 0); 1565 + rt = rt6_lookup(net, daddr, saddr, ifindex, 0); 1567 1566 if (rt == NULL) 1568 1567 return; 1569 1568 ··· 1628 1629 } 1629 1630 out: 1630 1631 dst_release(&rt->dst); 1632 + } 1633 + 1634 + void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr, 1635 + struct net_device *dev, u32 pmtu) 1636 + { 1637 + struct net *net = dev_net(dev); 1638 + 1639 + /* 1640 + * RFC 1981 states that a node "MUST reduce the size of the packets it 1641 + * is sending along the path" that caused the Packet Too Big message. 1642 + * Since it's not possible in the general case to determine which 1643 + * interface was used to send the original packet, we update the MTU 1644 + * on the interface that will be used to send future packets. We also 1645 + * update the MTU on the interface that received the Packet Too Big in 1646 + * case the original packet was forced out that interface with 1647 + * SO_BINDTODEVICE or similar. This is the next best thing to the 1648 + * correct behaviour, which would be to update the MTU on all 1649 + * interfaces. 1650 + */ 1651 + rt6_do_pmtu_disc(daddr, saddr, net, pmtu, 0); 1652 + rt6_do_pmtu_disc(daddr, saddr, net, pmtu, dev->ifindex); 1631 1653 } 1632 1654 1633 1655 /*
+2
net/mac80211/agg-tx.c
··· 175 175 176 176 set_bit(HT_AGG_STATE_STOPPING, &tid_tx->state); 177 177 178 + del_timer_sync(&tid_tx->addba_resp_timer); 179 + 178 180 /* 179 181 * After this packets are no longer handed right through 180 182 * to the driver but are put onto tid_tx->pending instead,
+2 -2
net/mac80211/status.c
··· 377 377 skb2 = skb_clone(skb, GFP_ATOMIC); 378 378 if (skb2) { 379 379 skb2->dev = prev_dev; 380 - netif_receive_skb(skb2); 380 + netif_rx(skb2); 381 381 } 382 382 } 383 383 ··· 386 386 } 387 387 if (prev_dev) { 388 388 skb->dev = prev_dev; 389 - netif_receive_skb(skb); 389 + netif_rx(skb); 390 390 skb = NULL; 391 391 } 392 392 rcu_read_unlock();
+1 -1
net/sched/cls_u32.c
··· 137 137 int toff = off + key->off + (off2 & key->offmask); 138 138 __be32 *data, _data; 139 139 140 - if (skb_headroom(skb) + toff < 0) 140 + if (skb_headroom(skb) + toff > INT_MAX) 141 141 goto out; 142 142 143 143 data = skb_header_pointer(skb, toff, 4, &_data);
+6 -2
net/sctp/auth.c
··· 543 543 id = ntohs(hmacs->hmac_ids[i]); 544 544 545 545 /* Check the id is in the supported range */ 546 - if (id > SCTP_AUTH_HMAC_ID_MAX) 546 + if (id > SCTP_AUTH_HMAC_ID_MAX) { 547 + id = 0; 547 548 continue; 549 + } 548 550 549 551 /* See is we support the id. Supported IDs have name and 550 552 * length fields set, so that we can allocated and use 551 553 * them. We can safely just check for name, for without the 552 554 * name, we can't allocate the TFM. 553 555 */ 554 - if (!sctp_hmac_list[id].hmac_name) 556 + if (!sctp_hmac_list[id].hmac_name) { 557 + id = 0; 555 558 continue; 559 + } 556 560 557 561 break; 558 562 }
+12 -1
net/sctp/socket.c
··· 916 916 /* Walk through the addrs buffer and count the number of addresses. */ 917 917 addr_buf = kaddrs; 918 918 while (walk_size < addrs_size) { 919 + if (walk_size + sizeof(sa_family_t) > addrs_size) { 920 + kfree(kaddrs); 921 + return -EINVAL; 922 + } 923 + 919 924 sa_addr = (struct sockaddr *)addr_buf; 920 925 af = sctp_get_af_specific(sa_addr->sa_family); 921 926 ··· 1007 1002 /* Walk through the addrs buffer and count the number of addresses. */ 1008 1003 addr_buf = kaddrs; 1009 1004 while (walk_size < addrs_size) { 1005 + if (walk_size + sizeof(sa_family_t) > addrs_size) { 1006 + err = -EINVAL; 1007 + goto out_free; 1008 + } 1009 + 1010 1010 sa_addr = (union sctp_addr *)addr_buf; 1011 1011 af = sctp_get_af_specific(sa_addr->sa.sa_family); 1012 - port = ntohs(sa_addr->v4.sin_port); 1013 1012 1014 1013 /* If the address family is not supported or if this address 1015 1014 * causes the address buffer to overflow return EINVAL. ··· 1022 1013 err = -EINVAL; 1023 1014 goto out_free; 1024 1015 } 1016 + 1017 + port = ntohs(sa_addr->v4.sin_port); 1025 1018 1026 1019 /* Save current address so we can work with it */ 1027 1020 memcpy(&to, sa_addr, af->sockaddr_len);