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 Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters 2 =============================================================== 3 4 - September 26, 2006 5 - 6 7 Contents 8 ======== 9 10 - - In This Release 11 - Identifying Your Adapter 12 - - Building and Installation 13 - Command Line Parameters 14 - Speed and Duplex Configuration 15 - Additional Configurations 16 - - Known Issues 17 - 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 49 Identifying Your Adapter 50 ======================== ··· 19 For more information on how to identify your adapter, go to the Adapter & 20 Driver ID Guide at: 21 22 - http://support.intel.com/support/network/adapter/pro100/21397.htm 23 24 For the latest Intel network drivers for Linux, refer to the following 25 website. In the search field, enter your adapter name or type, or use the 26 networking link on the left to search for your adapter: 27 28 - http://downloadfinder.intel.com/scripts-df/support_intel.asp 29 - 30 31 Command Line Parameters 32 ======================= 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 47 The default value for each parameter is generally the recommended setting, 48 unless otherwise noted. ··· 41 RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay 42 parameters, see the application note at: 43 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 49 AutoNeg 50 ------- ··· 55 NOTE: Refer to the Speed and Duplex section of this readme for more 56 information on the AutoNeg parameter. 57 58 - 59 Duplex 60 ------ 61 (Supported only on adapters with copper connections) ··· 67 link partner is forced (either full or half), Duplex defaults to half- 68 duplex. 69 70 - 71 FlowControl 72 ----------- 73 Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) ··· 75 This parameter controls the automatic generation(Tx) and response(Rx) 76 to Ethernet PAUSE frames. 77 78 - 79 InterruptThrottleRate 80 --------------------- 81 (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) 83 Default Value: 3 84 85 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 88 will generate per second. 89 90 Setting InterruptThrottleRate to a value greater or equal to 100 ··· 93 load on the system and can lower CPU utilization under heavy load, 94 but will increase latency as packets are not processed as quickly. 95 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 100 for this reason an adaptive interrupt moderation algorithm was implemented. 101 102 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 104 that it receives. After determining the type of incoming traffic in the last 105 - timeframe, it will adjust the InterruptThrottleRate to an appropriate value 106 for that traffic. 107 108 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: 111 "Bulk traffic", for large amounts of packets of normal size; "Low latency", 112 for small amounts of traffic and/or a significant percentage of small 113 - packets; and "Lowest latency", for almost completely small packets or 114 minimal traffic. 115 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 119 stepwise to 20000. This default mode is suitable for most applications. 120 121 For situations where low latency is vital such as cluster or 122 grid computing, the algorithm can reduce latency even more when 123 InterruptThrottleRate is set to mode 1. In this mode, which operates 124 - the same as mode 3, the InterruptThrottleRate will be increased stepwise to 125 70000 for traffic in class "Lowest latency". 126 127 Setting InterruptThrottleRate to 0 turns off any interrupt moderation 128 and may improve small packet latency, but is generally not suitable ··· 165 be platform-specific. If CPU utilization is not a concern, use 166 RX_POLLING (NAPI) and default driver settings. 167 168 - 169 - 170 RxDescriptors 171 ------------- 172 Valid Range: 80-256 for 82542 and 82543-based adapters ··· 176 incoming packets, at the expense of increased system memory utilization. 177 178 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 180 on the MTU setting. The maximum MTU size is 16110. 181 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 185 case, use a lower number. 186 - 187 188 RxIntDelay 189 ---------- ··· 204 restoring the network connection. To eliminate the potential 205 for the hang ensure that RxIntDelay is set to 0. 206 207 - 208 RxAbsIntDelay 209 ------------- 210 (This parameter is supported only on 82540, 82545 and later adapters.) ··· 217 along with RxIntDelay, may improve traffic throughput in specific network 218 conditions. 219 220 - 221 Speed 222 ----- 223 (This parameter is supported only on adapters with copper connections.) ··· 227 (Mbps). If this parameter is not specified or is set to 0 and the link 228 partner is set to auto-negotiate, the board will auto-detect the correct 229 speed. Duplex should also be set when Speed is set to either 10 or 100. 230 - 231 232 TxDescriptors 233 ------------- ··· 242 higher number of transmit descriptors may be denied. In this case, 243 use a lower number. 244 245 246 TxIntDelay 247 ---------- ··· 283 efficiency if properly tuned for specific network traffic. If the 284 system is reporting dropped transmits, this value may be set too high 285 causing the driver to run out of available transmit descriptors. 286 - 287 288 TxAbsIntDelay 289 ------------- ··· 306 A value of '1' indicates that the driver should enable IP checksum 307 offload for received packets (both UDP and TCP) to the adapter hardware. 308 309 310 Speed and Duplex Configuration 311 ============================== ··· 390 parameter should not be used. Instead, use the Speed and Duplex parameters 391 previously mentioned to force the adapter to the same speed and duplex. 392 393 - 394 Additional Configurations 395 ========================= 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 427 Jumbo Frames 428 ------------ ··· 411 setting in a different location. 412 413 Notes: 414 - 415 - - To enable Jumbo Frames, increase the MTU size on the interface beyond 416 - 1500. 417 418 - The maximum MTU setting for Jumbo Frames is 16110. This value coincides 419 with the maximum Jumbo Frames size of 16128. ··· 423 - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or 424 loss of link. 425 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 - Adapters based on the Intel(R) 82542 and 82573V/E controller do not 446 support Jumbo Frames. These correspond to the following product names: 447 Intel(R) PRO/1000 Gigabit Server Adapter 448 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 460 Ethtool 461 ------- ··· 437 The latest release of ethtool can be found from 438 http://sourceforge.net/projects/gkernel. 439 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 Enabling Wake on LAN* (WoL) 445 --------------------------- 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. 453 454 WoL will be enabled on the system during the next shut down or reboot. 455 For this driver version, in order to enable WoL, the e1000 driver must be 456 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 576 Support 577 =======
··· 1 Linux* Base Driver for the Intel(R) PRO/1000 Family of Adapters 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 - Speed and Duplex Configuration 13 - Additional Configurations 14 - Support 15 16 Identifying Your Adapter 17 ======================== ··· 52 For more information on how to identify your adapter, go to the Adapter & 53 Driver ID Guide at: 54 55 + http://support.intel.com/support/go/network/adapter/idguide.htm 56 57 For the latest Intel network drivers for Linux, refer to the following 58 website. In the search field, enter your adapter name or type, or use the 59 networking link on the left to search for your adapter: 60 61 + http://support.intel.com/support/go/network/adapter/home.htm 62 63 Command Line Parameters 64 ======================= 65 66 The default value for each parameter is generally the recommended setting, 67 unless otherwise noted. ··· 88 RxIntDelay, TxIntDelay, RxAbsIntDelay, and TxAbsIntDelay 89 parameters, see the application note at: 90 http://www.intel.com/design/network/applnots/ap450.htm 91 92 AutoNeg 93 ------- ··· 106 NOTE: Refer to the Speed and Duplex section of this readme for more 107 information on the AutoNeg parameter. 108 109 Duplex 110 ------ 111 (Supported only on adapters with copper connections) ··· 119 link partner is forced (either full or half), Duplex defaults to half- 120 duplex. 121 122 FlowControl 123 ----------- 124 Valid Range: 0-3 (0=none, 1=Rx only, 2=Tx only, 3=Rx&Tx) ··· 128 This parameter controls the automatic generation(Tx) and response(Rx) 129 to Ethernet PAUSE frames. 130 131 InterruptThrottleRate 132 --------------------- 133 (not supported on Intel(R) 82542, 82543 or 82544-based adapters) 134 + Valid Range: 0,1,3,4,100-100000 (0=off, 1=dynamic, 3=dynamic conservative, 135 + 4=simplified balancing) 136 Default Value: 3 137 138 The driver can limit the amount of interrupts per second 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 141 will generate per second. 142 143 Setting InterruptThrottleRate to a value greater or equal to 100 ··· 146 load on the system and can lower CPU utilization under heavy load, 147 but will increase latency as packets are not processed as quickly. 148 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 153 for this reason an adaptive interrupt moderation algorithm was implemented. 154 155 Since 7.3.x, the driver has two adaptive modes (setting 1 or 3) in which 156 + it dynamically adjusts the InterruptThrottleRate value based on the traffic 157 that it receives. After determining the type of incoming traffic in the last 158 + timeframe, it will adjust the InterruptThrottleRate to an appropriate value 159 for that traffic. 160 161 The algorithm classifies the incoming traffic every interval into 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: 164 "Bulk traffic", for large amounts of packets of normal size; "Low latency", 165 for small amounts of traffic and/or a significant percentage of small 166 + packets; and "Lowest latency", for almost completely small packets or 167 minimal traffic. 168 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 172 stepwise to 20000. This default mode is suitable for most applications. 173 174 For situations where low latency is vital such as cluster or 175 grid computing, the algorithm can reduce latency even more when 176 InterruptThrottleRate is set to mode 1. In this mode, which operates 177 + the same as mode 3, the InterruptThrottleRate will be increased stepwise to 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. 185 186 Setting InterruptThrottleRate to 0 turns off any interrupt moderation 187 and may improve small packet latency, but is generally not suitable ··· 212 be platform-specific. If CPU utilization is not a concern, use 213 RX_POLLING (NAPI) and default driver settings. 214 215 RxDescriptors 216 ------------- 217 Valid Range: 80-256 for 82542 and 82543-based adapters ··· 225 incoming packets, at the expense of increased system memory utilization. 226 227 Each descriptor is 16 bytes. A receive buffer is also allocated for each 228 + descriptor and can be either 2048, 4096, 8192, or 16384 bytes, depending 229 on the MTU setting. The maximum MTU size is 16110. 230 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 234 case, use a lower number. 235 236 RxIntDelay 237 ---------- ··· 254 restoring the network connection. To eliminate the potential 255 for the hang ensure that RxIntDelay is set to 0. 256 257 RxAbsIntDelay 258 ------------- 259 (This parameter is supported only on 82540, 82545 and later adapters.) ··· 268 along with RxIntDelay, may improve traffic throughput in specific network 269 conditions. 270 271 Speed 272 ----- 273 (This parameter is supported only on adapters with copper connections.) ··· 279 (Mbps). If this parameter is not specified or is set to 0 and the link 280 partner is set to auto-negotiate, the board will auto-detect the correct 281 speed. Duplex should also be set when Speed is set to either 10 or 100. 282 283 TxDescriptors 284 ------------- ··· 295 higher number of transmit descriptors may be denied. In this case, 296 use a lower number. 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. 328 329 TxIntDelay 330 ---------- ··· 306 efficiency if properly tuned for specific network traffic. If the 307 system is reporting dropped transmits, this value may be set too high 308 causing the driver to run out of available transmit descriptors. 309 310 TxAbsIntDelay 311 ------------- ··· 330 A value of '1' indicates that the driver should enable IP checksum 331 offload for received packets (both UDP and TCP) to the adapter hardware. 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. 362 363 Speed and Duplex Configuration 364 ============================== ··· 385 parameter should not be used. Instead, use the Speed and Duplex parameters 386 previously mentioned to force the adapter to the same speed and duplex. 387 388 Additional Configurations 389 ========================= 390 391 Jumbo Frames 392 ------------ ··· 437 setting in a different location. 438 439 Notes: 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. 445 446 - The maximum MTU setting for Jumbo Frames is 16110. This value coincides 447 with the maximum Jumbo Frames size of 16128. ··· 447 - Using Jumbo Frames at 10 or 100 Mbps may result in poor performance or 448 loss of link. 449 450 - Adapters based on the Intel(R) 82542 and 82573V/E controller do not 451 support Jumbo Frames. These correspond to the following product names: 452 Intel(R) PRO/1000 Gigabit Server Adapter 453 Intel(R) PRO/1000 PM Network Connection 454 455 Ethtool 456 ------- ··· 490 The latest release of ethtool can be found from 491 http://sourceforge.net/projects/gkernel. 492 493 Enabling Wake on LAN* (WoL) 494 --------------------------- 495 + WoL is configured through the Ethtool* utility. 496 497 WoL will be enabled on the system during the next shut down or reboot. 498 For this driver version, in order to enable WoL, the e1000 driver must be 499 loaded when shutting down or rebooting the system. 500 501 Support 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 Linux* Base Driver for Intel(R) Network Connection 2 ================================================== 3 4 - November 24, 2009 5 6 Contents 7 ======== 8 9 - - In This Release 10 - Identifying Your Adapter 11 - Known Issues/Troubleshooting 12 - Support 13 - 14 - In This Release 15 - =============== 16 17 This file describes the ixgbevf Linux* Base Driver for Intel Network 18 Connection. ··· 30 For more information on how to identify your adapter, go to the Adapter & 31 Driver ID Guide at: 32 33 - http://support.intel.com/support/network/sb/CS-008441.htm 34 35 Known Issues/Troubleshooting 36 ============================ ··· 54 If an issue is identified with the released source code on the supported 55 kernel with a supported adapter, email the specific information related 56 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.
··· 1 Linux* Base 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 - Known Issues/Troubleshooting 12 - Support 13 14 This file describes the ixgbevf Linux* Base Driver for Intel Network 15 Connection. ··· 33 For more information on how to identify your adapter, go to the Adapter & 34 Driver ID Guide at: 35 36 + http://support.intel.com/support/go/network/adapter/idguide.htm 37 38 Known Issues/Troubleshooting 39 ============================ ··· 57 If an issue is identified with the released source code on the supported 58 kernel with a supported adapter, email the specific information related 59 to the issue to e1000-devel@lists.sf.net
+14 -2
MAINTAINERS
··· 3073 S: Maintained 3074 F: drivers/net/ixp2000/ 3075 3076 - INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe) 3077 M: Jeff Kirsher <jeffrey.t.kirsher@intel.com> 3078 M: Jesse Brandeburg <jesse.brandeburg@intel.com> 3079 M: Bruce Allan <bruce.w.allan@intel.com> 3080 - M: Alex Duyck <alexander.h.duyck@intel.com> 3081 M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> 3082 M: John Ronciak <john.ronciak@intel.com> 3083 L: e1000-devel@lists.sourceforge.net 3084 W: http://e1000.sourceforge.net/ 3085 S: Supported 3086 F: drivers/net/e100.c 3087 F: drivers/net/e1000/ 3088 F: drivers/net/e1000e/ ··· 3101 F: drivers/net/igbvf/ 3102 F: drivers/net/ixgb/ 3103 F: drivers/net/ixgbe/ 3104 3105 INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT 3106 L: linux-wireless@vger.kernel.org
··· 3073 S: Maintained 3074 F: drivers/net/ixp2000/ 3075 3076 + INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf) 3077 M: Jeff Kirsher <jeffrey.t.kirsher@intel.com> 3078 M: Jesse Brandeburg <jesse.brandeburg@intel.com> 3079 M: Bruce Allan <bruce.w.allan@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> 3083 M: PJ Waskiewicz <peter.p.waskiewicz.jr@intel.com> 3084 + M: Alex Duyck <alexander.h.duyck@intel.com> 3085 M: John Ronciak <john.ronciak@intel.com> 3086 L: e1000-devel@lists.sourceforge.net 3087 W: http://e1000.sourceforge.net/ 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 3097 F: drivers/net/e100.c 3098 F: drivers/net/e1000/ 3099 F: drivers/net/e1000e/ ··· 3090 F: drivers/net/igbvf/ 3091 F: drivers/net/ixgb/ 3092 F: drivers/net/ixgbe/ 3093 + F: drivers/net/ixgbevf/ 3094 3095 INTEL PRO/WIRELESS 2100 NETWORK CONNECTION SUPPORT 3096 L: linux-wireless@vger.kernel.org
+14 -4
drivers/isdn/sc/interrupt.c
··· 112 } 113 else if(callid>=0x0000 && callid<=0x7FFF) 114 { 115 pr_debug("%s: Got Incoming Call\n", 116 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); 120 setup.si1 = 7; 121 setup.si2 = 0; 122 setup.plan = 0; ··· 184 * Handle a GetMyNumber Rsp 185 */ 186 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); 188 continue; 189 } 190
··· 112 } 113 else if(callid>=0x0000 && callid<=0x7FFF) 114 { 115 + int len; 116 + 117 pr_debug("%s: Got Incoming Call\n", 118 sc_adapter[card]->devicename); 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; 128 setup.si1 = 7; 129 setup.si2 = 0; 130 setup.plan = 0; ··· 176 * Handle a GetMyNumber Rsp 177 */ 178 if (IS_CE_MESSAGE(rcvmsg,Call,0,GetMyNumber)){ 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)); 182 continue; 183 } 184
+2 -2
drivers/net/Kconfig
··· 2428 2429 config MV643XX_ETH 2430 tristate "Marvell Discovery (643XX) and Orion ethernet support" 2431 - depends on MV64X60 || PPC32 || PLAT_ORION 2432 select INET_LRO 2433 select PHYLIB 2434 help ··· 2803 2804 config PASEMI_MAC 2805 tristate "PA Semi 1/10Gbit MAC" 2806 - depends on PPC_PASEMI && PCI 2807 select PHYLIB 2808 select INET_LRO 2809 help
··· 2428 2429 config MV643XX_ETH 2430 tristate "Marvell Discovery (643XX) and Orion ethernet support" 2431 + depends on (MV64X60 || PPC32 || PLAT_ORION) && INET 2432 select INET_LRO 2433 select PHYLIB 2434 help ··· 2803 2804 config PASEMI_MAC 2805 tristate "PA Semi 1/10Gbit MAC" 2806 + depends on PPC_PASEMI && PCI && INET 2807 select PHYLIB 2808 select INET_LRO 2809 help
+9
drivers/net/bonding/bond_main.c
··· 5164 res = dev_alloc_name(bond_dev, "bond%d"); 5165 if (res < 0) 5166 goto out; 5167 } 5168 5169 res = register_netdevice(bond_dev);
··· 5164 res = dev_alloc_name(bond_dev, "bond%d"); 5165 if (res < 0) 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; 5176 } 5177 5178 res = register_netdevice(bond_dev);
+17 -1
drivers/net/skge.c
··· 43 #include <linux/seq_file.h> 44 #include <linux/mii.h> 45 #include <linux/slab.h> 46 #include <asm/irq.h> 47 48 #include "skge.h" ··· 3869 netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); 3870 } 3871 3872 static int __devinit skge_probe(struct pci_dev *pdev, 3873 const struct pci_device_id *ent) 3874 { ··· 3892 3893 pci_set_master(pdev); 3894 3895 - if (!pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { 3896 using_dac = 1; 3897 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); 3898 } else if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { ··· 4150 .shutdown = skge_shutdown, 4151 }; 4152 4153 static int __init skge_init_module(void) 4154 { 4155 skge_debug_init(); 4156 return pci_register_driver(&skge_driver); 4157 }
··· 43 #include <linux/seq_file.h> 44 #include <linux/mii.h> 45 #include <linux/slab.h> 46 + #include <linux/dmi.h> 47 #include <asm/irq.h> 48 49 #include "skge.h" ··· 3868 netif_info(skge, probe, skge->netdev, "addr %pM\n", dev->dev_addr); 3869 } 3870 3871 + static int only_32bit_dma; 3872 + 3873 static int __devinit skge_probe(struct pci_dev *pdev, 3874 const struct pci_device_id *ent) 3875 { ··· 3889 3890 pci_set_master(pdev); 3891 3892 + if (!only_32bit_dma && !pci_set_dma_mask(pdev, DMA_BIT_MASK(64))) { 3893 using_dac = 1; 3894 err = pci_set_consistent_dma_mask(pdev, DMA_BIT_MASK(64)); 3895 } else if (!(err = pci_set_dma_mask(pdev, DMA_BIT_MASK(32)))) { ··· 4147 .shutdown = skge_shutdown, 4148 }; 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 + 4161 static int __init skge_init_module(void) 4162 { 4163 + if (dmi_check_system(skge_32bit_dma_boards)) 4164 + only_32bit_dma = 1; 4165 skge_debug_init(); 4166 return pci_register_driver(&skge_driver); 4167 }
+1 -1
drivers/net/wireless/ath/ath9k/ani.c
··· 543 if (conf_is_ht40(conf)) 544 return clockrate * 2; 545 546 - return clockrate * 2; 547 } 548 549 static int32_t ath9k_hw_ani_get_listen_time(struct ath_hw *ah)
··· 543 if (conf_is_ht40(conf)) 544 return clockrate * 2; 545 546 + return clockrate; 547 } 548 549 static int32_t ath9k_hw_ani_get_listen_time(struct ath_hw *ah)
+18
include/net/bluetooth/bluetooth.h
··· 161 { 162 struct sk_buff *skb; 163 164 if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) { 165 skb_reserve(skb, BT_SKB_RESERVE); 166 bt_cb(skb)->incoming = 0; 167 } 168 169 return skb; 170 } 171 172 int bt_err(__u16 code);
··· 161 { 162 struct sk_buff *skb; 163 164 + release_sock(sk); 165 if ((skb = sock_alloc_send_skb(sk, len + BT_SKB_RESERVE, nb, err))) { 166 skb_reserve(skb, BT_SKB_RESERVE); 167 bt_cb(skb)->incoming = 0; 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 + } 182 183 return skb; 184 + 185 + out: 186 + kfree_skb(skb); 187 + return NULL; 188 } 189 190 int bt_err(__u16 code);
+29 -33
net/bluetooth/l2cap.c
··· 1441 1442 static void l2cap_streaming_send(struct sock *sk) 1443 { 1444 - struct sk_buff *skb, *tx_skb; 1445 struct l2cap_pinfo *pi = l2cap_pi(sk); 1446 u16 control, fcs; 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); 1452 control |= pi->next_tx_seq << L2CAP_CTRL_TXSEQ_SHIFT; 1453 - put_unaligned_le16(control, tx_skb->data + L2CAP_HDR_SIZE); 1454 1455 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); 1458 } 1459 1460 - l2cap_do_send(sk, tx_skb); 1461 1462 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 } 1472 } 1473 ··· 1950 1951 switch (optname) { 1952 case L2CAP_OPTIONS: 1953 opts.imtu = l2cap_pi(sk)->imtu; 1954 opts.omtu = l2cap_pi(sk)->omtu; 1955 opts.flush_to = l2cap_pi(sk)->flush_to; ··· 2766 case L2CAP_CONF_MTU: 2767 if (val < L2CAP_DEFAULT_MIN_MTU) { 2768 *result = L2CAP_CONF_UNACCEPT; 2769 - pi->omtu = L2CAP_DEFAULT_MIN_MTU; 2770 } else 2771 - pi->omtu = val; 2772 - l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->omtu); 2773 break; 2774 2775 case L2CAP_CONF_FLUSH_TO: ··· 3066 return 0; 3067 } 3068 3069 static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u16 cmd_len, u8 *data) 3070 { 3071 struct l2cap_conf_req *req = (struct l2cap_conf_req *) data; ··· 3094 if (!sk) 3095 return -ENOENT; 3096 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); 3103 goto unlock; 3104 - } 3105 3106 /* Reject if config buffer is too small. */ 3107 len = cmd_len - sizeof(*req); ··· 3135 goto unlock; 3136 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; 3141 3142 sk->sk_state = BT_CONNECTED; 3143 ··· 3223 l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE; 3224 3225 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; 3229 3230 sk->sk_state = BT_CONNECTED; 3231 l2cap_pi(sk)->next_tx_seq = 0;
··· 1441 1442 static void l2cap_streaming_send(struct sock *sk) 1443 { 1444 + struct sk_buff *skb; 1445 struct l2cap_pinfo *pi = l2cap_pi(sk); 1446 u16 control, fcs; 1447 1448 + while ((skb = skb_dequeue(TX_QUEUE(sk)))) { 1449 + control = get_unaligned_le16(skb->data + L2CAP_HDR_SIZE); 1450 control |= pi->next_tx_seq << L2CAP_CTRL_TXSEQ_SHIFT; 1451 + put_unaligned_le16(control, skb->data + L2CAP_HDR_SIZE); 1452 1453 if (pi->fcs == L2CAP_FCS_CRC16) { 1454 + fcs = crc16(0, (u8 *)skb->data, skb->len - 2); 1455 + put_unaligned_le16(fcs, skb->data + skb->len - 2); 1456 } 1457 1458 + l2cap_do_send(sk, skb); 1459 1460 pi->next_tx_seq = (pi->next_tx_seq + 1) % 64; 1461 } 1462 } 1463 ··· 1960 1961 switch (optname) { 1962 case L2CAP_OPTIONS: 1963 + if (sk->sk_state == BT_CONNECTED) { 1964 + err = -EINVAL; 1965 + break; 1966 + } 1967 + 1968 opts.imtu = l2cap_pi(sk)->imtu; 1969 opts.omtu = l2cap_pi(sk)->omtu; 1970 opts.flush_to = l2cap_pi(sk)->flush_to; ··· 2771 case L2CAP_CONF_MTU: 2772 if (val < L2CAP_DEFAULT_MIN_MTU) { 2773 *result = L2CAP_CONF_UNACCEPT; 2774 + pi->imtu = L2CAP_DEFAULT_MIN_MTU; 2775 } else 2776 + pi->imtu = val; 2777 + l2cap_add_conf_opt(&ptr, L2CAP_CONF_MTU, 2, pi->imtu); 2778 break; 2779 2780 case L2CAP_CONF_FLUSH_TO: ··· 3071 return 0; 3072 } 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 + 3085 static inline int l2cap_config_req(struct l2cap_conn *conn, struct l2cap_cmd_hdr *cmd, u16 cmd_len, u8 *data) 3086 { 3087 struct l2cap_conf_req *req = (struct l2cap_conf_req *) data; ··· 3088 if (!sk) 3089 return -ENOENT; 3090 3091 + if (sk->sk_state == BT_DISCONN) 3092 goto unlock; 3093 3094 /* Reject if config buffer is too small. */ 3095 len = cmd_len - sizeof(*req); ··· 3135 goto unlock; 3136 3137 if (l2cap_pi(sk)->conf_state & L2CAP_CONF_INPUT_DONE) { 3138 + set_default_fcs(l2cap_pi(sk)); 3139 3140 sk->sk_state = BT_CONNECTED; 3141 ··· 3225 l2cap_pi(sk)->conf_state |= L2CAP_CONF_INPUT_DONE; 3226 3227 if (l2cap_pi(sk)->conf_state & L2CAP_CONF_OUTPUT_DONE) { 3228 + set_default_fcs(l2cap_pi(sk)); 3229 3230 sk->sk_state = BT_CONNECTED; 3231 l2cap_pi(sk)->next_tx_seq = 0;
+4
net/bluetooth/rfcomm/sock.c
··· 82 static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err) 83 { 84 struct sock *sk = d->owner, *parent; 85 if (!sk) 86 return; 87 88 BT_DBG("dlc %p state %ld err %d", d, d->state, err); 89 90 bh_lock_sock(sk); 91 92 if (err) ··· 111 } 112 113 bh_unlock_sock(sk); 114 115 if (parent && sock_flag(sk, SOCK_ZAPPED)) { 116 /* We have to drop DLC lock here, otherwise
··· 82 static void rfcomm_sk_state_change(struct rfcomm_dlc *d, int err) 83 { 84 struct sock *sk = d->owner, *parent; 85 + unsigned long flags; 86 + 87 if (!sk) 88 return; 89 90 BT_DBG("dlc %p state %ld err %d", d, d->state, err); 91 92 + local_irq_save(flags); 93 bh_lock_sock(sk); 94 95 if (err) ··· 108 } 109 110 bh_unlock_sock(sk); 111 + local_irq_restore(flags); 112 113 if (parent && sock_flag(sk, SOCK_ZAPPED)) { 114 /* We have to drop DLC lock here, otherwise
+15 -6
net/caif/caif_socket.c
··· 827 long timeo; 828 int err; 829 int ifindex, headroom, tailroom; 830 struct net_device *dev; 831 832 lock_sock(sk); ··· 897 cf_sk->sk.sk_state = CAIF_DISCONNECTED; 898 goto out; 899 } 900 - dev = dev_get_by_index(sock_net(sk), ifindex); 901 cf_sk->headroom = LL_RESERVED_SPACE_EXTRA(dev, headroom); 902 cf_sk->tailroom = tailroom; 903 - cf_sk->maxframe = dev->mtu - (headroom + tailroom); 904 - dev_put(dev); 905 if (cf_sk->maxframe < 1) { 906 - pr_warning("CAIF: %s(): CAIF Interface MTU too small (%d)\n", 907 - __func__, dev->mtu); 908 - err = -ENODEV; 909 goto out; 910 } 911
··· 827 long timeo; 828 int err; 829 int ifindex, headroom, tailroom; 830 + unsigned int mtu; 831 struct net_device *dev; 832 833 lock_sock(sk); ··· 896 cf_sk->sk.sk_state = CAIF_DISCONNECTED; 897 goto out; 898 } 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 + } 907 cf_sk->headroom = LL_RESERVED_SPACE_EXTRA(dev, headroom); 908 + mtu = dev->mtu; 909 + rcu_read_unlock(); 910 + 911 cf_sk->tailroom = tailroom; 912 + cf_sk->maxframe = mtu - (headroom + tailroom); 913 if (cf_sk->maxframe < 1) { 914 + pr_warning("CAIF: %s(): CAIF Interface MTU too small (%u)\n", 915 + __func__, mtu); 916 goto out; 917 } 918
+1 -1
net/core/ethtool.c
··· 348 if (info.cmd == ETHTOOL_GRXCLSRLALL) { 349 if (info.rule_cnt > 0) { 350 if (info.rule_cnt <= KMALLOC_MAX_SIZE / sizeof(u32)) 351 - rule_buf = kmalloc(info.rule_cnt * sizeof(u32), 352 GFP_USER); 353 if (!rule_buf) 354 return -ENOMEM;
··· 348 if (info.cmd == ETHTOOL_GRXCLSRLALL) { 349 if (info.rule_cnt > 0) { 350 if (info.rule_cnt <= KMALLOC_MAX_SIZE / sizeof(u32)) 351 + rule_buf = kzalloc(info.rule_cnt * sizeof(u32), 352 GFP_USER); 353 if (!rule_buf) 354 return -ENOMEM;
+4 -4
net/core/stream.c
··· 141 142 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); 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); 148 sk->sk_write_pending--; 149 150 if (vm_wait) {
··· 141 142 set_bit(SOCK_NOSPACE, &sk->sk_socket->flags); 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)); 148 sk->sk_write_pending--; 149 150 if (vm_wait) {
+1 -1
net/ipv4/Kconfig
··· 413 If unsure, say Y. 414 415 config INET_LRO 416 - bool "Large Receive Offload (ipv4/tcp)" 417 default y 418 ---help--- 419 Support for Large Receive Offload (ipv4/tcp).
··· 413 If unsure, say Y. 414 415 config INET_LRO 416 + tristate "Large Receive Offload (ipv4/tcp)" 417 default y 418 ---help--- 419 Support for Large Receive Offload (ipv4/tcp).
+13 -1
net/ipv4/igmp.c
··· 834 int mark = 0; 835 836 837 - if (len == 8 || IGMP_V2_SEEN(in_dev)) { 838 if (ih->code == 0) { 839 /* Alas, old v1 router presents here. */ 840 ··· 856 igmpv3_clear_delrec(in_dev); 857 } else if (len < 12) { 858 return; /* ignore bogus packet; freed by caller */ 859 } else { /* v3 */ 860 if (!pskb_may_pull(skb, sizeof(struct igmpv3_query))) 861 return;
··· 834 int mark = 0; 835 836 837 + if (len == 8) { 838 if (ih->code == 0) { 839 /* Alas, old v1 router presents here. */ 840 ··· 856 igmpv3_clear_delrec(in_dev); 857 } else if (len < 12) { 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); 871 } else { /* v3 */ 872 if (!pskb_may_pull(skb, sizeof(struct igmpv3_query))) 873 return;
+24 -4
net/ipv6/route.c
··· 1556 * i.e. Path MTU discovery 1557 */ 1558 1559 - void rt6_pmtu_discovery(struct in6_addr *daddr, struct in6_addr *saddr, 1560 - struct net_device *dev, u32 pmtu) 1561 { 1562 struct rt6_info *rt, *nrt; 1563 - struct net *net = dev_net(dev); 1564 int allfrag = 0; 1565 1566 - rt = rt6_lookup(net, daddr, saddr, dev->ifindex, 0); 1567 if (rt == NULL) 1568 return; 1569 ··· 1628 } 1629 out: 1630 dst_release(&rt->dst); 1631 } 1632 1633 /*
··· 1556 * i.e. Path MTU discovery 1557 */ 1558 1559 + static void rt6_do_pmtu_disc(struct in6_addr *daddr, struct in6_addr *saddr, 1560 + struct net *net, u32 pmtu, int ifindex) 1561 { 1562 struct rt6_info *rt, *nrt; 1563 int allfrag = 0; 1564 1565 + rt = rt6_lookup(net, daddr, saddr, ifindex, 0); 1566 if (rt == NULL) 1567 return; 1568 ··· 1629 } 1630 out: 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); 1653 } 1654 1655 /*
+2
net/mac80211/agg-tx.c
··· 175 176 set_bit(HT_AGG_STATE_STOPPING, &tid_tx->state); 177 178 /* 179 * After this packets are no longer handed right through 180 * to the driver but are put onto tid_tx->pending instead,
··· 175 176 set_bit(HT_AGG_STATE_STOPPING, &tid_tx->state); 177 178 + del_timer_sync(&tid_tx->addba_resp_timer); 179 + 180 /* 181 * After this packets are no longer handed right through 182 * to the driver but are put onto tid_tx->pending instead,
+2 -2
net/mac80211/status.c
··· 377 skb2 = skb_clone(skb, GFP_ATOMIC); 378 if (skb2) { 379 skb2->dev = prev_dev; 380 - netif_receive_skb(skb2); 381 } 382 } 383 ··· 386 } 387 if (prev_dev) { 388 skb->dev = prev_dev; 389 - netif_receive_skb(skb); 390 skb = NULL; 391 } 392 rcu_read_unlock();
··· 377 skb2 = skb_clone(skb, GFP_ATOMIC); 378 if (skb2) { 379 skb2->dev = prev_dev; 380 + netif_rx(skb2); 381 } 382 } 383 ··· 386 } 387 if (prev_dev) { 388 skb->dev = prev_dev; 389 + netif_rx(skb); 390 skb = NULL; 391 } 392 rcu_read_unlock();
+1 -1
net/sched/cls_u32.c
··· 137 int toff = off + key->off + (off2 & key->offmask); 138 __be32 *data, _data; 139 140 - if (skb_headroom(skb) + toff < 0) 141 goto out; 142 143 data = skb_header_pointer(skb, toff, 4, &_data);
··· 137 int toff = off + key->off + (off2 & key->offmask); 138 __be32 *data, _data; 139 140 + if (skb_headroom(skb) + toff > INT_MAX) 141 goto out; 142 143 data = skb_header_pointer(skb, toff, 4, &_data);
+6 -2
net/sctp/auth.c
··· 543 id = ntohs(hmacs->hmac_ids[i]); 544 545 /* Check the id is in the supported range */ 546 - if (id > SCTP_AUTH_HMAC_ID_MAX) 547 continue; 548 549 /* See is we support the id. Supported IDs have name and 550 * length fields set, so that we can allocated and use 551 * them. We can safely just check for name, for without the 552 * name, we can't allocate the TFM. 553 */ 554 - if (!sctp_hmac_list[id].hmac_name) 555 continue; 556 557 break; 558 }
··· 543 id = ntohs(hmacs->hmac_ids[i]); 544 545 /* Check the id is in the supported range */ 546 + if (id > SCTP_AUTH_HMAC_ID_MAX) { 547 + id = 0; 548 continue; 549 + } 550 551 /* See is we support the id. Supported IDs have name and 552 * length fields set, so that we can allocated and use 553 * them. We can safely just check for name, for without the 554 * name, we can't allocate the TFM. 555 */ 556 + if (!sctp_hmac_list[id].hmac_name) { 557 + id = 0; 558 continue; 559 + } 560 561 break; 562 }
+12 -1
net/sctp/socket.c
··· 916 /* Walk through the addrs buffer and count the number of addresses. */ 917 addr_buf = kaddrs; 918 while (walk_size < addrs_size) { 919 sa_addr = (struct sockaddr *)addr_buf; 920 af = sctp_get_af_specific(sa_addr->sa_family); 921 ··· 1007 /* Walk through the addrs buffer and count the number of addresses. */ 1008 addr_buf = kaddrs; 1009 while (walk_size < addrs_size) { 1010 sa_addr = (union sctp_addr *)addr_buf; 1011 af = sctp_get_af_specific(sa_addr->sa.sa_family); 1012 - port = ntohs(sa_addr->v4.sin_port); 1013 1014 /* If the address family is not supported or if this address 1015 * causes the address buffer to overflow return EINVAL. ··· 1022 err = -EINVAL; 1023 goto out_free; 1024 } 1025 1026 /* Save current address so we can work with it */ 1027 memcpy(&to, sa_addr, af->sockaddr_len);
··· 916 /* Walk through the addrs buffer and count the number of addresses. */ 917 addr_buf = kaddrs; 918 while (walk_size < addrs_size) { 919 + if (walk_size + sizeof(sa_family_t) > addrs_size) { 920 + kfree(kaddrs); 921 + return -EINVAL; 922 + } 923 + 924 sa_addr = (struct sockaddr *)addr_buf; 925 af = sctp_get_af_specific(sa_addr->sa_family); 926 ··· 1002 /* Walk through the addrs buffer and count the number of addresses. */ 1003 addr_buf = kaddrs; 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 sa_addr = (union sctp_addr *)addr_buf; 1011 af = sctp_get_af_specific(sa_addr->sa.sa_family); 1012 1013 /* If the address family is not supported or if this address 1014 * causes the address buffer to overflow return EINVAL. ··· 1013 err = -EINVAL; 1014 goto out_free; 1015 } 1016 + 1017 + port = ntohs(sa_addr->v4.sin_port); 1018 1019 /* Save current address so we can work with it */ 1020 memcpy(&to, sa_addr, af->sockaddr_len);