GitHub/exynos8895/android_kernel_samsung_universal8895.git
15 years agovlan: allow null VLAN ID to be used
Eric Dumazet [Tue, 27 Oct 2009 01:40:35 +0000 (18:40 -0700)]
vlan: allow null VLAN ID to be used

We currently use a 16 bit field (vlan_tci) to store VLAN ID/PRIO on a skb.

Null value is used as a special value, meaning vlan tagging not enabled.
This forbids use of null vlan ID.

As pointed by David, some drivers use the 3 high order bits (PRIO)

As VLAN ID is 12 bits, we can use the remaining bit (CFI) as a flag, and
allow null VLAN ID.

In case future code really wants to use VLAN_CFI_MASK, we'll have to use
a bit outside of vlan_tci.

#define VLAN_PRIO_MASK         0xe000 /* Priority Code Point */
#define VLAN_PRIO_SHIFT        13
#define VLAN_CFI_MASK          0x1000 /* Canonical Format Indicator */
#define VLAN_TAG_PRESENT       VLAN_CFI_MASK
#define VLAN_VID_MASK          0x0fff /* VLAN Identifier */

Reported-by: Gertjan Hofman <gertjan_hofman@yahoo.com>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agocan: sja1000: fix bug using library functions for skb allocation
Kurt Van Dijck [Tue, 27 Oct 2009 00:33:59 +0000 (17:33 -0700)]
can: sja1000: fix bug using library functions for skb allocation

Commit 7b6856a0 "can: provide library functions for skb allocation"
did not properly remove two lines of the SJA1000 driver resulting in
a 'skb_over_panic' when calling skb_put, as reported by Kurt.

Signed-off-by: Kurt Van Dijck <kurt.van.dijck@eia.be>
Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agocxgb3: Set the rxq
Krishna Kumar [Fri, 23 Oct 2009 01:13:21 +0000 (01:13 +0000)]
cxgb3: Set the rxq

Set the rxq# for LRO when processing the last fragment of a
frame. This helps in fast txq selection for routing workloads.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Acked-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agortnetlink: speedup rtnl_dump_ifinfo()
Eric Dumazet [Sat, 24 Oct 2009 13:13:17 +0000 (06:13 -0700)]
rtnetlink: speedup rtnl_dump_ifinfo()

When handling large number of netdevice, rtnl_dump_ifinfo()
is very slow because it has O(N^2) complexity.

Instead of scanning one single list, we can use the 256 sub lists
of the dev_index hash table.

This considerably speedups "ip link" operations

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agogre: convert hash tables locking to RCU
Eric Dumazet [Fri, 23 Oct 2009 06:14:38 +0000 (06:14 +0000)]
gre: convert hash tables locking to RCU

GRE tunnels use one rwlock to protect their hash tables.

This locking scheme can be converted to RCU for free, since netdevice
already must wait for a RCU grace period at dismantle time.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoip6tnl: convert hash tables locking to RCU
Eric Dumazet [Fri, 23 Oct 2009 06:34:34 +0000 (06:34 +0000)]
ip6tnl: convert hash tables locking to RCU

ip6_tunnels use one rwlock to protect their hash tables.

This locking scheme can be converted to RCU for free, since netdevice
already must wait for a RCU grace period at dismantle time.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoipip: convert hash tables locking to RCU
Eric Dumazet [Fri, 23 Oct 2009 05:42:02 +0000 (05:42 +0000)]
ipip: convert hash tables locking to RCU

IPIP tunnels use one rwlock to protect their hash tables.

This locking scheme can be converted to RCU for free, since netdevice
already must wait for a RCU grace period at dismantle time.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoxfrm6_tunnel: RCU conversion
Eric Dumazet [Fri, 23 Oct 2009 18:19:19 +0000 (18:19 +0000)]
xfrm6_tunnel: RCU conversion

xfrm6_tunnels use one rwlock to protect their hash tables.

Plain and straightforward conversion to RCU locking to permit better SMP
performance.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoipv6 sit: RCU conversion phase II
Eric Dumazet [Fri, 23 Oct 2009 17:52:14 +0000 (17:52 +0000)]
ipv6 sit: RCU conversion phase II

SIT tunnels use one rwlock to protect their hash tables.

This locking scheme can be converted to RCU for free, since netdevice
already must wait for a RCU grace period at dismantle time.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoipv6 sit: RCU conversion phase I
Eric Dumazet [Fri, 23 Oct 2009 17:51:26 +0000 (17:51 +0000)]
ipv6 sit: RCU conversion phase I

SIT tunnels use one rwlock to protect their prl entries.

This first patch adds RCU locking for prl management,
with standard call_rcu() calls.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Rename 'xfp' file and functions to reflect reality
Ben Hutchings [Fri, 23 Oct 2009 08:33:42 +0000 (08:33 +0000)]
sfc: Rename 'xfp' file and functions to reflect reality

The 'XFP' driver is really a driver for the QT2022C2 and QT2025C PHYs,
covering both more and less than XFP.  Rename its functions and
constants to reflect reality and to reduce namespace pollution when
sfc is a built-in driver.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove unused code for non-autoneg speed/duplex switching
Ben Hutchings [Fri, 23 Oct 2009 08:33:27 +0000 (08:33 +0000)]
sfc: Remove unused code for non-autoneg speed/duplex switching

The only multi-speed PHY driver using this is 10Xpress, and it does
not support non-autoneg operation.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Merge efx_fc_resolve() into efx_mdio_get_pause()
Ben Hutchings [Fri, 23 Oct 2009 08:33:17 +0000 (08:33 +0000)]
sfc: Merge efx_fc_resolve() into efx_mdio_get_pause()

efx_fc_resolve() is specific to MDIO and is not used by any other
function.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Move MTD probe after netdev registration and name allocation
Ben Hutchings [Fri, 23 Oct 2009 08:33:09 +0000 (08:33 +0000)]
sfc: Move MTD probe after netdev registration and name allocation

The MTD partition is named based on the netdev name, which is set to
'eth%d' before registration.  Also, the MTD partition will currently
be left registered if netdev registration fails.

Fix both these problems by moving the MTD probe after netdev
registration.  Hold the RTNL to serialise this with the netdev
notifier that calls efx_mtd_rename().

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove unnecessary tests of efx->membase
Ben Hutchings [Fri, 23 Oct 2009 08:33:00 +0000 (08:33 +0000)]
sfc: Remove unnecessary tests of efx->membase

These cleanup functions will never be called if the MMIO region could
not be mapped.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove incorrect assertion from efx_pci_remove_main()
Ben Hutchings [Fri, 23 Oct 2009 08:32:51 +0000 (08:32 +0000)]
sfc: Remove incorrect assertion from efx_pci_remove_main()

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Merge falcon_probe_phy() into falcon_probe_port()
Ben Hutchings [Fri, 23 Oct 2009 08:32:42 +0000 (08:32 +0000)]
sfc: Merge falcon_probe_phy() into falcon_probe_port()

MAC and PHY probing are bound up together, as evidenced by the
initialisation of efx_nic::loopback_modes.  Remove the current
arbitrary separation.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove pointless abstraction of memory BAR number
Ben Hutchings [Fri, 23 Oct 2009 08:32:33 +0000 (08:32 +0000)]
sfc: Remove pointless abstraction of memory BAR number

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Removed kernel-doc for nonexistent member of efx_phy_operations
Ben Hutchings [Fri, 23 Oct 2009 08:32:22 +0000 (08:32 +0000)]
sfc: Removed kernel-doc for nonexistent member of efx_phy_operations

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Maintain interrupt moderation values in ticks, not microseconds
Ben Hutchings [Fri, 23 Oct 2009 08:32:13 +0000 (08:32 +0000)]
sfc: Maintain interrupt moderation values in ticks, not microseconds

This simplifies the implementation a lot.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Move shared members of struct falcon_nic_data into struct efx_nic
Ben Hutchings [Fri, 23 Oct 2009 08:32:04 +0000 (08:32 +0000)]
sfc: Move shared members of struct falcon_nic_data into struct efx_nic

These will also be used with Siena NICs.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Move efx_xmit_done() declaration into correct stanza
Ben Hutchings [Fri, 23 Oct 2009 08:31:54 +0000 (08:31 +0000)]
sfc: Move efx_xmit_done() declaration into correct stanza

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove declarations of nonexistent functions
Ben Hutchings [Fri, 23 Oct 2009 08:31:46 +0000 (08:31 +0000)]
sfc: Remove declarations of nonexistent functions

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Change order of device removal to reverse of probe order
Ben Hutchings [Fri, 23 Oct 2009 08:31:37 +0000 (08:31 +0000)]
sfc: Change order of device removal to reverse of probe order

This makes efx_pci_remove_main() more obviously the inverse of
efx_pci_probe_main(), and matches our out-of-tree driver.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Merge struct efx_blinker into struct efx_board
Ben Hutchings [Fri, 23 Oct 2009 08:31:29 +0000 (08:31 +0000)]
sfc: Merge struct efx_blinker into struct efx_board

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Move all TX DMA length limiting into tx.c
Ben Hutchings [Fri, 23 Oct 2009 08:31:20 +0000 (08:31 +0000)]
sfc: Move all TX DMA length limiting into tx.c

Replace the duplicated logic in efx_enqueue_skb() and
efx_tx_queue_insert() with an inline function, efx_max_tx_len().

Remove the failed attempt at abstracting hardware-specifics and put
all the magic numbers in efx_max_tx_len().

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Define DMA address mask explicitly in terms of descriptor field width
Ben Hutchings [Fri, 23 Oct 2009 08:31:07 +0000 (08:31 +0000)]
sfc: Define DMA address mask explicitly in terms of descriptor field width

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Eliminate indirect lookups of queue size constants
Ben Hutchings [Fri, 23 Oct 2009 08:30:58 +0000 (08:30 +0000)]
sfc: Eliminate indirect lookups of queue size constants

Move size and mask definitions into efx.h; calculate page orders in falcon.c.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Rename register I/O header and functions used by both Falcon and Siena
Ben Hutchings [Fri, 23 Oct 2009 08:30:46 +0000 (08:30 +0000)]
sfc: Rename register I/O header and functions used by both Falcon and Siena

While we're at it, use type suffixes of 'd', 'q' and 'o', consistent
with register type names.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Update hardware definitions for Siena
Ben Hutchings [Fri, 23 Oct 2009 08:30:36 +0000 (08:30 +0000)]
sfc: Update hardware definitions for Siena

Siena is still based on the Falcon hardware architecture and will
share many of these definitions, so replace falcon_hwdefs.h with
regs.h.

The new definitions have been generated according to a naming
convention which incorporates the type and revision information.
Update the code accordingly.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Move RX data FIFO thresholds out of struct efx_nic_type
Ben Hutchings [Fri, 23 Oct 2009 08:30:17 +0000 (08:30 +0000)]
sfc: Move RX data FIFO thresholds out of struct efx_nic_type

Since there are now separate blocks of code to set the thresholds for
each NIC type, it is no longer useful to include them in the NIC type
description.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove versioned bitfield macros
Ben Hutchings [Fri, 23 Oct 2009 08:30:06 +0000 (08:30 +0000)]
sfc: Remove versioned bitfield macros

These macros are not extensible to more than two NIC types without
repetition of register definitions, and they are only used to deal
with a few fields in RX_CFG_REG and global events which moved between
Falcon rev A1 and B0.

Therefore:
- Move RX_CFG_REG initialisation into its own function which tests the
  NIC revision just once
- Explicitly test the NIC revision when checking the RX_RECOVERY flag in
  global events
- Merge definitions of RX_XOFF_MAC_EN flag, which did not move
- Remove the macro definitions

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove boards.h, moving last remaining declaration to falcon.h
Ben Hutchings [Fri, 23 Oct 2009 08:29:51 +0000 (08:29 +0000)]
sfc: Remove boards.h, moving last remaining declaration to falcon.h

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Merge sfe4001.c into falcon_boards.c
Ben Hutchings [Fri, 23 Oct 2009 08:29:33 +0000 (08:29 +0000)]
sfc: Merge sfe4001.c into falcon_boards.c

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Rename Falcon-specific board code and types
Ben Hutchings [Fri, 23 Oct 2009 08:29:16 +0000 (08:29 +0000)]
sfc: Rename Falcon-specific board code and types

Siena will require entirely different board code.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove redundant hardware initialisation
Ben Hutchings [Fri, 23 Oct 2009 08:28:53 +0000 (08:28 +0000)]
sfc: Remove redundant hardware initialisation

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: Remove redundant header gmii.h
Ben Hutchings [Fri, 23 Oct 2009 08:28:45 +0000 (08:28 +0000)]
sfc: Remove redundant header gmii.h

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agopkt_sched: skbedit add support for setting mark
jamal [Thu, 15 Oct 2009 03:09:18 +0000 (03:09 +0000)]
pkt_sched: skbedit add support for setting mark

This adds support for setting the skb mark.

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosfc: 10Xpress: Report support for pause frames
Ben Hutchings [Fri, 23 Oct 2009 01:31:39 +0000 (18:31 -0700)]
sfc: 10Xpress: Report support for pause frames

Commits 27fbc7d 'mdio: Expose pause frame advertising flags to ethtool'
and c634263 'sfc: 10Xpress: Initialise pause advertising flags'
added to our reported advertising flags.

efx_mdio_set_settings() requires that all advertising flags are
also present in the supported flags, so make sure that is true.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agortnetlink: rtnl_setlink() and rtnl_getlink() changes
Eric Dumazet [Wed, 21 Oct 2009 10:59:31 +0000 (10:59 +0000)]
rtnetlink: rtnl_setlink() and rtnl_getlink() changes

rtnl_getlink() & rtnl_setlink() run with RTNL held, we can use
__dev_get_by_index() and __dev_get_by_name() variants and avoid
dev_hold()/dev_put()

Adds to rtnl_getlink() the capability to find a device by its name,
not only by its index.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoqlge: Add ethtool register dump function.
Ron Mercer [Wed, 21 Oct 2009 11:07:41 +0000 (11:07 +0000)]
qlge: Add ethtool register dump function.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoqlge: Add ethtool wake on LAN function.
Ron Mercer [Wed, 21 Oct 2009 11:07:40 +0000 (11:07 +0000)]
qlge: Add ethtool wake on LAN function.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoqlge: Add ethtool blink function.
Ron Mercer [Wed, 21 Oct 2009 11:07:39 +0000 (11:07 +0000)]
qlge: Add ethtool blink function.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoqlge: Add ethtool get/set pause parameter.
Ron Mercer [Wed, 21 Oct 2009 11:07:38 +0000 (11:07 +0000)]
qlge: Add ethtool get/set pause parameter.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: Use sk_tx_queue_mapping for connected sockets
Krishna Kumar [Mon, 19 Oct 2009 23:50:07 +0000 (23:50 +0000)]
net: Use sk_tx_queue_mapping for connected sockets

For connected sockets, the first run of dev_pick_tx saves the
calculated txq in sk_tx_queue_mapping. This is not saved if
either the device has a queue select or the socket is not
connected. Next iterations of dev_pick_tx uses the cached value
of sk_tx_queue_mapping.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: Fix for dst_negative_advice
Krishna Kumar [Mon, 19 Oct 2009 23:46:45 +0000 (23:46 +0000)]
net: Fix for dst_negative_advice

dst_negative_advice() should check for changed dst and reset
sk_tx_queue_mapping accordingly. Pass sock to the callers of
dst_negative_advice.

(sk_reset_txq is defined just for use by dst_negative_advice. The
only way I could find to get around this is to move dst_negative_()
from dst.h to dst.c, include sock.h in dst.c, etc)

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: IPv6 changes
Krishna Kumar [Mon, 19 Oct 2009 23:46:32 +0000 (23:46 +0000)]
net: IPv6 changes

IPv6: Reset sk_tx_queue_mapping when dst_cache is reset. Use existing
macro to do the work.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: Introduce sk_tx_queue_mapping
Krishna Kumar [Mon, 19 Oct 2009 23:46:20 +0000 (23:46 +0000)]
net: Introduce sk_tx_queue_mapping

Introduce sk_tx_queue_mapping; and functions that set, test and
get this value. Reset sk_tx_queue_mapping to -1 whenever the dst
cache is set/reset, and in socket alloc. Setting txq to -1 and
using valid txq=<0 to n-1> allows the tx path to use the value
of sk_tx_queue_mapping directly instead of subtracting 1 on every
tx.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: Avoid compiler warning for mmsghdr when CONFIG_COMPAT is not selected
Arnaldo Carvalho de Melo [Tue, 20 Oct 2009 08:09:17 +0000 (01:09 -0700)]
net: Avoid compiler warning for mmsghdr when CONFIG_COMPAT is not selected

Reported-by: Stephen Rothwell <sfr@canb.auug.org.au>
Signed-off-by: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agofilter: Add SKF_AD_QUEUE instruction
Eric Dumazet [Tue, 20 Oct 2009 08:06:22 +0000 (01:06 -0700)]
filter: Add SKF_AD_QUEUE instruction

It can help being able to filter packets on their queue_mapping.

If filter performance is not good, we could add a "numqueue" field
in struct packet_type, so that netif_nit_deliver() and other functions
can directly ignore packets with not expected queue number.

Lets experiment this simple filter extension first.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoaf_packet: mc_drop/flush_mclist changes
Eric Dumazet [Fri, 16 Oct 2009 06:38:46 +0000 (06:38 +0000)]
af_packet: mc_drop/flush_mclist changes

We hold RTNL, we can use __dev_get_by_index() instead of dev_get_by_index()

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoaf_packet: Avoid cache line dirtying
Eric Dumazet [Fri, 16 Oct 2009 04:02:20 +0000 (04:02 +0000)]
af_packet: Avoid cache line dirtying

While doing multiple captures, I found af_packet was dirtying cache line
containing its prot_hook.

This slow down machines where several cpus are necessary to handle capture
traffic, as each prot_hook is traversed for each packet coming in or out
the host.

This patches moves "struct packet_type prot_hook" to the end of
packet_sock, and uses a ____cacheline_aligned_in_smp to make sure
this remains shared by all cpus.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agocan: provide library functions for skb allocation
Wolfgang Grandegger [Tue, 20 Oct 2009 07:08:01 +0000 (00:08 -0700)]
can: provide library functions for skb allocation

This patch makes the private functions alloc_can_skb() and
alloc_can_err_skb() of the at91_can driver public and adapts all
drivers to use these. While making the patch I realized, that
the skb's are *not* setup consistently. It's now done as shown
below:

  skb->protocol = htons(ETH_P_CAN);
  skb->pkt_type = PACKET_BROADCAST;
  skb->ip_summed = CHECKSUM_UNNECESSARY;
  *cf = (struct can_frame *)skb_put(skb, sizeof(struct can_frame));
  memset(*cf, 0, sizeof(struct can_frame));

The frame is zeroed out to avoid uninitialized data to be passed to
user space. Some drivers or library code did not set "pkt_type" or
"ip_summed". Also,  "__constant_htons()" should not be used for
runtime invocations, as pointed out by David Miller.

Signed-off-by: Wolfgang Grandegger <wg@grandegger.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoIP: Cleanups
John Dykstra [Tue, 20 Oct 2009 04:53:53 +0000 (21:53 -0700)]
IP: Cleanups

Use symbols instead of magic constants while checking PMTU discovery
setsockopt.

Remove redundant test in ip_rt_frag_needed() (done by caller).

Signed-off-by: John Dykstra <john.dykstra1@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoi2400m-sdio: select IWMC3200TOP in Kconfig
Tomas Winkler [Sat, 17 Oct 2009 09:09:36 +0000 (09:09 +0000)]
i2400m-sdio: select IWMC3200TOP in Kconfig

i2400m-sdio requires iwmc3200top for its operation

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Acked-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoiwmc3200wifi: select IWMC3200TOP in Kconfig
Tomas Winkler [Sat, 17 Oct 2009 09:09:35 +0000 (09:09 +0000)]
iwmc3200wifi: select IWMC3200TOP in Kconfig

iwmc3200wifi requires iwmc3200top  for its operation

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Acked-by: Zhu Yi <yi.zhu@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoiwmc3200top: Add Intel Wireless MultiCom 3200 top driver.
Tomas Winkler [Sat, 17 Oct 2009 09:09:34 +0000 (09:09 +0000)]
iwmc3200top: Add Intel Wireless MultiCom 3200 top driver.

This patch adds Intel Wireless MultiCom 3200 top driver.
IWMC3200 is 4Wireless Com CHIP (GPS/BT/WiFi/WiMAX).
Top driver is responsible for device initialization and firmware download.
Firmware handled by top is responsible for top itself and
as well as bluetooth and GPS coms. (Wifi and WiMax provide their own firmware)
In addition top driver is used to retrieve firmware logs
and supports other debugging features

Signed-off-by: Tomas Winkler <tomas.winkler@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agopkt_sched: ingress socket filter by mark
jamal [Mon, 19 Oct 2009 02:17:56 +0000 (02:17 +0000)]
pkt_sched: ingress socket filter by mark

Allow bpf to set a filter to drop packets that dont
match a specific mark

Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoqlge: Size RX buffers based on MTU.
Ron Mercer [Mon, 19 Oct 2009 03:32:19 +0000 (03:32 +0000)]
qlge: Size RX buffers based on MTU.

Change RX large buffer size based on MTU. If pages are larger
than the MTU the page is divided up into multiple chunks and passed to
the hardware.  When pages are smaller than MTU each RX buffer can
contain be comprised of up to 2 pages.

Signed-off-by: Ron Mercer <ron.mercer@qlogic.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoxfrm: remove skb_icv_walk
Steffen Klassert [Wed, 7 Oct 2009 22:50:40 +0000 (22:50 +0000)]
xfrm: remove skb_icv_walk

The last users of skb_icv_walk are converted to ahash now,
so skb_icv_walk is unused and can be removed.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoah: Remove obsolete code
Steffen Klassert [Wed, 7 Oct 2009 22:49:57 +0000 (22:49 +0000)]
ah: Remove obsolete code

ah4 and ah6 are converted to ahash now, so we can remove the
code for the obsolete hash algorithm.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoah6: convert to ahash
Steffen Klassert [Wed, 7 Oct 2009 22:49:01 +0000 (22:49 +0000)]
ah6: convert to ahash

This patch converts ah6 to the new ahash interface.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoah4: convert to ahash
Steffen Klassert [Wed, 7 Oct 2009 22:48:17 +0000 (22:48 +0000)]
ah4: convert to ahash

This patch converts ah4 to the new ahash interface.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoah: Add struct crypto_ahash to ah_data
Steffen Klassert [Wed, 7 Oct 2009 22:47:16 +0000 (22:47 +0000)]
ah: Add struct crypto_ahash to ah_data

To support for ahash algorithms, we add a pointer to a
crypto_ahash to ah_data.

Signed-off-by: Steffen Klassert <steffen.klassert@secunet.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agocosa: Kill off the use of the old ioctl path
Alan Cox [Wed, 14 Oct 2009 05:22:24 +0000 (05:22 +0000)]
cosa: Kill off the use of the old ioctl path

Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: sk_drops consolidation part 2
Eric Dumazet [Thu, 15 Oct 2009 00:12:40 +0000 (00:12 +0000)]
net: sk_drops consolidation part 2

- skb_kill_datagram() can increment sk->sk_drops itself, not callers.

- UDP on IPV4 & IPV6 dropped frames (because of bad checksum or policy checks) increment sk_drops

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoinet: rename some inet_sock fields
Eric Dumazet [Thu, 15 Oct 2009 06:30:45 +0000 (06:30 +0000)]
inet: rename some inet_sock fields

In order to have better cache layouts of struct sock (separate zones
for rx/tx paths), we need this preliminary patch.

Goal is to transfert fields used at lookup time in the first
read-mostly cache line (inside struct sock_common) and move sk_refcnt
to a separate cache line (only written by rx path)

This patch adds inet_ prefix to daddr, rcv_saddr, dport, num, saddr,
sport and id fields. This allows a future patch to define these
fields as macros, like sk_refcnt, without name clashes.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agogenetlink: Optimize and one bug fix in genl_generate_id()
Krishna Kumar [Wed, 14 Oct 2009 19:55:07 +0000 (19:55 +0000)]
genetlink: Optimize and one bug fix in genl_generate_id()

1. GENL_MIN_ID is a valid id -> no need to start at
   GENL_MIN_ID + 1.
2. Avoid going through the ids two times: If we start at
   GENL_MIN_ID+1 (*or bigger*) and all ids are over!, the
   code iterates through the list twice (*or lesser*).
3. Simplify code - no need to start at idx=0 which gets
   reset to GENL_MIN_ID.

Patch on net-next-2.6. Reboot test shows that first id
passed to genl_register_family was 16, next two were
GENL_ID_GENERATE and genl_generate_id returned 17 & 18
(user level testing of same code shows expected values
across entire range of MIN/MAX).

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agogenetlink: Optimize genl_register_family()
Krishna Kumar [Wed, 14 Oct 2009 19:54:53 +0000 (19:54 +0000)]
genetlink: Optimize genl_register_family()

genl_register_family() doesn't need to call genl_family_find_byid
when GENL_ID_GENERATE is passed during register.

Patch on net-next-2.6, compile and reboot testing only.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agocxgb3: No need to wake queue in xmit handler
Krishna Kumar [Wed, 14 Oct 2009 19:54:19 +0000 (19:54 +0000)]
cxgb3: No need to wake queue in xmit handler

The xmit handler doesn't need to wake the queue after stopping
it temporarily (some other drivers are doing the same).

Patch on net-next-2.6, multiple netperf sessions tested.

Signed-off-by: Krishna Kumar <krkumar2@in.ibm.com>
Acked-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoctcm rollback in case of errors
Einar Lueck [Wed, 14 Oct 2009 22:54:59 +0000 (22:54 +0000)]
ctcm rollback in case of errors

Group device now cleanly reacts to failures during channel start and
implements a clean rollback.

Signed-off-by: Einar Lueck <elelueck@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agolcs: Recognize return codes of ccw_device_set_online().
Klaus-Dieter Wacker [Wed, 14 Oct 2009 22:54:58 +0000 (22:54 +0000)]
lcs: Recognize return codes of ccw_device_set_online().

The creation of a new lcs device requires a call to the function
ccw_device_set_online() for the read and the write channel. Failure
of either call should terminate the lcs device creation immediately
with return code -ENODEV.

Signed-off-by: Klaus-Dieter Wacker <kdwacker@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agolcs: ODEBUG: object is on stack, but not annotated.
Klaus-Dieter Wacker [Wed, 14 Oct 2009 22:54:57 +0000 (22:54 +0000)]
lcs: ODEBUG: object is on stack, but not annotated.

Timer_list structure in lcs_send_lancmd() is allocated on stack.
Initialization with init_timer() leads to above ODEBUG message.
Instead use init_timer_on_stack() which prevents above msg.

Signed-off-by: Klaus-Dieter Wacker <kdwacker@de.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoaf_iucv: remove duplicate sock_set_flag
Ursula Braun [Wed, 14 Oct 2009 22:54:56 +0000 (22:54 +0000)]
af_iucv: remove duplicate sock_set_flag

Remove duplicate sock_set_flag(sk, SOCK_ZAPPED) in iucv_sock_close,
which has been overlooked in September-commit
7514bab04e567c9408fe0facbde4277f09d5eb74.

Cc: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoaf_iucv: use sk functions to modify sk->sk_ack_backlog
Hendrik Brueckner [Wed, 14 Oct 2009 22:54:55 +0000 (22:54 +0000)]
af_iucv: use sk functions to modify sk->sk_ack_backlog

Instead of modifying sk->sk_ack_backlog directly, use respective
socket functions.

Signed-off-by: Hendrik Brueckner <brueckner@linux.vnet.ibm.com>
Signed-off-by: Ursula Braun <ursula.braun@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonetxen; update version to 4.0.62
Dhananjay Phadke [Fri, 16 Oct 2009 15:50:12 +0000 (15:50 +0000)]
netxen; update version to 4.0.62

Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonetxen: sysfs control for auto firmware recovery
Narender Kumar [Fri, 16 Oct 2009 15:50:11 +0000 (15:50 +0000)]
netxen: sysfs control for auto firmware recovery

Firmware hang detection and recovery (reset) need to
be disabled for diagnostic tools, which can run
some disruptive tests.

This adds a driver level control to turn off this
feature by diag tools.

Signed-off-by: Narender Kumar <narender.kumar@qlogic.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonetxen: fix error codes in for tools access
Dhananjay Phadke [Fri, 16 Oct 2009 15:50:10 +0000 (15:50 +0000)]
netxen: fix error codes in for tools access

Use -EIO or -EINVAL as error codes, these can get passed up
to applications (tools).

Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonetxen: onchip memory access change
Amit Kumar Salecha [Fri, 16 Oct 2009 15:50:09 +0000 (15:50 +0000)]
netxen: onchip memory access change

Add support for different windowing scheme for on chip
memory in future chip revisions. This is required by
diagnostic tools.

Signed-off-by: Amit Kumar Salecha <amit@netxen.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonetxen: reset sequence changes
Amit Kumar Salecha [Fri, 16 Oct 2009 15:50:08 +0000 (15:50 +0000)]
netxen: reset sequence changes

Future revisions need different chip reset sequence
and firmware initialization.

Also clean up some never used debug code.

Signed-off-by: Amit Kumar Salecha <amit@netxen.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonetxen: 128 memory controller support
Amit Kumar Salecha [Fri, 16 Oct 2009 15:50:07 +0000 (15:50 +0000)]
netxen: 128 memory controller support

Future revisions of the chip have 128 bit memory
transactions. Require drivers to implement rmw
in case of sub-128 bit accesses by driver. This
is mostly used by diagnostic tools.

Signed-off-by: Amit Kumar Salecha <amit@netxen.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonetxen: defines for next revision
Amit Kumar Salecha [Fri, 16 Oct 2009 15:50:06 +0000 (15:50 +0000)]
netxen: defines for next revision

Signed-off-by: Amit Kumar Salecha <amit@netxen.com>
Signed-off-by: Dhananjay Phadke <dhananjay@netxen.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobe2net: Add support for next generation of BladeEngine device.
Ajit Khaparde [Sat, 17 Oct 2009 01:02:12 +0000 (18:02 -0700)]
be2net: Add support for next generation of BladeEngine device.

Add new PCI ids to support next generation of BladeEngine device.

Signed-off-by: Ajit Khaparde <ajitk@serverengines.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoPhonet: hold socket before giving it to sk_deliver_skb()
Rémi Denis-Courmont [Thu, 15 Oct 2009 19:29:14 +0000 (12:29 -0700)]
Phonet: hold socket before giving it to sk_deliver_skb()

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Acked-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Update to version 1.52.1-1
Eilon Greenstein [Thu, 15 Oct 2009 07:19:31 +0000 (00:19 -0700)]
bnx2x: Update to version 1.52.1-1

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Report the maximal available BW as link speed
Eilon Greenstein [Thu, 15 Oct 2009 07:19:05 +0000 (00:19 -0700)]
bnx2x: Report the maximal available BW as link speed

The device is limited to the maximal BW allocation, so it should be displayed as
the link speed to notify the user.

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Do not call load/unload functionality from DCC
Eilon Greenstein [Thu, 15 Oct 2009 07:18:47 +0000 (00:18 -0700)]
bnx2x: Do not call load/unload functionality from DCC

There is really no need to clear the MAC or the FW filtering rules - it was
added for completion, but caused race conditions with load/unload. Removing this
redundant code

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Adding FW mailbox mutex
Eilon Greenstein [Thu, 15 Oct 2009 07:18:27 +0000 (00:18 -0700)]
bnx2x: Adding FW mailbox mutex

DCC commands are not protected with the RTNL lock, so a mutex should be added

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Changing the Disabled state to a flag
Eilon Greenstein [Thu, 15 Oct 2009 07:18:08 +0000 (00:18 -0700)]
bnx2x: Changing the Disabled state to a flag

When working with DCC, a function can be disabled or enabled (virtual link down
or up). Using the function state introduced some race conditions with the
load/unload flow.
Using a separate flag to indicate that the function is disabled.

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Remove old FW files
Eilon Greenstein [Thu, 15 Oct 2009 07:17:45 +0000 (00:17 -0700)]
bnx2x: Remove old FW files

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Allowing 0 as initial fairness value
Eilon Greenstein [Thu, 15 Oct 2009 07:17:20 +0000 (00:17 -0700)]
bnx2x: Allowing 0 as initial fairness value

Value of zero was used to disable the fairness mechanism. Though the code
(driver and FW) allowed changing the value at run time, it did not allow to do
that if the mechanism was disabled to begin with.
Fixed the FW to allow turning on and off the mechanism at run time. Fixed the
code to read the value from the chip at the right sequence.
Without this fix, if the initial value was set to zero, traffic could not run on
the interface.

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agobnx2x: Add FW 5.2.7
Eilon Greenstein [Thu, 15 Oct 2009 07:16:27 +0000 (00:16 -0700)]
bnx2x: Add FW 5.2.7

Signed-off-by: Eilon Greenstein <eilong@broadcom.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agosparc: Add missing __NR_recvmmsg define.
David S. Miller [Thu, 15 Oct 2009 04:32:43 +0000 (21:32 -0700)]
sparc: Add missing __NR_recvmmsg define.

Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agonet: sk_drops consolidation
Eric Dumazet [Thu, 15 Oct 2009 03:40:11 +0000 (20:40 -0700)]
net: sk_drops consolidation

sock_queue_rcv_skb() can update sk_drops itself, removing need for
callers to take care of it. This is more consistent since
sock_queue_rcv_skb() also reads sk_drops when queueing a skb.

This adds sk_drops managment to many protocols that not cared yet.

Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agohamradio: Fix bit test correctly.
Thomas Sailer [Wed, 14 Oct 2009 22:15:24 +0000 (15:15 -0700)]
hamradio: Fix bit test correctly.

Signed-off-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoPhonet: forward incoming packets
Rémi Denis-Courmont [Wed, 14 Oct 2009 00:48:31 +0000 (00:48 +0000)]
Phonet: forward incoming packets

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoPhonet: route outgoing packets
Rémi Denis-Courmont [Wed, 14 Oct 2009 00:48:30 +0000 (00:48 +0000)]
Phonet: route outgoing packets

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoPhonet: routing table Netlink interface
Rémi Denis-Courmont [Wed, 14 Oct 2009 00:48:29 +0000 (00:48 +0000)]
Phonet: routing table Netlink interface

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoPhonet: routing table backend
Rémi Denis-Courmont [Wed, 14 Oct 2009 00:48:28 +0000 (00:48 +0000)]
Phonet: routing table backend

The Phonet "universe" only has 64 addresses, so we keep a trivial flat
routing table.

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
15 years agoPhonet: deliver broadcast packets to broadcast sockets
Rémi Denis-Courmont [Wed, 14 Oct 2009 00:48:27 +0000 (00:48 +0000)]
Phonet: deliver broadcast packets to broadcast sockets

Signed-off-by: Rémi Denis-Courmont <remi.denis-courmont@nokia.com>
Signed-off-by: David S. Miller <davem@davemloft.net>