aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAge
* Merge refs/heads/upstream from ↵Linus Torvalds2005-09-02
|\ | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/jgarzik/netdev-2.6
| * [PATCH] iseries_veth: Be consistent about driver name, increment versionMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The iseries_veth driver tells sysfs that it's called 'iseries_veth', but if you ask it via ethtool it thinks it's called 'veth'. I think this comes from 2.4 when the driver was called 'veth', but it's definitely called 'iseries_veth' now, so fix it. To make sure we don't do it again define DRV_NAME and use it everywhere. While we're at it, change the version number to 2.0, to reflect the changes made in this patch series. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Remove studly caps from iseries_veth.cMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | Having merged iseries_veth.h, let's remove some of the studly caps that came with it. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Incorporate iseries_veth.h in iseries_veth.cMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | iseries_veth.h is only used by iseries_veth.c, so merge the former into the latter. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Add sysfs support for port structsMichael Ellerman2005-08-31
| | | | | | | | | | | | | | Also to aid debugging, add sysfs support for iseries_veth's port structures. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Add sysfs support for connection structsMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | To aid in field debugging, add sysfs support for iseries_veth's connection structures. At the moment this is all read-only, however we could think about adding write support for some attributes in future. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Fix bogus counting of TX errorsMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | There's a number of problems with the way iseries_veth counts TX errors. Firstly it counts conditions which aren't really errors as TX errors. This includes if we don't have a connection struct for the other LPAR, or if the other LPAR is currently down (or just doesn't want to talk to us). Neither of these should count as TX errors. Secondly, it counts one TX error for each LPAR that fails to accept the packet. This can lead to TX error counts higher than the total number of packets sent through the interface. This is confusing for users. This patch fixes that behaviour. The non-error conditions are no longer counted, and we introduce a new and I think saner meaning to the TX counts. If a packet is successfully transmitted to any LPAR then it is transmitted and tx_packets is incremented by 1. If there is an error transmitting a packet to any LPAR then that is counted as one error, ie. tx_errors is incremented by 1. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Simplify full-queue handlingMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The iseries_veth driver often has multiple netdevices sending packets over a single connection to another LPAR. If the bandwidth to the other LPAR is exceeded, all the netdevices must have their queues stopped. The current code achieves this by queueing one incoming skb on the per-netdevice port structure. When the connection is able to send more packets we iterate through the port structs and flush any packet that is queued, as well as restarting the associated netdevice's queue. This arrangement makes less sense now that we have per-connection TX timers, rather than the per-netdevice generic TX timer. The new code simply detects when one of the connections is full, and stops the queue of all associated netdevices. Then when a packet is acked on that connection (ie. there is space again) all the queues are woken up. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Add a per-connection ack timerMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the iseries_veth driver contravenes the specification in Documentation/networking/driver.txt, in that if packets are not acked by the other LPAR they will sit around forever. This patch adds a per-connection timer which fires if we've had no acks for five seconds. This is superior to the generic TX timer because it catches the case of a small number of packets being sent and never acked. This fixes a bug we were seeing on real systems, where some IPv6 neighbour discovery packets would not be acked and then prevent the module from being removed, due to skbs lying around. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Remove TX timeout codeMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | The iseries_veth driver uses the generic TX timeout watchdog, however a better solution is in the works, so remove this code. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Use kobjects to track lifecycle of connection structsMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The iseries_veth driver can attach to multiple vlans, which correspond to multiple net devices. However there is only 1 connection between each LPAR, so the connection structure may be shared by multiple net devices. This makes module removal messy, because we can't deallocate the connections until we know there are no net devices still using them. The solution is to use ref counts on the connections, so we can delete them (actually stop) as soon as the ref count hits zero. This patch fixes (part of) a bug we were seeing with IPv6 sending probes to a dead LPAR, which would then hang us forever due to leftover skbs. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Make init_connection() & destroy_connection() symmetricalMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch makes veth_init_connection() and veth_destroy_connection() symmetrical in that they allocate/deallocate the same data. Currently if there's an error while initialising connections (ie. ENOMEM) we call veth_module_cleanup(), however this will oops because we call driver_unregister() before we've called driver_register(). I've never seen this actually happen though. So instead we explicitly call veth_destroy_connection() for each connection, any that have been set up will be deallocated. We also fix a potential leak if vio_register_driver() fails. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Only call dma_unmap_single() if dma_map_single() succeededMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | The iseries_veth driver unconditionally calls dma_unmap_single() even when the corresponding dma_map_single() may have failed. Rework the code a bit to keep the return value from dma_unmap_single() around, and then check if it's a dma_mapping_error() before we do the dma_unmap_single(). Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Replace lock-protected atomic with an ordinary variableMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | The iseries_veth driver uses atomic ops to manipulate the in_use field of one of its per-connection structures. However all references to the flag occur while the connection's lock is held, so the atomic ops aren't necessary. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Remove redundant message stack lockMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | The iseries_veth driver keeps a stack of messages for each connection and a lock to protect the stack. However there is also a per-connection lock which makes the message stack lock redundant. Remove the message stack lock and document the fact that callers of the stack-manipulation functions must hold the connection's lock. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Fix broken promiscuous handlingMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | Due to a logic bug, once promiscuous mode is enabled in the iseries_veth driver it is never disabled. The driver keeps two flags, promiscuous and all_mcast which have exactly the same effect. This is because we only ever receive packets destined for us, or multicast packets. So consolidate them into one promiscuous flag for simplicity. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Try to avoid pathological reset behaviourMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The iseries_veth driver contains a state machine which is used to manage how connections are setup and neogotiated between LPARs. If one side of a connection resets for some reason, the two LPARs can get stuck in a race to re-setup the connection. This can lead to the connection being declared dead by one or both ends. In practice the connection is declared dead by one or both ends approximately 8/10 times a connection is reset, although it is rare for connections to be reset. (an example here: http://michael.ellerman.id.au/files/misc/veth-trace.html) The core of the problem is that the end that resets the connection doesn't wait for the other end to become aware of the reset. So the resetting end starts setting the connection back up, and then receives a reset from the other end (which is the response to the initial reset). And so on. We're severely limited in what we can do to fix this. The protocol between LPARs is essentially fixed, as we have to interoperate with both OS/400 and old Linux drivers. Which also means we need a fix that only changes the code on one end. The only fix I've found given that, is to just blindly sleep for a bit when resetting the connection, in the hope that the other end will get itself sorted. Needless to say I'd love it if someone has a better idea. This does work, I've so far been unable to get it to break, whereas without the fix a reset of one end will lead to a dead connection ~8/10 times. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Remove a FIXME WRT deletion of the ack_timerMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The iseries_veth driver has a timer which we use to send acks. When the connection is reset or stopped we need to delete the timer. Currently we only call del_timer() when resetting a connection, which means the timer might run again while the connection is being re-setup. As it turns out that's ok, because the flags the timer consults have been reset. It's cleaner though to call del_timer_sync() once we've dropped the lock, although the timer may still run between us dropping the lock and calling del_timer_sync(), but as above that's ok. Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [PATCH] iseries_veth: Cleanup error and debug messagesMichael Ellerman2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently the iseries_veth driver prints the file name and line number in its error messages. This isn't very useful for most users, so just print "iseries_veth: message" instead. - convert uses of veth_printk() to veth_debug()/veth_error()/veth_info() - make terminology consistent, ie. always refer to LPAR not lpar - be consistent about printing return codes as %d not %x - make format strings fit in 80 columns Signed-off-by: Michael Ellerman <michael@ellerman.id.au> Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
| * [netdrvr de2104x] store PCI bus addresses in unsigned longJeff Garzik2005-08-31
| | | | | | | | BZ# 4475.
| * [netdrvr tulip] new PCI IDJeff Garzik2005-08-31
| | | | | | | | Noted in BZ# 2960.
* | Merge refs/heads/release from ↵Linus Torvalds2005-09-01
|\ \ | | | | | | | | | master.kernel.org:/pub/scm/linux/kernel/git/aegl/linux-2.6
| * | Auto-update from upstreamTony Luck2005-08-31
| |\|
| * | [IA64] uncached allocator: use generic (not sn2 specific) functionsMartin Hicks2005-08-31
| | | | | | | | | | | | | | | | | | | | | | | | | | | Change sn2-specific calls into generic functions. Without this change the uncached allocator will not work on non-sn2 platforms. Signed-off-by: Greg Edwards <edwardsg@sgi.com> Signed-off-by: Martin Hicks <mort@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | [IA64] Low byte of current->personality is not a bitmask.Tony Luck2005-08-30
| | | | | | | | | | | | | | | | | | | | | | | | Peter Staubach pointed out that it is not correct to check current->personality & PER_LINUX32 (this will have false hits on several other personality values). Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | Auto-update from upstreamTony Luck2005-08-30
| |\ \
| * | | [IA64-SGI] One new use of "UNCACHED" needed fixing for sn2 region cleanupTony Luck2005-08-29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Some shub2 changes were not in the tree when Greg cleaned up the sn2 region definitions in 1b66776da71e33dff5edcc0b096ec3b7c40c75ad, so this one didn't get fixed. Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | | Pull rationalise-regions into release branchTony Luck2005-08-29
| |\ \ \
| | * | | [IA64] clean up sn2 region definitionsGreg Edwards2005-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up some duplicate region definitions in sn2 code. Signed-off-by: Greg Edwards <edwardsg@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | [IA64] Rationalise Region DefinitionsPeter Chubb2005-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Currently, region numbers are defined in several files, with several names. For example, we have REGION_KERNEL in asm/page.h and RGN_KERNEL in pgtable.h We also have address definitions that should depend on the RGN_XXX macros, but are currently just long constants. The following patch reorganises all the definitions so that they have the same form (RGN_XXX), are in one place, and that addresses that depend on RGN_XXX are derived from them. (This is a necessary but not sufficient patch to allow UML-like operation on IA64). Thanks to David Mosberger for catching the change I missed in mmu_context.h. Signed-off-by: Peter Chubb <peterc@gelato.unsw.edu.au> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | | | Pull ngam-maule-steiner into release branchTony Luck2005-08-29
| |\ \ \ \
| | * | | | [IA64-SGI] fix bte_copy() calling smp_processor_id() while preemptibleRuss Anderson2005-08-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | bte_copy() calls calls smp_processor_id(), which will get flagged if preemption if enabled. raw_smp_processor_id() is used instead because we are just using it to pick a BTE interface and are not tied to a specific cpu. Signed-off-by: Russ Anderson (rja@sgi.com) Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64] altix: Abstract irq_affinity at the sn pci providerMark Maule2005-08-26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Altix patch to abstract irq_affinity down to the pci provider level since different SGI hardware implements this in different ways. Signed-off-by: Mark Maule <maule@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64] SGI SN remove redundant partition SAL callRuss Anderson2005-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Clean up of SGI SN partitioning related code. The SN_SAL_GET_SN_INFO SAL call returns the partition ID, making the SN_SAL_SYSCTL_PARTITION_GET SAL call redundant. Remove sn_partid and use sn_partition_id. Signed-off-by: Russ Anderson (rja@sgi.com) Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64] - SGI SN hwperf enhancements -Mark Goodwin2005-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the SN pci device info to use the nearest node function to allocate driver memory on the nearest node (rather than defaulting to node 0). Signed-off-by: Mark Goodwin <markgw@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64] - SGI SN hwperf enhancements -Mark Goodwin2005-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a new exported function for determining the nearest node with CPUs for I/O nodes and fix a bug where the hwperf dynamic misc device was being registered before misc_init(). Signed-off-by: Mark Goodwin <markgw@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64] - SGI SN hwperf enhancements - export_pci_topologyMark Goodwin2005-08-24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Bugfix to export PCI topology information in /proc/sgi_sn/sn_topology. Signed-off-by: Mark Goodwin <markgw@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] - New SN hardware support - ptc_fixesJack Steiner2005-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Shub2 provides a much improved mechanism for issuing internode TLB purges. Add code to support the newer mechanism. There is also some debug code (disabled) that is useful for testing. Collect statistics on the number, type & duration of TLB purges. This data will be useful for making future improvements in the algorithms. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] - New SN hardware support - cpu_relaxJack Steiner2005-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a few missing calls to "hint @pause". Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] - New SN hardware support - bte_fixesJack Steiner2005-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Change the BTE driver so that it works for both shub1 and shub2. Most of the changes are related to the number of cores that use the BTE engine, to the MMR addresses of various shub registers, and to using the correct processor or network physical address. Signed-off-by: Russ Anderson <rja@sgi.com> Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] - New SN hardware support - no_warsJack Steiner2005-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Disable some shub1-specific code when running on systems with shub2. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] - New SN hardware support - boot_init_shub2Jack Steiner2005-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the addresses of the pio_write_status_addr so that they are correct for newer processors. Shub2 did not number the threads in the order that I had expected. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] - New SN hardware support - use_alias_spaceJack Steiner2005-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Use local SHUB alias space when referencing MMRs that are known to be node local. There is a slight performance benefit & code simplification. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] - New SN hardware support - addr_macrosJack Steiner2005-08-17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update the SN address macros so that they work on both shub1 and shub2. Most of the code to support shub2 was added last year but this patch fixes a few bugs and adds macros to help generate both processor-specific physical addresses & numalink physical addresses. More cleanup & optimization will be done later. Signed-off-by: Jack Steiner <steiner@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] sn pci provider for TIOCE (pciMark Maule2005-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Altix patch to add an SN pci provider for TIOCE, which is SGI's PCI Express implementation. Signed-off-by: Mark Maule <maule@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] add support for TIO huge-windowMark Maule2005-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Altix patch to add TIO "huge-window" address support to sn_dma_flush(). Update copyright in affected files. Signed-off-by: Mark Maule <maule@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] abstract force_interrupt() mechanismMark Maule2005-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Altix patch to abstract the force_interrupt() mechanism away from the pcibr provider. Signed-off-by: Mark Maule <maule@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] altix: cosmetic rename of SGI_PCIBR_ERRORMark Maule2005-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Cosmetic altix patch to rename SGI_PCIBR_ERROR to something more generic and remove a duplicate #define. Signed-off-by: Mark Maule <maule@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| | * | | | [IA64-SGI] Altix only: Add PCI Domain number support.Colin Ngam2005-08-11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch enables PCI Domain numbering on Altix. Signed-off-by: Colin Ngam <cngam@sgi.com> Signed-off-by: Tony Luck <tony.luck@intel.com>
| * | | | | Pull pending-2.6.14 into release branchTony Luck2005-08-29
| |\ \ \ \ \