11 years agosmsc95xx: remove unused completion struct
Steve Glendinning [Mon, 26 Jan 2009 01:53:58 +0000]
smsc95xx: remove unused completion struct

Oliver Neukum spotted the useless complete() in our async callback.  On
closer inspection, the entire completion struct is unused.  This patch
removes it.

Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agocom20020: Fix allyesconfig build failure.
David S. Miller [Sat, 24 Jan 2009 06:28:48 +0000]
com20020: Fix allyesconfig build failure.

Reported by Stephen Rothwell.

Due to missing 'extern' in the com20020_netdev_ops declaration,
each file that includes linux/com20020.h gets another copy
defined in it's resulting object file.

Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoe1000e: drop lltx, remove unnecessary lock
Jesse Brandeburg [Mon, 19 Jan 2009 14:17:08 +0000]
e1000e: drop lltx, remove unnecessary lock

LLTX is deprecated and complicated, don't use it.  It was observed by Don Ash
<donash4@gmail.com> that e1000e was acquiring this lock in the NAPI cleanup
path.  This is obviously a bug, as this is a leftover from when e1000
supported multiple tx queues and fake netdevs.

another user reported this to us and tested routing with the 2.6.27 kernel and
this patch and reported a 3.5 % improvement in packets forwarded in a
multi-port test on 82571 parts.

Signed-off-by: Jesse Brandeburg <jesse.brandeburg@intel.com>
Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoau1000: reorder functions
Florian Fainelli [Thu, 22 Jan 2009 22:06:25 +0000]
au1000: reorder functions

This patch reorders functions so that we do longer need
forward declarations.

Signed-off-by: Florian Fainelli <florian@openwrt.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: enable namespace support in ipv4 multicast routing code
Benjamin Thery [Thu, 22 Jan 2009 04:56:23 +0000]
netns: ipmr: enable namespace support in ipv4 multicast routing code

This last patch makes the appropriate changes to use and propagate the
network namespace where needed in IPv4 multicast routing code.

This consists mainly in replacing all the remaining init_net occurences
with current netns pointer retrieved from sockets, net devices or
mfc_caches depending on the routines' contexts.

Some routines receive a new 'struct net' parameter to propagate the current
netns:
* vif_add/vif_delete
* ipmr_new_tunnel
* mroute_clean_tables
* ipmr_cache_find
* ipmr_cache_report
* ipmr_cache_unresolved
* ipmr_mfc_add/ipmr_mfc_delete
* ipmr_get_route
* rt_fill_info (in route.c)

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: declare ipmr /proc/net entries per-namespace
Benjamin Thery [Thu, 22 Jan 2009 04:56:22 +0000]
netns: ipmr: declare ipmr /proc/net entries per-namespace

Declare IPv4 multicast forwarding /proc/net entries per-namespace:
/proc/net/ip_mr_vif
/proc/net/ip_mr_cache

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: declare reg_vif_num per-namespace
Benjamin Thery [Thu, 22 Jan 2009 04:56:21 +0000]
netns: ipmr: declare reg_vif_num per-namespace

Preliminary work to make IPv4 multicast routing netns-aware.

Declare variable 'reg_vif_num' per-namespace, move into struct netns_ipv4.

At the moment, this variable is only referenced in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: declare mroute_do_assert and mroute_do_pim per-namespace
Benjamin Thery [Thu, 22 Jan 2009 04:56:20 +0000]
netns: ipmr: declare mroute_do_assert and mroute_do_pim per-namespace

Preliminary work to make IPv4 multicast routing netns-aware.

Declare IPv multicast routing variables 'mroute_do_assert' and
'mroute_do_pim' per-namespace in struct netns_ipv4.

At the moment, these variables are only referenced in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: declare counter cache_resolve_queue_len per-namespace
Benjamin Thery [Thu, 22 Jan 2009 04:56:19 +0000]
netns: ipmr: declare counter cache_resolve_queue_len per-namespace

Preliminary work to make IPv4 multicast routing netns-aware.

Declare variable cache_resolve_queue_len per-namespace: move it into
struct netns_ipv4.

This variable counts the number of unresolved cache entries queued in the
list mfc_unres_queue. This list is kept global to all netns as the number
of entries per namespace is limited to 10 (hardcoded in routine
ipmr_cache_unresolved).
Entries belonging to different namespaces in mfc_unres_queue will be
identified by matching the mfc_net member introduced previously in
struct mfc_cache.

Keeping this list global to all netns, also allows us to keep a single
timer (ipmr_expire_timer) to handle their expiration.
In some places cache_resolve_queue_len value was tested for arming
or deleting the timer. These tests were equivalent to testing
mfc_unres_queue value instead and are replaced in this patch.

At the moment, cache_resolve_queue_len is only referenced in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: dynamically allocate mfc_cache_array
Benjamin Thery [Thu, 22 Jan 2009 04:56:18 +0000]
netns: ipmr: dynamically allocate mfc_cache_array

Preliminary work to make IPv4 multicast routing netns-aware.

Dynamically allocate IPv4 multicast forwarding cache, mfc_cache_array,
and move it to struct netns_ipv4.

At the moment, mfc_cache_array is only referenced in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: store netns in struct mfc_cache
Benjamin Thery [Thu, 22 Jan 2009 04:56:17 +0000]
netns: ipmr: store netns in struct mfc_cache

This patch stores into struct mfc_cache the network namespace each
mfc_cache belongs to. The new member is mfc_net.

mfc_net is assigned at cache allocation and doesn't change during
the rest of the cache entry life.
A new net parameter is added to ipmr_cache_alloc/ipmr_cache_alloc_unres.

This will help to retrieve the current netns around the IPv4 multicast
routing code.

At the moment, all mfc_cache are allocated in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: dynamically allocate vif_table
Benjamin Thery [Thu, 22 Jan 2009 04:56:16 +0000]
netns: ipmr: dynamically allocate vif_table

Preliminary work to make IPv6 multicast routing netns-aware.

Dynamically allocate interface table vif_table and move it to
struct netns_ipv4, and update MIF_EXISTS() macro.

At the moment, vif_table is only referenced in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetns: ipmr: allocate mroute_socket per-namespace.
Benjamin Thery [Thu, 22 Jan 2009 04:56:15 +0000]
netns: ipmr: allocate mroute_socket per-namespace.

Preliminary work to make IPv4 multicast routing netns-aware.

Make IPv4 multicast routing mroute_socket per-namespace,
moves it into struct netns_ipv4.

At the moment, mroute_socket is only referenced in init_net.

Signed-off-by: Benjamin Thery <benjamin.thery@bull.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: pppoe - get rid of DECLARE_MAC_BUF
Cyrill Gorcunov [Thu, 22 Jan 2009 21:52:26 +0000]
net: pppoe - get rid of DECLARE_MAC_BUF

While was playing with PPP namespaces I occasionally brought
back DECLARE_MAC_BUF which is not needed (we have %pM here).
Fix it.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosctp/ipv6.c: use ipv6_addr_copy
Joe Perches [Thu, 22 Jan 2009 21:49:44 +0000]
sctp/ipv6.c: use ipv6_addr_copy

Signed-off-by: Joe Perches <joe@perches.com>
Acked-by: Vlad Yasevich <vladislav.yasevich@hp.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Implement ip link del tunXXX
Eric W. Biederman [Thu, 22 Jan 2009 00:02:16 +0000]
tun: Implement ip link del tunXXX

This greatly simplifies testing to verify I have fixed the problems
with a tun device disappearing when the tun file descriptor is still
held open.

Further it allows removal network namespace operations for the tun
driver.  Reducing the network namespace handling in the driver to the
minimum.  i.e. When we are creating a tun device.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: There is no longer any need to deny changing network namespaces
Eric W. Biederman [Tue, 20 Jan 2009 11:08:46 +0000]
tun: There is no longer any need to deny changing network namespaces

With the awkward case between free_netdev and dev_chr_close fixed
there is no longer any need to limit tun and tap devices to the
network namespace they were created in.  So remove the
NETIF_F_NETNS_LOCAL flag on the network device.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Fix races between tun_net_close and free_netdev.
Eric W. Biederman [Tue, 20 Jan 2009 11:07:17 +0000]
tun: Fix races between tun_net_close and free_netdev.

The tun code does not cope gracefully if the network device goes away before
the tun file descriptor is closed.  It looks like we can trigger this with
rmmod, and moving tun devices between network namespaces will allow this
to be triggered when network namespaces exit.

To fix this I introduce an intermediate data structure tun_file which
holds a count of users and a pointer to the struct tun_struct.  tun_get
increments that reference count if it is greater than 0.  tun_put decrements
that reference count and detaches from the network device if the count is 0.

While we have a file attached to the network device I hold a reference
to the network device keeping it from going away completely.

When a network device is unregistered I decrement the count of the
attached tun_file and if that was the last user I detach the tun_file,
and all processes on read_wait are woken up to ensure they do not
sleep indefinitely. As some of those sleeps happen with the count on
the tun device elevated waking up the read waiters ensures that
tun_file will be detached in a timely manner.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Move read_wait into tun_file
Eric W. Biederman [Tue, 20 Jan 2009 11:03:21 +0000]
tun: Move read_wait into tun_file

The poll interface requires that the waitqueue exist while the struct
file is open.  In the rare case when a tun device disappears before
the tun file closes we fail to provide this property, so move
read_wait.

This is safe now that tun_net_xmit is atomic with tun_detach.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Make tun_net_xmit atomic wrt tun_attach && tun_detach
Eric W. Biederman [Tue, 20 Jan 2009 11:02:28 +0000]
tun: Make tun_net_xmit atomic wrt tun_attach && tun_detach

Currently this small race allows for a packet to be received when we
detach from an tun device and still be enqueued.  Not especially
important but not what the code is trying to do.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Grab the netns in open.
Eric W. Biederman [Tue, 20 Jan 2009 11:01:48 +0000]
tun: Grab the netns in open.

Grabbing namespaces in open, and putting them in close always seems to
be the cleanest approach with the fewest surprises.

So now that we have tun_file so we have somepleace to put the network
namespace, let's grab the network namespace on file open and put on
file close.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Introduce tun_file
Eric W. Biederman [Tue, 20 Jan 2009 11:00:40 +0000]
tun: Introduce tun_file

Currently the tun code suffers from only having a single word of
data that exists for the entire life of the tun file descriptor.

This results in peculiar holding of references to the network namespace
as well as races between free_netdevice and tun_chr_close.

Fix this by introducing tun_file which will hold the per file state.
For the moment it still holds just a single word so the differences
are all logic changes with no changes in semantics.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Use POLLERR not EBADF in tun_chr_poll
Eric W. Biederman [Tue, 20 Jan 2009 10:59:05 +0000]
tun: Use POLLERR not EBADF in tun_chr_poll

EBADF is meaningless in the context of a poll mask so use POLLERR
instead.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Fix races in tun_set_iff
Eric W. Biederman [Tue, 20 Jan 2009 10:57:48 +0000]
tun: Fix races in tun_set_iff

It is possible for two different tasks with access to the same file
descriptor to call tun_set_iff on it at the same time and race to
attach to a tap device.  Prevent this by placing all of the logic to
attach to a file descriptor in one function and testing the file
descriptor to be certain it is not already attached to another tun
device.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotun: Remove unnecessary tun_get_by_name
Eric W. Biederman [Tue, 20 Jan 2009 10:56:20 +0000]
tun: Remove unnecessary tun_get_by_name

Currently the tun driver keeps a private list of tun devices for what
appears to be a small gain in performance when reconnecting a file
descriptor to an existing tun or tap device.  So simplify the code by
removing it.

Signed-off-by: Eric W. Biederman <ebiederm@aristanetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: pppoe,pppol2tp - register channels with explicit net
Cyrill Gorcunov [Wed, 21 Jan 2009 23:55:40 +0000]
net: pppoe,pppol2tp - register channels with explicit net

In PPPo[E|L2TP] we could explicitly point which net namespace
we're going to use for channels - make it so.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: ppp_generic - introduce net-namespace functionality v2
Cyrill Gorcunov [Wed, 21 Jan 2009 23:55:35 +0000]
net: ppp_generic - introduce net-namespace functionality v2

- Each namespace contains ppp channels and units separately
  with appropriate locks

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: pppol2tp - introduce net-namespace functionality
Cyrill Gorcunov [Wed, 21 Jan 2009 23:55:15 +0000]
net: pppol2tp - introduce net-namespace functionality

- Each tunnel and appropriate lock are inside own namespace now.
- pppox code allows to create per-namespace sockets for
  both PX_PROTO_OE and PX_PROTO_OL2TP protocols. Actually since
  now pppox_create support net-namespaces new PPPo... protocols
  (if they ever will be) should support net-namespace too otherwise
  explicit check for &init_net would be needed.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: James Chapman <jchapman@katalix.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: pppoe - introduce net-namespace functionality
Cyrill Gorcunov [Wed, 21 Jan 2009 23:54:54 +0000]
net: pppoe - introduce net-namespace functionality

- each net-namespace for pppoe module is having own
  hash table and appropriate locks wich are allocated
  at time of namespace intialization. It requires about
  140 bytes of memory for every new namespace but such
  approach allow us to escape from hash chains growing
  and additional lock contends (especially in SMP environment).

- pppox code allows to create per-namespace sockets for
  PX_PROTO_OE protocol only (since at this moment support
  for pppol2tp net-namespace is not implemented yet).

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: pppoe - code cleanup and helpers
Cyrill Gorcunov [Wed, 21 Jan 2009 23:54:15 +0000]
net: pppoe - code cleanup and helpers

- Introduce PPPOE_HASH_MASK.
- Remove redundant declaration of pppoe_chan_ops.
- Introduce stage_session helper.
- Tabs, space, long-line-split cleanup.

Signed-off-by: Cyrill Gorcunov <gorcunov@openvz.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoehea: Improve driver behaviour in low mem conditions
Thomas Klein [Wed, 21 Jan 2009 22:45:57 +0000]
ehea: Improve driver behaviour in low mem conditions

Reworked receive queue fill policies to make the driver more tolerant
in low memory conditions.

Signed-off-by: Thomas Klein <tklein@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoehea: Fix mem allocations which require page alignment
Thomas Klein [Wed, 21 Jan 2009 22:45:33 +0000]
ehea: Fix mem allocations which require page alignment

PAGE_SIZE allocations via slab are not guaranteed to be page-aligned. Fixed
all memory allocations where page alignment is required by firmware.

Signed-off-by: Thomas Klein <tklein@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoehea: Use net_device_ops structure
Thomas Klein [Wed, 21 Jan 2009 22:43:59 +0000]
ehea: Use net_device_ops structure

Adapt to lately introduced net_device_ops structure.

Signed-off-by: Thomas Klein <tklein@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoe1000: drop lltx, remove unnecessary lock
Alexander Duyck [Wed, 21 Jan 2009 22:42:47 +0000]
e1000: drop lltx, remove unnecessary lock

LLTX is deprecated, don't use it.  This completes the removal of LLTX from
the Intel Network drivers.

Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoigb: make certain to power on optics for 82576 fiber nics
Alexander Duyck [Wed, 21 Jan 2009 22:42:28 +0000]
igb: make certain to power on optics for 82576 fiber nics

It appears that a step was missed in the initialization of 82576 fiber nics
that resulted in it not powering on the optics.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoigb: igb should not flag lltx
Alexander Duyck [Wed, 21 Jan 2009 22:42:07 +0000]
igb: igb should not flag lltx

Igb has flags enabling lltx but this is a holdover from the earlier
e1000 driver which the igb driver was based off of.

Signed-off-by: Alexander Duyck <alexander.h.duyck@intel.com>
Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agobnx2: annotate bp->phy_lock functions
Harvey Harrison [Tue, 20 Jan 2009 01:27:06 +0000]
bnx2: annotate bp->phy_lock functions

It looks like the locking is OK as the locks were being taken before the
various phy setup functions, add the annotations as they release and
reacquire the phy_lock.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agocxgb3: Replace LRO with GRO
Herbert Xu [Wed, 21 Jan 2009 22:39:13 +0000]
cxgb3: Replace LRO with GRO

This patch makes cxgb3 invoke the GRO hooks instead of LRO.  As
GRO has a compatible external interface to LRO this is a very
straightforward replacement.

I've kept the ioctl controls for per-queue LRO switches.  However,
we should not encourage anyone to use these.

Because of that, I've also kept the skb construction code in
cxgb3.  Hopefully we can phase out those per-queue switches
and then kill this too.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Acked-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agogre: strict physical device binding
Timo Teras [Tue, 20 Jan 2009 01:22:12 +0000]
gre: strict physical device binding

Check the device on receive path and allow otherwise identical devices
as long as the physical device differs.

This is useful for NBMA tunnels, where you want to use different gre IP
for each public IP available via different physical devices.

Signed-off-by: Timo Teras <timo.teras@iki.fi>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agophylib: unsigneds go unnoticed
Roel Kluin [Tue, 20 Jan 2009 01:14:21 +0000]
phylib: unsigneds go unnoticed

both pdata->mdc and pdata->mdio are unsigned. Notice a negative
return value.

Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agovirtio_net: add link status handling
Mark McLoughlin [Tue, 20 Jan 2009 01:09:49 +0000]
virtio_net: add link status handling

Allow the host to inform us that the link is down by adding
a VIRTIO_NET_F_STATUS which indicates that device status is
available in virtio_net config.

This is currently useful for simulating link down conditions
(e.g. using proposed qemu 'set_link' monitor command) but
would also be needed if we were to support device assignment
via virtio.

Signed-off-by: Mark McLoughlin <markmc@redhat.com>
Signed-off-by: Rusty Russell <rusty@rustcorp.com.au> (added future masking)
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosmc91x: enable ethtool EEPROM interface
Vernon Sauder [Fri, 16 Jan 2009 13:23:19 +0000]
smc91x: enable ethtool EEPROM interface

Signed-off-by: Vernon Sauder <vsauder@inhand.com>
Acked-by: Nicolas Pitre <nico@cam.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoPS3: gelic: wireless: convert the wireless part to net_device_ops
Masakazu Mokuno [Thu, 15 Jan 2009 22:52:55 +0000]
PS3: gelic: wireless: convert the wireless part to net_device_ops

Convert the gelic wireless driver to net_device_ops

Signed-off-by: Masakazu Mokuno <mokuno@sm.sony.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoPS3: gelic: convert the ethernet part to net_device_ops
Masakazu Mokuno [Thu, 15 Jan 2009 22:47:29 +0000]
PS3: gelic: convert the ethernet part to net_device_ops

Convert the gelic driver to net_device_ops

Signed-off-by: Masakazu Mokuno <mokuno@sm.sony.co.jp>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotg3: remove extra casting
Francois Romieu [Tue, 20 Jan 2009 00:56:50 +0000]
tg3: remove extra casting

Signed-off-by: Francois Romieu <romieu@fr.zoreil.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoinet: Allowing more than 64k connections and heavily optimize bind(0) time.
Evgeniy Polyakov [Tue, 20 Jan 2009 00:46:02 +0000]
inet: Allowing more than 64k connections and heavily optimize bind(0) time.

With simple extension to the binding mechanism, which allows to bind more
than 64k sockets (or smaller amount, depending on sysctl parameters),
we have to traverse the whole bind hash table to find out empty bucket.
And while it is not a problem for example for 32k connections, bind()
completion time grows exponentially (since after each successful binding
we have to traverse one bucket more to find empty one) even if we start
each time from random offset inside the hash table.

So, when hash table is full, and we want to add another socket, we have
to traverse the whole table no matter what, so effectivelly this will be
the worst case performance and it will be constant.

Attached picture shows bind() time depending on number of already bound
sockets.

Green area corresponds to the usual binding to zero port process, which
turns on kernel port selection as described above. Red area is the bind
process, when number of reuse-bound sockets is not limited by 64k (or
sysctl parameters). The same exponential growth (hidden by the green
area) before number of ports reaches sysctl limit.

At this time bind hash table has exactly one reuse-enbaled socket in a
bucket, but it is possible that they have different addresses. Actually
kernel selects the first port to try randomly, so at the beginning bind
will take roughly constant time, but with time number of port to check
after random start will increase. And that will have exponential growth,
but because of above random selection, not every next port selection
will necessary take longer time than previous. So we have to consider
the area below in the graph (if you could zoom it, you could find, that
there are many different times placed there), so area can hide another.

Blue area corresponds to the port selection optimization.

This is rather simple design approach: hashtable now maintains (unprecise
and racely updated) number of currently bound sockets, and when number
of such sockets becomes greater than predefined value (I use maximum
port range defined by sysctls), we stop traversing the whole bind hash
table and just stop at first matching bucket after random start. Above
limit roughly corresponds to the case, when bind hash table is full and
we turned on mechanism of allowing to bind more reuse-enabled sockets,
so it does not change behaviour of other sockets.

Signed-off-by: Evgeniy Polyakov <zbr@ioremap.net>
Tested-by: Denys Fedoryschenko <denys@visp.net.lb>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoigb: Replace LRO with GRO
Herbert Xu [Mon, 19 Jan 2009 23:20:57 +0000]
igb: Replace LRO with GRO

This patch makes igb invoke the GRO hooks instead of LRO.  As
GRO has a compatible external interface to LRO this is a very
straightforward replacement.

Three things of note:

1) I've kept the LRO Kconfig option until we decide to enable
GRO across the board at which point it can also be killed.

2) The poll_controller stuff is broken in igb as it tries to do
the same work as the normal poll routine.  Since poll_controller
can be called in the middle of a poll, this can't be good.

I noticed this because poll_controller can invoke the GRO hooks
without flushing held GRO packets.

However, this should be harmless (assuming the poll_controller
bug above doesn't kill you first :) since the next ->poll will
clear the backlog.  The only time when we'll have a problem is
if we're already executing the GRO code on the same ring, but
that's no worse than what happens now.

3) I kept the ip_summed check before calling GRO so that we're
on par with previous behaviour.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotyphoon: replace users of __constant_{endian}
Harvey Harrison [Mon, 19 Jan 2009 06:03:01 +0000]
typhoon: replace users of __constant_{endian}

The base versions handle constant folding just fine, use them
directly.

Signed-off-by: Harvey Harrison <harvey.harrison@gmail.com>
Acked-by: David Dillow <dave@thedillows.org>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosfc: Replace LRO with GRO
Herbert Xu [Mon, 19 Jan 2009 05:50:16 +0000]
sfc: Replace LRO with GRO

This patch makes sfc invoke the GRO hooks instead of LRO.  As
GRO has a compatible external interface to LRO this is a very
straightforward replacement.

Everything should appear identical to the user except that the
offload is now controlled by the GRO ethtool option instead of
LRO.  I've kept the lro module parameter as is since that's for
compatibility only.

I have eliminated efx_rx_mk_skb as the GRO layer can take care
of all packets regardless of whether GRO is enabled or not.

So the only case where we don't call GRO is if the packet checksum
is absent.  This is to keep the behaviour changes of the patch to
a minimum.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoixgbe: Replace LRO with GRO
Herbert Xu [Mon, 19 Jan 2009 05:49:45 +0000]
ixgbe: Replace LRO with GRO

This patch makes ixgbe invoke the GRO hooks instead of LRO.  As
GRO has a compatible external interface to LRO this is a very
straightforward replacement.

As GRO uses the napi structure to track the held packets, I've
modified the code paths involved to pass that along.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodccp: Debugging functions for feature negotiation
Gerrit Renker [Fri, 16 Jan 2009 23:36:33 +0000]
dccp: Debugging functions for feature negotiation

Since all feature-negotiation processing now takes place in feat.c,
functions for producing verbose debugging output are concentrated
there.

New functions to print out values, entry records, and options are
provided, and also a macro is defined to not always have the function
name in the output line.

Thanks a lot to Wei Yongjun and Giuseppe Galeota for help and
discussion with an earlier revision of this patch.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodccp: Initialisation and type-checking of feature sysctls
Gerrit Renker [Fri, 16 Jan 2009 23:36:32 +0000]
dccp: Initialisation and type-checking of feature sysctls

This patch takes care of initialising and type-checking sysctls
related to feature negotiation. Type checking is important since some
of the sysctls now directly impact the feature-negotiation process.

The sysctls are initialised with the known default values for each
feature.  For the type-checking the value constraints from RFC 4340
are used:

 * Sequence Window uses the specified Wmin=32, the maximum is ulong (4 bytes),
   tested and confirmed that it works up to 4294967295 - for Gbps speed;
 * Ack Ratio is between 0 .. 0xffff (2-byte unsigned integer);
 * CCIDs are between 0 .. 255;
 * request_retries, retries1, retries2 also between 0..255 for good measure;
 * tx_qlen is checked to be non-negative;
 * sync_ratelimit remains as before.

Notes:
------
 1. Die s@sysctl_dccp_feat@sysctl_dccp@g since the sysctls are now in feat.c.
 2. As pointed out by Arnaldo, the pattern of type-checking repeats itself in
    other places, sometimes with exactly the same kind of definitions (e.g.
    "static int zero;"). It may be a good idea (kernel janitors?) to consolidate
    type checking. For the sake of keeping the changeset small and in order not
    to affect other subsystems, I have not strived to generalise here.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodccp: Implement both feature-local and feature-remote Sequence Window feature
Gerrit Renker [Fri, 16 Jan 2009 23:36:31 +0000]
dccp: Implement both feature-local and feature-remote Sequence Window feature

This adds full support for local/remote Sequence Window feature, from which the
  * sequence-number-validity (W) and
  * acknowledgment-number-validity (W') windows
derive as specified in RFC 4340, 7.5.3.

Specifically, the following is contained in this patch:
  * integrated new socket fields into dccp_sk;
  * updated the update_gsr/gss routines with regard to these fields;
  * updated handler code: the Sequence Window feature is located at the TX side,
    so the local feature is meant if the handler-rx flag is false;
  * the initialisation of `rcv_wnd' in reqsk is removed, since
    - rcv_wnd is not used by the code anywhere;
    - sequence number checks are not done in the LISTEN state (cf. 7.5.3);
    - dccp_check_req checks the Ack number validity more rigorously;
  * the `struct dccp_minisock' became empty and is now removed.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodccp: Initialisation framework for feature negotiation
Gerrit Renker [Fri, 16 Jan 2009 23:36:30 +0000]
dccp: Initialisation framework for feature negotiation

This initialises feature negotiation from two tables, which are in
turn are initialised from sysctls.

As a novel feature, specifics of the implementation (e.g. that short
seqnos and ECN are not yet available) are advertised for robustness.

Signed-off-by: Gerrit Renker <gerrit@erg.abdn.ac.uk>
Acked-by: Ian McDonald <ian.mcdonald@jandi.co.nz>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agocxgb3: ease msi-x settings conditions
Divy Le Ray [Mon, 19 Jan 2009 05:29:40 +0000]
cxgb3: ease msi-x settings conditions

The driver currently drops to line interrupt mode
if it did not get all the msi-x vectors it requested.

Allow msi-x settings when a minimal amount of vectors
is provided.

Signed-off-by: Divy Le Ray <divy@chelsio.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoe1000e: Invoke VLAN GRO handler
Herbert Xu [Thu, 15 Jan 2009 04:37:59 +0000]
e1000e: Invoke VLAN GRO handler

Now that VLAN has GRO support as well, we can call its GRO handler
as well.

Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: Remove redundant NAPI functions
Ben Hutchings [Tue, 20 Jan 2009 00:43:59 +0000]
net: Remove redundant NAPI functions

Following the removal of the unused struct net_device * parameter from
the NAPI functions named *netif_rx_* in commit 908a7a1, they are
exactly equivalent to the corresponding *napi_* functions and are
therefore redundant.

Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
Acked-by: Neil Horman <nhorman@tuxdriver.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosc92031: add a link to the datasheet
Cesar Eduardo Barros [Thu, 15 Jan 2009 04:34:24 +0000]
sc92031: add a link to the datasheet

Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosc92031: use device id directly instead of made-up name
Cesar Eduardo Barros [Thu, 15 Jan 2009 04:34:04 +0000]
sc92031: use device id directly instead of made-up name

Instead of making up a name for the device ids, put them directly in the
device id table. Also move the vendor id to pci_ids.h.

Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosc92031: inline SC92031_DESCRIPTION
Cesar Eduardo Barros [Thu, 15 Jan 2009 04:33:44 +0000]
sc92031: inline SC92031_DESCRIPTION

SC92031_DESCRIPTION is only used in one place.

Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosc92031: remove meaningless version string
Cesar Eduardo Barros [Thu, 15 Jan 2009 04:33:27 +0000]
sc92031: remove meaningless version string

The version string makes no sense anymore, since this driver is only
maintained within the kernel.

Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agosc92031: more useful banner in kernel log
Cesar Eduardo Barros [Thu, 15 Jan 2009 04:33:07 +0000]
sc92031: more useful banner in kernel log

The banner currently printed when loading the module is mostly useless.

Replace it with a more informative one, printed after probing the device.

Output format copied from 8139cp/8139too.

Signed-off-by: Cesar Eduardo Barros <cesarb@cesarb.net>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonet: constify VFTs
Jan Engelhardt [Wed, 14 Jan 2009 21:52:18 +0000]
net: constify VFTs

Signed-off-by: Jan Engelhardt <jengelh@medozas.de>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoWAN: Convert generic HDLC drivers to netdev_ops.
Krzysztof Hałasa [Thu, 8 Jan 2009 21:52:11 +0000]
WAN: Convert generic HDLC drivers to netdev_ops.

Also remove unneeded last_rx update from Synclink drivers.
Synclink part mostly by Stephen Hemminger.

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoWAN: Allow hw HDLC drivers to override dev->get_stats.
Krzysztof Hałasa [Thu, 8 Jan 2009 18:55:57 +0000]
WAN: Allow hw HDLC drivers to override dev->get_stats.

Use the internal get_stats() by default.
Fixes LMC and wanXL drivers.

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoWAN: Generic HDLC now uses IFF_WAN_HDLC private flag.
Krzysztof Hałasa [Thu, 8 Jan 2009 18:46:54 +0000]
WAN: Generic HDLC now uses IFF_WAN_HDLC private flag.

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agowimax/i2400m: convert to net_device_ops
Inaky Perez-Gonzalez [Fri, 9 Jan 2009 16:43:49 +0000]
wimax/i2400m: convert to net_device_ops

Signed-off-by: Inaky Perez-Gonzalez <inaky@linux.intel.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoclaw: convert to net_device_ops
Frank Blaschka [Fri, 9 Jan 2009 03:43:59 +0000]
claw: convert to net_device_ops

claw convert to net_device_ops.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agonetiucv: convert to net_device_ops
Frank Blaschka [Fri, 9 Jan 2009 03:43:58 +0000]
netiucv: convert to net_device_ops

netiucv convert to net_device_ops.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoctcm: convert to net_device_ops
Frank Blaschka [Fri, 9 Jan 2009 03:43:57 +0000]
ctcm: convert to net_device_ops

ctcm convert to net_device_ops.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agolcs: convert to net_device_ops
Frank Blaschka [Fri, 9 Jan 2009 03:43:56 +0000]
lcs: convert to net_device_ops

lcs convert to net_device_ops.

Signed-off-by: Frank Blaschka <frank.blaschka@de.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodmascc: convert to internal net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:42 +0000]
dmascc: convert to internal net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodmascc: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:41 +0000]
dmascc: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agomkiss: convert to internal network device stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:40 +0000]
mkiss: convert to internal network device stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoscc: convert to internal net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:39 +0000]
scc: convert to internal net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoyam: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:38 +0000]
yam: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoyam: convert to internal net_device_stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:37 +0000]
yam: convert to internal net_device_stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agohdlcdrv: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:36 +0000]
hdlcdrv: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agohdlcdrv: convert to internal net_device_stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:35 +0000]
hdlcdrv: convert to internal net_device_stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodmascc: convert to network_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:34 +0000]
dmascc: convert to network_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agodmascc: convert to internal network device stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:33 +0000]
dmascc: convert to internal network device stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agobpqether: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:32 +0000]
bpqether: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agobpqether: convert to internal net_device_stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:31 +0000]
bpqether: convert to internal net_device_stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agobaycom: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:30 +0000]
baycom: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agobaycom: convert to internal net_device_stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:29 +0000]
baycom: convert to internal net_device_stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Acked-by: Thomas Sailer <t.sailer@alumni.ethz.ch>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years ago6pack: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:28 +0000]
6pack: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoznet: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:27 +0000]
znet: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years ago3c559: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:26 +0000]
3c559: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agotms380tr: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:25 +0000]
tms380tr: convert to net_device_ops

Conver this related group of drivers to new API

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoolympic: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:24 +0000]
olympic: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoolympic: convert to internal network device stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:23 +0000]
olympic: convert to internal network device stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agolanstreamer: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:22 +0000]
lanstreamer: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agolanstreamer: convert to internal network stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:21 +0000]
lanstreamer: convert to internal network stats

Use internal network_device_stats to keep track of statistics.

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoibmtr: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:20 +0000]
ibmtr: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years agoibmtr: convert to internal network_device_stats
Stephen Hemminger [Fri, 9 Jan 2009 13:01:19 +0000]
ibmtr: convert to internal network_device_stats

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years ago3c59x: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:18 +0000]
3c59x: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years ago3c527: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:17 +0000]
3c527: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years ago3c523: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:16 +0000]
3c523: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years ago3c515: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:15 +0000]
3c515: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

11 years ago3c509: convert to net_device_ops
Stephen Hemminger [Fri, 9 Jan 2009 13:01:14 +0000]
3c509: convert to net_device_ops

Signed-off-by: Stephen Hemminger <shemminger@vyatta.com>
Signed-off-by: David S. Miller <davem@davemloft.net>