summaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* ipv6: fix RFC5722 commentEric Dumazet2012-01-301-4/+3
| | | | | | | | | | | RFC5722 Section 4 was amended by Errata 3089 Our implementation did the right thing anyway... Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com> Cc: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* net: Allow ipv6 proxies and arp proxies be shown with iproute2Tony Zelenoff2012-01-301-3/+87
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add ability to return neighbour proxies list to caller if it sent full ndmsg structure and has NTF_PROXY flag set. Before this patch (and before iproute2 patches): $ ip neigh add proxy 2001::1 dev eth0 $ ip -6 neigh show $ After it and with applied iproute2 patches: $ ip neigh add proxy 2001::1 dev eth0 $ ip -6 neigh show 2001::1 dev eth0 proxy $ Compatibility with old versions of iproute2 is not broken, kernel checks for incoming structure size and properly works if old structure is came. [v2] * changed comments style. * removed useless line with continue and curly bracket. * changed incoming message size check from equal to more or equal. CC: davem@davemloft.net CC: kuznet@ms2.inr.ac.ru CC: netdev@vger.kernel.org CC: xemul@parallels.com Signed-off-by: Tony Zelenoff <antonz@parallels.com> Acked-by: Thomas Graf <tgraf@suug.ch> Signed-off-by: David S. Miller <davem@davemloft.net>
* drivers/net: strip unused module code from sun3_82586.cPaul Gortmaker2012-01-301-25/+0
| | | | | | | | | | | | This code is clearly unused, since it has a #error right in it. Given the vintage of sun3 hardware, it is probably safe to assume that there is little interest in adding new functionality to the driver now, so just delete the unused block of code. Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> Signed-off-by: Sam Creasey <sammy@sammy.net> Signed-off-by: David S. Miller <davem@davemloft.net>
* drivers/net: fix up stale paths from driver reorgPaul Gortmaker2012-01-3054-58/+59
| | | | | | | | | | | The reorganization of the driver layout in drivers/net left behind some stale paths in comments and in Kconfig help text. Bring them up to date. No actual change to any code takes place here. Signed-off-by: Paul Gortmaker <paul.gortmaker@windriver.com> CC: Jeff Kirsher <jeffrey.t.kirsher@intel.com> Signed-off-by: David S. Miller <davem@davemloft.net>
* Merge branch 'davem-next.r8169' of git://violet.fr.zoreil.com/romieu/linuxDavid S. Miller2012-01-301-270/+288
|\
| * r8169: remove work from irq handler.Francois Romieu2012-01-271-218/+231
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The irq handler was a mess. See 7ab87ff4c770eed71e3777936299292739fcd0fe ("via-rhine: move work from irq handler to softirq and beyond") for similar changes. One can notice: - all non-napi tasks are explicitely scheduled trough a single work queue. - hiding software tx queue start behind the rtl_hw_start method is mildly natural. Move it in the caller where needed. - as can be seen from the heavy use of bh disabling locks, the driver is not safe for irq context messages with netconsole. It is still quite usable for general messaging though. Tested ok with concurrent registers dump (ethtool -d) + background traffic + "echo t > /proc/sysrq-trigger". Tested with old PCI chipset, PCIe 8168 and 810x: - XID 0c900800 RTL8168evl/8111evl - XID 18000000 RTL8168b/8111b - XID 98000000 RTL8169sc/8110sc - XID 083000c0 RTL8168d/8111d - XID 081000c0 RTL8168d/8111d - XID 00b00000 RTL8105e - XID 04a00000 RTL8102e As a side note, the comments in f11a377b3f4e897d11f0e8d1fc688667e2f19708 ("r8169: avoid losing MSI interrupts") does not seem completely clear: if I hack the driver further to stop acking the irq link event bit, MSI interrupts keep being delivered (RTL8168b/8111b, XID 18000000). Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Cc: Hayes Wang <hayeswang@realtek.com>
| * r8169: missing barriers.Francois Romieu2012-01-271-3/+2
| | | | | | | | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Cc: Hayes Wang <hayeswang@realtek.com>
| * r8169: irq mask helpers.Francois Romieu2012-01-271-7/+30
| | | | | | | | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Cc: Hayes Wang <hayeswang@realtek.com>
| * r8169: factor out IntrMask writes.Francois Romieu2012-01-271-7/+9
| | | | | | | | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Cc: Hayes Wang <hayeswang@realtek.com>
| * r8169: stop delaying workqueue.Francois Romieu2012-01-271-13/+24
| | | | | | | | | | | | | | | | | | Though motivated by the move of the driver to a single work queue of sequential events and removal of hard irq processing, it looks safe as a standalone change. Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Cc: Hayes Wang <hayeswang@realtek.com>
| * r8169: remove rtl8169_reinit_task.Francois Romieu2012-01-271-31/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | I see no good reason to keep both rtl8169_reinit_task and rtl8169_reset_task: - rtl8169_reinit_task adds a software failure point which does relate to any hardware state - they handle hardware the same. Remember that rtl8169_reinit_task was introduced in the 8169 only era to handle PCI errors way before the 8168 asked for pll and firmware ops and compare : rtl8169_reinit_task | rtl8169_reset_task ----------------------------+-------------------------- rtl8169_wait_for_quiescence | rtl8169_hw_reset rtl8169_update_counters | rtl8169_wait_for_quiescence rtl8169_hw_reset | rtl_hw_start rtl8169_rx_missed | rtl8169_check_link_status rtl_pll_power_down | rtl_request_firmware | rtl8169_init_phy | rtl_pll_power_up | rtl_hw_start | rtl8169_check_link_status | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com> Cc: Hayes Wang <hayeswang@realtek.com>
| * r8169: remove hardcoded PCIe registers accesses.Francois Romieu2012-01-271-4/+2
| | | | | | | | Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
* | 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>
* | | ipv6: Eliminate dst_get_neighbour_noref() usage in ip6_forward().David S. Miller2012-01-281-5/+3
| | | | | | | | | | | | | | | | | | | | | It's only used to get at neigh->primary_key, which in this context is always going to be the same as rt->rt6i_gateway. Signed-off-by: David S. Miller <davem@davemloft.net>
* | | ipv6: Remove neigh argument from ndisc_send_redirect()David S. Miller2012-01-283-4/+11
| | | | | | | | | | | | | | | | | | | | | Instead, compute it as-needed inside of that function using dst_neigh_lookup(). Signed-off-by: David S. Miller <davem@davemloft.net>
* | | ipv6: fib: Convert fib6_age() to dst_neigh_lookup().David S. Miller2012-01-281-5/+14
| | | | | | | | | | | | | | | | | | | | | | | | In this specific situation we know we are dealing with a gatewayed route and therefore rt6i_gateway is not going to be in6addr_any even in future interpretations. Signed-off-by: David S. Miller <davem@davemloft.net>
* | | ipv6: ndisc: Convert to dst_neigh_lookup()David S. Miller2012-01-281-6/+12
| | | | | | | | | | | | | | | | | | | | | | | | Now all code paths grab a local reference to the neigh, so if neigh is not NULL we unconditionally release it at the end. The old logic would only release if we didn't have a non-NULL 'rt'. Signed-off-by: David S. Miller <davem@davemloft.net>
* | | ipv4: ip_gre: Convert to dst_neigh_lookup()David S. Miller2012-01-281-3/+10
| | | | | | | | | | | | | | | | | | The conversion is very similar to that made to ipv6's SIT code. Signed-off-by: David S. Miller <davem@davemloft.net>