summaryrefslogtreecommitdiffstats
path: root/drivers/net/ethernet
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'for-davem' of ↵David S. Miller2012-01-2930-2137/+3108
|\ | | | | | | git://git.kernel.org/pub/scm/linux/kernel/git/bwh/sfc-next
| * sfc: Replace efx_rx_buffer::is_page and other booleans with a flags fieldBen Hutchings2012-01-275-61/+59
| | | | | | | | | | | | | | Replace checksummed and discard booleans from efx_handle_rx_event() with a bitmask, added to the flags field. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Move the end of the non-GRO RX path into its own functionBen Hutchings2012-01-271-18/+23
| | | | | | | | Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Make all MAC statistics consistently 64 bits wideBen Hutchings2012-01-272-118/+109
| | | | | | | | | | | | | | | | | | | | | | | | | | Currently we use type u64 for byte counts, which can very quickly exceed 2^32, and unsigned long for packet counts, which do not. But it can still take only 20-something minutes to send or receive 2^32 packets, and not all tools properly handle overflow even if they sample more often than this. The MAC statistics are all updated synchronously, so it costs very little to make them all 64-bit regardless of native word size. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Rename implementation of ndo_set_rx_modeBen Hutchings2012-01-271-3/+3
| | | | | | | | | | | | | | Rename efx_set_multicast_list() to efx_set_rx_mode(), in line with the operation name net_device_ops::ndo_set_rx_mode. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove redundant 'rc' variable, always set to 0Ben Hutchings2012-01-271-2/+1
| | | | | | | | Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Minor formatting fixesBen Hutchings2012-01-271-5/+4
| | | | | | | | Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Use existing local variables instead of repeated indirect lookupsBen Hutchings2012-01-271-2/+2
| | | | | | | | Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove remnants of on-load self-testBen Hutchings2012-01-274-36/+20
| | | | | | | | | | | | | | | | | | The out-of-tree version of the sfc driver used to run a self-test on each device before registering it. Although this was never included in-tree, some functions have checks for this special case which is not really possible. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove obsolete function efx_dev_name()Ben Hutchings2012-01-271-9/+0
| | | | | | | | Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Update the description of SFC_MTDBen Hutchings2012-01-271-3/+3
| | | | | | | | | | | | | | SFC4000 boards also have an EEPROM exposed as MTD. The boot configuration is accessed through MTD. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Add hwmon driver for boards using SFC9000-family controllersBen Hutchings2012-01-277-44/+471
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The SFC9000-family controllers have firmware to manage all board peripherals including temperature, heat sink continuity and voltage sensors. The firmware reports sensor alarms, which we log, and will shut down the board if necessary. Some users may want to monitor their boards more closely, so add an hwmon driver that exposes all sensors reported by the firmware. Move efx_mcdi_sensor_event() into the new file so it can share the array of sensor labels with the hwmon driver. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Clean up test interrupt handlingBen Hutchings2012-01-275-28/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Interrupts are normally generated by the event queues, moderated by timers. However, they may also be triggered by detection of a 'fatal' error condition (e.g. memory parity error) or by the host writing to certain CSR fields as part of a self-test. The IRQ level/index used for these on Falcon rev B0 and Siena is set by the KER_INT_LEVE_SEL field and cached by the driver in efx_nic::fatal_irq_level. Since this value is also relevant to self-tests rename the field to just 'irq_level'. Avoid unnecessary cache traffic by using a per-channel 'last_irq_cpu' field and only writing to the per-controller field when the interrupt matches efx_nic::irq_level. Remove the volatile qualifier and use ACCESS_ONCE in the places we read these fields. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * Partly revert "sfc: Handle serious errors in exactly one interrupt handler"Ben Hutchings2012-01-271-8/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This reverts commit 6369545945b90daa1a73fca174da9194c398417c in drivers/net/ethernet/sfc/falcon.c. Unlike the INT_ISR0 register on later controller revisions, the NET_IVEC_INT_Q bits written to memory are only ever set for interrupting event queues, not for any other interrupt sources. By definition there can only be one legacy interrupt handler per function, so there is no need to worry about detecting a fatal interrupt more than once. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove dependence on NAPI polling in efx_test_eventq_irq()Ben Hutchings2012-01-273-44/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We cannot safely assume that the NAPI handler will complete within the 20 ms that we allow for the event self-test. The handler may be deferred for longer than this, particularly on realtime kernels. Instead, check whether either an event has been handled or (as in the old failure path) whether an interrupt has been received and an event has been delivered but not yet handled. Use napi_disable() to synchronize with the NAPI handler before checking, since it will clear events before updating eventq_read_ptr. Remove the test result chan.N.eventq.poll, since it is not an error if the NAPI handler does not run during the test. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Correct interrupt timer quantum for Siena (normal and turbo mode)Ben Hutchings2012-01-275-17/+40
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | We currently assume that the timer quantum for Siena is 5 us, the same as for Falcon. This is not correct; timer ticks are generated on a rota which takes a minimum of 768 cycles (each event delivery or other timer change will delay it by 3 cycles). The timer quantum should be 6.144 or 3.072 us depending on whether turbo mode is active. Replace EFX_IRQ_MOD_RESOLUTION with a timer_quantum_ns field in struct efx_nic, initialised by the efx_nic_type::probe function. While we're at it, replace EFX_IRQ_MOD_MAX with a timer_period_max field in struct efx_nic_type. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Support extraction of CAPABILITIES from GET_BOARD_CFG response.Matthew Slattery2012-01-274-4/+12
| | | | | | | | Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Consistently test DEBUG macro, not EFX_ENABLE_DEBUGBen Hutchings2012-01-274-7/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The netif_dbg() macro is defined in <linux/netdevice.h>. If the DEBUG macro is defined, it logs a message at 'debug' level, otherwise it does nothing. In net_driver.h we define DEBUG if EFX_ENABLE_DEBUG is defined, but this is too late for those source files that already got a definition of netif_dbg() by including <linux/netdevice.h> Get rid of EFX_ENABLE_DEBUG, and only define and test DEBUG. In mtd.c, we do not use DEBUG as a condition flag but are forced to use the DEBUG macro-function from <linux/mtd/mtd.h>. Undefine DEBUG before including it. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove efx_nic_type::push_multicast_hash operationBen Hutchings2012-01-275-23/+9
| | | | | | | | | | | | | | | | | | | | | | | | Both implementations of efx_nic_type::reconfigure_mac operation push the multicast hash filter to the hardware. It is therefore redundant to call efx_nic_type::push_multicast_hash as well. efx_mcdi_mac_reconfigure() also uses this operation, but the implementation for Siena just uses MCDI anyway. Merge that into efx_mcdi_mac_reconfigure(). Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Merge efx_mcdi_mac_check_fault() and efx_mcdi_get_mac_faults()Ben Hutchings2012-01-271-18/+7
| | | | | | | | | | | | | | | | The latter is only called by the former, which is a very short wrapper. Further, gcc 4.5 may currently wrongly warn that the 'faults' variable may be used uninitialised. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Merge efx_mac_operations into efx_nic_typeBen Hutchings2012-01-2711-81/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | No NICs need to switch efx_mac_operations at run-time, and the MAC operations are fairly closely bound to NIC types. Move efx_mac_operations::reconfigure to efx_nic_type::reconfigure_mac and efx_mac_operations::check_fault fo efx_nic_type::check_mac_fault. Change callers to call through efx->type or directly if the NIC type is known. Remove efx_mac_operations::update_stats. The implementations for Falcon used to fetch MAC statistics synchronously and this was used by efx_register_netdev() to clear statistics after running self-tests. However, it now only converts statistics that have already been fetched (and that only for Falcon), and the call from efx_register_netdev() has no effect. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Hold efx_nic::stats_lock while reading efx_nic::mac_statsBen Hutchings2012-01-273-3/+9
| | | | | | | | | | | | | | | | | | | | | | | | efx_nic::stats_lock is used to serialise stats updates, but each reader was dropping it before it finished reading efx_nic::mac_stats. If there were concurrent stats reads using procfs, or one using procfs and one using ethtool, an update could race with a read. On a 32-bit system, the reader could see word-tearing of 64-bit stats (32 bits of the old value and 32 bits of the new). Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Use new names for MC shared memory layout constantsBen Hutchings2012-01-271-10/+4
| | | | | | | | | | | | These are defined alongside the firmware protocol in mcdi_pcol.h. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Make handling of MC reboot more reliableBen Hutchings2012-01-271-6/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When the MC reboots, either as part of a firmware upgrade or due to a bug, it attempts to complete (with an error) any requests that were outstanding before the reboot. Since there is an inherent race condition in checking this, it will also write to a status word in shared memory. If we look at each of these separately, we may detect each reboot twice, resulting in a spurious command failure after a firmware upgrade or frustrating recovery from a firmware bug. Instead, if a request completion indicates a reboot, we must poll and clear the status word. This bug was previously masked by use of an incorrect address for the status word. Fix that, using the definition now included in mcdi_pcol.h. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove fallback for invalid permanent MAC addressBen Hutchings2012-01-271-30/+2
| | | | | | | | | | | | | | | | | | | | By the time we look at the MAC address in efx_probe_port(), either the driver or the firmware has already validated the board configuration. The possibility of having an invalid MAC address just isn't worth considering. It certainly isn't worth having a compile-time option for this. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Set default parallelism to per-core by defaultBen Hutchings2012-01-091-7/+7
| | | | | | | | | | | | | | | | | | The previous default of per-package can be more CPU-efficient, but users generally seem to prefer per-core. It should also allow accelerated RFS to direct packets more precisely, if IRQ affinity is properly spread out. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Rename efx_wanted_channels() to efx_wanted_parallelism()Ben Hutchings2012-01-091-4/+2
| | | | | | | | | | | | | | This function returns the degree of parallelism wanted, which is not necessarily the total number of channels we want to create. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Update MCDI (firmware interface) definitionsBen Hutchings2012-01-095-1491/+2119
| | | | | | | | | | | | | | Some commands and constants have been renamed; adjust the code accordingly. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove unnecessary inclusion of <asm/io.h>, prompted by checkpatchBen Hutchings2012-01-091-1/+0
| | | | | | | | | | | | | | | | | | | | Fix the warning: WARNING: Use #include <linux/io.h> instead of <asm/io.h> There is no need for selftest.c to include the file at all. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Const-qualify static data as appropriate, partly prompted by checkpatchBen Hutchings2012-01-099-22/+22
| | | | | | | | | | | | | | | | | | | | | | | | Fix the following warnings: WARNING: struct dev_pm_ops should normally be const WARNING: static const char * array should probably be static const char * const Similarly const-qualify struct i2c_board_info, struct i2c_algo_bit_data, struct efx_ethtool_stat, struct efx_mtd_ops and struct siena_nvram_type_info. Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Remove parentheses around return expressions, reported by checkpatchBen Hutchings2012-01-051-8/+7
| | | | | | | | | | | | | | | | Fix the following error: ERROR: return is not a function, parentheses are not required Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Avoid assignment in an if-statement, reported by checkpatchBen Hutchings2012-01-051-3/+5
| | | | | | | | | | | | | | | | Fix the following error: ERROR: do not use assignment in if condition Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
| * sfc: Fix some formatting errors reported by checkpatchBen Hutchings2012-01-0512-30/+30
| | | | | | | | | | | | | | | | | | | | Fix the following errors and warnings: ERROR: trailing whitespace ERROR: spaces required around that '=' (ctx:VxV) WARNING: please, no space before tabs Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
* | e1000e: update copyright yearBruce Allan2012-01-2614-15/+15
| | | | | | | | | | | | Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: split lib.c into three more-appropriate filesBruce Allan2012-01-264-995/+1051
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The generic lib.c file contains code relative to the various MACs, NVM and Manageability supported by the driver. This patch splits the file into three which are specific to those areas similar to how the PHY-specific code is in phy.c and code specific to the 80003es2lan, 8257x, and ichX MAC families are in their own files. The generic code that is applicable to all MAC/PHY parts supported by the driver remains in netdev.c, param.c and ethtool.c files. No change in functionality, just moving code around for ease of maintenance, with some whitespace and other checkpatch cleanups. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: call er16flash() instead of __er16flash()Bruce Allan2012-01-261-1/+1
| | | | | | | | | | | | | | | | __er16flash() is not meant to be called directly. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: increase version numberBruce Allan2012-01-261-1/+1
| | | | | | | | | | | | Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: convert final strncpy() to strlcpy()Bruce Allan2012-01-261-3/+3
| | | | | | | | | | | | | | | | Convert the last instances of strncpy() to the preferred strlcpy(). Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: concatenate long debug strings which span multiple linesBruce Allan2012-01-264-26/+15
| | | | | | | | | | | | | | | | | | | | | | | | To ease searching for debug message strings, concatenate strings that span multiple lines even if the resulting line exceeds 80 columns; these will not cause checkpatch warnings. Also, add '\n' and remove unnecessary '\r' from a few debug strings. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: conditionally restart autoneg on 82577/8/9 when setting LPLU stateBruce Allan2012-01-261-1/+3
| | | | | | | | | | | | | | | | | | | | When setting the Low Power Link Up (LPLU, a.k.a. reverse auto-negotiation) on 82577/8278/82579, do not restart auto-negotiation if reset of the Phy is blocked by the Manageability Engine. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: increase Rx PBA to prevent dropping received packets on 82566/82567Bruce Allan2012-01-261-2/+2
| | | | | | | | | | | | | | | | | | | | During bi-directional stress on some 82566/82567 devices, some received packets were dropped. Increasing the Receive Packet Buffer Allocation resolves this. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: ICHx/PCHx LOMs should use LPLU setting in NVM when going to SxBruce Allan2012-01-261-4/+5
| | | | | | | | | | | | | | | | | | | | | | When going to Sx with an ICHx/PCH device, the default Low Power Link Up (LPLU, a.k.a. reverse auto-negotiation) behavior should be whatever is set in the NVM. However, the function e1000_suspend_workarounds_ich8lan() called when going to Sx always enabled LPLU in all power states. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: update workaround for 82579 intermittently disabled during S0->SxBruce Allan2012-01-261-54/+49
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The workaround which toggles the LANPHYPC (LAN PHY Power Control) value bit to force the MAC-Phy interconnect into PCIe mode from SMBus mode during driver load and resume should always be done except if PHY resets are blocked by the Manageability Engine (ME). Previously, the toggle was done only if PHY resets are blocked and the ME was disabled. The rest of the patch is just indentation changes as a consequence of the updated workaround. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: disable Early Receive DMA on ICH LOMsBruce Allan2012-01-263-39/+25
| | | | | | | | | | | | | | | | | | | | | | | | Internal stress testing with jumbo frames shows the reliability of ICH9 and ICH10D devices is improved in certain corner cases by disabling the Early Receive feature. To reduce the performance impact caused by disabling this feature, the packet buffer sizes and relevant flow control settings are modified accordingly. Signed-off-by: Bruce Allan <bruce.w.allan@intel.com> Tested-by: Aaron Brown <aaron.f.brown@intel.com> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
* | e1000e: Need to include vmalloc.hDavid S. Miller2012-01-261-0/+1
| | | | | | | | | | | | | | | | Otherwise (on sparc64): drivers/net/ethernet/intel/e1000e/ethtool.c:657:3: error: implicit declaration of function 'vmalloc' [-Werror=implicit-function-declaration] Signed-off-by: David S. Miller <davem@davemloft.net>
* | be2net: allocate more headroom in incoming skbsEric Dumazet2012-01-262-1/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Allocation of 64 bytes in skb headroom is not enough if we have to pull ethernet + ipv6 + tcp headers, and/or extra tunneling header. Its currently not noticed because netdev_alloc_skb_ip_align(64) give us more room, thanks to power-of-two kmalloc() roundups. Make sure we ask for 128 bytes so that side effects of upcoming patches from Ian Campbell dont decrease benet rx performance, because of extra skb head reallocations. Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Cc: Ian Campbell <Ian.Campbell@citrix.com> Cc: Vasundhara Volam <vasundhara.volam@emulex.com> Cc: Sathya Perla <sathya.perla@emulex.com> Cc: Ajit Khaparde <ajit.khaparde@emulex.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | bnx2x: Update version to 1.72.0 and copyrightsAriel Elior2012-01-2620-22/+22
| | | | | | | | | | | | Signed-off-by: Ariel Elior <ariele@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | bnx2x: Recoverable and unrecoverable error statisticsAriel Elior2012-01-263-3/+26
| | | | | | | | | | | | | | | | | | Add statistics for tracking parity errors from which we successfully recovered and those which were deemed unrecoverable. Signed-off-by: Ariel Elior <ariele@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | bnx2x: Recovery flow bug fixesAriel Elior2012-01-263-48/+75
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Sample mcp pulse and mcp sequence in nic load instead of in init_one as they may change by the time we want to use them. 2. Allow cnic to access device during nic load (by adding a new "LOADING" state to recovery flow). This prevents the unnecessary cnic timeout which resulted by cnic attempting to access because nic is loading, but being blocked because of the Recovery state. 3. Issue 'fake' driver load command to mcp when last driver unloads to prevent mcp from taking ownership. When recovery is complete unload fake driver to allow mcp to initialize the hardware before first driver loads. Signed-off-by: Ariel Elior <ariele@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* | bnx2x: Track active PFs with bitmapAriel Elior2012-01-263-33/+35
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The recovery register (to which a hardware lock has been added in previous patch) is used amongst other things to track the active PFs. The old implementation which used a per path counter is not viable in a virtualized environment where a pf may increment the counter and then have the kernel crash around it preventing the counter from ever reaching zero. In the new implementation the scenario described will result in the PF timing out against the mcp, which will clear the PF's bit in the bitmask allowing recovery process to proceed. Signed-off-by: Ariel Elior <ariele@broadcom.com> Signed-off-by: Eilon Greenstein <eilong@broadcom.com> Signed-off-by: David S. Miller <davem@davemloft.net>
OpenPOWER on IntegriCloud