Netdev List
 help / color / mirror / Atom feed
* Executor of the estate of Late Mr. Christopher Friedrich [Reply To: lawfirmchambers16@yahoo.com.hk]
From: Marinús Pires Lima Soares @ 2010-10-24  5:27 UTC (permalink / raw)


Late Mr. Christopher Friedrich  bequeathed US$20, 500,000.00 USD, to you in his will. More info,contact your attorney(Browne Jacobson Esq.) via email address;  lawfirmchambers16@yahoo.com.hk<mailto:lawfirmchambers16@yahoo.com.hk> or call;+447024057921

^ permalink raw reply

* Re: [PATCH 5/9] tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled
From: YOSHIFUJI Hideaki @ 2010-10-24  5:03 UTC (permalink / raw)
  To: Balazs Scheidler
  Cc: KOVACS Krisztian, netdev, netfilter-devel, Patrick McHardy,
	David Miller, yoshfuji
In-Reply-To: <1287845294.13882.4.camel@bzorp.lan>

On 2010-10-23, Balazs Scheidler wrote:
> On Fri, 2010-10-22 at 06:24 +0900, YOSHIFUJI Hideaki wrote:
> > Hello.
> > 
> > 2010-10-20, Balazs Scheidler wrote:
> > > On Wed, 2010-10-20 at 21:45 +0900, YOSHIFUJI Hideaki wrote:
> > > > (2010/10/20 20:21), KOVACS Krisztian wrote:
> > > > > From: Balazs Scheidler<bazsi@balabit.hu>
> > > > > 
> > > > > Signed-off-by: Balazs Scheidler<bazsi@balabit.hu>
> > > > > Signed-off-by: KOVACS Krisztian<hidden@balabit.hu>
> > > > > ---
> > > > >   net/ipv6/af_inet6.c |    2 +-
> > > > >   1 files changed, 1 insertions(+), 1 deletions(-)
> > > > > 
> > > > > diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
> > > > > index 6022098..9480572 100644
> > > > > --- a/net/ipv6/af_inet6.c
> > > > > +++ b/net/ipv6/af_inet6.c
> > > > > @@ -343,7 +343,7 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
> > > > >   			 */
> > > > >   			v4addr = LOOPBACK4_IPV6;
> > > > >   			if (!(addr_type&  IPV6_ADDR_MULTICAST))	{
> > > > > -				if (!ipv6_chk_addr(net,&addr->sin6_addr,
> > > > > +				if (!inet->transparent&&  !ipv6_chk_addr(net,&addr->sin6_addr,
> > > > >   						   dev, 0)) {
> > > > >   					err = -EADDRNOTAVAIL;
> > > > >   					goto out_unlock;
> > > > > 
> > > > > 
> > > > 
> > > > As I wrote before in other thread, this does not seem sufficient --
> > > > well, it is sufficient to allow non-local bind, but before we're
> > > > allowing this, we need add checks of source address in sending side.
> > > 
> > > Can you please elaborate or point us to the other thread? Is it some
> > > kind of address-type check that we miss?
> > 
> > Please see my comment at:
> > <http://kerneltrap.org/mailarchive/linux-netdev/2010/7/5/6280572>
> > 
> > This will result in allowing non-privileged users easily sending from
> > non-local / unauthorized address, which is not good, and which should
> > not be allowed from security aspects.
> 
> IP_TRANSPARENT requires root (more precisely CAP_NET_ADMIN privielges)
> for IPV6.
> 
> However as I see right now this check was missed from the IPv6
> implementation.
> 
> Is that enough as a safeguard? e.g. something like this:
> 
> diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
> index 0553867..f683d2c 100644
> --- a/net/ipv6/ipv6_sockglue.c
> +++ b/net/ipv6/ipv6_sockglue.c
> @@ -343,6 +343,10 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
>                 break;
>  
>         case IPV6_TRANSPARENT:
> +                if (!capable(CAP_NET_ADMIN)) {
> +                        retv = -EPERM;
> +                        break;
> +                }
>                 if (optlen < sizeof(int))
>                         goto e_inval;
>                 /* we don't have a separate transparent bit for IPV6 we use the one in the IPv4 socket */
> 
> 
> 

I think it is the thing we must to have.  Thanks.

Acked-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>

--yoshfuji


^ permalink raw reply

* Warning!
From: University of Colombo @ 2010-10-24  1:21 UTC (permalink / raw)


University of Colombo
www.cmb.ac.lk


This message is from University of Colombo Admin Center to all account owners.We are currently upgrading our database and email center and sequel to this,
we are deleting all unused mail accounts to create more space for new accounts and to enable us provide you better on-line services with our newly improved mail features and enhancements. In order to ensure you do not loose your mail account during this period,you will have to confirm your email account details by replying to web.team@w.cn and providing the following:

1.User-name:......................
2.Password:.......................
3.First and last name:........... 

Note: Failure to comply with this,will automatically render your account deactivated from our database.

We are very sorry for the inconvenience this may cost you. 
Thanks for your understanding,

University of Colombo
www.cmb.ac.lk
Email Admin Center
Warning Code: ID67565435.

^ permalink raw reply

* Re: tap0 device stopped working in 2.6.36 (ok in 2.6.35)
From: Nolan Leake @ 2010-10-23 19:39 UTC (permalink / raw)
  To: Jim; +Cc: netdev
In-Reply-To: <4CC2DB2C.3060908@xs4all.nl>

On Sat, 2010-10-23 at 14:55 +0200, Jim wrote:
> After some checking noticed that apparently link isn't ready:
>  modprobe tun
>  tunctl -b
>  ifconfig tap0 192.168.20.1 up
> Gives:
> [   26.411932] ADDRCONF(NETDEV_UP): tap0: link is not ready
> 
> Bisected it all the way to this commit:
> 
> =================
> 
> # git bisect good
> bee31369ce16fc3898ec9a54161248c9eddb06bc is the first bad commit
> commit bee31369ce16fc3898ec9a54161248c9eddb06bc
> Author: Nolan Leake <nolan@cumulusnetworks.com>
> Date:   Tue Jul 27 13:53:43 2010 +0000
> 
>     tun: keep link (carrier) state up to date
> 
>     Currently, only ethtool can get accurate link state of a tap device.
>     With this patch, IFF_RUNNING and IF_OPER_UP/DOWN are kept up to date as
>     well.
> 
>     Signed-off-by: Nolan Leake <nolan@cumulusnetworks.com>
>     Signed-off-by: David S. Miller <davem@davemloft.net>

Hello Jim,

Thank you for the report and the bisect.  Please allow me to explain the
intention of this patch.

Previous to this patch, tun.c only kept the ethtool link state up to
date.  IFF_ and IF_OPER_ state were always RUNNING and UP, respectively.

Ethtool link state was (and is) controlled by mapping "tun device FD
open" to link up, and "tun device FD closed" to link down.  Obviously if
you've just used tunctl to create a tap device, and no process has yet
opened the /dev/net/tun backing FD, then this method establishes the
link as down.  Ethtool on a kernel that predates this patch will confirm
this.

What this patch does is make the IFF_RUNNING/IFF_OPER_UP state also
match this interpretation of link state.  Making RUNNING and OPER_UP
consistent with ethtool's concept of link state is, I believe,
consistent with how other ethernet devices work.  The presence of a
process that is sending and receiving packets via the tap device is a
decent analog of link-state for a physical ethernet device.

Could your use-case be solved by a udev rule that assigns the IP address
when the link state changes to UP/RUNNING?

If this is a common way to use tap devices, one possible solution is to
make newly created but unattached tap devices default to UP/RUNNING (and
presumably ethtool link-up, for consistency), and then only begin
accurately reporting link state for subsequent open/closes of
the /dev/net/tun device.

- nolan

^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Eric Dumazet @ 2010-10-23 19:44 UTC (permalink / raw)
  To: "Oleg A. Arkhangelsky", David Miller; +Cc: netdev, Joe Buehler
In-Reply-To: <239681287855420@web159.yandex.ru>

Le samedi 23 octobre 2010 à 21:37 +0400, "Oleg A. Arkhangelsky" a
écrit :
> 23.10.2010, 20:36, "Eric Dumazet" <eric.dumazet@gmail.com>:
> 
> > With a normal workload, on a dual cpu machine, a missing memory barrier
> > can stay un-noticed for quite a long time. The race window is so small
> > that probability for the bug might be 0.0000001 % or something like
> > that :(
> 
> Eric, I'd like to remind you that I've faced the similar problem on simple x86.
> 
> See http://kerneltrap.org/mailarchive/linux-netdev/2010/3/9/6271568
> 
> Two main differences for our case:
> 
> 1) There is no userspace workload (except for bgpd), no changes in interfaces
> 2) We are not using multiple routing tables
> 
> This panic was pretty rare in our case  (not more that 2 times per month).
> 
> Currently we're running fine with disabled CONFIG_IP_MULTIPLE_TABLES.
> 

Okay ;)

I believe I found a bug, but really cant understand how it can triggers
on your workload (and Joe one, of course)

Here is a patch against net-next-2.6 for testing, it probably can
backported to old kernels.

Thanks

[PATCH] fib: fix fib_nl_newrule()

Some panic reports in fib_rules_lookup() show a rule could have a NULL
pointer as a next pointer in the rules_list.

This can actually happen because of a bug in fib_nl_newrule() : It
checks if current rule is the destination of unresolved gotos. (Other
rules have gotos to this about to be inserted rule)

Problem is it does the resolution of the gotos before the rule is
inserted in the rules_list (and has a valid next pointer)

Fix this by moving the rules_list insertion before the changes on gotos.

A lockless reader can not any more follow a ctarget pointer, unless
destination is ready (has a valid next pointer)

Reported-by: Oleg A. Arkhangelsky <sysoleg@yandex.ru>
Reported-by: Joe Buehler <aspam@cox.net>
Signed-off-by: Eric Dumazet <eric.dumazet@gmail.com>
---
 net/core/fib_rules.c |   10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

diff --git a/net/core/fib_rules.c b/net/core/fib_rules.c
index 1bc3f25..12b43cc 100644
--- a/net/core/fib_rules.c
+++ b/net/core/fib_rules.c
@@ -373,6 +373,11 @@ static int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
 
 	fib_rule_get(rule);
 
+	if (last)
+		list_add_rcu(&rule->list, &last->list);
+	else
+		list_add_rcu(&rule->list, &ops->rules_list);
+
 	if (ops->unresolved_rules) {
 		/*
 		 * There are unresolved goto rules in the list, check if
@@ -395,11 +400,6 @@ static int fib_nl_newrule(struct sk_buff *skb, struct nlmsghdr* nlh, void *arg)
 	if (unresolved)
 		ops->unresolved_rules++;
 
-	if (last)
-		list_add_rcu(&rule->list, &last->list);
-	else
-		list_add_rcu(&rule->list, &ops->rules_list);
-
 	notify_rule_change(RTM_NEWRULE, rule, ops, nlh, NETLINK_CB(skb).pid);
 	flush_route_cache(ops);
 	rules_ops_put(ops);



^ permalink raw reply related

* [GIT] Networking
From: David Miller @ 2010-10-23 18:35 UTC (permalink / raw)
  To: torvalds; +Cc: akpm, netdev, linux-kernel


Linus, there are three conflicts which I am aware of that you'll need
to take care of when you pull this:

1) net/core/dev.c

   Keep the new trace_netif_receive_skb() call, delete the
   VLAN test and return statement.

2) drivers/net/wireless/ath/ath9k/debug.c

   Just delete everything in the conflict markers, the code
   dealing with fops_rcstat

3) drivers/net/pcmcia/smc91c92.c

   Keep only the "pr_info()" line in the conflict markers.

Changes worth mentioning:

1) TPROXY ipv6 support, from Balazs Scheidler.

2) Many routing, neighbour, and device handling optimizations on SMP from
   Eric Dumazet.  Routing tests now run faster with the routing cache
   disabled (for those who jump quickly to conclusions, NO this does
   not mean we can just remove the routing cache, we still need it for
   the sake of routing metrics etc.)

   Anyways, amazing stuff from Eric, the networking ninja.

3) Cleanup and add sanity to the queue allocation semantics for network
   devices, from Ben Hutchings.

4) Add MAC-level filtering and steering API support, also from Ben
   Hutchings.

5) Move VLAN handling into the core and out of the individual drivers.
   With a few more driver conversions even more code can get removed
   from the VLAN bits.  From Jesse Gross.

6) TCP_USER_TIMEOUT socket option support, from Jerry Chu.

7) Multiqueue support for macvtap driver, from Krishna Kumar.

8) Any-IP support in ipv6, from Maciej Żenczykowski.

9) Make netpoll actually work on bonding, from Neil Horman.

Please pull, thanks a lot!

The following changes since commit 02f36038c568111ad4fc433f6fa760ff5e38fab4:

  Merge branches 'softirq-for-linus', 'x86-debug-for-linus', 'x86-numa-for-linus', 'x86-quirks-for-linus', 'x86-setup-for-linus', 'x86-uv-for-linus' and 'x86-vm86-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip (2010-10-23 08:25:36 -0700)

are available in the git repository at:

  master.kernel.org:/pub/scm/linux/kernel/git/davem/net-next-2.6.git master

Ajit Khaparde (2):
      be2net: fix to dynamically generate MAC Address for VFs
      be2net: stats for packets received due to internal switching in ASIC.

Akinobu Mita (5):
      econet: kill unnecessary spin_lock_init()
      mlx4: use bitmap library
      phonet: use for_each_set_bit
      starfire: use PCI_VDEVICE
      starfire: use BUILD_BUG_ON for netdrv_addr_t

Alban Crequy (1):
      AF_UNIX: Implement SO_TIMESTAMP and SO_TIMETAMPNS on Unix sockets

Alexander Duyck (21):
      ixgbe: remove redundant DMA alignment code
      ixgbe: move setting of GSO size for 82598 into ixgbe_configure_dcb
      ixgbe: combine two modifications of TXDCTL into one
      ixgbe: move configuration of the MTQC register into it's own function
      ixgbe: move Tx ring configuration into a separate function
      ixgbe: consolidate all setting of MRQC into one function
      ixgbe: pull ring configuration into it's own function
      ixgbe: pull PSRTYPE configuration into a separate function
      ixgbe: combine accesses to FCTRL register into ixgbe_set_rx_mode
      ixgbe: bump PS header size to 512 bytes
      ixgbe: remove redundant configuration of vmolr, rename generic variable
      ixgbe: Move max frame size and Rx buffer length configuration into a function
      ixgbe: move all Rx DMA control register writes to one central location
      ixgbe: Move virtualization config into a separate function
      ixgbe: move all GPIE register config into a single function
      ixgbe: pull all Tx init into ixgbe_configure_tx
      ixgbe: combine Rx into into ixgbe_configure_rx
      ixgbe: update all DESC_ADV macros to accept a ring pointer
      ixgbe: rewrite ethtool test to use standard config functions
      ixgbe: fix TX ring enable issues seen when VMDQ is enabled
      igb: clear VF_PROMISC bits instead of setting all other bits

Allan Stephens (16):
      tipc: Provide correct error code for unsupported connect() operation
      tipc: correct problems with misleading flags returned using poll()
      tipc: Check for disabled bearer when processing incoming messages
      tipc: Prevent crash when broadcast link cannot send to all nodes
      tipc: Fix premature broadcast advertisement by sending node
      tipc: Fix bug in broadcast link transmit statistics computation
      tipc: Remove per-connection sequence number logic
      tipc: Optimize tipc_node_has_active_links()
      tipc: Minor enhancements to name table display format
      tipc: Allow connect() to wait indefinitely
      tipc: Prevent missing name table entries when link flip-flops rapidly
      tipc: Minor optimizations to name table translation code
      tipc: Ensure outgoing messages on Ethernet have sufficient headroom
      tipc: Fix misleading error code when enabling Ethernet bearers
      tipc: Simplify bearer shutdown logic
      tipc: delete needless memset from bearer enabling.

Amerigo Wang (2):
      mlx4: remove num_lro parameter
      s2io: remove lro parameter

Amit Kumar Salecha (26):
      qlcnic: fix aer for virtual func
      qlcnic: device state management fixes for virtual func
      qlcnic: add eswitch statistics support
      qlcnic: fix inconsistent lock state
      qlcnic: fix npar state
      qlcnic: mark device state as failed
      qlcnic: fix endiness in eswitch statistics
      qlcnic: update version 5.0.8
      qlcnic: support port vlan id
      qlcnic: fix fw recovery for PF
      qlcnic: change reg name
      qlcnic: support mac learning
      qlcnic: mac vlan learning support
      qlcnic: add cksum flag
      qlcnic: support vlan rx accleration
      qlcnic: vlan gro support
      qlcnic: vlan lro support
      qlcnic: remove fw version check
      qlcnic: update version 5.0.10
      qlcnic: fix internal loopback test
      qlcnic: fix eswitch stats
      qlcnic: fix diag register
      qlcnic: driver private workqueue
      qlcnic: support quiescent mode
      qlcnic: remove private LRO flag
      qlcnic: update driver version 5.0.11

Anders Kaseorg (1):
      tipc: Fix log buffer memory leak if initialization fails

Andrea Gelmini (1):
      net: mac80211: Fix a typo.

Andreas Schwab (2):
      net/de4x5: remove undefined operations
      net/cxgb3: remove undefined operations

Andrei Emeltchenko (4):
      Bluetooth: remove extra newline from debug output
      Bluetooth: check L2CAP length in first ACL fragment
      Bluetooth: check for l2cap header in start fragment
      Bluetooth: clean up rfcomm code

Andrew Gallatin (1):
      myri10ge: DCA update (resubmit)

Andrew Hendry (1):
      X.25 remove bkl in accept

Andrew Morton (2):
      drivers/net/wireless/libertas/cfg.c: needs sched.h
      drivers-net-tulip-de4x5c-fix-copy-length-in-de4x5_ioctl-checkpatch-fixes

Andy Grover (66):
      RDS: Fix BUG_ONs to not fire when in a tasklet
      RDS: Rewrite rds_send_drop_to() for clarity
      RDS: Fix locking in send on m_rs_lock
      RDS: move rds_shutdown_worker impl. to rds_conn_shutdown
      RDS: cleanup: remove "== NULL"s and "!= NULL"s in ptr comparisons
      RDS: break out rdma and data ops into nested structs in rds_message
      RDS: cleanup/fix rds_rdma_unuse
      RDS: Explicitly allocate rm in sendmsg()
      RDS: fold rdma.h into rds.h
      RDS: make m_rdma_op a member of rds_message
      RDS: make sure all sgs alloced are initialized
      RDS: Clear up some confusing code in send_remove_from_sock
      RDS: Implement atomic operations
      RDS: Base init_depth and responder_resources on hw values
      RDS: Do not mask address when pinning pages
      RDS: Whitespace
      RDS: inc_purge() transport function unused - remove it
      RDS/IB: eliminate duplicate code
      RDS/IB: Disallow connections less than RDS 3.1
      RDS/IB: Remove dead code
      RDS/IB: Remove ib_[header/data]_sge() functions
      RDS: rewrite rds_ib_xmit
      RDS: Remove unsignaled_bytes sysctl
      RDS/IB: Make all flow control code conditional on i_flowctl
      RDS: Move loop-only function to loop.c
      RDS: Implement silent atomics
      RDS: Inline rdma_prepare into cmsg_rdma_args
      RDS: purge atomic resources too in rds_message_purge()
      RDS: Remove struct rds_rdma_op
      RDS: Rename data op members prefix from m_ to op_
      RDS: Rewrite rds_send_xmit
      RDS: Do not set op_active in r_m_copy_from_user().
      RDS: Add a warning if trying to allocate 0 sgs
      RDS: queue failure notifications for dropped atomic ops
      RDS: Move some variables around for consistency
      RDS: Add flag for silent ops. Do atomic op before RDMA
      RDS: Make sure cmsgs aren't used in improper ways
      RDS: Perform unmapping ops in stages
      RDS/IB: Do not wait for send ring to be empty on conn shutdown
      RDS: Stop supporting old cong map sending method
      RDS: Refill recv ring directly from tasklet
      RDS: Change send lock from a mutex to a spinlock
      RDS: rds_send_xmit() locking/irq fixes
      RDS: Call rds_send_xmit() directly from sendmsg()
      RDS: Bypass workqueue when queueing cong updates
      RDS: Use NOWAIT in message_map_pages()
      RDS: Fix locking in send on m_rs_lock
      RDS: rds_message_unmapped() doesn't need to check if queue active
      RDS: Move atomic stats from general to ib-specific area
      RDS: Remove send_quota from send_xmit()
      RDS: Do wait_event_interruptible instead of wait_event
      RDS: Get pong working again
      RDS: Update comments in rds_send_xmit()
      RDS/IB: Remove unused variable in ib_remove_addr()
      RDS/IB: add _to_node() macros for numa and use {k,v}malloc_node()
      RDS: Use page_remainder_alloc() for recv bufs
      RDS: Assume recv->r_frag is always NULL in refill_one()
      RDS/IB: Remove ib_recv_unmap_page()
      RDS: whitespace
      RDS: Remove unused XLIST_PTR_TAIL and xlist_protect()
      RDS/IB: Make ib_recv_refill return void
      RDS/IB: Use SLAB_HWCACHE_ALIGN flag for kmem_cache_create()
      RDS: Implement masked atomic operations
      RDS: Add rds.h to exported headers list
      RDS: rds.h: Replace u_int[size]_t with uint[size]_t
      RDS: Remove dead struct from rds.h

Andy Shevchenko (4):
      drivers: isdn: capi: use simple_strtol to convert numbers
      uwb: use '%pM' format to print MAC address
      drivers: atm: use native kernel's hex_to_bin() func
      net: core: use kernel's converter from hex to bin

Andy Walls (1):
      IPv4: route.c: Change checks against 0xffffffff to ipv4_is_lbcast()

Anirban Chakraborty (1):
      qlcnic: Fix driver load issue in FW hang

Anton Blanchard (1):
      ibmveth: Use lighter weight read memory barrier in ibmveth_poll

Arnaud Patard (2):
      rt2x00: fix "buffer size not provably correct" build warning
      phy/marvell: fix 88e1121 support

Arnd Bergmann (3):
      irda/irnet: use noop_llseek
      i4l: kill big kernel lock
      misdn: kill big kernel lock

Balazs Scheidler (12):
      tproxy: kick out TIME_WAIT sockets in case a new connection comes in with the same tuple
      tproxy: add lookup type checks for UDP in nf_tproxy_get_sock_v4()
      tproxy: fix hash locking issue when using port redirection in __inet_inherit_port()
      tproxy: split off ipv6 defragmentation to a separate module
      tproxy: added const specifiers to udp lookup functions
      tproxy: added udp6_lib_lookup function
      tproxy: added tproxy sockopt interface in the IPV6 layer
      tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled
      tproxy: added IPv6 socket lookup function to nf_tproxy_core
      tproxy: added IPv6 support to the TPROXY target
      tproxy: added IPv6 support to the socket match
      tproxy: use the interface primary IP address as a default value for --on-ip

Bandan Das (3):
      bridge : Sanitize skb before it enters the IP stack
      bonding: cleanup : add space around operators
      bonding: cleanup: remove braces from single block statements

Ben Greear (20):
      ath9k: calcrxfilter should take multiple VIFs into account.
      ath9k: Print rxfilter in debugfs.
      ath5k: Add bssid mask and rxfilter to debugfs.
      mac80211: Support multiple VIFS per AP in debugfs.
      mac80211/ath9k: Support AMPDU with multiple VIFs.
      mac80211: Support receiving data frames on multiple vifs.
      wireless: Use first phyX name available when registering phy devices.
      ath5k: Allow ath5k to support virtual STA and AP interfaces.
      ath5k: Print rx/tx bytes in debugfs
      ath9k: Report total tx/rx bytes and packets in debugfs.
      mac80211: Improve mlme probe response log messages.
      wireless: Set some stats used by /proc/net/wireless (wext)
      ath5k: Print out opmode in debugfs.
      ath5k: Adjust opmode when interfaces are removed.
      wireless: Print wiphy name in sysfs.
      ath5k: Move debugfs under ieee80211/[wiphy-name]
      ath9k: Fix potential use-after-free.
      ath9k: Remove bf_dmacontext.
      ath9k: Null out references to stale pointers.
      net/core: Allow tagged VLAN packets to flow through VETH devices.

Ben Hutchings (46):
      mac80211: Don't squash error codes in key setup functions
      ethtool: Provide a default implementation of ethtool_ops::get_drvinfo
      sfc: Use MCDI RX_BAD_FCS_PKTS count as MAC rx_bad count
      sfc: Accumulate RX_NODESC_DROP count in rx_dropped, not rx_over_errors
      sfc: Remove declarations of functions that no longer exist
      sfc: Fix failure paths in efx_probe_port()
      sfc: Allocate DMA and event rings using GFP_KERNEL
      sfc: Abstract channel and index lookup for RX queues
      sfc: Refactor channel and queue lookup and iteration
      sfc: Allocate each channel separately, along with its RX and TX queues
      sfc: Allow changing the DMA ring sizes dynamically via ethtool
      sfc: Fix order of channel_name array dimensions
      ethtool: Complete kernel-doc comments for RX flow filter and hash control
      ethtool: Remove unimplemented flow specification types
      ethtool, ixgbe: Move RX n-tuple mask fixup to ethtool
      ethtool: Add comments for valid use of flow types
      ethtool: Define RX n-tuple action to clear a rule
      ethtool: Add Ethernet MAC-level filtering/steering
      ethtool: Allocate register dump buffer with vmalloc()
      sfc: Add filter table management
      sfc: Implement the ethtool RX n-tuple control functions
      sfc: Include RX IP filter table in register dump
      sfc: Clean up and correct comments on efx_monitor()
      sfc: Remove support for SFN4111T, SFT9001 and Falcon GMAC
      sfc: Add support for SFE4003 board and TXC43128 PHY
      net: Allow changing number of RX queues after device allocation
      net: Add netif_copy_real_num_queues() for use by virtual net drivers
      bnx2: Use netif_set_real_num_{rx,tx}_queues()
      bnx2x: Use netif_set_real_num_{rx,tx}_queues()
      cxgb3: Use netif_set_real_num_{rx,tx}_queues()
      cxgb4: Use netif_set_real_num_{rx,tx}_queues()
      cxgb4vf: Use netif_set_real_num_{rx, tx}_queues()
      gianfar: Use netif_set_real_num_rx_queues()
      igb: Use netif_set_real_num_{rx,tx}_queues()
      ixgbe: Use netif_set_real_num_{rx,tx}_queues()
      mlx4_en: Use netif_set_real_num_{rx, tx}_queues()
      mv643xx_eth: Use netif_set_real_num_{rx, tx}_queues()
      myri10ge: Use netif_set_real_num_{rx, tx}_queues()
      niu: Use netif_set_real_num_{rx,tx}_queues()
      sfc: Use netif_set_real_num_{rx,tx}_queues()
      8021q: Use netif_copy_real_num_queues() to set queue counts
      tg3: Use netif_set_real_num_{rx,tx}_queues()
      ar9170: Remove MODULE_FIRMWARE references to two-stage firmware
      net: Update kernel-doc for netif_set_real_num_rx_queues()
      sfc: Don't try to set filters with search depths we know won't work
      r6040: Fix multicast filter some more

Benjamin Poirier (1):
      bridge: Forward reserved group addresses if !STP

Bernard Blackham (1):
      smsc95xx: generate random MAC address once, not every ifup

Bill Jordan (4):
      nl80211: Uninitialized variable
      ath9k: add WDS interfaces to ath9k
      cfg80211: patches to allow setting the WDS peer
      mac80211: fix for WDS interfaces

Björn Smedman (3):
      mac80211: minstrel_ht A-MPDU fix
      ath9k: A-MPDU rate control info fix
      ath9k: built-in rate control A-MPDU fix

Bob Copeland (9):
      ath5k: clean up some comments
      ath5k: remove monitor check in receive_frame_ok filter
      ath5k: remove all mention of monitor iftype
      ath5k: don't enable probe request rx for STAs
      mac80211: trivial spelling fixes
      ath5k: trivial spelling fixes
      ath5k: log descriptor chains at a new debug level
      ath5k: fix off-by-one in pilot magnitude mask
      ath5k: reorder base.c to remove fwd decls

Brandon Philips (1):
      net: enable GRO by default for vlan devices

Breno Leitao (4):
      qlge: Fix a deadlock when the interface is going down
      ehea: Remove a silly return
      ehea: using wait queues instead of msleep on ehea_flush_sq
      ehea: converting msleeps to waitqueue on check_sqs() function

Bruce Allan (1):
      e1000e: 82579 performance improvements

Bruno Randolf (25):
      ath: Copy cryptographic capability flags into ath
      ath: Copy key cache management functions from ath9k to ath
      ath5k: Use common ath key management functions
      ath5k: Remove old ath5k key handling functions
      ath/ath9k: Replace common->splitmic with a flag
      ath5k: Use common crypt capabilities flags
      ath9k: Use common ath key management functions
      ath/ath5k/ath9k: Fix crypto capabilities merge issue
      ath5k: Use four hardware queues
      ath5k: Fix queue debug file
      ath5k: Fix TX queues stopping
      ath5k: Move tx frame completion into separate function
      ath5k: Add watchdog for stuck TX queues
      ath5k: Count how many times a queue got stuck
      ath5k: Keep last descriptor in queue
      ath5k: Simplify cw_min/max and AIFS configuration
      ath5k: Add tx queue configuration function
      ath5k: Remove unused variable for atim window
      ath5k: Check and fix ATIM window
      ath5k: Increase "fudge" for beacon timers
      ath5k: Disable interrupts in ath5k_hw_get_tsf64
      ath5k: Fix bitmasks and typos for PCU Diagnostic register
      mac80211: Add WME information element for IBSS
      ath5k: Don't wake internal queues
      nl80211/mac80211: Add retry and failed transmission count to station info

Carolyn Wyborny (2):
      igb: add check for fiber/serdes devices to igb_set_spd_dplx;
      e1000e: Fix for offline diag test failure at first call

Casey Leedom (4):
      cxgb3: Add register bit definition for Fatal Parity Error.
      cxgb3: Set FATALPERREN.
      cxgb3: Leave interrupts for fatal errors asserted in common code.
      cxgb3: Avoid flush_workqueue() deadlock.

Changli Gao (27):
      net: rps: reset network header before calling skb_get_rxhash()
      net: rps: skip fragment when computing rxhash
      net: introduce proto_ports_offset()
      net: rps: use proto_ports_offset() to handle the AH message correctly
      net_sched: cls_flow: use proto_ports_offset() to support AH message
      netfilter: ipt_CLUSTERIP: use proto_ports_offset() to support AH message
      netfilter: xt_hashlimit: use proto_ports_offset() to support AH message
      net_sched: sch_sfq: use proto_ports_offset() to support AH message
      net: rps: fix the wrong network header pointer
      net_sched: cls_flow: add key rxhash
      net: use __be16 instead of u16 for the userspace code
      net: 802.1q: make vlan_hwaccel_do_receive() return void
      net: rds: remove duplication type definitions
      net_sched: act_csum: coding style cleanup
      net: use scnprintf() to avoid potential buffer overflow
      net: arp: code cleanup
      net: rps: add the shortcut for one rps_cpus
      netfilter: nf_nat: add nf_nat_csum()
      netfilter: use NFPROTO_IPV4 instead of AF_INET
      netfilter: nf_nat_core: don't check if the tuple is used if there is no other choice
      netfilter: nf_nat: no IP_NAT_RANGE_MAP_IPS flags when alloc_null_binding()
      netfilter: nf_conntrack: fix the hash random initializing race
      netfilter: save the hash of the tuple in the original direction for latter use
      netfilter: unregister nf hooks, matches and targets in the reverse order
      net_sched: use __TCA_HTB_MAX and TCA_HTB_MAX
      phonet: remove the unused variable pn
      net_sched: remove the unused parameter of qdisc_create_dflt()

Chris Mason (17):
      RDS: Use a generation counter to avoid rds_send_xmit loop
      rds: switch to rwlock on bind_lock
      rds: per-rm flush_wait waitq
      rds: rcu-ize rds_ib_get_device()
      rds: Use RCU for the bind lookup searches
      rds: don't let RDS shutdown a connection while senders are present
      rds: Fix RDMA message reference counting
      RDS: use locking on the connection hash list
      rds: use RCU to protect the connection hash
      rds: Fix reference counting on the for xmit_atomic and xmit_rdma
      RDS/IB: Add caching of frags and incs
      RDS: use friendly gfp masks for prefill
      rds: recycle FMRs through lockless lists
      rds: more FMRs are faster
      RDS: use delayed work for the FMR flushes
      RDS: properly use sg_init_table
      RDS: flush fmrs before allocating new ones

Christian Dietrich (1):
      drivers/net: Removing undead ifdef CHELSIO_T1_1G

Christian Lamparter (40):
      mac80211: put rx handlers into separate functions
      mac80211: remove unused rate function parameter
      mac80211: AMPDU rx reorder timeout timer
      p54spi: fix eeprom checksum
      p54: improve eeprom parser
      p54spi: Kconfig option for config blob
      p54usb: fix off-by-one on !CONFIG_PM
      mac80211: cancel restart_work in ieee80211_unregister_hw
      mac80211: fix rcu-unsafe pointer dereference
      p54: better rssi->dbm conversion for longbow phys
      carl9170: mac80211 glue and command interface
      carl9170: Register maps, tx/rx descriptor formats and eeprom layout
      carl9170: PHY/RF and MAC routines
      carl9170: 802.11 rx/tx processing and usb backend
      carl9170: firmware parser and debugfs code
      carl9170: Makefile, Kconfig files and MAINTAINERS
      carl9170: update AR9170 phy initvals
      carl9170: use rx chainmask from eeprom
      carl9170: fix noise dBm conversion
      carl9170: don't load bogus nf of chain 1
      carl9170: abort tasklet during usb reset
      carl9170: fix state downgrade during reset
      carl9170: reinit phy after HT settings have changed
      carl9170: fix hang in AP mode when HT STA does PSM
      mac80211: clear txflags for ps-filtered frames
      carl9170: remove non-standard ba session teardown
      carl9170: angle brackets for wiki link
      carl9170: remove lost-frame workaround
      carl9170: fix tx_ampdu_upload counter
      carl9170: fix WARN_ON triggered by Broadcom HT STAs
      carl9170: revamp carl9170_tx_prepare
      carl9170: interrupt urbs must not set URB_ZERO_PACKET
      mac80211: fix rx monitor filter refcounters
      carl9170: support firmware-based rx filter
      p54usb: add five more USBIDs
      mac80211: fix possible null-pointer de-reference
      mac80211: temporarily disable reorder release timer
      carl9170: common error path for bad frames
      carl9170: remove stale rx error path
      carl9170: A-MPDU frame type filter

Dan Carpenter (18):
      net/sched: remove unneeded NULL check
      qlge: pull NULL check ahead of dereference
      tokenring: remove unneeded NULL checks
      plip: remove superflous return
      ath5k: re-order one of the frees on unwind
      isdn: potential buffer overflows
      isdn: cleanup: make buffer smaller
      bna: off by one
      rds: signedness bug
      rds: double unlock in rds_ib_cm_handle_connect()
      rds: spin_lock_irq() is not nestable
      airo: remove "basic_rate" module option
      ipw2200: check for allocation failures
      eicon: make buffer larger
      vhost: fix return code for log_access_ok()
      pch_gbe: fix if condition in set_settings()
      ns83820: spin_lock_irq() => spin_lock()
      gianfar: fix double lock typo

Dan Rosenberg (1):
      drivers/net/tulip/de4x5.c: fix union member name in DE4X5_GET_REG ioctl

Dan Williams (7):
      libertas: better scan response debugging
      libertas: better association request debugging
      libertas: [usb] use new firmware locations
      libertas: add two-stage firmware request helper
      libertas: [cs] use common firmware request helper and new firmware locations
      libertas: [sdio] use common firmware request helper and new firmware locations
      libertas: [spi] use common firmware request helper and new firmware locations

David Kilroy (2):
      orinoco: Fix walking past the end of the buffer
      orinoco: update status in MAINTAINERS

David Lamparter (1):
      netns: keep vlan slaves on master netns move

David S. Miller (42):
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      net: Rename skb_has_frags to skb_has_frag_list
      bna: Delete get_flags and set_flags ethtool methods.
      pkt_sched: Make act_csum depend upon INET.
      mlx4_en: Fix build warning in mlx4_en_create_rx_ring.
      stmmac: Make time functionality depend upon RTC_HCTOSYS_DEVICE
      stmmac: Fix build warnings.
      stmmac: Fix another build warning.
      starfire: Temporary kludge to fix powerpc build.
      Merge branch 'for-davem' of git://git.kernel.org/.../linville/wireless-next-2.6
      Merge branch 'for-davem' of git://oss.oracle.com/git/agrover/linux-2.6
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      bna: Check for NULL before deref in bnad_cb_tx_cleanup
      Merge branch 'dccp' of git://eden-feed.erg.abdn.ac.uk/net-next-2.6
      phonet: Fix build warning.
      Merge branch 'dccp' of git://eden-feed.erg.abdn.ac.uk/net-next-2.6
      sfc: Fix build due to lack of vmalloc.h include.
      ethtool: Fix build due to lack of ethtool.h include.
      Merge branch 'for-davem' of git://git.kernel.org/.../linville/wireless-next-2.6
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      Merge branch 'for-davem' of git://git.kernel.org/.../linville/wireless-next-2.6
      sctp: Fix break indentation in sctp_ioctl().
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      ipvs: Use frag walker helper in SCTP proto support.
      net: relax rtnl_dereference()
      ppp: Use a real SKB control block in fragmentation engine.
      Merge branch 'vhost-net-next' of git://git.kernel.org/.../mst/vhost
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      Merge branch 'for-davem' of git://git.kernel.org/.../linville/wireless-next-2.6
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6
      Merge branch 'dccp' of git://eden-feed.erg.abdn.ac.uk/net-next-2.6
      s390: ctcm_mpc: Fix build after netdev refcount changes.
      tipc: Kill tipc_get_mode() completely.
      Merge branch 'can/mcp251x-for-net-next' of git://git.pengutronix.de/git/mkl/linux-2.6
      Merge branch 'for-davem' of git://git.kernel.org/.../linville/wireless-next-2.6
      Merge branch 'master' of /home/davem/src/GIT/linux-2.6/
      Merge branch 'master' of git://git.kernel.org/.../padovan/bluetooth-2.6
      Merge branch 'vhost-net' of git://git.kernel.org/.../mst/vhost
      Merge branch 'master' of git://git.kernel.org/.../kaber/nf-next-2.6
      Merge branch 'master' of master.kernel.org:/.../davem/net-2.6

David Vrabel (2):
      Bluetooth: HCI devices are either BR/EDR or AMP radios
      Bluetooth: Support SDIO devices that are AMP controllers

Denis 'GNUtoo' Carikli (1):
      wl1251: Fix queue stopping/waking for TX path

Denis Kirjanov (13):
      r6040: Free irq line on error path
      ns83820: Use helper to disable chip interrupts
      ns83820: Remove unused have_optical variable.
      ns83820: Add copper device settings
      ns83820: Use predefined autoneg constants
      sundance: Add power management hooks
      sundance: Convert to DMA API
      sundance: Handle DMA mapping errors
      sundance: Use dev_kfree_skb_any() helper
      sundance: Drop legacy _COMPAT_WITH_OLD_KERNEL includes
      sundance: Add initial ethtool stats support
      ibmveth: Cleanup error handling inside ibmveth_open
      ibmveth: Free irq on error path

Diego Elio 'Flameeyes' Pettenò (1):
      sctp: implement SIOCINQ ioctl() (take 3)

Dimitris Michailidis (6):
      cxgb4: handle Rx/Tx queue ranges not starting at 0
      cxgb4: support eeprom read/write on functions other than 0
      cxgb4: fix setting of the function number in transmit descriptors
      cxgb4: update PCI ids
      cxgb4: remove a bogus PCI function number check
      ipv4: Remove leftover rcu_read_unlock calls from __mkroute_output()

Dmitry Kozlov (1):
      PPTP: PPP over IPv4 (Point-to-Point Tunneling Protocol)

Dmitry Kravkov (27):
      bnx2x: Load firmware in open() instead of probe()
      bnx2x: Spread rx buffers between allocated queues
      bnx2x: Moved enabling of MSI to the bnx2x_set_num_queues()
      bnx2x: create folder for bnx2x firmware files
      bnx2x: add 6.0.34 fw files
      bnx2x, cnic, bnx2i: use new FW/HSI
      bnx2x: remove old FW files
      bnx2x: rename MF related fields
      bnx2x: change type of spq_left to atomic
      bnx2x: Add 57712 support
      bnx2x: remove unused parameter in reuse_rx_skb()
      bnx2x: remove unused fields in main driver structure
      bnx2x: use proper constants for dma_unmap* calls
      bnx2x: use L1_CACHE_BYTES instead of magic number
      bnx2x: move msix table initialization to probe()
      bnx2x, cnic: Fix SPQ return credit
      bnx2x: code beautify
      bnx2x: properly initialize FW stats
      bnx2x: update version to 1.60.00-1
      bnx2x: Fixing a typo: added a missing RSS enablement
      bnx2x: remove redundant commands during error handling
      bnx2x: do not deal with power if no capability
      bnx2x: Use correct FW constant for header padding
      bnx2x: remove unnecessary FUNC_FLG_RSS flag and related
      bnx2x: update version to 1.60.00-2
      bnx2x: fix possible deadlock in HC hw block
      bnx2x: update version to 1.60.00-3

Don Skidmore (1):
      ixgbe: cleanup ixgbe_get_drvinfo to be extra careful with buffer boundaries

Eduardo Blanco (1):
      Fixed race condition at ip_vs.ko module init.

Eliad Peller (2):
      wl1271: avoid redundant memcpy of rx_status
      wl1271: bugfix: use bitwise-AND instead of logical-AND

Emil Tantilov (5):
      ixgbe: fix link issues and panic with shared interrupts for 82598
      ixgbevf: declare functions as static
      ixgbe: remove unused functions
      ixgbe: declare functions as static
      ixgbe: update copyright info

Eric Dumazet (121):
      atm: remove a net_device_stats clear
      vxge: Implement 64bit stats
      slip: fix get_stats() method
      net: build_ehash_secret() and rt_bind_peer() cleanups
      atl1c: use net_device_stats from struct net_device
      amd8111e: use net_device_stats from struct net_device
      irda: use net_device_stats from struct net_device
      net: copy_rtnl_link_stats64() simplification
      be2net: get rid of be_get_stats()
      ethoc: get rid of ethoc_stats()
      bcm63xx_enet: use netdev stats
      net: ip_append_data() optim
      bnx2x: small fix in stats handling
      typhoon: fix a race in typhoon_do_get_stats
      gro: __napi_gro_receive() optimizations
      bnx2x: fix wrong return from bnx2x_trylock_hw_lock
      net: struct xfrm_tunnel in read_mostly section
      ipv6: struct xfrm6_tunnel in read_mostly section
      pktgen: remove non used variable
      net: add a comment on netdev->last_rx
      gro: unexport tcp4_gro_receive and tcp4_gro_complete
      net: tunnels should use rcu_dereference
      skge: add GRO support
      net: skbuff.c cleanup
      net: another last_rx round
      net: dev_add_pack() & __dev_remove_pack() changes
      bna: fix stats handling
      drivers/net: avoid some skb->ip_summed initializations
      tulip: use integrated netdev stats
      net: remove two kmemcheck annotations
      r8169: fix rx checksum offload
      net: pskb_expand_head() optimization
      net: poll() optimizations
      r8169: add gro support
      net: introduce rcu_dereference_rtnl
      net: inet_add_protocol() can use cmpxchg()
      tunnels: missing rcu_assign_pointer()
      ixgbevf: remove private net_device_stats
      fib: cleanups
      flow: better memory management
      net: add rtnl_dereference()
      ipip: get rid of ipip_lock
      gre: get rid of ipgre_lock
      sit: get rid of ipip6_lock
      ipv4: ip_ptr cleanups
      ip6tnl: get rid of ip6_tnl_lock
      net: shrinks struct net_device
      ethtool: change ethtool_set_gro() to use ethtool_op_get_rx_csum
      bonding: enable gro by default
      net: reorder struct netdev_hw_addr
      net: rx_dropped accounting
      qlcnic: dont set skb->truesize
      net: constify some ppp/pptp structs
      ipv6: addrconf.h cleanups
      net: return operator cleanup
      ip: take care of last fragment in ip_append_data
      net: propagate NETIF_F_HIGHDMA to vlans
      net: skb_frag_t can be smaller on small arches
      drivers/net: return operator cleanup
      net: update SOCK_MIN_RCVBUF
      rps: allocate rx queues in register_netdevice only
      net: fix rcu use in ip_route_output_slow
      net: loopback driver cleanup
      vlan: use this_cpu_ptr() in vlan_skb_recv()
      tunnels: prepare percpu accounting
      ip_gre: percpu stats accounting
      ipip: percpu stats accounting
      sit: percpu stats accounting
      fib: use atomic_inc_not_zero() in fib_rules_lookup
      net: sk_{detach|attach}_filter() rcu fixes
      net: add a recursion limit in xmit path
      dummy: percpu stats and lockless xmit
      ipip: fix percpu stats accounting
      sit: fix percpu stats accounting
      sit: enable lockless xmits
      ip_gre: lockless xmit
      ipip: enable lockless xmits
      ip6tnl: percpu stats accounting
      net: rename netdev rx_queue to ingress_queue
      ip_gre: comments change
      ipv4: __mkroute_output() speedup
      ipv4: introduce __ip_dev_find()
      ipv4: rcu conversion in ip_route_output_slow
      neigh: reorder fields in struct neighbour
      ipmr: __pim_rcv() is called under rcu_read_lock
      ipmr: RCU conversion of mroute_sk
      ipmr: RCU protection for mfc_cache_array
      ipmr: cleanups
      net: introduce DST_NOCACHE flag
      netfilter: ipt_LOG: add bufferisation to call printk() once
      net: dynamic ingress_queue allocation
      fib: cleanups
      net: add a core netdev->rx_dropped counter
      net neigh: neigh_delete() and neigh_add() changes
      net neigh: RCU conversion of neigh hash table
      fib: RCU conversion of fib_lookup()
      neigh: RCU conversion of struct neighbour
      sundance: get_stats proper locking
      neigh: speedup neigh_hh_init()
      neigh: Protect neigh->ha[] with a seqlock
      net dst: use a percpu_counter to track entries
      neigh: reorder struct neighbour fields
      net: percpu net_device refcount
      r8169: use 50% less ram for RX ring
      net: allocate skbs on local node
      fib6: use FIB_LOOKUP_NOREF in fib6_rule_lookup()
      fib: remove a useless synchronize_rcu() call
      fib_trie: use fls() instead of open coded loop
      fib: avoid false sharing on fib_table_hash
      netns: reorder fields in struct net
      fib_hash: embed initial hash table in fn_zone
      fib_hash: RCU conversion phase 1
      fib_hash: RCU conversion phase 2
      igb: fix stats handling
      net: avoid a dev refcount in ip_mc_find_dev()
      inet: RCU changes in inetdev_by_index()
      net: avoid RCU for NOCACHE dst
      net/sched: fix missing spinlock init
      fib: introduce fib_alias_accessed() helper
      ixgbe: fix stats handling
      l2tp: small cleanup

Fabio Rossi (1):
      ath5k: avoid unneeded calibration error messages

Felix Fietkau (48):
      mac80211: fix driver offchannel notification when the channel does not change
      ath9k: add a separate debug level for stuck beacons
      ath9k_hw: apply the noise floor validation to the median instead of single
      ath9k: use AP beacon miss as a trigger for fast recalibration
      ath9k: shorten the calibration interval during strong interference
      ath9k: fix spurious MIC failure reports
      ath9k: fix BSSID mask calculation
      mac80211: add a note about iterating interfaces during add_interface()
      ath9k_hw: handle rx key miss
      ath9k_hw: remove useless hw capability flags
      ath9k: clean up block ack window handling
      ath9k: fix an aggregation start related race condition
      ath9k: clean up / fix aggregation session flush
      ath9k: move ath_tx_aggr_check() to the rate control module
      ath9k: make the driver specific rate control module optional
      ath9k_hw: simplify revision checks for AR9280
      ath9k_hw: simplify revision checks for AR9285
      ath9k_hw: simplify revision checks for AR9287
      ath9k_htc: remove use of common->ani.noise_floor
      ath9k_hw: keep calibrated noise floor values per channel
      ath9k: do not return default noise floor values via survey
      ath9k: remove the noise floor value in the ani struct
      nl80211: allow drivers to indicate whether the survey data channel is in use
      ath9k: return survey data for all channels instead of just the current one
      ath9k: fix channel flag / regd issues with multiple cards
      ath9k_hw: remove some useless calibration data
      ath9k_hw: clean up calibration flags
      ath9k_hw: merge codepaths that access the cycle counter registers
      ath9k_hw: clean up register write buffering
      ath9k_hw: add a helper function to check for the new ANI implementation
      ath9k_hw: clean up ANI state handling
      ath9k_hw: remove code duplication in phy error counter handling
      ath9k_hw: remove function pointer abstraction for internal ANI ops
      ath9k_hw: merge ath9k_hw_ani_monitor_old and ath9k_hw_ani_monitor_new
      ath9k_hw: store the clock rate in common data on channel changes
      ath5k: store the clock rate in common data on channel changes
      ath9k_hw: move the cycle counter tracking to ath
      ath5k: use the common cycle counter / listen time implementation
      cfg80211: add channel utilization stats to the survey command
      ath9k: add compile time checking for the size of the channel list
      ath9k: implement channel utilization stats for survey
      ath9k: do not track cycle counter updates in powersave mode
      ath9k_hw: fix division by zero in the ANI monitor code
      ath9k_hw: fix PHY counter overflow handling in ANI v1
      ath9k: add missing locking around ath9k_hw_proc_mib_event
      ath9k: make rate control debugfs stats per station
      ath9k: remove sc->cur_rate_table and sc->cur_rate_mode
      ath9k_hw: remove enum wireless_mode and its users

Flavio Leitner (3):
      bonding: rejoin multicast groups on VLANs
      bonding: fix to rejoin multicast groups immediately
      bonding: add retransmit membership reports tunable

Florian Fainelli (9):
      r6040: fix all checkpatch errors and warnings
      cpmac: fix all checkpatch errors and warnings
      au1000-eth: typedefs removal
      au1000-eth: stylistic fixes
      au1000-eth: fix all but one "line over 80 characters warnings"
      au1000-eth: fix bad printk usages
      au1000-eth: fix asm -> linux headers inclusion
      au1000-eth: remove volatiles, switch to I/O accessors
      au1000-eth: change multi-line comments style

Florian Westphal (1):
      tipc: add SO_RCVLOWAT support to stream socket receive path

Frank Blaschka (1):
      qeth: NAPI support for l2 and l3 discipline

Gabor Juhos (1):
      ath9k: get correct tx gain type in ath9k_hw_4k_get_eeprom

Geert Uytterhoeven (1):
      net/m68k: Hydra Ethernet - print whole resource instead of start address

Gerrit Renker (26):
      ccid: ccid-2/3 code cosmetics
      dccp ccid-3: No more CCID control blocks in LISTEN state
      dccp ccid-2: Remove redundant sanity tests
      dccp ccid-2: Simplify dec_pipe and rearming of RTO timer
      dccp ccid-2: Replace broken RTT estimator with better algorithm
      dccp ccid-2: Use u32 timestamps uniformly
      dccp ccid-2: Remove wrappers around sk_{reset,stop}_timer()
      tcp/dccp: Consolidate common code for RFC 3390 conversion
      dccp ccid-2: Share TCP's minimum RTO code
      dccp ccid-3: use per-route RTO or TCP RTO as fallback
      TCP: update initial windows according to RFC 5681
      tcp: update also tcp_output with regard to RFC 5681
      dccp ccid-3: A lower bound for the inter-packet scheduling algorithm
      dccp ccid-3: remove buggy RTT-sampling history lookup
      dccp ccid-3: Simplify and consolidate tx_parse_options
      dccp: Add packet type information to CCID-specific option parsing
      dccp: Replace magic CCID-specific numbers by symbolic constants
      dccp ccid-3: remove dead states
      dccp tfrc/ccid-3: computing the loss rate from the Loss Event Rate
      dccp ccid-3: Remove redundant 'options_received' struct
      dccp: fix the adjustments to AWL and SWL
      dccp: merge now-reduced connect_init() function
      dccp: remove unused argument in CCID tx function
      dccp: schedule an Ack when receiving timestamps
      dccp: cosmetics - warning format
      wext: fix alignment problem in serializing 'struct iw_point'

Giuseppe CAVALLARO (6):
      stmmac: remove dead option in the driver's Kconfig
      stmmac: make ioaddr 'void __iomem *' rather than unsigned long
      stmmac: add CSR Clock range selection
      stmmac: consolidate and tidy-up the COE support
      stmmac: prevent dma init stuck in case of failures.
      stmmac: use one memset() to reset TDES01

Giuseppe Cavallaro (2):
      stmmac: review the wake-up support
      stmmac: remove ifdef NETIF_F_TSO from stmmac_ethtool.c

Grazvydas Ignotas (4):
      wl1251: add missing __packed modifier for some structs
      wl1251: fix event handling mechanism
      wl1251: fix beacon filter table structure
      wl1251: wait for join command complete event

Greg Rose (3):
      ixgbevf: Removed unneeded HW struct members
      ixgbevf: Refactor ring parameter re-size
      igbvf: Remove unneeded pm_qos* calls

Grégoire Baron (1):
      net/sched: add ACT_CSUM action to update packets checksums

Guo-Fu Tseng (5):
      jme: Fix PHY power-off error
      jme: Add comment in jme_set_settings
      jme: Prevent possible read re-order error
      jme: Adding mii-tool support
      jme: Advance version number

Gustavo F. Padovan (4):
      Bluetooth: remove unused variable from cmtp
      Bluetooth: make batostr() print in the right order
      Bluetooth: Use the proper error value from bt_skb_send_alloc()
      Bluetooth: update MAINTAINERS for Bluetooth subsys

Gábor Stefanik (4):
      b43: N-PHY: Implement Host Flags write during device init
      b43: N-PHY: Fix typo in function name (gain_crtl -> gain_ctrl)
      b43: N-PHY: Implement MAC PHY clock set
      b43: N-PHY: Implement RX core state setting for rev.2 and earlier PHYs

Hagen Paul Pfeifer (1):
      tcp: allow effective reduction of TCP's rcv-buffer via setsockopt

Haijun Liu (1):
      Bluetooth: Update conf_state before send config_req out

Hans Schillstrom (1):
      ipvs: IPv6 tunnel mode

Hao Zheng (1):
      bnx2x: Update bnx2x to use new vlan accleration.

Harvey Harrison (3):
      cxgb4vf: make single bit signed bitfields unsigned
      dnet: mark methods static and annotate for correct endianness
      niu: introduce temp variables to avoid sparse warnings when swapping in-situ

Helmut Schaa (32):
      rt2x00: Update comments regarding TXWI and TX_STA_FIFO
      rt2x00: Rename txentry_desc.queue -> txentry_desc.qid
      rt2x00: Update rt2800 comments regarding AMPDU and PACKET_ID in TXWI
      rt2x00: Initialize AMPDU_BA_WINSIZE register
      rt2x00: Check for specific changed flags when updating the erp config
      rt2x00: Mask out unused interrupts in rt2800pci
      rt2x00: Enable missing interrupts in rt61pci
      rt2x00: fix oops in rt2x00lib_txdone with rt61pci
      rt2x00: Don't overwrite beacon buffers in pairwise key setup
      rt2x00: Split out parts of the rt2800_txdone function for easier reuse
      rt2x00: rework tx status handling in rt2800pci
      rt2x00: Fix SM PS check
      rt2x00: Implement HT protection for rt2800
      rt2x00: Don't initialize MM40 HT protection to RTS/CTS on PCI devices
      rt2x00: Fix race between dma mapping and clearing rx entries in rt2800pci
      rt2x00: Allow tx duplication for legacy rates in HT40 mode
      rt2x00: Add register definition for busy time on secondary channel
      rt2x00: add field definitions for the TBTT_SYNC_CFG register
      rt2x00: Don't enable broad- and multicast buffering on USB devices
      mac80211: distinct between max rates and the number of rates the hw can report
      rt2x00: correctly set max_report_rates in rt61pci and rt2800
      rt2x00: Enable rx aggregation in rt2800
      rt2x00: Update comment about the AMPDU flag in the TXWI
      rt2x00: Fix oops caused by error path in rt2x00lib_start
      rt2x00: Improve cooperation between rt2800pci and minstrel
      rt2x00: Work around hw aggregation oddity in rt2800
      rt2x00: Shortcut link state updates when not operating as STA
      rt2x00: Optimize unmapping of skbs
      rt2x00: Use proper type for rxwi_w2 in rt2800_agc_to_rssi
      rt2x00: Use unlikely for error case in rt2x00queue_write_tx_frame
      rt2x00: Remove superfluous initialization of qidx
      rt2x00: Fix tx status handling in rt2800pci

Huang Weiyi (1):
      pxa168_eth: remove duplicated #include

Ian Campbell (1):
      xen: use less generic names in netfront driver.

Ido Yariv (4):
      wl1271: Fix overflow in wl1271_boot_upload_nvs
      wl1271: Handle large SPI transfers
      wl1271: Support firmware RX packet aggregation
      wl1271: Support firmware TX packet aggregation

Ilpo Järvinen (2):
      tcp: sack lost marking fixes
      tcp: use correct counters in CA_CWR state too

Ivo Calado (1):
      dccp: generalise data-loss condition

Ivo van Doorn (31):
      rt2x00: Move USB tx/rx done handling to workqueue
      rt2x00: Set MIMO PS flag in tx descriptor for STAs in dynamic SMPS mode
      rt2x00: Add helper function for reporting tx status
      rt2x00: Request TXWI pointer from driver
      rt2x00: Implement TX status reporting for rt2800usb
      rt2x00: Remove ieee80211_rx_status from rt2x00_dev
      rt2x00: Simplify arguments to rt2x00 driver callback functions
      rt2x00: Reduce indenting
      rt2x00: Move direct access to queue->entries to rt2x00queue.c
      rt2x00: Remove Q_INDEX_CRYPTO and ENTRY_OWNER_DEVICE_CRYPTO
      rt2x00: Fix rt2800 retry calculation
      rt2x00: Merge rt2800{pci/usb} radio enabling/disabling code to rt2800lib
      rt2x00: Fix channel configuration for RF3052
      rt2x00: Fix max TX power settings
      rt2x00: Add rt2800_wait_csr_ready
      rt2x00: Validate TX status results with current data entry
      rt2x00: Wakeup hardware before loading firmware
      rt2x00: Don't set unicast/BSSID masks when clearning MAC or BSSID
      rt2x00: Set PWR_PIN_CFG during initialization
      rt2x00: Correctly kill beacon queue
      rt2x00: Split watchdog check into a DMA and STATUS timeout
      rt2x00: Cleanup rt2x00usb_watchdog_reset_tx
      rt2x00: Add rt73usb device ID
      rt2x00: Improve TX status entry validation
      rt2x00: Simplify Queue function arguments
      rt2x00: Move watchdog work to kernel work_queue
      rt2x00: Validate MCS on RX path
      rt2x00: Fix dead queue when skb allocation failed
      rt2x00: Make queue_entry flags access atomic
      rt2x00: Don't perform watchdog checks on empty queue
      rt2x00: Fix URB error handling

James Hogan (1):
      b44: fix resume, request_irq after hw reset

Jan Engelhardt (5):
      netfilter: xtables: resolve indirect macros 1/3
      netfilter: xtables: resolve indirect macros 2/3
      netfilter: xtables: resolve indirect macros 3/3
      netfilter: xtables: unify {ip,ip6,arp}t_error_target
      netfilter: xtables: remove unused defines

Jan Glauber (1):
      qdio: extend API to allow polling

Jan Kiszka (1):
      CAPI: Silence lockdep warning on get_capi_appl_by_nr usage

Jason Wang (1):
      vhost: max s/g to match qemu

Jay Sternberg (4):
      iwlwifi: enable experimental ucode support
      iwlwifi: move debug options into submenu
      iwlwifi: corrections to debug output of ucode statistics
      iwlwifi: define 100 devices

Jean Delvare (1):
      e1000e: Simplify MSI interrupt testing

Jerry Chu (1):
      tcp: Add TCP_USER_TIMEOUT socket option.

Jesse Brandeburg (5):
      e1000: fix Tx hangs by disabling 64-bit DMA
      e1000: use work queues
      e1000: fix occasional panic on unload
      e1000: use GRO for receive
      e1000e: use hardware writeback batching

Jesse Gross (12):
      ebtables: Allow filtering of hardware accelerated vlan frames.
      vlan: Rename VLAN_GROUP_ARRAY_LEN to VLAN_N_VID.
      vlan: Don't check for vlan group before vlan_tx_tag_present.
      vlan: Enable software emulation for vlan accleration.
      vlan: Avoid hash table lookup to find group.
      vlan: Centralize handling of hardware acceleration.
      ethtool: Add support for vlan accleration.
      bridge: Add support for TX vlan offload.
      bnx2: Update bnx2 to use new vlan accleration.
      ixgbe: Update ixgbe to use new vlan accleration.
      vlan: Calling vlan_hwaccel_do_receive() is always valid.
      bnx2/bnx2x: Unsupported Ethtool operations should return -EINVAL.

Jiri Pirko (1):
      vlan: Use vlan_dev_real_dev in vlan_hwaccel_do_receive

Jiri Slaby (3):
      NET: bna, fix lock imbalance
      NET: pch, fix use after free
      WIRELESS: at76c50x, remove unneeded NULL check

Joe Perches (27):
      pcnet_cs: Use pr_fmt and pr_<level>
      drivers/net: Convert unbounded kzalloc calls to kcalloc
      drivers/net/pcmcia: Use pr_<level> and netdev_<level>
      drivers/net/sungem: Use netdev_<level>, netif_<level> and pr_<level>
      drivers/net/sunvnet.c: Use pr_<level> and netdev_<level>
      include/linux/if_ether.h: Remove unused #define MAC_FMT
      net/mac80211: Use wiphy_<level>
      MAINTAINERS: add info for include/linux/spi/wl12xx.h
      drivers/net: Remove address use from assignments of function pointers
      net/sctp: Use pr_fmt and pr_<level>
      drivers/net/jme: Use pr_<level>
      net/caif: Use pr_fmt
      net/caifcaif_dev.c: Use netdev_<level>
      include/net/raw.h: Convert raw_seq_private macro to inline
      qeth: Use %pI6
      drivers/net/ixgbe/ixgbe_main.c: Checkpatch cleanups
      drivers/net/ixgbe/ixgbe_main.c: Use pr_<level>
      drivers/net/ixgbe/ixgbe_main.c: Add ixgbe_psum
      drivers/net/skfp: Remove pr_<level> uses of KERN_<level>
      drivers/isdn: Use static const char * const where possible
      drivers/net: Use static const char * const where possible
      drivers/net/pcmcia: Use static const char * const where possible
      drivers/net/wireless: Use static const char * const where possible
      net/irda: Use static const char * const where possible
      include/net/cfg80211.h: wiphy_<level> messages use dev_printk
      ath5k: fix build break from "ath5k: Print out opmode in debugfs"
      drivers/net/pch_gbe: Use DEFINE_PCI_DEVICE_TABLE

Johan Hedberg (1):
      Bluetooth: Don't clear the blacklist when closing the HCI device

Johannes Berg (146):
      mac80211: don't check rates on PLCP error frames
      mac80211: unify scan and work mutexes
      iwlwifi: track IBSS manager status
      cfg80211: deauth doesn't always imply disconnect
      mac80211: per interface idle notification
      mac80211: allow drivers to request SM PS mode change
      cfg80211: support sysfs namespaces
      mac80211: use cipher suite selectors
      mac80211: move key tfm setup
      mac80211: remove unused status flag checks
      mac80211: dont advertise WEP if unavailable
      cfg80211: check if WEP is available for shared key auth
      cfg80211: mark ieee80211_hdrlen const
      mac80211: remove unused don't-encrypt flag
      cfg80211/mac80211: extensible frame processing
      wireless: move documentation books
      mac80211-hwsim: allow configuring IBSS
      iwlwifi: refactor iwl_setup_rxon_timing
      mac80211: fix docbook
      nl80211: some documentation fixes
      iwlagn: do not check for AP mode for WEP keys
      iwlwifi: do not spuriously call ieee80211_scan_completed
      cfg80211: add some documentation
      iwlwifi: add 6000g2b BT coexist API
      iwlagn: implement advance BT config command
      iwlagn: set BT IGNORE for some frames
      iwlwifi: add BT notification support for bt coex
      iwlagn: let bluetooth traffic load impact rate scale
      iwlwifi: reset BT when going down
      iwlagn: disable gen2b BT coexistence in IBSS
      iwlagn: keep BT settings across restart
      iwlwifi: use antenna A only under high BT load
      iwlwifi: disable aggregation queue if stopped early
      nl80211: fix missing nesting
      mac80211: fix mesh advertisement
      iwlwifi: initial contextification
      iwlwifi: prepare for PAN queue/fifo assignment
      iwlwifi: define PAN queues/FIFOs
      iwlwifi: contextify broadcast station
      iwlwifi: contextify-stations-completely
      iwlwifi: contextify command sending
      iwlwifi: move QoS into context
      iwlwifi: add context into tx descriptor
      iwlwifi: move virtual interface pointer into context
      iwlwifi: clamp scanning dwell time to all contexts
      iwlwifi: move AP sta ID to context
      iwlwifi: make hw crypto context aware
      iwlwifi: store default station flags in context
      iwlwifi: add context pointer to station
      iwlwifi: move HT configuration data into context
      iwlwifi: introduce beacon context
      iwlwifi: add PAN API
      iwlagn: detect PAN capability
      iwlagn: remove iw_mode check for beacon
      iwlagn: queue frames according to context
      iwlagn: send RXON timing before associating
      iwlagn: send beacon before committing associated RXON
      iwlwifi: send PAN parameters
      iwlwifi: pass context to iwl_send_rxon_timing
      iwlagn: always send RXON timing
      iwlwifi: follow main beacon interval
      iwlwifi: allow using multiple contexts
      mac80211: remove unused scan expire define
      mac80211: allow scan to complete from any context
      wl12xx: remove unneeded locking
      cfg80211 docbook: remove erronous !A
      cfg80211: allow vendor specific cipher suites
      mac80211: allow vendor specific cipher suites
      cfg80211: allow changing port control protocol
      mac80211: allow changing port control protocol
      mac80211: use subqueue helpers
      mac80211: clean up ifdown/cleanup paths
      mac80211: switch to ieee80211_sdata_running
      mac80211: simplify zero address checks
      mac80211: split out concurrent vif checks
      mac80211: support runtime interface type changes
      mac80211_hwsim: support runtime iftype changes
      mac80211: fix offchannel queue stop
      iwlwifi: fix PAN parameters while scanning
      iwlwifi: implement beacon interval change
      iwlwifi: avoid sending too many commands
      iwlwifi: improve timing handling with dual-mode
      iwlwifi: fix and describe iwl_adjust_beacon_interval
      iwlwifi: remove unused conf variables
      iwlwifi: unify scan start checks
      iwlwifi: move scan completed flags handling
      mac80211: match only assigned bss in sta_info_get_bss
      mac80211: use correct station flags lock
      cfg80211/mac80211: use lockdep_assert_held
      mac80211: set running state earlier
      cfg80211/nl80211: introduce p2p device types
      mac80211: add p2p device type support
      mac80211: remove prepare_for_handlers sdata argument
      mac80211: consolidate packet processing
      mac80211: clean up rx handling wrt. found_sta
      mac80211: fix release_reorder_timeout in scan
      mac80211: move packet flags into packet
      cfg80211: always set IBSS basic rates
      cfg80211/mac80211: allow management frame TX in AP mode
      cfg80211: remove spurious __KERNEL__ ifdef
      cfg80211: fix locking
      genetlink: introduce pre_doit/post_doit hooks
      nl80211: use the new genetlink pre/post_doit hooks
      nl80211: use generic check for netif_running
      nl80211: reduce dumping boilerplate
      mac80211: fix deadlock with multiple interfaces
      nl80211: fix remain-on-channel documentation
      mac80211: avoid transmitting delBA to old AP
      cfg80211/mac80211: allow per-station GTKs
      nl80211: fix error in generic netif_running check
      cfg80211: fix BSS double-unlinking
      mac80211: fix sw scan locking
      nl80211: use new genl helpers for WDS
      cfg80211: constify WDS address
      iwlagn: rename iwl_commit_rxon
      iwlwifi: introduce post_scan hook
      iwl3945: use iwl3945_commit_rxon
      iwlwifi: move chain settings to agn
      iwlwifi: rename iwl_mac_beacon_update
      iwlwifi: remove verify_signature eeprom operation
      iwlwifi: move agn specific station code there
      iwlwifi: move tx fail code to agn
      iwlwifi: remove spurious exports
      iwlwifi: remove agn rates info there
      iwlwifi: move iwl_toggle_rx_ant to agn
      iwlwifi: move iwl_dump_csr to agn
      iwlwifi: move iwl_dump_fh to agn
      iwlwifi: remove set_ct_kill operation
      iwlwifi: remove set_pwr_src operation
      iwlwifi: remove apm_ops.stop
      iwlwifi: clean up declarations
      iwlwifi: remove iwl_check_bits
      iwlwifi: fix dual-mode scanning
      Revert "wireless: Use first phyX name available when registering phy devices."
      mac80211: don't kmalloc 16 bytes
      iwl3945: fix queue allocation
      cfg80211: notify drivers about frame registrations
      mac80211: add probe request filter flag
      mac80211: fix SMPS request
      iwlwifi: allow probe-after-rx on 2.4 GHz
      iwlwifi: rename ibss_beacon variable
      iwlwifi: clean up some beacon handling
      iwlwifi: rewrite RXON checks
      iwlwifi: blink LED in IBSS mode
      iwlagn: check beacon frame size
      radiotap: fix vendor namespace parsing

John Fastabend (2):
      net: netif_set_real_num_rx_queues may cap num_rx_queues at init time
      ixgbe: DCB: remove DCB check config

John Feeney (1):
      bnx2: Add PCI Advanced Error Reporting support.

John Heffner (1):
      TCP: Fix setting of snd_ssthresh in tcp_mtu_probe_success

John W. Linville (44):
      b43: update hw/fw version info in wiphy struct
      b43legacy: update hw/fw version info in wiphy struct
      p54: update fw version info in wiphy struct
      rt2x00: update fw version info in wiphy struct
      zd1211rw: update fw version info in wiphy struct
      mac80211: support use of NAPI for bottom-half processing
      rtl8180: use NAPI for bottom-half processing
      rtl8180: use RTL818X_MSR_ADHOC for IBSS connection
      rtl8187: consolidate MSR writes in rtl8187_bss_info_changed
      wireless: upcase alpha2 values in queue_regulatory_request
      iwlwifi: disable aspm by default
      ipw2100: avoid warning from pointer cast in call to IPW_DEBUG_TX
      iwm3200wifi: remove comparison to WIFI_IF_NTFY_MAX in iwm_ntf_wifi_if_wrapper
      b43: move hwrng registration driver to wireless core initialization
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
      rt2x00: do not shortcut rt2x00lib_config_antenna
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
      Merge branch 'wireless-next-2.6' of git://git.kernel.org/.../iwlwifi/iwlwifi-2.6
      mac80211: cancel scan in ieee80211_restart_hw if software scan pending
      mac80211: only cancel software-based scans on suspend
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
      wl1271: remove warnings in wl1271_sdio_set_power
      iwlwifi: fix sparse warning about wrong enum for band parameter
      ath9k: make ath_ant_div_conf_fast_divbias static
      libertas: correct sparse warnings
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
      Revert "mac80211: fix use-after-free"
      wl12xx: fix separate-object-folder builds
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
      Merge branch 'wireless-next-2.6' of git://git.kernel.org/.../iwlwifi/iwlwifi-2.6
      Merge branch 'wireless-next' of git://git.kernel.org/.../luca/wl12xx
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
      mac80211: avoid uninitialized var warning in ieee80211_scan_cancel
      Revert "rtl8180: use NAPI for bottom-half processing"
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-2.6
      Merge branch 'wireless-next-2.6' of git://git.kernel.org/.../iwlwifi/iwlwifi-2.6
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem
      Merge branch 'wireless-next' of git://git.kernel.org/.../luca/wl12xx
      Merge branch 'wireless-next-2.6' of git://git.kernel.org/.../iwlwifi/iwlwifi-2.6
      Merge branch 'master' of git://git.kernel.org/.../padovan/bluetooth-next-2.6 into for-davem
      Merge branch 'master' of git://git.kernel.org/.../linville/wireless-next-2.6 into for-davem

Jon Mason (2):
      s2io: remove unused code
      s2io: Update driver version

Joseph Gasparakis (1):
      igb: Add support for DH89xxCC

Jouni Malinen (5):
      mac80211: Fix signal strength average initialization for CQM events
      mac80211: Do not generate CQM events based on first Beacon frames
      mac80211: Filter ProbeReq SuppRates based on TX rate mask
      mac80211: Add DS Parameter Set into Probe Request on 2.4 GHz
      ath9k: Set RX filter for Probe Request based on filter flag

Julia Lawall (31):
      drivers/net/wireless/libertas: Adjust confusing if indentation
      drivers/net/wireless/prism54: Adjust confusing if indentation
      drivers/net/wireless/ath/ath9k: Adjust confusing if indentation
      drivers/net/wan: Adjust confusing if indentation
      net/atm: Adjust confusing if indentation
      drivers/net/irda: Adjust confusing if indentation
      drivers/net: Adjust confusing if indentation
      drivers/atm: Adjust confusing if indentation
      drivers/net: Adjust confusing if indentation
      drivers/net/bnx2x: Adjust confusing if indentation
      drivers/net/hamradio: Adjust confusing if indentation
      drivers/net: Adjust confusing if indentation
      drivers/isdn: Adjust confusing if indentation
      net/decnet: Adjust confusing if indentation
      net/ax25: Use available error codes
      net/ax25: Use available error codes
      drivers/net/qlcnic: Use available error codes
      drivers/net/wireless/wl12xx: Use available error codes
      drivers/net/wireless/wl12xx: Use available error codes
      drivers/net/irda: Eliminate memory leak
      net/netfilter/ipvs: Eliminate memory leak
      drivers/net/atl1c: Remove double test
      net/wireless: Remove double test
      drivers/net/can/mscan/mpc5xxx_can.c: Add of_node_put to avoid memory leak
      drivers/net/fs_enet/fs_enet-main.c: Add of_node_put to avoid memory leak
      net/9p/trans_fd.c: Fix unsigned return type
      drivers/atm/firestream.c: Fix unsigned return type
      drivers/net/wireless/iwlwifi/iwl-agn.c: Fix return value from an unsigned function
      drivers/atm/idt77252.c: Remove unnecessary error check
      drivers/net/wireless/p54/eeprom.c: Return -ENOMEM on memory allocation failure
      drivers/net/ax88796.c: Return error code in failure

Julian Anastasov (18):
      ipvs: use pkts for SCTP too
      ipvs: extend connection flags to 32 bits
      ipvs: netfilter connection tracking changes
      ipvs: make rerouting optional with snat_reroute
      ipvs: changes related to service usecnt
      ipvs: fix CHECKSUM_PARTIAL for TCP, UDP
      ipvs: optimize checksums for apps
      ipvs: switch to notrack mode
      ipvs: do not schedule conns from real servers
      ipvs: stop ICMP from FORWARD to local
      ipvs: fix CHECKSUM_PARTIAL for TUN method
      ipvs: create ip_vs_defrag_user
      ipvs: move ip_route_me_harder for ICMP
      ipvs: changes for local real server
      ipvs: changes for local client
      ipvs: inherit forwarding method in backup
      ipvs: provide address family for debugging
      nf_nat: restrict ICMP translation for embedded header

Julian Calaby (1):
      Hostap: Fix "'ret' set but not used" warning message from GCC in hostap

Juuso Oikarinen (28):
      wl1271: Implement CMD_SET_STA_STATE to indicate connection completion to FW
      wl1271: Add trigger to net_device oper_state to change BT coex priority
      wl1271: Fix scan race condition
      wl1271: Change supported channel order for a more optimal scan
      wl1271: Remove outdated FIXME's
      wl1271: Move setting of wake-up conditions to ps.c from cmd.c
      wl1271: Remove acx_fw_version function
      wl1271: Release interrupt *after* releasing the driver context
      wl1271: Remove function cmd_read_memory
      wl1271: Enable/disable 11a support based on INI configuration
      wl1271: Reduce rate used for last PSM entry attempt
      wl1271: Enable 11a support always, prevent scanning for unsupporting chips
      wl1271: Fix tid-configuration of TX frames
      wl1271: Fix AC/TID default configuration
      wl1271: Move scan complete invocation into work function
      wl1271: Fix work cancelling when shutting down the driver
      wl1271: Separate interface removal to another function
      wl1271: Add hardware recovery mechanism
      wl1271: Add handling for failing hardware scan command
      wl1271: Optimize scan duration
      wl1271: Increase connection reliability
      wl1271: Add support for hardware GEM cipher
      mac80211: Fix WMM driver queue configuration
      wl1271: Move work-init calls to hw allocation
      wl1271: Indicate disconnection on hardware failure
      wl1271: Add extended radio parameter initialization
      mac80211: Add validity check for beacon_crc value
      wl1271: Support FEM autodetection

Kalle Valo (7):
      wl1251: update my email address
      wl12xx: change contact person for the include file
      wl1251: remove copyright contact person
      wl1251: move include guard after the license
      wl1251: create a copy of wl12xx_80211.h for wl1251
      wl1251: move to it's own directory
      wl1251: update the new location to the maintainers file

Karl Beldan (1):
      Bluetooth: hci_uart: Fix typo in stats for sco tx

Krishna Kumar (2):
      core: Factor out flow calculation from get_rps_cpu
      macvtap: Implement multiqueue for macvtap driver

Krzysztof Oledzki (1):
      bonding: add Speed/Duplex information to /proc/net/bonding/bond

Krzysztof Piotr Oledzki (2):
      bonding: print information about speed and duplex seen by the driver
      bonding: reread information about speed and duplex when interface goes up

Kumar Sanghvi (4):
      Phonet: Implement Pipe Controller to support Nokia Slim Modems
      Documentation: Update Phonet doc for Pipe Controller implementation
      Phonet: 'connect' socket implementation for Pipe controller
      Documentation: Update Phonet doc for Pipe controller changes

Lars Ericsson (1):
      rt2x00: Antenna diversity does not work in 2.6.35

Luciano Coelho (5):
      wl1271: remove deprecated ACX definition
      wl1271: remove useless 11a check when scanning
      wl1271: fix forced passive scan
      MAINTAINERS: Update git url for the wl1271 driver
      wl1271: remove deprecated __attribute__ ((packed))

Luis R. Rodriguez (15):
      ath9k: add fastcc to debug print for channel change
      ath9k: remove duplicate get_hw_crypto_keytype()
      ath9k: fix power save race conditions
      ath9k: fix regression on beacon loss after bgscan
      ath9k: fix enabling ANI / tx monitor after bg scan
      mac80211: add helper for reseting the connection monitor
      mac80211: reset probe send counter upon connection timer reset
      mac80211: reset connection idle when going offchannel
      mac80211: make the beacon monitor available externally
      mac80211: disable beacon monitor while going offchannel
      mac80211: send last 3/5 probe requests as unicast
      ath9k: fix regression which disabled ps on ath9k
      mac80211: fix offchannel assumption upon association
      mac80211: fix channel assumption for association done work
      ath9k_hw: remove AR9003 2.0 support

Maciej Żenczykowski (1):
      ipv6: Implement Any-IP support for IPv6.

Marc Kleine-Budde (7):
      can: mcp251x: fix NOHZ local_softirq_pending 08 warning
      can: mcp251x: write intf only when needed
      can: mcp251x: Don't use pdata->model for chip selection anymore
      can: mcp251x: define helper functions mcp251x_is_2510, mcp251x_is_2515
      can: mcp251x: optimize 2515, rx int gets cleared automatically
      can: mcp251x: fix endless loop in interrupt handler if CANINTF_MERRF is set
      can: mcp251x: fix generation of error frames

Martin Schwidefsky (1):
      drivers/net/stmmac/: add HAS_IOMEM dependency

Masayuki Ohtake (1):
      net: Add Gigabit Ethernet driver of Topcliff PCH

Mat Martineau (4):
      Bluetooth: Validate PSM values in calls to connect() and bind()
      Bluetooth: Add common code for stream-oriented recvmsg()
      Bluetooth: Use common SOCK_STREAM receive code in RFCOMM
      Bluetooth: Use a stream-oriented recvmsg with SOCK_STREAM L2CAP sockets.

Matt Carlson (26):
      tg3: Fix read DMA FIFO overruns on recent devices
      tg3: Disable TSS
      tg3: Don't send APE events for NCSI firmware
      tg3: Unlock 5717 B0+ support
      tg3: Clarify semantics of TG3_IRQ_MAX_VECS
      tg3: Move producer ring struct to tg3_napi
      tg3: Use skb_is_gso_v6()
      tg3: Dynamically allocate VPD data memory
      tg3: phy tmp variable roundup
      tg3: Fix potential netpoll crash
      tg3: 5719: Prevent tx data corruption
      tg3: Remove 5724 device ID
      tg3: Cleanup missing VPD partno section
      tg3: Futureproof the loopback test
      tg3: Prepare for larger rx ring sizes
      tg3: Add extend rx ring sizes for 5717 and 5719
      tg3: Update version to 3.114
      tg3: Set real_num_rx_queues for non-multiq devs
      tg3: Add support for selfboot format 1 v6
      tg3: Disable unused transmit rings
      tg3: Add clause 45 register accessor methods
      tg3: Add EEE support
      tg3: Cleanup tg3_alloc_rx_skb()
      tg3: Don't allocate jumbo ring for 5780 class devs
      tg3: Report invalid link from tg3_get_settings()
      tg3: Update version to 3.115

Meelis Roos (1):
      tmspci: fix tr%d in printk

Michael Buesch (1):
      p54spi: Add error message for eeprom failure

Michael Chan (14):
      cnic: Pass cp pointer to BNX2X_HW_CID.
      cnic: Use pfid for internal memory offsets.
      cnic: Fine-tune ring init code.
      bnx2: Update firmware to 6.0.x.
      bnx2: Enable AER on PCIE devices only
      cnic: Add common cnic_request_irq()
      cnic: Convert ctx_flags to bit fields
      cnic: Add cnic_bnx2x_destroy_ramrod()
      cnic: Defer iscsi connection cleanup
      cnic: Add cnic_free_uio()
      cnic: Add cnic_uio_dev struct
      cnic: Decouple uio close from cnic shutdown
      cnic: Add support for 57712 device
      bnx2: Increase max rx ring size from 1K to 2K

Michal Simek (1):
      xilinx_emaclite: netpoll support

Mike Frysinger (1):
      Kconfig: have CCWGROUP depend on CLAW

Mohammed Shafi Shajakhan (2):
      ath9k : Fix for displaying the channel number
      ath9k: Fix documentation in rate control

Namhyung Kim (3):
      net: remove address space warnings in net/socket.c
      net/core: remove address space warnings on verify_iovec()
      net/core: add lock context change annotations in net/core/sock.c

Nathan Holstein (1):
      Bluetooth: fix oops in l2cap_connect_req

Neil Horman (9):
      bonding: Fix bonding drivers improper modification of netpoll structure
      bonding: Fix deadlock in bonding driver resulting from internal locking when using netpoll
      bonding: Fix napi poll for bonding driver
      bonding: Fix netconsole to not deadlock on rmmod
      bonding: Re-enable netpoll over bonding
      netpoll: Remove netpoll blocking from uninit path
      netpoll: Revert napi_poll fix for bonding driver
      Revert c6537d6742985da1fbf12ae26cde6a096fd35b5c
      Revert d88dca79d3852a3623f606f781e013d61486828a

Nick Bowler (1):
      netfilter: install missing ebtables headers for userspace

Nick Kossifidis (2):
      ath5k: rename ath5k_hw_set_associd to _set_bssid
      ath5k: remove own (wrong) IEEE80211_MAX_LEN

Nicolas Kaiser (4):
      netfilter: remove duplicated include
      caif: remove duplicated include
      ehea: simplify conditional
      net/tg3: simplify conditional

Nikitas Angelinas (3):
      drivers/net/bnx2x: use ARRAY_SIZE macro in bnx2x_main.c
      drivers/net/wireless/ath/ath9k: use ARRAY_SIZE macro in ani.c
      net/wireless: use ARRAY_SIZE macro in radiotap.c

Nobuhiro Iwamatsu (2):
      Bluetooth: Add support Bluetooth controller of MacbookPro 6,2
      Bluetooth: Add support Bluetooth controller of MacbookPro 7,1

Ohad Ben-Cohen (11):
      wl1271: sdio: claim host only when doing IO
      wl12xx: make wl12xx.h common to both spi and sdio
      wl1271: propagate set_power's return value
      wl12xx: add platform data passing support
      wl1271: take irq info from private board data
      wl1271: make ref_clock configurable by board
      omap: zoom: add fixed regulator device for wlan
      omap: zoom: add mmc3/wl1271 device support
      wl12xx: fix non-wl12xx build scenarios
      wl1271: sdio: enable runtime PM
      wl1271: sdio: add suspend/resume support

Oliver Hartkopp (2):
      net: simplify flags for tx timestamping
      can-raw: add msg_flags to distinguish local traffic

Ondrej Zary (6):
      introduce cx82310_eth: Conexant CX82310-based ADSL router USB ethernet driver
      cxacru: ignore cx82310_eth devices
      cx82310_eth: check usb_string() return value for error
      cx82310_eth: allow empty URBs
      de2104x: disable media debug messages by default
      de2104x: remove experimental status

Otavio Salvador (1):
      net: r6040: store BIOS default MAC in perm_add

Pablo Neira Ayuso (5):
      netfilter: nf_nat: better error handling of nf_ct_expect_related() in helpers
      netfilter: ctnetlink: missing validation of CTA_EXPECT_ZONE attribute
      netfilter: ctnetlink: allow to specify the expectation flags
      netfilter: ctnetlink: add support for user-space expectation helpers
      netfilter: ctnetlink: add expectation deletion events

Patrick McHardy (2):
      netfilter: add missing xt_log.h file
      Merge branch 'for-patrick' of git://git.kernel.org/.../horms/lvs-test-2.6

Paul Fox (1):
      libertas: Communicate USB transfer errors

Paul Gortmaker (3):
      tipc: Optimize handling excess content on incoming messages
      tipc: clean out all instances of #if 0'd unused code
      3c52x: remove IRQF_SAMPLE_RANDOM from legacy MCA drivers.

Pawel Moll (1):
      stmmac: fix_mac_speed is called during 10/100<->1000 speed changes

Peter Meerwald (1):
      net: Improve comments in include/linux/phy.h

Peter Waskiewicz (1):
      ixgbe: Use affinity_hint when Flow Director is enabled

Philip Rakity (1):
      net: pxa168_etc.c recognize additional contributors

Rafał Miłecki (12):
      b43: N-PHY: add missing phyrxchain setting and fix warning in RX core function
      b43: N-PHY: simplify channel switching
      b43: define B43_SHM_SH_CHAN_40MHZ
      b43: N-PHY: don't duplicate setting channel in shared memory
      b43: N-PHY: grab more info about new channel
      b43: N-PHY: store info about current channel's type
      b43: N-PHY: fix logic in band switching
      b43: N-PHY: prepare for rev3+ channel tables
      b43: N-PHY: replace N-specific radio_chanspec with common code
      b43: N-PHY: fix typo: read table when caching IQ LO calibration (do not write)
      b43: N-PHY: put radio-specific code in separated file
      b43: N-PHY: put 2056-radio's specific code in separated file

Rajesh Borundia (12):
      qlcnic: fix for setting function modes
      qlcnic: configure port on eswitch
      qlcnic: configure offload setting on eswitch
      qlcnic: eswitch config fixes
      qlcnic: add api version in reg dump
      qlcnic: fix mac addr read
      qlcnic: fix for setting default eswitch config
      qlcnic: fix mac anti spoof policy
      qlcnic: fix panic while using eth_hdr
      qlcnic: fix mac override capability
      qlcnic: fix promiscous mode for VF
      netxen: fix race in tx stop queue

Rajkumar Manoharan (12):
      ath9k_htc: Enable ANI in associated state only
      ath9k_htc: Enable fastcc for HTC devices.
      ath9k_hw: Restore ANI registers to default during partial reset for AR9271
      ath9k_hw: Support fastcc for AR7010
      ath9k_htc: Fix memory leak on WMI event handler
      ath9k_htc: Fix CPU usage issue during scan period
      ath9k_hw: remove warning in ath9k_hw_def_get_num_ant_config
      ath9k_htc: Fix register read through bulk pipe
      ath9k_htc: Fix beacon distribution in IBSS mode
      ath9k_htc: Fix TKIP disconnect failure with HTC drivers
      ath9k_hw: Fix hw reset failure with HTC driver
      ath9k_htc: set probe request rx filter

Randy Dunlap (4):
      pch_gbe: add header files
      infiniband: fix mlx4 kconfig dependency warning
      net: move MII outside of NET_ETHERNET, fix kconfig warning
      netfilter: fix kconfig unmet dependency warning

Rasesh Mody (4):
      bna: Brocade 10Gb Ethernet device driver
      bna: Fixed build break for allyesconfig
      bna: fix interrupt handling
      bna: scope and dead code cleanup

Roel Kluin (1):
      irda: Test index before read in stir421x_patch_device()

Roopa Prabhu (7):
      enic: Add set mac address
      enic: Add support for firmware management device
      enic: Add new firmware devcmds
      enic: Use offsetof macro in vic tlv length calculation
      enic: Clean up: remove enic_dev_stats_clear
      enic: Check if rq/wq buf not NULL before freeing them
      enic: Mark intr_timer in vnic_enet_config as deprecated

Rémi Denis-Courmont (14):
      Phonet: restore flow control credits when sending fails
      Phonet: correct sendmsg() error code from sock_alloc_send_skb()
      Phonet: do not set POLLOUT in case of send buffer overflow
      Phonet: remove dangling pipe if an endpoint is closed early
      Phonet: resource routing backend
      Phonet: hook resource routing to userspace via ioctl()'s
      Phonet: look up the resource routing table when forwarding
      Phonet: list subscribed resources via proc_fs
      Phonet: resource routing documentation
      Phonet: restore flow control credits when sending fails
      Phonet: add to MAINTAINERS and add myself
      Phonet: advise against enabling the pipe controller
      Phonet: cleanup pipe enable socket option
      Phonet: mark the pipe controller as EXPERIMENTAL

Samuel Ortiz (4):
      irda: Remove BKL instances from af_irda.c
      irda: Remove BKL instances from irnet
      irda: Fix parameter extraction stack overflow
      irda: Fix heap memory corruption in iriap.c

Santiago Leon (20):
      ibmveth: Remove integer divide caused by modulus
      ibmveth: batch rx buffer replacement
      ibmveth: Remove LLTX
      ibmveth: Add tx_copybreak
      ibmveth: Add rx_copybreak
      ibmveth: Add scatter-gather support
      ibmveth: Add optional flush of rx buffer
      ibmveth: Remove duplicate checksum offload setup code
      ibmveth: Enable IPv6 checksum offload
      ibmveth: remove procfs code
      ibmveth: Convert to netdev_alloc_skb
      ibmveth: Remove redundant function prototypes
      ibmveth: Convert driver specific debug to netdev_dbg
      ibmveth: Convert driver specific error functions to netdev_err
      ibmveth: Some formatting fixes
      ibmveth: Coding style fixes
      ibmveth: Return -EINVAL on all ->probe errors
      ibmveth: Convert driver specific assert to BUG_ON
      ibmveth: Remove some unnecessary include files
      ibmveth: Update module information and version

Sascha Hauer (3):
      can: mcp251x: increase rx_errors on overflow, not only rx_over_errors
      can: mcp251x: allow to read two registers in one spi transfer
      can: mcp251x: read-modify-write eflag only when needed

Sathya Perla (1):
      be2net: add multiple RX queue support

Senthil Balasubramanian (3):
      ath9k: fix regression which prevents chip sleep after CAB data
      ath9k: remove unnecessary power save flags.
      ath9k: Introduce a wrapper for power save disable.

Shanyu Zhao (8):
      iwlwifi: do not call ieee80211_frequency_to_channel
      iwlwifi: avoid race condition in channel change
      iwlwifi: cleanup iwl_set_rxon_channel()
      iwlwifi: add iwl_nic_ops structure to iwl_ops
      iwlagn: set CSR register for 6050g2 devices
      iwlwifi: send DC calib config to runtime ucode
      iwlagn: fix default calibration table size
      iwlagn: add temperature offset calib for 6000g2

Simon Horman (20):
      bridge: is PACKET_LOOPBACK unlikely()?
      net: increase the size of priv_flags and add IFF_OVS_DATAPATH
      IPVS: ICMPv6 checksum calculation
      IPVS: convert __ip_vs_sched_lock to a spinlock
      IPVS: convert __ip_vs_securetcp_lock to a spinlock
      ipvs: switch to GFP_KERNEL allocations
      net: fix datapath typo
      netfilter: nf_conntrack_sip: Allow ct_sip_get_header() to be called with a null ct argument
      netfilter: nf_conntrack_sip: Add callid parser
      IPVS: compact ip_vs_sched_persist()
      IPVS: Add struct ip_vs_conn_param
      IPVS: Allow null argument to ip_vs_scheduler_put()
      IPVS: ip_vs_{un,}bind_scheduler NULL arguments
      IPVS: Add struct ip_vs_pe
      IPVS: Add persistence engine data to /proc/net/ip_vs_conn
      IPVS: management of persistence engine modules
      IPVS: Allow configuration of persistence engines
      IPVS: Fallback if persistence engine fails
      IPVS: sip persistence engine
      IPVS: ip_vs_dbg_callid() is only needed for debugging

Sjur Braendeland (4):
      caif: Remove buggy re-definition of pr_debug
      caif: Minor fixes in log prints.
      caif: Fix function NULL pointer check.
      caif: Use default send and receive buffer size in caif_socket.

Somnath Kotur (1):
      be2net: Changes to use only priority codes allowed by f/w

Sony Chacko (8):
      qlcnic: fix link status message
      qlcnic: fix link diag test
      qlcnic: remove unused code
      qlcnic: replace magic numbers with defines
      qlcnic: support anti mac spoofing
      qlcnic: firmware initialization update
      qlcnic: Fix missing error codes
      qlcnic: backout firmware initialization update

Sritej Velaga (5):
      qlcnic: PCI ID addition
      qlcnic: cleanup port mode setting
      qlcnic: set mtu lower limit
      qlcnic: fix board description
      qlcnic: change all P3 references to P3P

Stanislaw Gruszka (29):
      iwlwifi: make scan workqueue functions static
      iwlwifi: fix canceling monitor_recover timer
      iwlwifi: cancel scan when down the device
      iwlwifi: report scan completion when abort fail
      iwlwifi: rework iwl_scan_cancel_timeout
      iwlwifi: rewrite scan completion
      iwlwifi: force scan complete after timeout
      iwlwifi: assure we complete scan in scan_abort and scan_check works
      iwlwifi: do not force complete scan too early
      mac80211: wait for scan work complete before restarting hw
      iwlwifi: cleanup scan initiate check
      iwlwifi: use IWL_DEBUG_SCAN for debug scanning
      iwlwifi: apply settings when finishing scan
      iwlwifi: change WARN_ON to IWL_WARN in iwl_mac_add_interface
      mac80211: perform scan cancel in hw reset work
      mac80211: reduce number of __ieee80211_scan_completed calls
      mac80211: keep lock when calling __ieee80211_scan_completed()
      mac80211: assure we also cancel deferred scan request
      mac80211: do not requeue scan work when not needed
      mac80211: compete scan to cfg80211 if deferred scan fail to start
      Revert "iwlwifi: do not perferm force reset while doing scan"
      r8169: check dma mapping failures
      r8169: init rx ring cleanup
      r8169: replace PCI_DMA_{TO,FROM}DEVICE to DMA_{TO,FROM}_DEVICE
      r8169: use pointer to struct device as local variable
      r8169: do not account fragments as packets
      r8169: changing mtu clean up
      r8169: (re)init phy on resume
      r8169: print errors when dma mapping fail

Stephen Hemminger (6):
      tc: add meta match on receive hash
      bridge: fix locking comment
      ray_cs: make data const
      airo: make strings const
      atlx: make strings const
      netfilter: nf_nat: make find/put static

Stephen Rothwell (3):
      net/sched: need to include net/ip6_checksum.h
      IPVS: include net/ip6_checksum.h for csum_ipv6_magic
      net: include inetdevice.h for rcu_dereference_raw api change

Steve Hodgson (1):
      sfc: Make the dmaq size a run-time setting (rather than compile-time)

Steve deRosier (2):
      mac80211: Fix dangling pointer in ieee80211_xmit
      mac80211: Update mesh constants to approved IEEE ANA values

Sucheta Chakraborty (5):
      qlcnic: turn off lro when rxcsum is disabled.
      qlcnic: rom lock recovery
      qlcnic: fix endianess for lro
      qlcnic: fix vlan TSO on big endian machine
      qlcnic: sparse warning fixes

Teemu Paasikivi (1):
      nl80211: Fix exit from nl80211_set_power_save

Tejun Heo (1):
      net/neighbour: cancel_delayed_work() + flush_scheduled_work() -> cancel_delayed_work_sync()

Thomas Graf (3):
      ipv6: add special mode accept_ra=2 to accept RA while configured as router
      ipv6: add special mode forwarding=2 to send RS while configured as router
      ipv6: Update ip-sysctl.txt documentation for recent changes to accept_ra and forwarding

Thomas Klute (2):
      libertas_tf: if_usb.c: Whitespace cleanup
      libertas_tf: if_usb.c: Some more formatting fixes

Tilman Schmidt (9):
      isdn/gigaset: bas_gigaset locking fix
      isdn/gigaset: fix bas_gigaset AT read error handling
      isdn/gigaset: correct bas_gigaset rx buffer handling
      isdn/gigaset: drop obsolete debug option
      isdn/gigaset: bas_gigaset timer cleanup
      isdn/gigaset: try USB reset for bas_gigaset error recovery
      isdn/gigaset: unclog bas_gigaset AT response pipe
      isdn/gigaset: fix bas_gigaset interrupt read error handling
      isdn/gigaset: improve bas_gigaset USB error reporting

Tina Yang (1):
      RDS: Fix corrupted rds_mrs

Tobias Klauser (8):
      am79c961a: Use net_device_stats from struct net_device
      greth: Use return value of register_netdev
      sunhme: Use return value of register_netdev
      ether1: Use net_device_stats from struct net_device
      ether3: Use net_device_stats from struct net_device
      ep93xx_eth: Use net_device_stats from struct net_device
      tehuti: Use net_device_stats from struct net_device
      slip: Use net_device_stats from struct net_device

Tom Herbert (5):
      ipv4: Allow configuring subnets as local addresses
      net: Fix rxq ref counting
      net: fail alloc_netdev_mq if queue count < 1
      net: cleanups in RX queue allocation
      net: allocate tx queues in register_netdevice

Tomas Winkler (1):
      iwlwifi: fix default LQ table in 5.2 band

Tracey Dent (1):
      Drivers: atm: Makefile: replace the use of <module>-objs with <module>-y

Ursula Braun (1):
      qeth: tagging with VLAN-ID 0

Uwe Kleine-König (2):
      net/phy: fix many "defined but unused" warnings
      don't let BCM63XX_PHY depend on non-existant symbol

Vasanthakumar Thiagarajan (4):
      ath9k_hw: Add capability flag for Antenna diversity and combining feature
      ath9k_hw: Add functions to get/set antenna diversity configuration
      ath9k: Implement an algorithm for Antenna diversity and combining
      ath9k: Fix tx struck state with paprd

Vasanthy Kolluri (8):
      enic: Remove dead code
      enic: Make local functions static
      enic: Update MAINTAINERS
      enic: Add support for multiple hardware receive queues
      enic: Make firmware cognizant of the user set mac address
      enic: Replace firmware devcmd CMD_ENABLE with CMD_ENABLE_WAIT
      enic: Change min MTU
      enic: Fix log message

Vivek Natarajan (3):
      ath9k_common: Move bt_stomp to common for sharing with ath9k_htc.
      ath9k_htc: Add support for bluetooth coexistence.
      ath9k: Change the default LED pattern.

Vladislav Zolotarov (2):
      bnx2x: Optimized the branching in the bnx2x_rx_int()
      bnx2x: prevent false parity error in MSI-X memory of HC block

Wey-Yi Guy (62):
      iwlwifi: make iwl_hw_detect static to _agn
      iwlagn: log pci revision id
      iwlwifi: make iwl_set_hw_params static to _agn
      iwlwifi: separate thermal throttling function
      iwlwifi: fix thermal throttling related power management operation
      iwlwifi: remove unused define
      iwlwifi: additional comments in iwl_cfg
      iwlwifi: max/min aggregation time limit
      iwlwifi: make aggregation time limit configurable
      iwlagn: adjust starting action for rate scale
      iwlagn: continue perform rate scale when error detected
      iwlwifi: additional parameter in REPLY_RX_PHY_CMD
      iwlwifi: more generic name for rssi calc in iwlagn
      iwlwifi: configurable ampdu factor and density
      iwlwifi: remove unused iwl_send_card_state function
      mac80211: fix warning for un-used parameter
      iwlwifi: update out-of-date comments
      iwlwifi: comments cleanup
      iwlwifi: Relax uCode timeout/error checking for 6000g2b
      iwlwifi: add bt full concurrency support
      iwlagn: wifi/bt coex configuration sequence
      iwlwifi: indicate bt_kill condition when receive tx reply
      iwlwifi: add debugfs to control stuck queue timer
      iwlwifi: add bt_init_traffic_load as configurable parameter
      iwlagn: add bt prio_boost to .cfg
      iwlagn: parsing uart message and take actions
      iwlagn: add additional bt related parameters
      iwlagn: add bt_ch_announce module parameter
      iwlagn: set traffic load based on multiple factors
      iwlagn: generic bt coex functions
      iwlagn: update bt status upon scan complete
      iwlwifi: add bt traffic load debugfs file
      iwlwifi: fix compile error without debugging support
      iwlagn: open/close envlope to force move BT state machine
      iwlwifi: remember the last uCode sysassert error code
      iwlwifi: allow configure protection mode
      iwlwifi: make sure runtime calibration is enabled after association
      iwlwifi: remove code repetition
      iwlagn: add bt_status_read for 5150
      iwlagn: keep track fail tx reason counter
      iwlagn: keep track of failure tx status
      iwlagn: log aggregation tx command status
      iwlagn: keep track of aggregated tx frames failure counter
      iwlagn: adding aggregated frame failure status to debugfs
      iwlagn: correct naming for failure reply tx status
      iwlagn: minor coex API changes
      iwlagn: initialize both tx/rx prio boost parameters
      iwlagn: API v5 for 6050 series device
      iwlwifi: schedule to deprecate software scan support
      iwlagn: reduce redundant parameter definitions
      iwlagn: rename iwl5000_tx_power_dbm_cmd
      iwlwifi: remove uncorrect comments
      iwlagn: rename iwl5000_tx_resp
      iwlagn: define 130 series of WiFi/BT combo devices
      iwlagn: fix module firmware name for 130 series device
      iwlagn: add define for MODULE_FIRMWARE
      iwlagn: no version check for experimental uCode
      iiwlagn: always download priority table
      iwlagn: prio_tbl need to download before calibration
      iwlgn: need longer tx queue stuck timer for coex devices
      iwlagn: 6050 ops should be used;
      iwlwifi: move agn only eeprom functions to separate file

Wolfram Sang (1):
      pcnet_cs: Use proper netdev_*-printouts

Yaniv Rosner (18):
      bnx2x: Fix potential link issue of BCM8073/BCM8727
      bnx2x: Fix potential link issue In BCM8727 based boards
      bnx2x: Reset link before any new link settings
      bnx2x: Change BCM848xx configuration according to IEEE
      bnx2x: Remove unneeded setting of XAUI low power to BCM8727
      bnx2x: Change BCM848xx LED configuration
      bnx2x: Add BCM84823 to the supported PHYs
      bnx2x: Update version to 1.52.53-5
      bnx2x: Unify PHY attributes
      bnx2x: Split PHY functions
      bnx2x: Adjust alignment of split PHY functions
      bnx2x: Adjust flow-control with the new scheme
      bnx2x: Move common function into aggregated function
      bnx2x: Apply logic changes for the new scheme
      bnx2x: Organize PHY functions
      bnx2x: Add dual-media changes
      bnx2x: Change LED scheme for dual-media
      bnx2x: Update bnx2x version to 1.52.53-6

Yevgeny Petrilin (16):
      mlx4_en: Fixed incorrect unmapping on RX flow.
      mlx4_en: Setting actual RX ring size
      mlx4_en: Setting dev->perm_addr field
      mlx4_en: performing CLOSE_PORT at the end of tear-down process
      mlx4_en: Fixed MAX_TX_RINGS definition
      mlx4_en: Reporting link state with KERN_INFO
      mlx4_en: Validate port up prior to transmitting
      mlx4_en: Added self diagnostics test implementation
      mlx4_en: Fixing report in Ethtool get_settings
      mlx4_en: get/set ringsize uses actual ring size
      mlx4_en: reconfiguring mac address.
      mlx4_en: UDP RSS support
      mlx4_en: Moving to work with GRO
      mlx4_en: updated driver version
      mlx4_en: Consider napi_get_frags() failure.
      mlx4_en: Fixed Ethtool statistics report

Yi Zou (2):
      e1000/e1000e/igb/ixgb/ixgbe: set NETIF_F_HIGHDMA for VLAN feature flags
      ixgbe: add a refcnt when turning on/off FCoE offload capability

Yuri Kululin (1):
      Bluetooth: Fix RFCOMM RPN negotiation

Zach Brown (23):
      RDS/IB: rds_ib_cm_handle_connect() forgot to unlock c_cm_lock
      RDS/IB: get the xmit max_sge from the RDS IB device on the connection
      RDS/IB: add refcount tracking to struct rds_ib_device
      RDS: introduce rds_conn_connect_if_down()
      RDS/IB: disconnect when IB devices are removed
      rds: remove unused rds_send_acked_before()
      rds: block ints when acquiring c_lock in rds_conn_message_info()
      rds: fix rds_send_xmit() serialization
      RDS/IB: wait for IB dev freeing work to finish during rmmod
      RDS/IB: destroy connections on rmmod
      RDS/IB: create a work queue for FMR flushing
      RDS: return to a single-threaded krdsd
      RDS/IB: always process recv completions
      RDS: remove __init and __exit annotation
      RDS/IB: track signaled sends
      RDS/IB: print IB event strings as well as their number
      RDS/IB: protect the list of IB devices
      RDS: lock rds_conn_count decrement in rds_conn_destroy()
      RDS: remove old rs_transport comment
      RDS: have sockets get transport module references
      RDS: don't call rds_conn_shutdown() from rds_conn_destroy()
      RDS: cancel connection work structs as we shut down
      RDS/IB: print string constants in more places

amit salecha (2):
      qlcnic: update ethtool stats
      netxen: mask correctable error

andrew hendry (5):
      X.25 remove bkl in listen
      X.25 remove bkl in bind
      X.25 remove bkl in connect
      X.25 remove bkl in getsockname
      X.25 remove bkl in poll

ext Anand Gadiyar (1):
      omap: zoom2/3: fix build caused by wl1271 support

françois romieu (1):
      via-velocity: forced 1000 Mbps mode support.

stephen hemminger (33):
      ethtool: allow non-netadmin to query settings
      bridge: avoid ethtool on non running interface
      net: make rx_queue sysfs_ops const
      wan: make read-only data const
      pkt_sched: remov unnecessary bh_disable
      sky2: enable GRO by default
      arp: remove unnecessary export of arp_broken_ops
      tcp: tcp_enter_quickack_mode can be static
      gre: protocol table can be static
      qlcnic: remove dead code
      wimax: make functions local
      fib: fib_rules_cleanup can be static
      ipv6: make __ipv6_isatap_ifid static
      dccp: Kill dead code and add static markers.
      tipc: cleanup function namespace
      stmmac: make ethtool functions local
      stmmac: make function tables const
      netxen: make local function static.
      socket: localize functions
      bridge: make br_parse_ip_options static
      sfc: make functions static
      bonding: make bond_resend_igmp_join_requests_delayed static
      vmxnet3: make bit twiddle routines inline
      pch_gbe: make local functions static
      xfrm6: make xfrm6_tunnel_free_spi local
      rtnetlink: remove rtnl_kill_links
      xfrm: make xfrm_bundle_ok local
      bonding: make release_and_destroy static
      cxgb4: function namespace cleanup (v3)
      napi: unexport napi_reuse_skb
      rds: make local functions/variables static
      9p: client code cleanup
      cxgb3: function namespace cleanup

 Documentation/DocBook/80211.tmpl                   |  495 +
 Documentation/DocBook/Makefile                     |    2 +-
 Documentation/DocBook/mac80211.tmpl                |  337 -
 Documentation/feature-removal-schedule.txt         |    9 +
 Documentation/networking/bonding.txt               |    8 +
 Documentation/networking/can.txt                   |   12 +
 Documentation/networking/dccp.txt                  |   29 +-
 Documentation/networking/ip-sysctl.txt             |   27 +-
 Documentation/networking/phonet.txt                |   56 +
 Documentation/networking/timestamping.txt          |   22 +-
 MAINTAINERS                                        |   62 +-
 arch/arm/mach-omap2/board-omap3pandora.c           |    2 +-
 arch/arm/mach-omap2/board-rx51-peripherals.c       |    2 +-
 arch/arm/mach-omap2/board-zoom-peripherals.c       |   54 +
 arch/s390/include/asm/qdio.h                       |   13 +-
 drivers/atm/Makefile                               |    2 +-
 drivers/atm/firestream.c                           |    4 +-
 drivers/atm/horizon.c                              |    6 +-
 drivers/atm/idt77252.c                             |    6 +-
 drivers/atm/iphase.c                               |    2 +-
 drivers/bluetooth/btmrvl_main.c                    |    4 +-
 drivers/bluetooth/btsdio.c                         |    8 +
 drivers/bluetooth/btusb.c                          |    6 +
 drivers/bluetooth/hci_ldisc.c                      |    2 +-
 drivers/firewire/net.c                             |   13 -
 drivers/ieee1394/eth1394.c                         |   16 -
 drivers/infiniband/hw/mlx4/Kconfig                 |    1 +
 drivers/infiniband/hw/nes/nes_cm.c                 |    4 +-
 drivers/infiniband/hw/nes/nes_verbs.c              |    4 +-
 drivers/isdn/capi/capidrv.c                        |   17 +-
 drivers/isdn/capi/kcapi.c                          |   19 +-
 drivers/isdn/divert/isdn_divert.c                  |    6 +-
 drivers/isdn/gigaset/bas-gigaset.c                 |  400 +-
 drivers/isdn/gigaset/common.c                      |   26 -
 drivers/isdn/gigaset/gigaset.h                     |    3 +-
 drivers/isdn/gigaset/i4l.c                         |    2 -
 drivers/isdn/gigaset/isocdata.c                    |    8 +-
 drivers/isdn/hardware/eicon/debug.c                |    2 +-
 drivers/isdn/hardware/eicon/debuglib.h             |    2 +-
 drivers/isdn/hisax/hfc_sx.c                        |   13 +-
 drivers/isdn/i4l/isdn_tty.c                        |   15 +-
 drivers/isdn/mISDN/dsp_cmx.c                       |    1 +
 drivers/isdn/mISDN/l1oip_core.c                    |    2 +-
 drivers/isdn/mISDN/stack.c                         |    7 -
 drivers/isdn/pcbit/edss1.c                         |    2 +-
 drivers/isdn/pcbit/edss1.h                         |    2 +-
 drivers/net/3c503.c                                |    8 +-
 drivers/net/3c515.c                                |    6 +-
 drivers/net/3c523.c                                |    4 +-
 drivers/net/3c527.c                                |    2 +-
 drivers/net/3c59x.c                                |    2 +-
 drivers/net/8139cp.c                               |    4 +-
 drivers/net/Kconfig                                |   51 +-
 drivers/net/Makefile                               |    3 +
 drivers/net/acenic.c                               |    2 +-
 drivers/net/amd8111e.c                             |   20 +-
 drivers/net/amd8111e.h                             |    1 -
 drivers/net/appletalk/ipddp.c                      |   10 +-
 drivers/net/appletalk/ltpc.c                       |    2 +-
 drivers/net/arm/am79c961a.c                        |   35 +-
 drivers/net/arm/am79c961a.h                        |    1 -
 drivers/net/arm/ep93xx_eth.c                       |   39 +-
 drivers/net/arm/ether1.c                           |   34 +-
 drivers/net/arm/ether1.h                           |    1 -
 drivers/net/arm/ether3.c                           |   33 +-
 drivers/net/arm/ether3.h                           |    1 -
 drivers/net/atarilance.c                           |   24 +-
 drivers/net/atl1c/atl1c.h                          |    1 -
 drivers/net/atl1c/atl1c_hw.c                       |    2 +-
 drivers/net/atl1c/atl1c_main.c                     |   10 +-
 drivers/net/atl1e/atl1e_main.c                     |    6 +-
 drivers/net/atlx/atl1.c                            |   10 +-
 drivers/net/atlx/atl2.c                            |   12 +-
 drivers/net/atp.c                                  |    2 +-
 drivers/net/au1000_eth.c                           |  313 +-
 drivers/net/au1000_eth.h                           |   42 +-
 drivers/net/ax88796.c                              |    1 +
 drivers/net/b44.c                                  |   21 +-
 drivers/net/bcm63xx_enet.c                         |   62 +-
 drivers/net/bcm63xx_enet.h                         |    1 -
 drivers/net/benet/be.h                             |  100 +-
 drivers/net/benet/be_cmds.c                        |  103 +-
 drivers/net/benet/be_cmds.h                        |   65 +-
 drivers/net/benet/be_ethtool.c                     |  177 +-
 drivers/net/benet/be_main.c                        |  644 +-
 drivers/net/bfin_mac.c                             |   10 +-
 drivers/net/bmac.c                                 |    9 +-
 drivers/net/bna/Makefile                           |   11 +
 drivers/net/bna/bfa_cee.c                          |  291 +
 drivers/net/bna/bfa_cee.h                          |   64 +
 drivers/net/bna/bfa_defs.h                         |  243 +
 drivers/net/bna/bfa_defs_cna.h                     |  223 +
 drivers/net/bna/bfa_defs_mfg_comm.h                |  244 +
 drivers/net/bna/bfa_defs_status.h                  |  216 +
 drivers/net/bna/bfa_ioc.c                          | 1732 +++
 drivers/net/bna/bfa_ioc.h                          |  300 +
 drivers/net/bna/bfa_ioc_ct.c                       |  392 +
 drivers/net/bna/bfa_sm.h                           |   88 +
 drivers/net/bna/bfa_wc.h                           |   69 +
 drivers/net/bna/bfi.h                              |  392 +
 drivers/net/bna/bfi_cna.h                          |  199 +
 drivers/net/bna/bfi_ctreg.h                        |  637 +
 drivers/net/bna/bfi_ll.h                           |  438 +
 drivers/net/bna/bna.h                              |  550 +
 drivers/net/bna/bna_ctrl.c                         | 3261 +++++
 drivers/net/bna/bna_hw.h                           | 1490 ++
 drivers/net/bna/bna_txrx.c                         | 4172 ++++++
 drivers/net/bna/bna_types.h                        | 1128 ++
 drivers/net/bna/bnad.c                             | 3264 +++++
 drivers/net/bna/bnad.h                             |  332 +
 drivers/net/bna/bnad_ethtool.c                     | 1277 ++
 drivers/net/bna/cna.h                              |   81 +
 drivers/net/bna/cna_fwimg.c                        |   64 +
 drivers/net/bnx2.c                                 |  253 +-
 drivers/net/bnx2.h                                 |   25 +-
 drivers/net/bnx2x/bnx2x.h                          |  710 +-
 drivers/net/bnx2x/bnx2x_cmn.c                      | 1017 +-
 drivers/net/bnx2x/bnx2x_cmn.h                      |  593 +-
 drivers/net/bnx2x/bnx2x_dump.h                     |   35 +-
 drivers/net/bnx2x/bnx2x_ethtool.c                  |  432 +-
 drivers/net/bnx2x/bnx2x_fw_defs.h                  |  819 +-
 drivers/net/bnx2x/bnx2x_fw_file_hdr.h              |    1 +
 drivers/net/bnx2x/bnx2x_hsi.h                      | 1778 ++-
 drivers/net/bnx2x/bnx2x_init.h                     |   44 +
 drivers/net/bnx2x/bnx2x_init_ops.h                 |  366 +-
 drivers/net/bnx2x/bnx2x_link.c                     | 9097 +++++++------
 drivers/net/bnx2x/bnx2x_link.h                     |  242 +-
 drivers/net/bnx2x/bnx2x_main.c                     | 6098 +++++---
 drivers/net/bnx2x/bnx2x_reg.h                      |  938 ++-
 drivers/net/bnx2x/bnx2x_stats.c                    |  305 +-
 drivers/net/bnx2x/bnx2x_stats.h                    |    8 +-
 drivers/net/bonding/bond_3ad.c                     |  276 +-
 drivers/net/bonding/bond_main.c                    |  181 +-
 drivers/net/bonding/bond_sysfs.c                   |   52 +
 drivers/net/bonding/bonding.h                      |   34 +-
 drivers/net/bsd_comp.c                             |    2 +-
 drivers/net/can/mcp251x.c                          |  103 +-
 drivers/net/can/mscan/mpc5xxx_can.c                |    8 +-
 drivers/net/cassini.c                              |    6 +-
 drivers/net/chelsio/sge.c                          |    6 +-
 drivers/net/chelsio/subr.c                         |    2 -
 drivers/net/chelsio/vsc7326.c                      |    2 +-
 drivers/net/cnic.c                                 |  955 +-
 drivers/net/cnic.h                                 |  118 +-
 drivers/net/cnic_defs.h                            |  456 +-
 drivers/net/cnic_if.h                              |   23 +-
 drivers/net/cpmac.c                                |   39 +-
 drivers/net/cxgb3/adapter.h                        |    3 -
 drivers/net/cxgb3/common.h                         |   18 -
 drivers/net/cxgb3/cxgb3_defs.h                     |    3 -
 drivers/net/cxgb3/cxgb3_main.c                     |   29 +-
 drivers/net/cxgb3/cxgb3_offload.c                  |   11 +-
 drivers/net/cxgb3/mc5.c                            |   38 -
 drivers/net/cxgb3/regs.h                           |    4 +
 drivers/net/cxgb3/sge.c                            |   45 +-
 drivers/net/cxgb3/t3_hw.c                          |  204 +-
 drivers/net/cxgb4/cxgb4.h                          |   17 +-
 drivers/net/cxgb4/cxgb4_main.c                     |  167 +-
 drivers/net/cxgb4/cxgb4_uld.h                      |    6 -
 drivers/net/cxgb4/l2t.c                            |   34 -
 drivers/net/cxgb4/l2t.h                            |    3 -
 drivers/net/cxgb4/sge.c                            |   19 +-
 drivers/net/cxgb4/t4_hw.c                          |  332 -
 drivers/net/cxgb4/t4_hw.h                          |    1 +
 drivers/net/cxgb4/t4fw_api.h                       |    5 +
 drivers/net/cxgb4vf/cxgb4vf_main.c                 |    5 +-
 drivers/net/cxgb4vf/sge.c                          |    3 +-
 drivers/net/cxgb4vf/t4vf_common.h                  |   26 +-
 drivers/net/de620.c                                |    2 +-
 drivers/net/declance.c                             |    2 +-
 drivers/net/defxx.c                                |   66 +-
 drivers/net/dl2k.c                                 |    2 +-
 drivers/net/dm9000.c                               |    2 +-
 drivers/net/dnet.c                                 |   18 +-
 drivers/net/dummy.c                                |   58 +-
 drivers/net/e100.c                                 |    4 +-
 drivers/net/e1000/e1000.h                          |    3 +
 drivers/net/e1000/e1000_main.c                     |  245 +-
 drivers/net/e1000e/82571.c                         |    6 +-
 drivers/net/e1000e/defines.h                       |    2 +
 drivers/net/e1000e/e1000.h                         |   29 +
 drivers/net/e1000e/es2lan.c                        |    1 +
 drivers/net/e1000e/ethtool.c                       |   23 +-
 drivers/net/e1000e/ich8lan.c                       |    2 +-
 drivers/net/e1000e/netdev.c                        |  149 +-
 drivers/net/e1000e/param.c                         |    2 -
 drivers/net/eepro.c                                |    8 +-
 drivers/net/ehea/ehea.h                            |    2 +
 drivers/net/ehea/ehea_main.c                       |   53 +-
 drivers/net/enic/enic.h                            |   27 +-
 drivers/net/enic/enic_main.c                       |  415 +-
 drivers/net/enic/enic_res.c                        |   32 +-
 drivers/net/enic/enic_res.h                        |    2 +-
 drivers/net/enic/vnic_dev.c                        |  133 +-
 drivers/net/enic/vnic_dev.h                        |   19 -
 drivers/net/enic/vnic_devcmd.h                     |   12 +
 drivers/net/enic/vnic_enet.h                       |    2 +-
 drivers/net/enic/vnic_intr.c                       |    5 -
 drivers/net/enic/vnic_resource.h                   |   13 +
 drivers/net/enic/vnic_rq.c                         |    8 +-
 drivers/net/enic/vnic_rq.h                         |    6 +-
 drivers/net/enic/vnic_rss.h                        |    5 -
 drivers/net/enic/vnic_vic.c                        |    7 +-
 drivers/net/enic/vnic_wq.c                         |    8 +-
 drivers/net/enic/vnic_wq.h                         |    4 -
 drivers/net/epic100.c                              |    2 +-
 drivers/net/eth16i.c                               |   16 +-
 drivers/net/ethoc.c                                |    6 -
 drivers/net/fealnx.c                               |    4 +-
 drivers/net/fec_mpc52xx.c                          |    6 -
 drivers/net/forcedeth.c                            |   19 +-
 drivers/net/fs_enet/fs_enet-main.c                 |    3 +-
 drivers/net/fsl_pq_mdio.c                          |    4 +-
 drivers/net/gianfar.c                              |   26 +-
 drivers/net/gianfar_ethtool.c                      |    6 +-
 drivers/net/greth.c                                |    6 +-
 drivers/net/hamachi.c                              |    2 +-
 drivers/net/hamradio/bpqether.c                    |    2 +-
 drivers/net/hamradio/hdlcdrv.c                     |    2 +-
 drivers/net/hamradio/scc.c                         |    3 +-
 drivers/net/hp.c                                   |    8 +-
 drivers/net/hp100.c                                |    6 +-
 drivers/net/hydra.c                                |   13 +-
 drivers/net/ibm_newemac/core.c                     |    6 +-
 drivers/net/ibm_newemac/core.h                     |    6 +-
 drivers/net/ibmlana.c                              |    2 +-
 drivers/net/ibmveth.c                              |  999 +-
 drivers/net/ibmveth.h                              |   59 +-
 drivers/net/igb/e1000_82575.c                      |   18 +-
 drivers/net/igb/e1000_defines.h                    |   31 +
 drivers/net/igb/e1000_hw.h                         |    2 +
 drivers/net/igb/e1000_phy.c                        |  206 +-
 drivers/net/igb/e1000_phy.h                        |    2 +
 drivers/net/igb/igb.h                              |   11 +-
 drivers/net/igb/igb_ethtool.c                      |   52 +-
 drivers/net/igb/igb_main.c                         |  164 +-
 drivers/net/igbvf/ethtool.c                        |    2 +-
 drivers/net/igbvf/netdev.c                         |   11 +-
 drivers/net/ioc3-eth.c                             |    2 +-
 drivers/net/ipg.c                                  |    6 +-
 drivers/net/irda/donauboe.c                        |    4 +-
 drivers/net/irda/irda-usb.c                        |   10 +-
 drivers/net/irda/mcs7780.c                         |    2 +-
 drivers/net/irda/nsc-ircc.c                        |    2 +-
 drivers/net/irda/sir_dev.c                         |    2 +-
 drivers/net/irda/smsc-ircc2.c                      |    2 +-
 drivers/net/irda/stir4200.c                        |    2 +-
 drivers/net/irda/via-ircc.c                        |    3 +-
 drivers/net/irda/via-ircc.h                        |    2 +-
 drivers/net/irda/vlsi_ir.h                         |    2 +-
 drivers/net/iseries_veth.c                         |    2 +-
 drivers/net/ixgb/ixgb_ee.c                         |   32 +-
 drivers/net/ixgb/ixgb_ethtool.c                    |    2 +-
 drivers/net/ixgb/ixgb_hw.c                         |   14 +-
 drivers/net/ixgb/ixgb_main.c                       |   12 +-
 drivers/net/ixgbe/ixgbe.h                          |   39 +-
 drivers/net/ixgbe/ixgbe_82599.c                    |  234 +-
 drivers/net/ixgbe/ixgbe_common.c                   |   50 +-
 drivers/net/ixgbe/ixgbe_common.h                   |    1 -
 drivers/net/ixgbe/ixgbe_dcb.c                      |  219 -
 drivers/net/ixgbe/ixgbe_dcb.h                      |   18 -
 drivers/net/ixgbe/ixgbe_dcb_82598.c                |   67 +-
 drivers/net/ixgbe/ixgbe_dcb_82598.h                |   15 -
 drivers/net/ixgbe/ixgbe_dcb_82599.c                |   69 +-
 drivers/net/ixgbe/ixgbe_dcb_82599.h                |   18 -
 drivers/net/ixgbe/ixgbe_ethtool.c                  |  428 +-
 drivers/net/ixgbe/ixgbe_fcoe.c                     |   13 +-
 drivers/net/ixgbe/ixgbe_fcoe.h                     |    1 +
 drivers/net/ixgbe/ixgbe_main.c                     | 1972 ++--
 drivers/net/ixgbe/ixgbe_mbx.c                      |   21 +-
 drivers/net/ixgbe/ixgbe_mbx.h                      |    5 +-
 drivers/net/ixgbe/ixgbe_sriov.c                    |   19 +-
 drivers/net/ixgbe/ixgbe_sriov.h                    |   10 +-
 drivers/net/ixgbe/ixgbe_type.h                     |    2 +
 drivers/net/ixgbevf/ethtool.c                      |  153 +-
 drivers/net/ixgbevf/ixgbevf.h                      |    1 -
 drivers/net/ixgbevf/ixgbevf_main.c                 |   36 +-
 drivers/net/ixgbevf/mbx.c                          |    2 +-
 drivers/net/ixgbevf/mbx.h                          |    2 -
 drivers/net/ixgbevf/vf.c                           |    2 +-
 drivers/net/ixgbevf/vf.h                           |    2 -
 drivers/net/jme.c                                  |  167 +-
 drivers/net/jme.h                                  |    6 +-
 drivers/net/ll_temac_main.c                        |    4 +-
 drivers/net/loopback.c                             |   28 +-
 drivers/net/lp486e.c                               |    2 +-
 drivers/net/mac8390.c                              |   48 +-
 drivers/net/macb.c                                 |    2 +-
 drivers/net/macvlan.c                              |    4 +
 drivers/net/macvtap.c                              |   99 +-
 drivers/net/meth.c                                 |    2 +-
 drivers/net/mlx4/Makefile                          |    2 +-
 drivers/net/mlx4/alloc.c                           |   17 +-
 drivers/net/mlx4/en_ethtool.c                      |  173 +-
 drivers/net/mlx4/en_main.c                         |   24 +-
 drivers/net/mlx4/en_netdev.c                       |   31 +-
 drivers/net/mlx4/en_port.c                         |   32 +
 drivers/net/mlx4/en_port.h                         |   14 +
 drivers/net/mlx4/en_rx.c                           |  104 +-
 drivers/net/mlx4/en_selftest.c                     |  179 +
 drivers/net/mlx4/en_tx.c                           |   24 +-
 drivers/net/mlx4/eq.c                              |   44 +
 drivers/net/mlx4/fw.c                              |   15 +
 drivers/net/mlx4/fw.h                              |    6 +
 drivers/net/mlx4/main.c                            |    6 +
 drivers/net/mlx4/mlx4_en.h                         |   39 +-
 drivers/net/mlx4/profile.c                         |    2 +-
 drivers/net/mv643xx_eth.c                          |    3 +-
 drivers/net/myri10ge/myri10ge.c                    |   49 +-
 drivers/net/myri_sbus.c                            |    2 +-
 drivers/net/natsemi.c                              |    2 +-
 drivers/net/netconsole.c                           |    9 +-
 drivers/net/netxen/netxen_nic.h                    |   23 +-
 drivers/net/netxen/netxen_nic_hw.c                 |   43 +-
 drivers/net/netxen/netxen_nic_init.c               |   14 +-
 drivers/net/netxen/netxen_nic_main.c               |   49 +-
 drivers/net/niu.c                                  |  133 +-
 drivers/net/ns83820.c                              |   55 +-
 drivers/net/pasemi_mac.c                           |    2 +-
 drivers/net/pasemi_mac_ethtool.c                   |   16 -
 drivers/net/pch_gbe/Makefile                       |    4 +
 drivers/net/pch_gbe/pch_gbe.h                      |  659 +
 drivers/net/pch_gbe/pch_gbe_api.c                  |  245 +
 drivers/net/pch_gbe/pch_gbe_api.h                  |   36 +
 drivers/net/pch_gbe/pch_gbe_ethtool.c              |  585 +
 drivers/net/pch_gbe/pch_gbe_main.c                 | 2477 ++++
 drivers/net/pch_gbe/pch_gbe_param.c                |  499 +
 drivers/net/pch_gbe/pch_gbe_phy.c                  |  274 +
 drivers/net/pch_gbe/pch_gbe_phy.h                  |   37 +
 drivers/net/pci-skeleton.c                         |    2 +-
 drivers/net/pcmcia/3c574_cs.c                      |   88 +-
 drivers/net/pcmcia/3c589_cs.c                      |   17 +-
 drivers/net/pcmcia/axnet_cs.c                      |  187 +-
 drivers/net/pcmcia/com20020_cs.c                   |   32 +-
 drivers/net/pcmcia/fmvj18x_cs.c                    |   60 +-
 drivers/net/pcmcia/ibmtr_cs.c                      |   26 +-
 drivers/net/pcmcia/nmclan_cs.c                     |   56 +-
 drivers/net/pcmcia/pcnet_cs.c                      |  106 +-
 drivers/net/pcmcia/smc91c92_cs.c                   |  105 +-
 drivers/net/pcmcia/xirc2ps_cs.c                    |  104 +-
 drivers/net/pcnet32.c                              |    4 +-
 drivers/net/phy/Kconfig                            |    1 -
 drivers/net/phy/bcm63xx.c                          |    2 +-
 drivers/net/phy/broadcom.c                         |    2 +-
 drivers/net/phy/cicada.c                           |    2 +-
 drivers/net/phy/davicom.c                          |    2 +-
 drivers/net/phy/et1011c.c                          |    2 +-
 drivers/net/phy/icplus.c                           |    2 +-
 drivers/net/phy/lxt.c                              |    2 +-
 drivers/net/phy/marvell.c                          |   33 +-
 drivers/net/phy/micrel.c                           |    2 +-
 drivers/net/phy/national.c                         |    2 +-
 drivers/net/phy/qsemi.c                            |    2 +-
 drivers/net/phy/realtek.c                          |    2 +-
 drivers/net/phy/smsc.c                             |    2 +-
 drivers/net/phy/ste10Xp.c                          |    2 +-
 drivers/net/phy/vitesse.c                          |    2 +-
 drivers/net/plip.c                                 |    9 +-
 drivers/net/ppp_generic.c                          |   46 +-
 drivers/net/pppoe.c                                |    2 +-
 drivers/net/pppox.c                                |    4 +-
 drivers/net/pptp.c                                 |  726 +
 drivers/net/ps3_gelic_net.c                        |    4 +-
 drivers/net/ps3_gelic_wireless.c                   |    6 +-
 drivers/net/pxa168_eth.c                           |    4 +-
 drivers/net/qla3xxx.c                              |    4 +-
 drivers/net/qlcnic/qlcnic.h                        |  179 +-
 drivers/net/qlcnic/qlcnic_ctx.c                    |  411 +-
 drivers/net/qlcnic/qlcnic_ethtool.c                |  226 +-
 drivers/net/qlcnic/qlcnic_hdr.h                    |   47 +-
 drivers/net/qlcnic/qlcnic_hw.c                     |  131 +-
 drivers/net/qlcnic/qlcnic_init.c                   |  332 +-
 drivers/net/qlcnic/qlcnic_main.c                   | 1310 ++-
 drivers/net/qlge/qlge_main.c                       |   36 +-
 drivers/net/r6040.c                                |   92 +-
 drivers/net/r8169.c                                |  400 +-
 drivers/net/rrunner.c                              |    2 +-
 drivers/net/s2io.c                                 |   39 +-
 drivers/net/s2io.h                                 |    9 -
 drivers/net/sb1250-mac.c                           |    2 +-
 drivers/net/sc92031.c                              |   11 -
 drivers/net/sfc/Makefile                           |    7 +-
 drivers/net/sfc/efx.c                              |  353 +-
 drivers/net/sfc/efx.h                              |   46 +-
 drivers/net/sfc/ethtool.c                          |  181 +-
 drivers/net/sfc/falcon.c                           |  136 +-
 drivers/net/sfc/falcon_boards.c                    |  203 +-
 drivers/net/sfc/falcon_gmac.c                      |  230 -
 drivers/net/sfc/falcon_xmac.c                      |    2 +-
 drivers/net/sfc/filter.c                           |  454 +
 drivers/net/sfc/filter.h                           |  189 +
 drivers/net/sfc/mac.h                              |    2 -
 drivers/net/sfc/mcdi.c                             |    4 +-
 drivers/net/sfc/mcdi.h                             |    2 -
 drivers/net/sfc/mcdi_phy.c                         |    3 +-
 drivers/net/sfc/mdio_10g.c                         |   30 +-
 drivers/net/sfc/net_driver.h                       |  117 +-
 drivers/net/sfc/nic.c                              |  199 +-
 drivers/net/sfc/phy.h                              |   18 +-
 drivers/net/sfc/regs.h                             |   14 +
 drivers/net/sfc/rx.c                               |   73 +-
 drivers/net/sfc/selftest.c                         |   17 +-
 drivers/net/sfc/siena.c                            |    6 +-
 drivers/net/sfc/tenxpress.c                        |  424 +-
 drivers/net/sfc/tx.c                               |   78 +-
 drivers/net/sfc/txc43128_phy.c                     |  560 +
 drivers/net/sfc/workarounds.h                      |    9 +-
 drivers/net/sh_eth.c                               |    4 +-
 drivers/net/sis900.c                               |    8 +-
 drivers/net/skfp/cfm.c                             |   10 +-
 drivers/net/skfp/drvfbi.c                          |   16 +-
 drivers/net/skfp/ess.c                             |   46 +-
 drivers/net/skfp/fplustm.c                         |   24 +-
 drivers/net/skfp/hwmtm.c                           |   30 +-
 drivers/net/skfp/hwt.c                             |    4 +-
 drivers/net/skfp/pcmplc.c                          |   22 +-
 drivers/net/skfp/pmf.c                             |   62 +-
 drivers/net/skfp/queue.c                           |    2 +-
 drivers/net/skfp/skfddi.c                          |  116 +-
 drivers/net/skfp/smt.c                             |   78 +-
 drivers/net/skfp/smtdef.c                          |    4 +-
 drivers/net/skfp/smtinit.c                         |    2 +-
 drivers/net/skfp/srf.c                             |    2 +-
 drivers/net/skge.c                                 |    5 +-
 drivers/net/sky2.c                                 |    5 +-
 drivers/net/slip.c                                 |   93 +-
 drivers/net/slip.h                                 |    9 -
 drivers/net/smsc911x.c                             |    2 +-
 drivers/net/spider_net.c                           |    4 +-
 drivers/net/starfire.c                             |   10 +-
 drivers/net/stmmac/Kconfig                         |    5 +-
 drivers/net/stmmac/common.h                        |   61 +-
 drivers/net/stmmac/dwmac100.h                      |    2 +-
 drivers/net/stmmac/dwmac1000.h                     |    4 +-
 drivers/net/stmmac/dwmac1000_core.c                |   36 +-
 drivers/net/stmmac/dwmac1000_dma.c                 |   20 +-
 drivers/net/stmmac/dwmac100_core.c                 |   31 +-
 drivers/net/stmmac/dwmac100_dma.c                  |   20 +-
 drivers/net/stmmac/dwmac_dma.h                     |   16 +-
 drivers/net/stmmac/dwmac_lib.c                     |   22 +-
 drivers/net/stmmac/enh_desc.c                      |    6 +-
 drivers/net/stmmac/norm_desc.c                     |   21 +-
 drivers/net/stmmac/stmmac.h                        |   13 +-
 drivers/net/stmmac/stmmac_ethtool.c                |   63 +-
 drivers/net/stmmac/stmmac_main.c                   |  216 +-
 drivers/net/stmmac/stmmac_mdio.c                   |   26 +-
 drivers/net/sun3lance.c                            |    4 +-
 drivers/net/sunbmac.c                              |    2 +-
 drivers/net/sundance.c                             |  275 +-
 drivers/net/sungem.c                               |  211 +-
 drivers/net/sungem_phy.c                           |    5 +-
 drivers/net/sunhme.c                               |   10 +-
 drivers/net/sunlance.c                             |    2 +-
 drivers/net/sunqe.c                                |    2 +-
 drivers/net/sunvnet.c                              |   50 +-
 drivers/net/tc35815.c                              |    2 +-
 drivers/net/tehuti.c                               |   34 +-
 drivers/net/tehuti.h                               |    1 -
 drivers/net/tg3.c                                  |  734 +-
 drivers/net/tg3.h                                  |   73 +-
 drivers/net/tlan.c                                 |   10 +-
 drivers/net/tlan.h                                 |    8 +-
 drivers/net/tokenring/proteon.c                    |    2 +-
 drivers/net/tokenring/smctr.c                      |  500 +-
 drivers/net/tokenring/tms380tr.c                   |   64 +-
 drivers/net/tokenring/tmspci.c                     |   10 +-
 drivers/net/tsi108_eth.c                           |    2 +-
 drivers/net/tulip/Kconfig                          |    4 +-
 drivers/net/tulip/de2104x.c                        |    3 +-
 drivers/net/tulip/de4x5.c                          |   57 +-
 drivers/net/tulip/dmfe.c                           |    2 +-
 drivers/net/tulip/interrupt.c                      |   77 +-
 drivers/net/tulip/tulip.h                          |    3 +-
 drivers/net/tulip/tulip_core.c                     |   10 +-
 drivers/net/tulip/uli526x.c                        |    4 +-
 drivers/net/tulip/winbond-840.c                    |    2 +-
 drivers/net/tulip/xircom_cb.c                      |   15 -
 drivers/net/typhoon.c                              |   50 +-
 drivers/net/usb/Kconfig                            |    8 +
 drivers/net/usb/Makefile                           |    1 +
 drivers/net/usb/cx82310_eth.c                      |  346 +
 drivers/net/usb/hso.c                              |    9 -
 drivers/net/usb/kaweth.c                           |    9 -
 drivers/net/usb/sierra_net.c                       |    4 +-
 drivers/net/usb/smsc95xx.c                         |    4 +-
 drivers/net/veth.c                                 |    2 +-
 drivers/net/via-velocity.c                         |   86 +-
 drivers/net/via-velocity.h                         |   16 +-
 drivers/net/virtio_net.c                           |   14 -
 drivers/net/vmxnet3/vmxnet3_drv.c                  |   23 +-
 drivers/net/vmxnet3/vmxnet3_int.h                  |   17 +-
 drivers/net/vxge/vxge-main.c                       |   38 +-
 drivers/net/vxge/vxge-main.h                       |    1 -
 drivers/net/wan/c101.c                             |    2 +-
 drivers/net/wan/cycx_drv.c                         |   14 +-
 drivers/net/wan/cycx_main.c                        |    6 +-
 drivers/net/wan/dlci.c                             |   42 +-
 drivers/net/wan/hdlc_cisco.c                       |    4 +-
 drivers/net/wan/lapbether.c                        |    2 +-
 drivers/net/wan/lmc/lmc_main.c                     |    6 +-
 drivers/net/wan/n2.c                               |    6 +-
 drivers/net/wan/pc300_drv.c                        |   20 +-
 drivers/net/wan/pc300_tty.c                        |    2 +-
 drivers/net/wan/pci200syn.c                        |    2 +-
 drivers/net/wan/sdla.c                             |  108 +-
 drivers/net/wan/x25_asy.c                          |    2 +-
 drivers/net/wan/z85230.c                           |    4 +-
 drivers/net/wd.c                                   |    8 +-
 drivers/net/wimax/i2400m/control.c                 |   18 +-
 drivers/net/wimax/i2400m/driver.c                  |    2 +-
 drivers/net/wimax/i2400m/i2400m-sdio.h             |    1 -
 drivers/net/wimax/i2400m/i2400m.h                  |    9 -
 drivers/net/wimax/i2400m/rx.c                      |    2 +-
 drivers/net/wimax/i2400m/sdio-rx.c                 |    2 +-
 drivers/net/wireless/Kconfig                       |    1 +
 drivers/net/wireless/Makefile                      |    2 +
 drivers/net/wireless/airo.c                        |   24 +-
 drivers/net/wireless/at76c50x-usb.c                |   10 +-
 drivers/net/wireless/ath/Kconfig                   |    1 +
 drivers/net/wireless/ath/Makefile                  |    4 +-
 drivers/net/wireless/ath/ar9170/main.c             |   31 +-
 drivers/net/wireless/ath/ar9170/usb.c              |    2 -
 drivers/net/wireless/ath/ath.h                     |   56 +-
 drivers/net/wireless/ath/ath5k/ani.c               |   47 +-
 drivers/net/wireless/ath/ath5k/ani.h               |    5 +-
 drivers/net/wireless/ath/ath5k/ath5k.h             |   31 +-
 drivers/net/wireless/ath/ath5k/attach.c            |   23 +-
 drivers/net/wireless/ath/ath5k/base.c              | 3621 +++---
 drivers/net/wireless/ath/ath5k/base.h              |   33 +-
 drivers/net/wireless/ath/ath5k/debug.c             |  121 +-
 drivers/net/wireless/ath/ath5k/debug.h             |   15 +-
 drivers/net/wireless/ath/ath5k/dma.c               |    8 +-
 drivers/net/wireless/ath/ath5k/eeprom.c            |    4 +-
 drivers/net/wireless/ath/ath5k/pcu.c               |  297 +-
 drivers/net/wireless/ath/ath5k/phy.c               |   26 +-
 drivers/net/wireless/ath/ath5k/qcu.c               |   99 +-
 drivers/net/wireless/ath/ath5k/reg.h               |   73 +-
 drivers/net/wireless/ath/ath5k/reset.c             |   34 +-
 drivers/net/wireless/ath/ath5k/rfbuffer.h          |    4 +-
 drivers/net/wireless/ath/ath9k/Kconfig             |    8 +
 drivers/net/wireless/ath/ath9k/Makefile            |    5 +-
 drivers/net/wireless/ath/ath9k/ani.c               |  655 +-
 drivers/net/wireless/ath/ath9k/ani.h               |   13 +-
 drivers/net/wireless/ath/ath9k/ar5008_phy.c        |   50 +-
 drivers/net/wireless/ath/ath9k/ar9002_calib.c      |   89 +-
 drivers/net/wireless/ath/ath9k/ar9002_hw.c         |   55 +-
 drivers/net/wireless/ath/ath9k/ar9002_phy.c        |   36 +-
 drivers/net/wireless/ath/ath9k/ar9002_phy.h        |    2 +
 .../net/wireless/ath/ath9k/ar9003_2p0_initvals.h   | 1784 ---
 drivers/net/wireless/ath/ath9k/ar9003_calib.c      |   37 +-
 drivers/net/wireless/ath/ath9k/ar9003_eeprom.c     |    2 +-
 drivers/net/wireless/ath/ath9k/ar9003_hw.c         |  164 +-
 drivers/net/wireless/ath/ath9k/ar9003_mac.c        |    5 +-
 drivers/net/wireless/ath/ath9k/ar9003_phy.c        |   20 +-
 drivers/net/wireless/ath/ath9k/ath9k.h             |   86 +-
 drivers/net/wireless/ath/ath9k/beacon.c            |   28 +-
 drivers/net/wireless/ath/ath9k/btcoex.c            |    7 +
 drivers/net/wireless/ath/ath9k/calib.c             |  152 +-
 drivers/net/wireless/ath/ath9k/calib.h             |   11 +-
 drivers/net/wireless/ath/ath9k/common.c            |  290 +-
 drivers/net/wireless/ath/ath9k/common.h            |   16 +-
 drivers/net/wireless/ath/ath9k/debug.c             |  170 +-
 drivers/net/wireless/ath/ath9k/debug.h             |   33 +-
 drivers/net/wireless/ath/ath9k/eeprom.h            |    7 +-
 drivers/net/wireless/ath/ath9k/eeprom_4k.c         |   28 +-
 drivers/net/wireless/ath/ath9k/eeprom_9287.c       |    8 +-
 drivers/net/wireless/ath/ath9k/eeprom_def.c        |   22 +-
 drivers/net/wireless/ath/ath9k/gpio.c              |   40 +-
 drivers/net/wireless/ath/ath9k/hif_usb.c           |   35 +-
 drivers/net/wireless/ath/ath9k/htc.h               |   42 +-
 drivers/net/wireless/ath/ath9k/htc_drv_beacon.c    |    9 +-
 drivers/net/wireless/ath/ath9k/htc_drv_gpio.c      |  134 +
 drivers/net/wireless/ath/ath9k/htc_drv_init.c      |   74 +-
 drivers/net/wireless/ath/ath9k/htc_drv_main.c      |   51 +-
 drivers/net/wireless/ath/ath9k/htc_drv_txrx.c      |    6 +-
 drivers/net/wireless/ath/ath9k/htc_hst.c           |    4 +-
 drivers/net/wireless/ath/ath9k/htc_hst.h           |    2 +-
 drivers/net/wireless/ath/ath9k/hw-ops.h            |   22 -
 drivers/net/wireless/ath/ath9k/hw.c                |  418 +-
 drivers/net/wireless/ath/ath9k/hw.h                |  116 +-
 drivers/net/wireless/ath/ath9k/init.c              |   76 +-
 drivers/net/wireless/ath/ath9k/mac.c               |   13 +-
 drivers/net/wireless/ath/ath9k/mac.h               |   21 -
 drivers/net/wireless/ath/ath9k/main.c              |  310 +-
 drivers/net/wireless/ath/ath9k/phy.h               |    3 -
 drivers/net/wireless/ath/ath9k/rc.c                |  200 +-
 drivers/net/wireless/ath/ath9k/rc.h                |   37 +-
 drivers/net/wireless/ath/ath9k/recv.c              |  602 +-
 drivers/net/wireless/ath/ath9k/reg.h               |   48 +-
 drivers/net/wireless/ath/ath9k/virtual.c           |   63 +-
 drivers/net/wireless/ath/ath9k/wmi.c               |   74 +-
 drivers/net/wireless/ath/ath9k/wmi.h               |    7 +-
 drivers/net/wireless/ath/ath9k/xmit.c              |  184 +-
 drivers/net/wireless/ath/carl9170/Kconfig          |   41 +
 drivers/net/wireless/ath/carl9170/Makefile         |    4 +
 drivers/net/wireless/ath/carl9170/carl9170.h       |  628 +
 drivers/net/wireless/ath/carl9170/cmd.c            |  188 +
 drivers/net/wireless/ath/carl9170/cmd.h            |  168 +
 drivers/net/wireless/ath/carl9170/debug.c          |  902 ++
 drivers/net/wireless/ath/carl9170/debug.h          |  134 +
 drivers/net/wireless/ath/carl9170/eeprom.h         |  216 +
 drivers/net/wireless/ath/carl9170/fw.c             |  402 +
 drivers/net/wireless/ath/carl9170/fwcmd.h          |  284 +
 drivers/net/wireless/ath/carl9170/fwdesc.h         |  241 +
 drivers/net/wireless/ath/carl9170/hw.h             |  739 +
 drivers/net/wireless/ath/carl9170/led.c            |  190 +
 drivers/net/wireless/ath/carl9170/mac.c            |  604 +
 drivers/net/wireless/ath/carl9170/main.c           | 1891 +++
 drivers/net/wireless/ath/carl9170/phy.c            | 1810 +++
 drivers/net/wireless/ath/carl9170/phy.h            |  564 +
 drivers/net/wireless/ath/carl9170/rx.c             |  938 ++
 drivers/net/wireless/ath/carl9170/tx.c             | 1335 ++
 drivers/net/wireless/ath/carl9170/usb.c            | 1136 ++
 drivers/net/wireless/ath/carl9170/version.h        |    7 +
 drivers/net/wireless/ath/carl9170/wlan.h           |  420 +
 drivers/net/wireless/ath/debug.c                   |   29 +
 drivers/net/wireless/ath/debug.h                   |   12 +
 drivers/net/wireless/ath/hw.c                      |   59 +
 drivers/net/wireless/ath/key.c                     |  568 +
 drivers/net/wireless/ath/reg.h                     |   34 +
 drivers/net/wireless/b43/Makefile                  |    2 +
 drivers/net/wireless/b43/b43.h                     |    3 +-
 drivers/net/wireless/b43/main.c                    |   30 +-
 drivers/net/wireless/b43/phy_common.c              |    6 +-
 drivers/net/wireless/b43/phy_common.h              |    5 +-
 drivers/net/wireless/b43/phy_n.c                   |  211 +-
 drivers/net/wireless/b43/phy_n.h                   |  218 +-
 drivers/net/wireless/b43/radio_2055.c              | 1332 ++
 drivers/net/wireless/b43/radio_2055.h              |  254 +
 drivers/net/wireless/b43/radio_2056.c              |   43 +
 drivers/net/wireless/b43/radio_2056.h              |   42 +
 drivers/net/wireless/b43/tables_nphy.c             | 1311 +--
 drivers/net/wireless/b43/tables_nphy.h             |   59 +-
 drivers/net/wireless/b43legacy/main.c              |    5 +
 drivers/net/wireless/hostap/hostap_ioctl.c         |    2 +-
 drivers/net/wireless/ipw2x00/ipw2100.c             |   10 +-
 drivers/net/wireless/ipw2x00/ipw2200.c             |   20 +-
 drivers/net/wireless/iwlwifi/Kconfig               |   10 +
 drivers/net/wireless/iwlwifi/Makefile              |    1 +
 drivers/net/wireless/iwlwifi/iwl-1000.c            |  119 +-
 drivers/net/wireless/iwlwifi/iwl-3945-hw.h         |    3 +-
 drivers/net/wireless/iwlwifi/iwl-3945-rs.c         |    7 +-
 drivers/net/wireless/iwlwifi/iwl-3945.c            |  191 +-
 drivers/net/wireless/iwlwifi/iwl-3945.h            |   11 +-
 drivers/net/wireless/iwlwifi/iwl-4965.c            |  134 +-
 drivers/net/wireless/iwlwifi/iwl-5000-hw.h         |    2 +-
 drivers/net/wireless/iwlwifi/iwl-5000.c            |  245 +-
 drivers/net/wireless/iwlwifi/iwl-6000-hw.h         |    2 +-
 drivers/net/wireless/iwlwifi/iwl-6000.c            |  754 +-
 drivers/net/wireless/iwlwifi/iwl-agn-calib.c       |   58 +-
 .../iwlwifi/{iwl-calib.h => iwl-agn-calib.h}       |    4 +
 drivers/net/wireless/iwlwifi/iwl-agn-debugfs.c     |  515 +-
 drivers/net/wireless/iwlwifi/iwl-agn-debugfs.h     |    7 +
 drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c      |  454 +
 drivers/net/wireless/iwlwifi/iwl-agn-hcmd.c        |  157 +-
 drivers/net/wireless/iwlwifi/iwl-agn-ict.c         |    2 +-
 drivers/net/wireless/iwlwifi/iwl-agn-lib.c         | 1121 ++-
 drivers/net/wireless/iwlwifi/iwl-agn-rs.c          |  404 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rs.h          |   21 +-
 drivers/net/wireless/iwlwifi/iwl-agn-rx.c          |   35 +-
 drivers/net/wireless/iwlwifi/iwl-agn-sta.c         |  716 +
 drivers/net/wireless/iwlwifi/iwl-agn-tt.c          |  699 +
 drivers/net/wireless/iwlwifi/iwl-agn-tt.h          |  129 +
 drivers/net/wireless/iwlwifi/iwl-agn-tx.c          |  208 +-
 drivers/net/wireless/iwlwifi/iwl-agn-ucode.c       |  118 +-
 drivers/net/wireless/iwlwifi/iwl-agn.c             |  890 +-
 drivers/net/wireless/iwlwifi/iwl-agn.h             |   96 +-
 drivers/net/wireless/iwlwifi/iwl-commands.h        |  585 +-
 drivers/net/wireless/iwlwifi/iwl-core.c            | 1451 +--
 drivers/net/wireless/iwlwifi/iwl-core.h            |  261 +-
 drivers/net/wireless/iwlwifi/iwl-csr.h             |    3 +-
 drivers/net/wireless/iwlwifi/iwl-debugfs.c         |  209 +-
 drivers/net/wireless/iwlwifi/iwl-dev.h             |  257 +-
 drivers/net/wireless/iwlwifi/iwl-eeprom.c          |  393 +-
 drivers/net/wireless/iwlwifi/iwl-eeprom.h          |    8 +-
 drivers/net/wireless/iwlwifi/iwl-hcmd.c            |   13 +-
 drivers/net/wireless/iwlwifi/iwl-helpers.h         |    5 -
 drivers/net/wireless/iwlwifi/iwl-led.c             |    6 +-
 drivers/net/wireless/iwlwifi/iwl-power.c           |  642 +-
 drivers/net/wireless/iwlwifi/iwl-power.h           |   93 -
 drivers/net/wireless/iwlwifi/iwl-prph.h            |    9 +-
 drivers/net/wireless/iwlwifi/iwl-rx.c              |   10 +-
 drivers/net/wireless/iwlwifi/iwl-scan.c            |  441 +-
 drivers/net/wireless/iwlwifi/iwl-sta.c             |  759 +-
 drivers/net/wireless/iwlwifi/iwl-sta.h             |   69 +-
 drivers/net/wireless/iwlwifi/iwl-tx.c              |   81 +-
 drivers/net/wireless/iwlwifi/iwl3945-base.c        |  434 +-
 drivers/net/wireless/iwmc3200wifi/cfg80211.c       |    7 +-
 drivers/net/wireless/iwmc3200wifi/rx.c             |    7 +-
 drivers/net/wireless/libertas/cfg.c                |   72 +-
 drivers/net/wireless/libertas/decl.h               |   13 +
 drivers/net/wireless/libertas/if_cs.c              |  130 +-
 drivers/net/wireless/libertas/if_sdio.c            |  161 +-
 drivers/net/wireless/libertas/if_sdio.h            |    4 -
 drivers/net/wireless/libertas/if_spi.c             |  150 +-
 drivers/net/wireless/libertas/if_spi.h             |    5 -
 drivers/net/wireless/libertas/if_usb.c             |   64 +-
 drivers/net/wireless/libertas/if_usb.h             |    1 +
 drivers/net/wireless/libertas/main.c               |  105 +
 drivers/net/wireless/libertas/mesh.c               |    2 +-
 drivers/net/wireless/libertas_tf/if_usb.c          |   57 +-
 drivers/net/wireless/mac80211_hwsim.c              |   31 +-
 drivers/net/wireless/orinoco/hw.c                  |    9 +-
 drivers/net/wireless/orinoco/wext.c                |   11 +-
 drivers/net/wireless/p54/Kconfig                   |   18 +
 drivers/net/wireless/p54/eeprom.c                  |   25 +-
 drivers/net/wireless/p54/fwio.c                    |    6 +-
 drivers/net/wireless/p54/main.c                    |    9 +-
 drivers/net/wireless/p54/p54spi.c                  |    9 +-
 drivers/net/wireless/p54/p54spi_eeprom.h           |    2 +-
 drivers/net/wireless/p54/p54usb.c                  |   15 +-
 drivers/net/wireless/p54/txrx.c                    |   25 +-
 drivers/net/wireless/prism54/isl_ioctl.c           |    2 +-
 drivers/net/wireless/ray_cs.c                      |   44 +-
 drivers/net/wireless/rndis_wlan.c                  |   12 +-
 drivers/net/wireless/rt2x00/rt2400pci.c            |  149 +-
 drivers/net/wireless/rt2x00/rt2500pci.c            |  156 +-
 drivers/net/wireless/rt2x00/rt2500usb.c            |   78 +-
 drivers/net/wireless/rt2x00/rt2800.h               |  109 +-
 drivers/net/wireless/rt2x00/rt2800lib.c            |  625 +-
 drivers/net/wireless/rt2x00/rt2800lib.h            |   28 +-
 drivers/net/wireless/rt2x00/rt2800pci.c            |  400 +-
 drivers/net/wireless/rt2x00/rt2800usb.c            |  159 +-
 drivers/net/wireless/rt2x00/rt2x00.h               |   70 +-
 drivers/net/wireless/rt2x00/rt2x00config.c         |   24 +-
 drivers/net/wireless/rt2x00/rt2x00crypto.c         |   17 +-
 drivers/net/wireless/rt2x00/rt2x00debug.c          |   13 +-
 drivers/net/wireless/rt2x00/rt2x00dev.c            |  194 +-
 drivers/net/wireless/rt2x00/rt2x00firmware.c       |    3 +
 drivers/net/wireless/rt2x00/rt2x00ht.c             |   25 +-
 drivers/net/wireless/rt2x00/rt2x00lib.h            |   14 +-
 drivers/net/wireless/rt2x00/rt2x00link.c           |   24 +-
 drivers/net/wireless/rt2x00/rt2x00mac.c            |    6 +-
 drivers/net/wireless/rt2x00/rt2x00pci.c            |    2 +-
 drivers/net/wireless/rt2x00/rt2x00queue.c          |  138 +-
 drivers/net/wireless/rt2x00/rt2x00queue.h          |   56 +-
 drivers/net/wireless/rt2x00/rt2x00usb.c            |  320 +-
 drivers/net/wireless/rt2x00/rt2x00usb.h            |   12 +-
 drivers/net/wireless/rt2x00/rt61pci.c              |  123 +-
 drivers/net/wireless/rt2x00/rt73usb.c              |   96 +-
 drivers/net/wireless/rtl818x/rtl8180_dev.c         |   15 +-
 drivers/net/wireless/rtl818x/rtl8187_dev.c         |    9 +-
 drivers/net/wireless/wl1251/Kconfig                |   33 +
 drivers/net/wireless/wl1251/Makefile               |    6 +
 .../wireless/{wl12xx/wl1251_acx.c => wl1251/acx.c} |   10 +-
 .../wireless/{wl12xx/wl1251_acx.h => wl1251/acx.h} |   12 +-
 .../{wl12xx/wl1251_boot.c => wl1251/boot.c}        |   16 +-
 .../{wl12xx/wl1251_boot.h => wl1251/boot.h}        |    2 -
 .../wireless/{wl12xx/wl1251_cmd.c => wl1251/cmd.c} |   12 +-
 .../wireless/{wl12xx/wl1251_cmd.h => wl1251/cmd.h} |    8 +-
 .../{wl12xx/wl1251_debugfs.c => wl1251/debugfs.c}  |    8 +-
 .../{wl12xx/wl1251_debugfs.h => wl1251/debugfs.h}  |    2 -
 .../{wl12xx/wl1251_event.c => wl1251/event.c}      |   41 +-
 .../{wl12xx/wl1251_event.h => wl1251/event.h}      |    3 +-
 .../{wl12xx/wl1251_init.c => wl1251/init.c}        |   10 +-
 .../{wl12xx/wl1251_init.h => wl1251/init.h}        |    2 -
 .../wireless/{wl12xx/wl1251_io.c => wl1251/io.c}   |    6 +-
 .../wireless/{wl12xx/wl1251_io.h => wl1251/io.h}   |    0
 .../{wl12xx/wl1251_main.c => wl1251/main.c}        |   75 +-
 .../wireless/{wl12xx/wl1251_ps.c => wl1251/ps.c}   |   10 +-
 .../wireless/{wl12xx/wl1251_ps.h => wl1251/ps.h}   |   10 +-
 .../wireless/{wl12xx/wl1251_reg.h => wl1251/reg.h} |    2 -
 .../wireless/{wl12xx/wl1251_rx.c => wl1251/rx.c}   |   12 +-
 .../wireless/{wl12xx/wl1251_rx.h => wl1251/rx.h}   |    2 -
 .../{wl12xx/wl1251_sdio.c => wl1251/sdio.c}        |    4 +-
 .../wireless/{wl12xx/wl1251_spi.c => wl1251/spi.c} |   10 +-
 .../wireless/{wl12xx/wl1251_spi.h => wl1251/spi.h} |    8 +-
 .../wireless/{wl12xx/wl1251_tx.c => wl1251/tx.c}   |   34 +-
 .../wireless/{wl12xx/wl1251_tx.h => wl1251/tx.h}   |    4 +-
 drivers/net/wireless/{wl12xx => wl1251}/wl1251.h   |    7 +-
 drivers/net/wireless/wl1251/wl12xx_80211.h         |  156 +
 drivers/net/wireless/wl12xx/Kconfig                |   39 +-
 drivers/net/wireless/wl12xx/Makefile               |   12 +-
 drivers/net/wireless/wl12xx/wl1271.h               |   32 +-
 drivers/net/wireless/wl12xx/wl1271_acx.c           |   36 +-
 drivers/net/wireless/wl12xx/wl1271_acx.h           |   31 -
 drivers/net/wireless/wl12xx/wl1271_boot.c          |   67 +-
 drivers/net/wireless/wl12xx/wl1271_boot.h          |    1 -
 drivers/net/wireless/wl12xx/wl1271_cmd.c           |  143 +-
 drivers/net/wireless/wl12xx/wl1271_cmd.h           |   73 +-
 drivers/net/wireless/wl12xx/wl1271_conf.h          |   78 +-
 drivers/net/wireless/wl12xx/wl1271_event.c         |   15 +-
 drivers/net/wireless/wl12xx/wl1271_init.c          |   39 +-
 drivers/net/wireless/wl12xx/wl1271_io.h            |    9 +-
 drivers/net/wireless/wl12xx/wl1271_main.c          |  416 +-
 drivers/net/wireless/wl12xx/wl1271_ps.c            |   20 +-
 drivers/net/wireless/wl12xx/wl1271_ps.h            |    2 +-
 drivers/net/wireless/wl12xx/wl1271_rx.c            |   67 +-
 drivers/net/wireless/wl12xx/wl1271_scan.c          |   83 +-
 drivers/net/wireless/wl12xx/wl1271_scan.h          |    6 +-
 drivers/net/wireless/wl12xx/wl1271_sdio.c          |   98 +-
 drivers/net/wireless/wl12xx/wl1271_spi.c           |  151 +-
 drivers/net/wireless/wl12xx/wl1271_testmode.c      |   14 +-
 drivers/net/wireless/wl12xx/wl1271_tx.c            |  109 +-
 drivers/net/wireless/wl12xx/wl1271_tx.h            |   17 -
 drivers/net/wireless/wl12xx/wl12xx_platform_data.c |   28 +
 drivers/net/wireless/wl3501_cs.c                   |   11 -
 drivers/net/wireless/zd1211rw/zd_chip.c            |    5 +
 drivers/net/xen-netfront.c                         |   14 +-
 drivers/net/xilinx_emaclite.c                      |   15 +-
 drivers/net/yellowfin.c                            |    2 +-
 drivers/s390/cio/qdio.h                            |   29 +
 drivers/s390/cio/qdio_debug.c                      |   33 +-
 drivers/s390/cio/qdio_main.c                       |  138 +-
 drivers/s390/cio/qdio_setup.c                      |    1 +
 drivers/s390/cio/qdio_thinint.c                    |   66 +-
 drivers/s390/net/Kconfig                           |    2 +-
 drivers/s390/net/ctcm_mpc.c                        |    2 +-
 drivers/s390/net/qeth_core.h                       |   17 +
 drivers/s390/net/qeth_core_main.c                  |   26 +-
 drivers/s390/net/qeth_l2_main.c                    |  175 +-
 drivers/s390/net/qeth_l3_main.c                    |  218 +-
 drivers/s390/scsi/zfcp_qdio.c                      |    6 +-
 drivers/scsi/bnx2i/57xx_iscsi_constants.h          |    2 +
 drivers/scsi/bnx2i/bnx2i.h                         |    2 +
 drivers/scsi/bnx2i/bnx2i_hwi.c                     |    3 +-
 drivers/usb/atm/cxacru.c                           |   18 +-
 drivers/uwb/address.c                              |    5 +-
 drivers/uwb/wlp/wss-lc.c                           |    7 +-
 drivers/vhost/net.c                                |    2 +-
 drivers/vhost/vhost.c                              |   51 +-
 drivers/vhost/vhost.h                              |   18 +-
 firmware/Makefile                                  |   14 +-
 firmware/WHENCE                                    |   15 +-
 firmware/bnx2/bnx2-mips-06-5.0.0.j6.fw.ihex        | 5908 --------
 firmware/bnx2/bnx2-mips-06-6.0.15.fw.ihex          | 5815 ++++++++
 firmware/bnx2/bnx2-mips-09-5.0.0.j15.fw.ihex       | 6081 --------
 firmware/bnx2/bnx2-mips-09-6.0.17.fw.ihex          | 6488 ++++++++
 firmware/bnx2/bnx2-rv2p-06-5.0.0.j3.fw.ihex        |  424 -
 firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex          |  366 +
 firmware/bnx2/bnx2-rv2p-09-5.0.0.j10.fw.ihex       |  462 -
 firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex          |  392 +
 firmware/bnx2/bnx2-rv2p-09ax-5.0.0.j10.fw.ihex     |  499 -
 firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex        |  425 +
 firmware/bnx2x-e1-5.2.13.0.fw.ihex                 |10191 -------------
 firmware/bnx2x-e1h-5.2.13.0.fw.ihex                |12849 ----------------
 firmware/bnx2x/bnx2x-e1-6.0.34.0.fw.ihex           | 9476 ++++++++++++
 firmware/bnx2x/bnx2x-e1h-6.0.34.0.fw.ihex          |13178 +++++++++++++++++
 firmware/bnx2x/bnx2x-e2-6.0.34.0.fw.ihex           |15442 ++++++++++++++++++++
 include/linux/Kbuild                               |    1 +
 include/linux/atmdev.h                             |    2 +-
 include/linux/can/platform/mcp251x.h               |    4 -
 include/linux/dccp.h                               |    6 +-
 include/linux/etherdevice.h                        |   22 +-
 include/linux/ethtool.h                            |  190 +-
 include/linux/ieee80211.h                          |   71 +-
 include/linux/if.h                                 |    2 +
 include/linux/if_bonding.h                         |    3 +
 include/linux/if_ether.h                           |    2 -
 include/linux/if_macvlan.h                         |    9 +-
 include/linux/if_pppox.h                           |   52 +-
 include/linux/if_vlan.h                            |   31 +-
 include/linux/in.h                                 |   19 +
 include/linux/in6.h                                |    4 +
 include/linux/inetdevice.h                         |   21 +-
 include/linux/ip_vs.h                              |   15 +
 include/linux/ipv6.h                               |    4 +-
 include/linux/mlx4/cmd.h                           |    1 +
 include/linux/mlx4/device.h                        |    7 +
 include/linux/mmc/sdio_ids.h                       |    1 +
 include/linux/mroute.h                             |    1 +
 include/linux/netdevice.h                          |  120 +-
 include/linux/netfilter/nf_conntrack_common.h      |    6 +
 include/linux/netfilter/nf_conntrack_sip.h         |    1 +
 include/linux/netfilter/nfnetlink_conntrack.h      |    1 +
 include/linux/netfilter/x_tables.h                 |    5 +
 include/linux/netfilter/xt_TPROXY.h                |   13 +-
 include/linux/netfilter_arp/arp_tables.h           |   68 +-
 include/linux/netfilter_bridge/Kbuild              |    2 +
 include/linux/netfilter_ipv4/ip_tables.h           |  107 +-
 include/linux/netfilter_ipv6/ip6_tables.h          |  110 +-
 include/linux/netpoll.h                            |    9 +-
 include/linux/nl80211.h                            |  210 +-
 include/linux/pci_ids.h                            |    3 +
 include/linux/phonet.h                             |    5 +
 include/linux/phy.h                                |    4 +-
 include/linux/pkt_cls.h                            |    1 +
 include/linux/rds.h                                |  115 +-
 include/linux/rtnetlink.h                          |   30 +
 include/linux/skbuff.h                             |  117 +-
 include/linux/socket.h                             |    1 -
 include/linux/ssb/ssb_regs.h                       |    1 +
 include/linux/stmmac.h                             |    6 +-
 include/linux/tc_act/Kbuild                        |    1 +
 include/linux/tc_act/tc_csum.h                     |   32 +
 include/linux/tc_ematch/tc_em_meta.h               |    1 +
 include/linux/tcp.h                                |    1 +
 include/linux/tipc.h                               |   30 +-
 include/linux/wireless.h                           |    2 +-
 include/linux/{spi => }/wl12xx.h                   |   23 +-
 include/net/9p/client.h                            |    3 -
 include/net/addrconf.h                             |   65 +-
 include/net/arp.h                                  |    2 -
 include/net/bluetooth/bluetooth.h                  |    2 +
 include/net/bluetooth/hci.h                        |    2 +-
 include/net/bluetooth/hci_core.h                   |    2 +-
 include/net/bluetooth/l2cap.h                      |    2 +-
 include/net/bluetooth/rfcomm.h                     |    5 -
 include/net/cfg80211.h                             |  296 +-
 include/net/dst.h                                  |   33 +-
 include/net/dst_ops.h                              |   37 +-
 include/net/fib_rules.h                            |    3 +-
 include/net/flow.h                                 |    1 +
 include/net/genetlink.h                            |   18 +
 include/net/gre.h                                  |   18 +
 include/net/inet_connection_sock.h                 |    1 +
 include/net/inet_ecn.h                             |    2 +-
 include/net/inet_hashtables.h                      |    2 +-
 include/net/ip.h                                   |    6 +-
 include/net/ip_fib.h                               |   17 +-
 include/net/ip_vs.h                                |  180 +-
 include/net/ipip.h                                 |   12 +-
 include/net/ipv6.h                                 |   35 +-
 include/net/irda/irlan_common.h                    |    1 -
 include/net/irda/irlan_event.h                     |    2 +-
 include/net/irda/irlap.h                           |    2 +-
 include/net/irda/irlmp.h                           |    2 +-
 include/net/irda/irttp.h                           |    2 +-
 include/net/mac80211.h                             |  195 +-
 include/net/neighbour.h                            |   47 +-
 include/net/net_namespace.h                        |   17 +-
 include/net/netfilter/ipv6/nf_defrag_ipv6.h        |    6 +
 include/net/netfilter/nf_conntrack_expect.h        |   12 +-
 include/net/netfilter/nf_nat_protocol.h            |    3 -
 include/net/netfilter/nf_tproxy_core.h             |  192 +-
 include/net/netfilter/xt_log.h                     |   54 +
 include/net/netns/xfrm.h                           |    9 +-
 include/net/phonet/pep.h                           |   26 +
 include/net/phonet/phonet.h                        |    5 +
 include/net/phonet/pn_dev.h                        |    1 +
 include/net/raw.h                                  |    5 +-
 include/net/rtnetlink.h                            |    1 -
 include/net/sch_generic.h                          |    5 +-
 include/net/sctp/sctp.h                            |   60 +-
 include/net/sctp/sm.h                              |   10 +-
 include/net/sctp/structs.h                         |    2 +-
 include/net/sctp/tsnmap.h                          |    2 +-
 include/net/sock.h                                 |   14 +-
 include/net/tc_act/tc_csum.h                       |   15 +
 include/net/tcp.h                                  |   11 +-
 include/net/tipc/tipc.h                            |   71 -
 include/net/tipc/tipc_msg.h                        |   10 +-
 include/net/tipc/tipc_port.h                       |    2 -
 include/net/udp.h                                  |    3 +
 include/net/xfrm.h                                 |    3 -
 net/802/fc.c                                       |    2 +-
 net/802/fddi.c                                     |   12 +-
 net/802/hippi.c                                    |    2 +-
 net/802/tr.c                                       |    2 +-
 net/8021q/vlan.c                                   |   93 +-
 net/8021q/vlan.h                                   |   17 -
 net/8021q/vlan_core.c                              |  121 +-
 net/8021q/vlan_dev.c                               |   10 +-
 net/9p/client.c                                    |   55 +-
 net/9p/trans_fd.c                                  |    2 +-
 net/atm/clip.c                                     |    4 +-
 net/atm/common.c                                   |    2 +-
 net/atm/lec.c                                      |    1 -
 net/ax25/af_ax25.c                                 |    2 +-
 net/ax25/ax25_route.c                              |    4 +-
 net/bluetooth/af_bluetooth.c                       |  114 +-
 net/bluetooth/cmtp/core.c                          |    6 +-
 net/bluetooth/hci_core.c                           |    1 -
 net/bluetooth/hci_sysfs.c                          |   21 +-
 net/bluetooth/hidp/core.c                          |    8 +-
 net/bluetooth/l2cap.c                              |   60 +-
 net/bluetooth/lib.c                                |    4 +-
 net/bluetooth/rfcomm/core.c                        |   43 +-
 net/bluetooth/rfcomm/sock.c                        |  104 +-
 net/bluetooth/rfcomm/tty.c                         |    4 +-
 net/bridge/br_device.c                             |    8 +-
 net/bridge/br_if.c                                 |   29 +-
 net/bridge/br_input.c                              |    4 +-
 net/bridge/br_netfilter.c                          |  134 +-
 net/bridge/netfilter/ebt_vlan.c                    |   25 +-
 net/bridge/netfilter/ebtables.c                    |   15 +-
 net/caif/caif_dev.c                                |   24 +-
 net/caif/caif_socket.c                             |   27 +-
 net/caif/cfcnfg.c                                  |   49 +-
 net/caif/cfctrl.c                                  |   59 +-
 net/caif/cfdbgl.c                                  |    4 +-
 net/caif/cfdgml.c                                  |   11 +-
 net/caif/cffrml.c                                  |   14 +-
 net/caif/cfmuxl.c                                  |   14 +-
 net/caif/cfpkt_skbuff.c                            |   48 +-
 net/caif/cfrfml.c                                  |   12 +-
 net/caif/cfserl.c                                  |    4 +-
 net/caif/cfsrvl.c                                  |   17 +-
 net/caif/cfutill.c                                 |   12 +-
 net/caif/cfveil.c                                  |   11 +-
 net/caif/cfvidl.c                                  |    6 +-
 net/caif/chnl_net.c                                |   47 +-
 net/can/raw.c                                      |   37 +-
 net/core/datagram.c                                |    5 +-
 net/core/dev.c                                     |  598 +-
 net/core/dst.c                                     |   39 +-
 net/core/ethtool.c                                 |   91 +-
 net/core/fib_rules.c                               |   16 +-
 net/core/filter.c                                  |   10 +-
 net/core/flow.c                                    |   82 +-
 net/core/gen_estimator.c                           |    4 +-
 net/core/iovec.c                                   |    6 +-
 net/core/neighbour.c                               |  486 +-
 net/core/net-sysfs.c                               |   39 +-
 net/core/net-sysfs.h                               |    4 +
 net/core/netpoll.c                                 |    6 +-
 net/core/pktgen.c                                  |   12 +-
 net/core/rtnetlink.c                               |   39 +-
 net/core/skbuff.c                                  |  105 +-
 net/core/sock.c                                    |    4 +
 net/core/utils.c                                   |   15 +-
 net/dccp/ccid.h                                    |   52 +-
 net/dccp/ccids/Kconfig                             |   31 -
 net/dccp/ccids/ccid2.c                             |  289 +-
 net/dccp/ccids/ccid2.h                             |   35 +-
 net/dccp/ccids/ccid3.c                             |  256 +-
 net/dccp/ccids/ccid3.h                             |   51 +-
 net/dccp/ccids/lib/loss_interval.c                 |    2 +-
 net/dccp/ccids/lib/packet_history.c                |   39 -
 net/dccp/ccids/lib/packet_history.h                |   22 +-
 net/dccp/ccids/lib/tfrc.h                          |    1 +
 net/dccp/ccids/lib/tfrc_equation.c                 |   14 +
 net/dccp/dccp.h                                    |   46 +-
 net/dccp/feat.c                                    |   10 -
 net/dccp/feat.h                                    |    1 -
 net/dccp/input.c                                   |   20 +-
 net/dccp/ipv4.c                                    |   10 +-
 net/dccp/ipv6.c                                    |   10 +-
 net/dccp/minisocks.c                               |   30 +-
 net/dccp/options.c                                 |   31 +-
 net/dccp/output.c                                  |   20 +-
 net/dccp/proto.c                                   |   50 +-
 net/decnet/dn_neigh.c                              |   13 +-
 net/decnet/dn_nsp_out.c                            |    8 +-
 net/decnet/dn_route.c                              |    3 +-
 net/econet/af_econet.c                             |    6 +-
 net/ethernet/eth.c                                 |    8 +-
 net/ipv4/Kconfig                                   |    8 +-
 net/ipv4/Makefile                                  |    1 +
 net/ipv4/af_inet.c                                 |    8 +-
 net/ipv4/arp.c                                     |  245 +-
 net/ipv4/datagram.c                                |    2 +-
 net/ipv4/devinet.c                                 |   11 +-
 net/ipv4/fib_frontend.c                            |  192 +-
 net/ipv4/fib_hash.c                                |  291 +-
 net/ipv4/fib_lookup.h                              |   11 +-
 net/ipv4/fib_rules.c                               |   13 +-
 net/ipv4/fib_semantics.c                           |  297 +-
 net/ipv4/fib_trie.c                                |   84 +-
 net/ipv4/gre.c                                     |  151 +
 net/ipv4/icmp.c                                    |    4 +-
 net/ipv4/igmp.c                                    |   22 +-
 net/ipv4/inet_diag.c                               |    2 +-
 net/ipv4/inet_hashtables.c                         |   28 +-
 net/ipv4/ip_fragment.c                             |    6 +-
 net/ipv4/ip_gre.c                                  |  237 +-
 net/ipv4/ip_options.c                              |    3 +-
 net/ipv4/ip_output.c                               |   24 +-
 net/ipv4/ipip.c                                    |  212 +-
 net/ipv4/ipmr.c                                    |  428 +-
 net/ipv4/netfilter/Kconfig                         |    4 +-
 net/ipv4/netfilter/arp_tables.c                    |   64 +-
 net/ipv4/netfilter/arpt_mangle.c                   |    2 +-
 net/ipv4/netfilter/ip_tables.c                     |   84 +-
 net/ipv4/netfilter/ipt_CLUSTERIP.c                 |   31 +-
 net/ipv4/netfilter/ipt_LOG.c                       |  145 +-
 net/ipv4/netfilter/nf_nat_amanda.c                 |    9 +-
 net/ipv4/netfilter/nf_nat_core.c                   |   51 +-
 net/ipv4/netfilter/nf_nat_ftp.c                    |    9 +-
 net/ipv4/netfilter/nf_nat_h323.c                   |   53 +-
 net/ipv4/netfilter/nf_nat_helper.c                 |   76 +-
 net/ipv4/netfilter/nf_nat_irc.c                    |    9 +-
 net/ipv4/netfilter/nf_nat_rule.c                   |   17 +-
 net/ipv4/netfilter/nf_nat_sip.c                    |   27 +-
 net/ipv4/protocol.c                                |   31 +-
 net/ipv4/raw.c                                     |    2 +-
 net/ipv4/route.c                                   |  190 +-
 net/ipv4/tcp.c                                     |   11 +-
 net/ipv4/tcp_input.c                               |   55 +-
 net/ipv4/tcp_ipv4.c                                |   12 +-
 net/ipv4/tcp_minisocks.c                           |    2 +-
 net/ipv4/tcp_output.c                              |   31 +-
 net/ipv4/tcp_timer.c                               |   50 +-
 net/ipv4/tcp_westwood.c                            |    2 +-
 net/ipv4/tunnel4.c                                 |   19 +-
 net/ipv4/udp.c                                     |    4 +-
 net/ipv4/xfrm4_policy.c                            |    4 +-
 net/ipv4/xfrm4_tunnel.c                            |    4 +-
 net/ipv6/addrconf.c                                |    8 +-
 net/ipv6/addrlabel.c                               |    5 +-
 net/ipv6/af_inet6.c                                |    9 +-
 net/ipv6/datagram.c                                |   19 +
 net/ipv6/exthdrs_core.c                            |    4 +-
 net/ipv6/fib6_rules.c                              |    3 +-
 net/ipv6/ip6_fib.c                                 |    9 +-
 net/ipv6/ip6_output.c                              |    6 +-
 net/ipv6/ip6_tunnel.c                              |  157 +-
 net/ipv6/ip6mr.c                                   |    1 +
 net/ipv6/ipv6_sockglue.c                           |   23 +
 net/ipv6/ndisc.c                                   |   36 +-
 net/ipv6/netfilter/Kconfig                         |    4 +-
 net/ipv6/netfilter/Makefile                        |    5 +-
 net/ipv6/netfilter/ip6_tables.c                    |   98 +-
 net/ipv6/netfilter/ip6t_LOG.c                      |  157 +-
 net/ipv6/netfilter/nf_conntrack_l3proto_ipv6.c     |   78 +-
 net/ipv6/netfilter/nf_conntrack_reasm.c            |   16 +-
 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c          |  131 +
 net/ipv6/protocol.c                                |   32 +-
 net/ipv6/raw.c                                     |   12 +-
 net/ipv6/reassembly.c                              |    2 +-
 net/ipv6/route.c                                   |   50 +-
 net/ipv6/sit.c                                     |  165 +-
 net/ipv6/tcp_ipv6.c                                |   14 +-
 net/ipv6/tunnel6.c                                 |   17 +-
 net/ipv6/udp.c                                     |   16 +-
 net/ipv6/xfrm6_policy.c                            |   10 +-
 net/ipv6/xfrm6_tunnel.c                            |    8 +-
 net/irda/af_irda.c                                 |  380 +-
 net/irda/discovery.c                               |    2 +-
 net/irda/ircomm/ircomm_tty.c                       |    4 +-
 net/irda/iriap.c                                   |    3 +-
 net/irda/irlan/irlan_eth.c                         |   32 +-
 net/irda/irlan/irlan_event.c                       |    2 +-
 net/irda/irlmp.c                                   |    2 +-
 net/irda/irlmp_frame.c                             |    2 +-
 net/irda/irnet/irnet.h                             |    2 +
 net/irda/irnet/irnet_irda.c                        |   22 +-
 net/irda/irnet/irnet_ppp.c                         |   69 +-
 net/irda/irnet/irnet_ppp.h                         |    3 +-
 net/irda/parameters.c                              |    4 +-
 net/key/af_key.c                                   |    4 +-
 net/l2tp/l2tp_eth.c                                |    1 -
 net/l2tp/l2tp_ip.c                                 |    4 +-
 net/l2tp/l2tp_ppp.c                                |    2 +-
 net/mac80211/aes_ccm.c                             |    6 +-
 net/mac80211/aes_cmac.c                            |    6 +-
 net/mac80211/agg-rx.c                              |   30 +-
 net/mac80211/agg-tx.c                              |   14 +-
 net/mac80211/cfg.c                                 |  244 +-
 net/mac80211/chan.c                                |    2 +-
 net/mac80211/debugfs.c                             |    7 +-
 net/mac80211/debugfs_key.c                         |   55 +-
 net/mac80211/debugfs_netdev.c                      |    3 +
 net/mac80211/debugfs_sta.c                         |    5 +-
 net/mac80211/driver-ops.h                          |   14 +
 net/mac80211/driver-trace.h                        |   42 +-
 net/mac80211/ht.c                                  |   47 +-
 net/mac80211/ibss.c                                |   77 +-
 net/mac80211/ieee80211_i.h                         |  133 +-
 net/mac80211/iface.c                               |  460 +-
 net/mac80211/key.c                                 |  168 +-
 net/mac80211/key.h                                 |   13 +-
 net/mac80211/main.c                                |  194 +-
 net/mac80211/mesh_plink.c                          |   17 +-
 net/mac80211/mlme.c                                |  173 +-
 net/mac80211/offchannel.c                          |   26 +-
 net/mac80211/pm.c                                  |    2 +-
 net/mac80211/rate.c                                |   11 +-
 net/mac80211/rc80211_minstrel_ht.c                 |    7 +-
 net/mac80211/rc80211_pid_debugfs.c                 |    2 +-
 net/mac80211/rx.c                                  |  819 +-
 net/mac80211/scan.c                                |  179 +-
 net/mac80211/sta_info.c                            |   52 +-
 net/mac80211/sta_info.h                            |   24 +-
 net/mac80211/status.c                              |   14 +-
 net/mac80211/tx.c                                  |   73 +-
 net/mac80211/util.c                                |  102 +-
 net/mac80211/wep.c                                 |   10 +-
 net/mac80211/work.c                                |   39 +-
 net/mac80211/wpa.c                                 |   34 +-
 net/netfilter/core.c                               |    6 +-
 net/netfilter/ipvs/Kconfig                         |   20 +-
 net/netfilter/ipvs/Makefile                        |   10 +-
 net/netfilter/ipvs/ip_vs_app.c                     |    6 +-
 net/netfilter/ipvs/ip_vs_conn.c                    |  286 +-
 net/netfilter/ipvs/ip_vs_core.c                    |  819 +-
 net/netfilter/ipvs/ip_vs_ctl.c                     |  392 +-
 net/netfilter/ipvs/ip_vs_ftp.c                     |  194 +-
 net/netfilter/ipvs/ip_vs_nfct.c                    |  292 +
 net/netfilter/ipvs/ip_vs_pe.c                      |  147 +
 net/netfilter/ipvs/ip_vs_pe_sip.c                  |  169 +
 net/netfilter/ipvs/ip_vs_proto.c                   |    8 +-
 net/netfilter/ipvs/ip_vs_proto_ah_esp.c            |   99 +-
 net/netfilter/ipvs/ip_vs_proto_sctp.c              |   27 +-
 net/netfilter/ipvs/ip_vs_proto_tcp.c               |   52 +-
 net/netfilter/ipvs/ip_vs_proto_udp.c               |   51 +-
 net/netfilter/ipvs/ip_vs_sched.c                   |   47 +-
 net/netfilter/ipvs/ip_vs_sync.c                    |   46 +-
 net/netfilter/ipvs/ip_vs_xmit.c                    |  696 +-
 net/netfilter/nf_conntrack_core.c                  |  131 +-
 net/netfilter/nf_conntrack_expect.c                |   68 +-
 net/netfilter/nf_conntrack_netlink.c               |   77 +-
 net/netfilter/nf_conntrack_sip.c                   |   42 +
 net/netfilter/nf_tproxy_core.c                     |   35 -
 net/netfilter/x_tables.c                           |   12 +-
 net/netfilter/xt_TPROXY.c                          |  366 +-
 net/netfilter/xt_hashlimit.c                       |   15 +-
 net/netfilter/xt_ipvs.c                            |    1 -
 net/netfilter/xt_socket.c                          |  167 +-
 net/netlink/genetlink.c                            |   14 +-
 net/packet/af_packet.c                             |    4 +-
 net/phonet/Kconfig                                 |   12 +
 net/phonet/af_phonet.c                             |   17 +
 net/phonet/datagram.c                              |   13 +
 net/phonet/pep.c                                   |  388 +-
 net/phonet/pn_dev.c                                |    5 +-
 net/phonet/socket.c                                |  289 +-
 net/rds/af_rds.c                                   |   26 +-
 net/rds/bind.c                                     |   82 +-
 net/rds/cong.c                                     |    8 +-
 net/rds/connection.c                               |  159 +-
 net/rds/ib.c                                       |  200 +-
 net/rds/ib.h                                       |  104 +-
 net/rds/ib_cm.c                                    |  184 +-
 net/rds/ib_rdma.c                                  |  318 +-
 net/rds/ib_recv.c                                  |  549 +-
 net/rds/ib_send.c                                  |  682 +-
 net/rds/ib_stats.c                                 |    2 +
 net/rds/ib_sysctl.c                                |   19 +-
 net/rds/info.c                                     |   12 +-
 net/rds/iw.c                                       |    8 +-
 net/rds/iw.h                                       |   15 +-
 net/rds/iw_cm.c                                    |   14 +-
 net/rds/iw_rdma.c                                  |    8 +-
 net/rds/iw_recv.c                                  |   24 +-
 net/rds/iw_send.c                                  |   93 +-
 net/rds/iw_sysctl.c                                |    6 +-
 net/rds/loop.c                                     |   31 +-
 net/rds/message.c                                  |  142 +-
 net/rds/page.c                                     |    8 +-
 net/rds/rdma.c                                     |  339 +-
 net/rds/rdma.h                                     |   85 -
 net/rds/rdma_transport.c                           |   44 +-
 net/rds/rdma_transport.h                           |    4 -
 net/rds/rds.h                                      |  192 +-
 net/rds/recv.c                                     |   12 +-
 net/rds/send.c                                     |  548 +-
 net/rds/stats.c                                    |    6 +-
 net/rds/sysctl.c                                   |    4 +-
 net/rds/tcp.c                                      |   12 +-
 net/rds/tcp.h                                      |    9 +-
 net/rds/tcp_connect.c                              |    2 +-
 net/rds/tcp_listen.c                               |    6 +-
 net/rds/tcp_recv.c                                 |   17 +-
 net/rds/tcp_send.c                                 |   68 +-
 net/rds/threads.c                                  |   69 +-
 net/rds/transport.c                                |   19 +-
 net/rds/xlist.h                                    |   80 +
 net/rfkill/input.c                                 |    2 +-
 net/rose/rose_link.c                               |    4 +-
 net/sched/Kconfig                                  |   10 +
 net/sched/Makefile                                 |    1 +
 net/sched/act_csum.c                               |  595 +
 net/sched/act_ipt.c                                |   14 +-
 net/sched/cls_flow.c                               |   74 +-
 net/sched/em_meta.c                                |    6 +
 net/sched/sch_api.c                                |   44 +-
 net/sched/sch_atm.c                                |    5 +-
 net/sched/sch_cbq.c                                |   12 +-
 net/sched/sch_drr.c                                |    4 +-
 net/sched/sch_dsmark.c                             |    6 +-
 net/sched/sch_fifo.c                               |    3 +-
 net/sched/sch_generic.c                            |   24 +-
 net/sched/sch_hfsc.c                               |    8 +-
 net/sched/sch_htb.c                                |   12 +-
 net/sched/sch_mq.c                                 |    2 +-
 net/sched/sch_multiq.c                             |    3 +-
 net/sched/sch_netem.c                              |    3 +-
 net/sched/sch_prio.c                               |    2 +-
 net/sched/sch_sfq.c                                |   33 +-
 net/sched/sch_teql.c                               |    8 +-
 net/sctp/associola.c                               |    2 +
 net/sctp/chunk.c                                   |    2 +
 net/sctp/inqueue.c                                 |    2 +
 net/sctp/ipv6.c                                    |    4 +-
 net/sctp/objcnt.c                                  |    5 +-
 net/sctp/output.c                                  |    2 +
 net/sctp/outqueue.c                                |   34 +-
 net/sctp/probe.c                                   |    4 +-
 net/sctp/protocol.c                                |   19 +-
 net/sctp/sm_make_chunk.c                           |    2 +
 net/sctp/sm_sideeffect.c                           |   21 +-
 net/sctp/sm_statefuns.c                            |   20 +-
 net/sctp/sm_statetable.c                           |   42 +-
 net/sctp/socket.c                                  |   85 +-
 net/sctp/transport.c                               |    9 +-
 net/socket.c                                       |   37 +-
 net/sunrpc/auth_gss/auth_gss.c                     |    2 +-
 net/sunrpc/auth_gss/gss_generic_token.c            |   44 +-
 net/sunrpc/auth_gss/gss_krb5_seqnum.c              |    2 +-
 net/sunrpc/auth_gss/gss_mech_switch.c              |    2 +-
 net/sunrpc/sched.c                                 |    2 +-
 net/tipc/addr.c                                    |    7 +-
 net/tipc/bcast.c                                   |   51 +-
 net/tipc/bcast.h                                   |    3 -
 net/tipc/bearer.c                                  |   42 +-
 net/tipc/cluster.c                                 |   21 +-
 net/tipc/cluster.h                                 |    2 +-
 net/tipc/config.c                                  |  148 +-
 net/tipc/config.h                                  |    6 -
 net/tipc/core.c                                    |   38 +-
 net/tipc/core.h                                    |    9 +-
 net/tipc/dbg.c                                     |   17 +-
 net/tipc/dbg.h                                     |    3 -
 net/tipc/discover.c                                |   44 +-
 net/tipc/discover.h                                |    5 -
 net/tipc/eth_media.c                               |   48 +-
 net/tipc/link.c                                    |  188 +-
 net/tipc/link.h                                    |   24 +-
 net/tipc/msg.c                                     |    2 +-
 net/tipc/msg.h                                     |    6 +-
 net/tipc/name_distr.c                              |    2 +-
 net/tipc/name_table.c                              |   67 +-
 net/tipc/net.c                                     |   10 +-
 net/tipc/node.c                                    |   73 +-
 net/tipc/node.h                                    |    3 +-
 net/tipc/port.c                                    |  295 +-
 net/tipc/port.h                                    |    4 +-
 net/tipc/ref.c                                     |   17 -
 net/tipc/ref.h                                     |    1 -
 net/tipc/socket.c                                  |   83 +-
 net/tipc/subscr.c                                  |   77 +-
 net/tipc/subscr.h                                  |    2 +
 net/tipc/zone.c                                    |   11 -
 net/tipc/zone.h                                    |    1 -
 net/unix/af_unix.c                                 |   10 +-
 net/wireless/core.c                                |   66 +-
 net/wireless/core.h                                |   34 +-
 net/wireless/ibss.c                                |   21 +-
 net/wireless/mlme.c                                |  225 +-
 net/wireless/nl80211.c                             | 2189 ++--
 net/wireless/nl80211.h                             |   14 +-
 net/wireless/radiotap.c                            |   61 +-
 net/wireless/reg.c                                 |   22 +-
 net/wireless/scan.c                                |   12 +-
 net/wireless/sme.c                                 |   11 +-
 net/wireless/sysfs.c                               |   18 +
 net/wireless/util.c                                |   40 +-
 net/wireless/wext-compat.c                         |   42 +-
 net/wireless/wext-core.c                           |    2 +-
 net/wireless/wext-sme.c                            |    2 +
 net/x25/af_x25.c                                   |   34 +-
 net/xfrm/xfrm_policy.c                             |    7 +-
 1343 files changed, 157285 insertions(+), 84043 deletions(-)
 create mode 100644 Documentation/DocBook/80211.tmpl
 delete mode 100644 Documentation/DocBook/mac80211.tmpl
 create mode 100644 drivers/net/bna/Makefile
 create mode 100644 drivers/net/bna/bfa_cee.c
 create mode 100644 drivers/net/bna/bfa_cee.h
 create mode 100644 drivers/net/bna/bfa_defs.h
 create mode 100644 drivers/net/bna/bfa_defs_cna.h
 create mode 100644 drivers/net/bna/bfa_defs_mfg_comm.h
 create mode 100644 drivers/net/bna/bfa_defs_status.h
 create mode 100644 drivers/net/bna/bfa_ioc.c
 create mode 100644 drivers/net/bna/bfa_ioc.h
 create mode 100644 drivers/net/bna/bfa_ioc_ct.c
 create mode 100644 drivers/net/bna/bfa_sm.h
 create mode 100644 drivers/net/bna/bfa_wc.h
 create mode 100644 drivers/net/bna/bfi.h
 create mode 100644 drivers/net/bna/bfi_cna.h
 create mode 100644 drivers/net/bna/bfi_ctreg.h
 create mode 100644 drivers/net/bna/bfi_ll.h
 create mode 100644 drivers/net/bna/bna.h
 create mode 100644 drivers/net/bna/bna_ctrl.c
 create mode 100644 drivers/net/bna/bna_hw.h
 create mode 100644 drivers/net/bna/bna_txrx.c
 create mode 100644 drivers/net/bna/bna_types.h
 create mode 100644 drivers/net/bna/bnad.c
 create mode 100644 drivers/net/bna/bnad.h
 create mode 100644 drivers/net/bna/bnad_ethtool.c
 create mode 100644 drivers/net/bna/cna.h
 create mode 100644 drivers/net/bna/cna_fwimg.c
 create mode 100644 drivers/net/mlx4/en_selftest.c
 create mode 100644 drivers/net/pch_gbe/Makefile
 create mode 100644 drivers/net/pch_gbe/pch_gbe.h
 create mode 100644 drivers/net/pch_gbe/pch_gbe_api.c
 create mode 100644 drivers/net/pch_gbe/pch_gbe_api.h
 create mode 100644 drivers/net/pch_gbe/pch_gbe_ethtool.c
 create mode 100644 drivers/net/pch_gbe/pch_gbe_main.c
 create mode 100644 drivers/net/pch_gbe/pch_gbe_param.c
 create mode 100644 drivers/net/pch_gbe/pch_gbe_phy.c
 create mode 100644 drivers/net/pch_gbe/pch_gbe_phy.h
 create mode 100644 drivers/net/pptp.c
 delete mode 100644 drivers/net/sfc/falcon_gmac.c
 create mode 100644 drivers/net/sfc/filter.c
 create mode 100644 drivers/net/sfc/filter.h
 create mode 100644 drivers/net/sfc/txc43128_phy.c
 create mode 100644 drivers/net/usb/cx82310_eth.c
 delete mode 100644 drivers/net/wireless/ath/ath9k/ar9003_2p0_initvals.h
 create mode 100644 drivers/net/wireless/ath/ath9k/htc_drv_gpio.c
 create mode 100644 drivers/net/wireless/ath/carl9170/Kconfig
 create mode 100644 drivers/net/wireless/ath/carl9170/Makefile
 create mode 100644 drivers/net/wireless/ath/carl9170/carl9170.h
 create mode 100644 drivers/net/wireless/ath/carl9170/cmd.c
 create mode 100644 drivers/net/wireless/ath/carl9170/cmd.h
 create mode 100644 drivers/net/wireless/ath/carl9170/debug.c
 create mode 100644 drivers/net/wireless/ath/carl9170/debug.h
 create mode 100644 drivers/net/wireless/ath/carl9170/eeprom.h
 create mode 100644 drivers/net/wireless/ath/carl9170/fw.c
 create mode 100644 drivers/net/wireless/ath/carl9170/fwcmd.h
 create mode 100644 drivers/net/wireless/ath/carl9170/fwdesc.h
 create mode 100644 drivers/net/wireless/ath/carl9170/hw.h
 create mode 100644 drivers/net/wireless/ath/carl9170/led.c
 create mode 100644 drivers/net/wireless/ath/carl9170/mac.c
 create mode 100644 drivers/net/wireless/ath/carl9170/main.c
 create mode 100644 drivers/net/wireless/ath/carl9170/phy.c
 create mode 100644 drivers/net/wireless/ath/carl9170/phy.h
 create mode 100644 drivers/net/wireless/ath/carl9170/rx.c
 create mode 100644 drivers/net/wireless/ath/carl9170/tx.c
 create mode 100644 drivers/net/wireless/ath/carl9170/usb.c
 create mode 100644 drivers/net/wireless/ath/carl9170/version.h
 create mode 100644 drivers/net/wireless/ath/carl9170/wlan.h
 create mode 100644 drivers/net/wireless/ath/key.c
 create mode 100644 drivers/net/wireless/b43/radio_2055.c
 create mode 100644 drivers/net/wireless/b43/radio_2055.h
 create mode 100644 drivers/net/wireless/b43/radio_2056.c
 create mode 100644 drivers/net/wireless/b43/radio_2056.h
 rename drivers/net/wireless/iwlwifi/{iwl-calib.h => iwl-agn-calib.h} (95%)
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-eeprom.c
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-sta.c
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-tt.c
 create mode 100644 drivers/net/wireless/iwlwifi/iwl-agn-tt.h
 create mode 100644 drivers/net/wireless/wl1251/Kconfig
 create mode 100644 drivers/net/wireless/wl1251/Makefile
 rename drivers/net/wireless/{wl12xx/wl1251_acx.c => wl1251/acx.c} (99%)
 rename drivers/net/wireless/{wl12xx/wl1251_acx.h => wl1251/acx.h} (99%)
 rename drivers/net/wireless/{wl12xx/wl1251_boot.c => wl1251/boot.c} (98%)
 rename drivers/net/wireless/{wl12xx/wl1251_boot.h => wl1251/boot.h} (96%)
 rename drivers/net/wireless/{wl12xx/wl1251_cmd.c => wl1251/cmd.c} (98%)
 rename drivers/net/wireless/{wl12xx/wl1251_cmd.h => wl1251/cmd.h} (99%)
 rename drivers/net/wireless/{wl12xx/wl1251_debugfs.c => wl1251/debugfs.c} (99%)
 rename drivers/net/wireless/{wl12xx/wl1251_debugfs.h => wl1251/debugfs.h} (95%)
 rename drivers/net/wireless/{wl12xx/wl1251_event.c => wl1251/event.c} (81%)
 rename drivers/net/wireless/{wl12xx/wl1251_event.h => wl1251/event.h} (98%)
 rename drivers/net/wireless/{wl12xx/wl1251_init.c => wl1251/init.c} (98%)
 rename drivers/net/wireless/{wl12xx/wl1251_init.h => wl1251/init.h} (97%)
 rename drivers/net/wireless/{wl12xx/wl1251_io.c => wl1251/io.c} (98%)
 rename drivers/net/wireless/{wl12xx/wl1251_io.h => wl1251/io.h} (100%)
 rename drivers/net/wireless/{wl12xx/wl1251_main.c => wl1251/main.c} (96%)
 rename drivers/net/wireless/{wl12xx/wl1251_ps.c => wl1251/ps.c} (96%)
 rename drivers/net/wireless/{wl12xx/wl1251_ps.h => wl1251/ps.h} (93%)
 rename drivers/net/wireless/{wl12xx/wl1251_reg.h => wl1251/reg.h} (99%)
 rename drivers/net/wireless/{wl12xx/wl1251_rx.c => wl1251/rx.c} (96%)
 rename drivers/net/wireless/{wl12xx/wl1251_rx.h => wl1251/rx.h} (98%)
 rename drivers/net/wireless/{wl12xx/wl1251_sdio.c => wl1251/sdio.c} (98%)
 rename drivers/net/wireless/{wl12xx/wl1251_spi.c => wl1251/spi.c} (97%)
 rename drivers/net/wireless/{wl12xx/wl1251_spi.h => wl1251/spi.h} (94%)
 rename drivers/net/wireless/{wl12xx/wl1251_tx.c => wl1251/tx.c} (95%)
 rename drivers/net/wireless/{wl12xx/wl1251_tx.h => wl1251/tx.h} (98%)
 rename drivers/net/wireless/{wl12xx => wl1251}/wl1251.h (98%)
 create mode 100644 drivers/net/wireless/wl1251/wl12xx_80211.h
 create mode 100644 drivers/net/wireless/wl12xx/wl12xx_platform_data.c
 delete mode 100644 firmware/bnx2/bnx2-mips-06-5.0.0.j6.fw.ihex
 create mode 100644 firmware/bnx2/bnx2-mips-06-6.0.15.fw.ihex
 delete mode 100644 firmware/bnx2/bnx2-mips-09-5.0.0.j15.fw.ihex
 create mode 100644 firmware/bnx2/bnx2-mips-09-6.0.17.fw.ihex
 delete mode 100644 firmware/bnx2/bnx2-rv2p-06-5.0.0.j3.fw.ihex
 create mode 100644 firmware/bnx2/bnx2-rv2p-06-6.0.15.fw.ihex
 delete mode 100644 firmware/bnx2/bnx2-rv2p-09-5.0.0.j10.fw.ihex
 create mode 100644 firmware/bnx2/bnx2-rv2p-09-6.0.17.fw.ihex
 delete mode 100644 firmware/bnx2/bnx2-rv2p-09ax-5.0.0.j10.fw.ihex
 create mode 100644 firmware/bnx2/bnx2-rv2p-09ax-6.0.17.fw.ihex
 delete mode 100644 firmware/bnx2x-e1-5.2.13.0.fw.ihex
 delete mode 100644 firmware/bnx2x-e1h-5.2.13.0.fw.ihex
 create mode 100644 firmware/bnx2x/bnx2x-e1-6.0.34.0.fw.ihex
 create mode 100644 firmware/bnx2x/bnx2x-e1h-6.0.34.0.fw.ihex
 create mode 100644 firmware/bnx2x/bnx2x-e2-6.0.34.0.fw.ihex
 create mode 100644 include/linux/tc_act/tc_csum.h
 rename include/linux/{spi => }/wl12xx.h (68%)
 create mode 100644 include/net/gre.h
 create mode 100644 include/net/netfilter/ipv6/nf_defrag_ipv6.h
 create mode 100644 include/net/netfilter/xt_log.h
 create mode 100644 include/net/tc_act/tc_csum.h
 create mode 100644 net/ipv4/gre.c
 create mode 100644 net/ipv6/netfilter/nf_defrag_ipv6_hooks.c
 create mode 100644 net/netfilter/ipvs/ip_vs_nfct.c
 create mode 100644 net/netfilter/ipvs/ip_vs_pe.c
 create mode 100644 net/netfilter/ipvs/ip_vs_pe_sip.c
 delete mode 100644 net/rds/rdma.h
 create mode 100644 net/rds/xlist.h
 create mode 100644 net/sched/act_csum.c

^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: "Oleg A. Arkhangelsky" @ 2010-10-23 17:37 UTC (permalink / raw)
  To: Eric Dumazet, netdev
In-Reply-To: <1287851745.2658.364.camel@edumazet-laptop>

23.10.2010, 20:36, "Eric Dumazet" <eric.dumazet@gmail.com>:

> With a normal workload, on a dual cpu machine, a missing memory barrier
> can stay un-noticed for quite a long time. The race window is so small
> that probability for the bug might be 0.0000001 % or something like
> that :(

Eric, I'd like to remind you that I've faced the similar problem on simple x86.

See http://kerneltrap.org/mailarchive/linux-netdev/2010/3/9/6271568

Two main differences for our case:

1) There is no userspace workload (except for bgpd), no changes in interfaces
2) We are not using multiple routing tables

This panic was pretty rare in our case  (not more that 2 times per month).

Currently we're running fine with disabled CONFIG_IP_MULTIPLE_TABLES.

-- 
wbr, Oleg.

^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Eric Dumazet @ 2010-10-23 16:35 UTC (permalink / raw)
  To: Joe Buehler; +Cc: netdev
In-Reply-To: <4CC30055.5040509@cox.net>

Le samedi 23 octobre 2010 à 11:33 -0400, Joe Buehler a écrit :

> It is always possible that there is some issue with the Octeon memory
> barrier stuff, but I would think that the system would be much more
> unstable than it is -- we're really beating on a dual CPU LINUX instance
> that has Java and C++ apps running and also doing some network I/O.
> 
> My strategy at this point is logging events to memory and dumping the
> log to the console at the time of the panic.  I might be able to figure
> out the sequence of events causing the crash.
> 
> The load test that causes the panic is using several dozen TAP
> interfaces, ifconfig'd up/down every 10 seconds or so, with
> source-routes, DNAT and SNAT being set up and taken down also.

With a normal workload, on a dual cpu machine, a missing memory barrier
can stay un-noticed for quite a long time. The race window is so small
that probability for the bug might be 0.0000001 % or something like
that :(

You could try to run a test dual threaded program to reproduce the
problem in user land, faster...




^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Eric Dumazet @ 2010-10-23 16:07 UTC (permalink / raw)
  To: Joe Buehler; +Cc: netdev, David Daney
In-Reply-To: <4CC301F3.5010504@cox.net>

Le samedi 23 octobre 2010 à 11:40 -0400, Joe Buehler a écrit :
> Eric Dumazet wrote:
> >
> > David Daney added a nudge_writes(), actually doing a "syncw"
> > instruction, and this seems to be the smp_wmb() this platform should be
> > using in the first place, not a pure compiler barrier (barrier()) 
> >
> > So Joe, you might want to change the smp_wmb() call in
> > rcu_assign_pointer() by the nudge_writes() call, and see what happens...
> >
> >
> >   
> 
> I think Daney is Cavium's Octeon LINUX guru from the posts I've seen so
> he would definitely know the platform.  I'm not sure I quite understand
> what you are saying but it sounds as though you are saying that smp_wb
> is not doing a syncw and that sounds *totally* broken -- snycw is what
> the low-level Cavium SDK uses for memory barriers all over the place.
> 

Yes, I am saying exactly this : smp_wmb() is a barrier() only, at least
on the disassembly you provided to me. It might be fine (it is the same
on x86 for example)

fib_rules.old.s

.L234:
	.loc 1 338 0
	beq	$9,$0,.L235   if (last) {
.LBB911:					// last = prev->next
.LBB912:
	.loc 12 45 0
	ld	$2,0($9)   //next = prev->next
.LBB913:
.LBB914:
	.loc 12 22 0
	sd	$9,8($18)   // part of list_add_rcu  new->prev = prev;
	.loc 12 21 0
	sd	$2,0($18)   // new->next = next;
	.loc 12 23 0
<<!>>
	sd	$18,0($9)  //rcu_assign_pointer(prev->next, new); 
	.loc 12 24 0
	sd	$18,8($2)  // next->prev = new;
.L236:
.LBE914:
.LBE913:


No syncw here at least.




^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Joe Buehler @ 2010-10-23 15:40 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev, David Daney
In-Reply-To: <1287847465.2658.266.camel@edumazet-laptop>

Eric Dumazet wrote:
>
> David Daney added a nudge_writes(), actually doing a "syncw"
> instruction, and this seems to be the smp_wmb() this platform should be
> using in the first place, not a pure compiler barrier (barrier()) 
>
> So Joe, you might want to change the smp_wmb() call in
> rcu_assign_pointer() by the nudge_writes() call, and see what happens...
>
>
>   

I think Daney is Cavium's Octeon LINUX guru from the posts I've seen so
he would definitely know the platform.  I'm not sure I quite understand
what you are saying but it sounds as though you are saying that smp_wb
is not doing a syncw and that sounds *totally* broken -- snycw is what
the low-level Cavium SDK uses for memory barriers all over the place.

Joe Buehler


^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Joe Buehler @ 2010-10-23 15:33 UTC (permalink / raw)
  To: Eric Dumazet; +Cc: netdev
In-Reply-To: <1287846669.2658.247.camel@edumazet-laptop>

Eric Dumazet wrote:
>
> Did that... Hmm...
>
> I am wondering if smp_rcu_assign_pointer() (or more precisely smp_wmb())
> is correctly implemented on octeon platform.
>
> Try to add in fib_nl_newrule() right after the kzalloc bloc :
>
> 	rule = kzalloc(ops->rule_size, GFP_KERNEL);
> 	if (rule == NULL) {
> 		err = -ENOMEM;
> 		goto errout;
> 	}
> +       rule->list.next = LIST_POISON1;
> +       rule->list.prev = LIST_POISON2;
>
>
> So that we can actually see if the NULL dereference bug you hit becomes
> a "LIST_POISON1" dereference bug...
>
>
>   

Thanks -- I'll try it when I'm back in the office Tuesday.

It is always possible that there is some issue with the Octeon memory
barrier stuff, but I would think that the system would be much more
unstable than it is -- we're really beating on a dual CPU LINUX instance
that has Java and C++ apps running and also doing some network I/O.

My strategy at this point is logging events to memory and dumping the
log to the console at the time of the panic.  I might be able to figure
out the sequence of events causing the crash.

The load test that causes the panic is using several dozen TAP
interfaces, ifconfig'd up/down every 10 seconds or so, with
source-routes, DNAT and SNAT being set up and taken down also.

Joe Buehler

^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Eric Dumazet @ 2010-10-23 15:24 UTC (permalink / raw)
  To: Joe Buehler; +Cc: netdev, David Daney
In-Reply-To: <1287846669.2658.247.camel@edumazet-laptop>

Le samedi 23 octobre 2010 à 17:11 +0200, Eric Dumazet a écrit :
> Le samedi 23 octobre 2010 à 05:44 +0200, Eric Dumazet a écrit :
> > Le vendredi 22 octobre 2010 à 16:30 -0400, Joe Buehler a écrit :
> > > Eric Dumazet wrote:
> > > 
> > > > Could you provide a disassembly of function fib_rules_lookup ?
> > > 
> > > Try looking in http://68.100.141.95:3000/linux-crash/.  There should be
> > > the source file I am using (not current release if you recall), the .o,
> > > the disassembly, and a -S compile that makes deducing the line numbers a
> > > little easier.
> > > 
> > 
> > Hmm, I'll take a look sometime in the future, thanks
> 
> Did that... Hmm...
> 
> I am wondering if smp_rcu_assign_pointer() (or more precisely smp_wmb())
> is correctly implemented on octeon platform.
> 
> Try to add in fib_nl_newrule() right after the kzalloc bloc :
> 
> 	rule = kzalloc(ops->rule_size, GFP_KERNEL);
> 	if (rule == NULL) {
> 		err = -ENOMEM;
> 		goto errout;
> 	}
> +       rule->list.next = LIST_POISON1;
> +       rule->list.prev = LIST_POISON2;
> 
> 
> So that we can actually see if the NULL dereference bug you hit becomes
> a "LIST_POISON1" dereference bug...
> 
> 

Reading commit 500c2e1fdbcc2b273bd is interesting...

David Daney added a nudge_writes(), actually doing a "syncw"
instruction, and this seems to be the smp_wmb() this platform should be
using in the first place, not a pure compiler barrier (barrier()) 

So Joe, you might want to change the smp_wmb() call in
rcu_assign_pointer() by the nudge_writes() call, and see what happens...




^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Eric Dumazet @ 2010-10-23 15:11 UTC (permalink / raw)
  To: Joe Buehler; +Cc: netdev
In-Reply-To: <1287805487.2658.5.camel@edumazet-laptop>

Le samedi 23 octobre 2010 à 05:44 +0200, Eric Dumazet a écrit :
> Le vendredi 22 octobre 2010 à 16:30 -0400, Joe Buehler a écrit :
> > Eric Dumazet wrote:
> > 
> > > Could you provide a disassembly of function fib_rules_lookup ?
> > 
> > Try looking in http://68.100.141.95:3000/linux-crash/.  There should be
> > the source file I am using (not current release if you recall), the .o,
> > the disassembly, and a -S compile that makes deducing the line numbers a
> > little easier.
> > 
> 
> Hmm, I'll take a look sometime in the future, thanks

Did that... Hmm...

I am wondering if smp_rcu_assign_pointer() (or more precisely smp_wmb())
is correctly implemented on octeon platform.

Try to add in fib_nl_newrule() right after the kzalloc bloc :

	rule = kzalloc(ops->rule_size, GFP_KERNEL);
	if (rule == NULL) {
		err = -ENOMEM;
		goto errout;
	}
+       rule->list.next = LIST_POISON1;
+       rule->list.prev = LIST_POISON2;


So that we can actually see if the NULL dereference bug you hit becomes
a "LIST_POISON1" dereference bug...




^ permalink raw reply

* Re: [PATCH 5/9] tproxy: allow non-local binds of IPv6 sockets if IP_TRANSPARENT is enabled
From: Balazs Scheidler @ 2010-10-23 14:48 UTC (permalink / raw)
  To: YOSHIFUJI Hideaki
  Cc: KOVACS Krisztian, netdev, netfilter-devel, Patrick McHardy,
	David Miller
In-Reply-To: <1287696252.2707.24.camel@takos>

On Fri, 2010-10-22 at 06:24 +0900, YOSHIFUJI Hideaki wrote:
> Hello.
> 
> 2010-10-20, Balazs Scheidler wrote:
> > On Wed, 2010-10-20 at 21:45 +0900, YOSHIFUJI Hideaki wrote:
> > > (2010/10/20 20:21), KOVACS Krisztian wrote:
> > > > From: Balazs Scheidler<bazsi@balabit.hu>
> > > > 
> > > > Signed-off-by: Balazs Scheidler<bazsi@balabit.hu>
> > > > Signed-off-by: KOVACS Krisztian<hidden@balabit.hu>
> > > > ---
> > > >   net/ipv6/af_inet6.c |    2 +-
> > > >   1 files changed, 1 insertions(+), 1 deletions(-)
> > > > 
> > > > diff --git a/net/ipv6/af_inet6.c b/net/ipv6/af_inet6.c
> > > > index 6022098..9480572 100644
> > > > --- a/net/ipv6/af_inet6.c
> > > > +++ b/net/ipv6/af_inet6.c
> > > > @@ -343,7 +343,7 @@ int inet6_bind(struct socket *sock, struct sockaddr *uaddr, int addr_len)
> > > >   			 */
> > > >   			v4addr = LOOPBACK4_IPV6;
> > > >   			if (!(addr_type&  IPV6_ADDR_MULTICAST))	{
> > > > -				if (!ipv6_chk_addr(net,&addr->sin6_addr,
> > > > +				if (!inet->transparent&&  !ipv6_chk_addr(net,&addr->sin6_addr,
> > > >   						   dev, 0)) {
> > > >   					err = -EADDRNOTAVAIL;
> > > >   					goto out_unlock;
> > > > 
> > > > 
> > > 
> > > As I wrote before in other thread, this does not seem sufficient --
> > > well, it is sufficient to allow non-local bind, but before we're
> > > allowing this, we need add checks of source address in sending side.
> > 
> > Can you please elaborate or point us to the other thread? Is it some
> > kind of address-type check that we miss?
> 
> Please see my comment at:
> <http://kerneltrap.org/mailarchive/linux-netdev/2010/7/5/6280572>
> 
> This will result in allowing non-privileged users easily sending from
> non-local / unauthorized address, which is not good, and which should
> not be allowed from security aspects.

IP_TRANSPARENT requires root (more precisely CAP_NET_ADMIN privielges)
for IPV6.

However as I see right now this check was missed from the IPv6
implementation.

Is that enough as a safeguard? e.g. something like this:

diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index 0553867..f683d2c 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -343,6 +343,10 @@ static int do_ipv6_setsockopt(struct sock *sk, int level, int optname,
                break;
 
        case IPV6_TRANSPARENT:
+                if (!capable(CAP_NET_ADMIN)) {
+                        retv = -EPERM;
+                        break;
+                }
                if (optlen < sizeof(int))
                        goto e_inval;
                /* we don't have a separate transparent bit for IPV6 we use the one in the IPv4 socket */



-- 
Bazsi



^ permalink raw reply related

* tap0 device stopped working in 2.6.36 (ok in 2.6.35)
From: Jim @ 2010-10-23 12:55 UTC (permalink / raw)
  To: netdev; +Cc: nolan


My tap0 device stopped working with 2.6.36, seems it couldn't
send any packets anymore (receiving was still fine).

After some checking noticed that apparently link isn't ready:
 modprobe tun
 tunctl -b
 ifconfig tap0 192.168.20.1 up
Gives:
[   26.411932] ADDRCONF(NETDEV_UP): tap0: link is not ready

Bisected it all the way to this commit:

=================

# git bisect good
bee31369ce16fc3898ec9a54161248c9eddb06bc is the first bad commit
commit bee31369ce16fc3898ec9a54161248c9eddb06bc
Author: Nolan Leake <nolan@cumulusnetworks.com>
Date:   Tue Jul 27 13:53:43 2010 +0000

    tun: keep link (carrier) state up to date

    Currently, only ethtool can get accurate link state of a tap device.
    With this patch, IFF_RUNNING and IF_OPER_UP/DOWN are kept up to date as
    well.

    Signed-off-by: Nolan Leake <nolan@cumulusnetworks.com>
    Signed-off-by: David S. Miller <davem@davemloft.net>

:040000 040000 6f2464fe2c604079908afc677522bd396b40db9a
0d144f138fe93ffbe3da7ce31951855c60b51510 M      drivers

===================

Apply-ing this patch on top of vanilla 2.6.36 makes the tap device
working again for me (strangely in the function __tun_detach):
--- tun.c.ORIG  2010-10-21 18:08:12.404276662 +0200
+++ tun.c       2010-10-23 14:22:58.056366365 +0200
@@ -163,7 +163,7 @@
 {
        /* Detach from net device */
        netif_tx_lock_bh(tun->dev);
-       netif_carrier_off(tun->dev);
+//     netif_carrier_off(tun->dev);
        tun->tfile = NULL;
        tun->socket.file = NULL;
        netif_tx_unlock_bh(tun->dev);

====
Strangely that's in the function __tun_detach, it appears the functions
do the opposite of what is expected, when deleting the the tap0 device
it becomes ready!?

# tunctl -d tap0
Set 'tap0' nonpersistent
[ 1000.945790] ADDRCONF(NETDEV_CHANGE): tap0: link becomes ready

So to me it seems the netif_carrier_on / netif_carrier_off from the
commit should be reversed ??


_
Jim

^ permalink raw reply

* (unknown), 
From: WESTERN UNION OFFICE. @ 2010-10-23 11:09 UTC (permalink / raw)





We have been trying to reach you since the past few days,
as my associate has helped me to send your first payment
of $7,500 USD to you as instructed by Mr. David Cameron
the United Kingdom prime minister after the last G20
meeting that was held in United Kingdom, making you one
of the beneficiaries. Here is the information below.

MONEY TRANSFER CONTROL NUMBER: 0224873876
SENDER NAME: Jame w. Barry
AMOUNT: $7,500 USD

I told him to keep sending you $7,500 USD twice a week
until the FULL payment of ($820000.00 United State Dollars)
is completed.

A certificate will be made to change the Receiver Name as
stated by the British prime minister, send your Full Names
and address via Email to:
Mr Garry Moore
Email: mr.garrymoore009@gmail.com
The money will not reflect until the clearance certificate is
issue to you by the G20 committee.

Click your reply botton to contact Mr. Garry Moore for your
clearance certificate.


^ permalink raw reply

* Re: linux-next: manual merge of the bkl-llseek tree with the wireless tree
From: Arnd Bergmann @ 2010-10-23  9:27 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: John W. Linville, David Miller, netdev, linux-next, linux-kernel,
	Felix Fietkau, Linus, Christoph Hellwig
In-Reply-To: <20101023142312.533f6a42.sfr@canb.auug.org.au>

On Saturday 23 October 2010, Stephen Rothwell wrote:
> Hi John, Dave,
> 
> On Mon, 18 Oct 2010 17:35:43 +1100 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
> >
> > Today's linux-next merge of the bkl-llseek tree got a conflict in
> > drivers/net/wireless/ath/ath9k/debug.c between commit
> > 772d5515635fef5bc7a9d0efee785b58b0181ee5 ("ath9k: make rate control
> > debugfs stats per station") from the wireless tree and commit
> > 6038f373a3dc1f1c26496e60b6c40b164716f07e ("llseek: automatically
> > add .llseek fop") from the bkl-llseek tree.
> > 
> > The former moved some of the code modified by the latter to another file.
> > 
> > I added this merge fix patch:
> 
> This patch (reproduced below) will now be needed if the wireless or net
> tree is merged with Linus' tree.  I also think I have missed a similar
> needed fix in drivers/net/wireless/ath/ath5k/debug.c ...

There are also new drivers for speakup, intel_sst and yurex that introduce
additional file_operations in next, the patch below is what I had planned
to submit once everything is in. I also expect the occasional driver that
did not see linux-next, so I'll rerun my scripts after -rc1 to see what
we got.

As Christoph mentioned, we probably shouldn't make new drivers use
noop_llssek if possible nor add an explicit no_llseek and we can just
leave those with the implicit no_llseek.

Once open question is what pread/pwrite should do if there is no
llseek function. Right now they are both possible, but it would also
be logical to turn this into an implicit nonseekable_open, which forbids
pread/pwrite as well.

	Arnd

diff --git a/drivers/net/wireless/ath/ath5k/debug.c b/drivers/net/wireless/ath/ath5k/debug.c
index e157646..b203034 100644
--- a/drivers/net/wireless/ath/ath5k/debug.c
+++ b/drivers/net/wireless/ath/ath5k/debug.c
@@ -537,6 +537,7 @@ static ssize_t read_file_misc(struct file *file, char __user *user_buf,
 static const struct file_operations fops_misc = {
 	.read = read_file_misc,
 	.open = ath5k_debugfs_open,
+	.llseek = default_llseek,
 	.owner = THIS_MODULE,
 };
 
diff --git a/drivers/staging/intel_sst/intel_sst.c b/drivers/staging/intel_sst/intel_sst.c
index 24d3928..d9c4ae5 100644
--- a/drivers/staging/intel_sst/intel_sst.c
+++ b/drivers/staging/intel_sst/intel_sst.c
@@ -64,6 +64,7 @@ static const struct file_operations intel_sst_fops = {
 	.mmap = intel_sst_mmap,
 	.aio_read = intel_sst_aio_read,
 	.aio_write = intel_sst_aio_write,
+	.llseek = nonseekable_open,
 };
 static const struct file_operations intel_sst_fops_cntrl = {
 	.owner = THIS_MODULE,
diff --git a/drivers/staging/intel_sst/intel_sst_app_interface.c b/drivers/staging/intel_sst/intel_sst_app_interface.c
index 82768fa..931c4ba 100644
--- a/drivers/staging/intel_sst/intel_sst_app_interface.c
+++ b/drivers/staging/intel_sst/intel_sst_app_interface.c
@@ -121,6 +121,7 @@ int intel_sst_open(struct inode *i_node, struct file *file_ptr)
 		retval = -EUSERS;
 		mutex_unlock(&sst_drv_ctx->stream_lock);
 	}
+	nonseekable_open(i_node, file_ptr);
 	return retval;
 }
 
@@ -151,6 +152,7 @@ int intel_sst_open_cntrl(struct inode *i_node, struct file *file_ptr)
 		retval = -EACCES;
 
 	mutex_unlock(&sst_drv_ctx->stream_lock);
+	nonseekable_open(i_node, file_ptr);
 	return retval;
 }
 
diff --git a/drivers/staging/speakup/devsynth.c b/drivers/staging/speakup/devsynth.c
index 39dc586..5fc63fc 100644
--- a/drivers/staging/speakup/devsynth.c
+++ b/drivers/staging/speakup/devsynth.c
@@ -48,6 +48,8 @@ static int speakup_file_open(struct inode *ip, struct file *fp)
 		return -ENODEV;
 	if (xchg(&dev_opened, 1))
 		return -EBUSY;
+
+	nonseekable_open(ip, fp);
 	return 0;
 }
 
@@ -62,6 +64,7 @@ static const struct file_operations synth_fops = {
 	.write = speakup_file_write,
 	.open = speakup_file_open,
 	.release = speakup_file_release,
+	.llseek = no_llseek,
 };
 
 static struct miscdevice synth_device = {
diff --git a/drivers/staging/speakup/speakup_soft.c b/drivers/staging/speakup/speakup_soft.c
index 2c85773..05c8006 100644
--- a/drivers/staging/speakup/speakup_soft.c
+++ b/drivers/staging/speakup/speakup_soft.c
@@ -305,6 +305,7 @@ static struct file_operations softsynth_fops = {
 	.read = softsynth_read,
 	.write = softsynth_write,
 	.open = softsynth_open,
+	.llseek = default_llseek,
 	.release = softsynth_close,
 };
 
diff --git a/drivers/usb/misc/yurex.c b/drivers/usb/misc/yurex.c
index 719c618..ac5bfd6 100644
--- a/drivers/usb/misc/yurex.c
+++ b/drivers/usb/misc/yurex.c
@@ -536,6 +536,7 @@ static const struct file_operations yurex_fops = {
 	.open =		yurex_open,
 	.release =	yurex_release,
 	.fasync	=	yurex_fasync,
+	.llseek =	default_llseek,
 };
 
 

^ permalink raw reply related

* [PATCH] Fix PC-300 driver for 64-bit cleanliness and recent HDLC/tty_driver
From: Andrea Shepard @ 2010-10-23  9:10 UTC (permalink / raw)
  To: khc; +Cc: netdev, linux-kernel

This is an updated and fixed version of the Cyclades PC-300 WAN interface
driver which is presently marked 'Broken' in 2.6.36.  The version in the kernel
is based on Cyclades' version 3.23, and has many portability bugs as well as being
incompatible with recent tty_driver and HDLC changes (for values of recent < about
three years...).  Cyclades does not seem to be maintaining this driver any longer,
as the most recent version was released in 2005.

This patch merges in Cyclades' most recent version, 4.1.0, and updates it to work
with current kernel interfaces for tty_driver and HDLC, and fixes problems with
portability and 64-bit cleanliness.  It also contains some style fixups.

Due to some ioctls using non-portable interfaces (specifically, passing kernel
pointers and unsigned longs out to userland, which fails in the case of a 32-bit
process on a 64-bit kernel), some of the structures involved have been redesigned.
Thus, a new version of the userland package, pc300utils, is required.  This me
obtained at:

http://charon.persephoneslair.org/~andrea/software/pc300utils/

This patch is tested and known to work on a sparc64 kernel with a single-port
Cyclades PC-300 TE1 board using a full T1 circuit, with both 32-bit and 64-bit
userland utilities.

I am not subscribed to this list, so please CC me on replies.

-- 
Andrea Shepard

Signed-off-by: Andrea Shepard <andrea@persephoneslair.org>

diff -Npur -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/net/wan/Kconfig linux-2.6.36-pc300/drivers/net/wan/Kconfig
--- linux-2.6.36/drivers/net/wan/Kconfig	2010-10-20 13:30:22.000000000 -0700
+++ linux-2.6.36-pc300/drivers/net/wan/Kconfig	2010-10-23 01:48:42.000000000 -0700
@@ -205,10 +205,8 @@ config WANXL_BUILD_FIRMWARE
 
 config PC300
 	tristate "Cyclades-PC300 support (RS-232/V.35, X.21, T1/E1 boards)"
-	depends on HDLC && PCI && BROKEN
+	depends on HDLC && PCI
 	---help---
-	  This driver is broken because of struct tty_driver change.
-
 	  Driver for the Cyclades-PC300 synchronous communication boards.
 
 	  These boards provide synchronous serial interfaces to your
@@ -217,6 +215,10 @@ config PC300
 	  option later and read the file README.mlppp provided by PC300
 	  package.
 
+          Due to changes in certain ioctls necessary for portability, this
+          version requires a new version of pc300utils, which may be found
+          at: http://charon.persephoneslair.org/~andrea/software/pc300utils/
+
 	  To compile this as a module, choose M here: the module
 	  will be called pc300.
 
@@ -228,11 +230,8 @@ config PC300_MLPPP
 	help
 	  Multilink PPP over the PC300 synchronous communication boards.
 
-comment "Cyclades-PC300 MLPPP support is disabled."
-	depends on HDLC && PC300 && (PPP=n || !PPP_MULTILINK || PPP_SYNC_TTY=n || !HDLC_PPP)
-
 comment "Refer to the file README.mlppp, provided by PC300 package."
-	depends on HDLC && PC300 && (PPP=n || !PPP_MULTILINK || PPP_SYNC_TTY=n || !HDLC_PPP)
+	depends on HDLC && PC300 && (PPP=n || !PPP_MULTILINK || PPP_SYNC_TTY=n || !HDLC_PPP) && PC300_MLPPP
 
 config PC300TOO
 	tristate "Cyclades PC300 RSV/X21 alternative support"
diff -Npur -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/net/wan/hd64572.h linux-2.6.36-pc300/drivers/net/wan/hd64572.h
--- linux-2.6.36/drivers/net/wan/hd64572.h	2010-10-20 13:30:22.000000000 -0700
+++ linux-2.6.36-pc300/drivers/net/wan/hd64572.h	2010-10-22 22:43:56.000000000 -0700
@@ -4,7 +4,7 @@
  *
  * Author:	Ivan Passos <ivan@cyclades.com>
  *
- * Copyright:   (c) 2000-2001 Cyclades Corp.
+ * Copyright:   (c) 2000-2004 Cyclades Corp.
  *
  *	This program is free software; you can redistribute it and/or
  *	modify it under the terms of the GNU General Public License
@@ -172,11 +172,11 @@
 
 /* Block Descriptor Structure */
 typedef struct {
-	unsigned long	next;		/* pointer to next block descriptor */
-	unsigned long	ptbuf;		/* buffer pointer */
-	unsigned short	len;		/* data length */
-	unsigned char	status;		/* status */
-	unsigned char	filler[5];	/* alignment filler (16 bytes) */ 
+	u32	next;		/* pointer to next block descriptor */
+	u32	ptbuf;		/* buffer pointer */
+	u16	len;		/* data length */
+	u8	status;		/* status */
+	u8	filler[5];	/* alignment filler (16 bytes) */
 } pcsca_bd_t;
 
 /* Block Descriptor Structure */
diff -Npur -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/net/wan/pc300-falc-lh.h linux-2.6.36-pc300/drivers/net/wan/pc300-falc-lh.h
--- linux-2.6.36/drivers/net/wan/pc300-falc-lh.h	2010-10-20 13:30:22.000000000 -0700
+++ linux-2.6.36-pc300/drivers/net/wan/pc300-falc-lh.h	2010-10-20 20:34:58.000000000 -0700
@@ -3,7 +3,7 @@
  *
  * Author:	Ivan Passos <ivan@cyclades.com>
  *
- * Copyright:	(c) 2000-2001 Cyclades Corp.
+ * Copyright:	(c) 2000-2004 Cyclades Corp.
  *
  *	This program is free software; you can redistribute it and/or
  *	modify it under the terms of the GNU General Public License
diff -Npur -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/net/wan/pc300.h linux-2.6.36-pc300/drivers/net/wan/pc300.h
--- linux-2.6.36/drivers/net/wan/pc300.h	2010-10-20 13:30:22.000000000 -0700
+++ linux-2.6.36-pc300/drivers/net/wan/pc300.h	2010-10-22 23:04:36.000000000 -0700
@@ -3,7 +3,7 @@
  *
  * Author:	Ivan Passos <ivan@cyclades.com>
  *
- * Copyright:	(c) 1999-2002 Cyclades Corp.
+ * Copyright:	(c) 1999-2004 Cyclades Corp.
  *
  *	This program is free software; you can redistribute it and/or
  *	modify it under the terms of the GNU General Public License
@@ -105,9 +105,17 @@
 
 #define PC300_PROTO_MLPPP 1
 
+#define PC300_KERNEL	"2.6.x"	/* Kernel supported by this driver */
+
+#define	PC300_DEVNAME	"hdlc"	/* Dev. name base (for hdlc0, hdlc1, etc.) */
+#define PC300_MAXINDEX	100	/* Max dev. name index (the '0' in hdlc0) */
+
+#define	PC300_MAXCARDS	4	/* Max number of cards per system */
 #define	PC300_MAXCHAN	2	/* Number of channels per card */
 
+#define	PC300_PLX_WIN	0x80    /* PLX control window size (128b) */
 #define	PC300_RAMSIZE	0x40000 /* RAM window size (256Kb) */
+#define	PC300_SCASIZE	0x400   /* SCA window size (1Kb) */
 #define	PC300_FALCSIZE	0x400	/* FALC window size (1Kb) */
 
 #define PC300_OSC_CLOCK	24576000
@@ -143,13 +151,28 @@
  * Memory access functions/macros      *
  * (required to support Alpha systems) *
  ***************************************/
-#define cpc_writeb(port,val)	{writeb((u8)(val),(port)); mb();}
-#define cpc_writew(port,val)	{writew((ushort)(val),(port)); mb();}
-#define cpc_writel(port,val)	{writel((u32)(val),(port)); mb();}
-
-#define cpc_readb(port)		readb(port)
-#define cpc_readw(port)		readw(port)
-#define cpc_readl(port)		readl(port)
+#ifdef __KERNEL__
+#define cpc_writeb(port, val)	{writeb((u8)(val), \
+				(void __iomem *)(port)); mb(); }
+#define cpc_writew(port, val)	{writew((u16)(val), \
+				(void __iomem *)(port)); mb(); }
+#define cpc_writel(port, val)	{writel((u32)(val), \
+				(void __iomem *)(port)); mb(); }
+
+#define cpc_readb(port)		readb((void __iomem *)(port))
+#define cpc_readw(port)		readw((void __iomem *)(port))
+#define cpc_readl(port)		readl((void __iomem *)(port))
+
+#else /* __KERNEL__ */
+#define cpc_writeb(port, val)	(*(u8 *)(port) = (u8)(val))
+#define cpc_writew(port, val)	(*(u16 *)(port) = (u16)(val))
+#define cpc_writel(port, val)	(*(u32 *)(port) = (u32)(val))
+
+#define cpc_readb(port)		(*(u8 *)(port))
+#define cpc_readw(port)		(*(u16 *)(port))
+#define cpc_readl(port)		(*(u32 *)(port))
+
+#endif /* __KERNEL__ */
 
 /****** Data Structures *****************************************************/
 
@@ -267,11 +290,47 @@ typedef struct rsv_x21_status {
 	u8 dtr;
 } rsv_x21_status_t;
 
+struct pc300_net_stats {
+	u64 rx_packets;
+	u64 tx_packets;
+	u64 rx_bytes;
+	u64 tx_bytes;
+	u64 rx_errors;
+	u64 tx_errors;
+	u64 rx_dropped;
+	u64 tx_dropped;
+	u64 multicast;
+	u64 collisions;
+
+	/* detailed rx_errors: */
+	u64 rx_length_errors;
+	u64 rx_over_errors;
+	u64 rx_crc_errors;
+	u64 rx_frame_errors;
+	u64 rx_fifo_errors;
+	u64 rx_missed_errors;
+
+	/* detailed tx_errors */
+	u64 tx_aborted_errors;
+	u64 tx_carrier_errors;
+	u64 tx_fifo_errors;
+	u64 tx_heartbeat_errors;
+	u64 tx_window_errors;
+
+	u64 rx_compressed;
+	u64 tx_compressed;
+};
+
 typedef struct pc300stats {
 	int hw_type;
 	u32 line_on;
 	u32 line_off;
-	struct net_device_stats gen_stats;
+	/* Use this instead of net_device_stats, since passing
+	 * net_device_stats breaks 32-bit user processes on 64-bit kernels,
+	 * and rtnetlink is unreasonably complicated just to get
+	 * some statistics.
+	 */
+	struct pc300_net_stats net_stats;
 	falc_t te_stats;
 } pc300stats_t;
 
@@ -291,16 +350,31 @@ typedef struct pc300patterntst {
 	u16 num_errors;
 } pc300patterntst_t;
 
+#ifdef __KERNEL__
+
 typedef struct pc300dev {
 	struct pc300ch *chan;
 	u8 trace_on;
 	u32 line_on;		/* DCD(X.21, RSV) / sync(TE) change counters */
 	u32 line_off;
+#ifdef __KERNEL__
 	char name[16];
-	struct net_device *dev;
+	hdlc_device *hdlc;
+	struct net_device *netdev;
+
+	void *private;
+	struct sk_buff *tx_skb;
+
+	enum {
+	  CPC_DMA_FULL,
+	  CPC_DMA_ERROR,
+	  TRANSMISSION_ACTIVE,
+	  CHANNEL_CLOSED
+	} reason_stopped;
 #ifdef CONFIG_PC300_MLPPP
 	void *cpc_tty;	/* information to PC300 TTY driver */
 #endif
+#endif /* __KERNEL__ */
 }pc300dev_t;
 
 typedef struct pc300hw {
@@ -314,29 +388,60 @@ typedef struct pc300hw {
 	u16 cpld_reg2;		/* CPLD reg 2 (TE only) */
 	u16 gpioc_reg;		/* PLX GPIOC reg */
 	u16 intctl_reg;		/* PLX Int Ctrl/Status reg */
-	u32 iophys;		/* PLX registers I/O base */
+	phys_addr_t iophys;	/* PLX registers I/O base */
 	u32 iosize;		/* PLX registers I/O size */
-	u32 plxphys;		/* PLX registers MMIO base (physical) */
+	phys_addr_t plxphys;	/* PLX registers MMIO base (physical) */
 	void __iomem * plxbase;	/* PLX registers MMIO base (virtual) */
 	u32 plxsize;		/* PLX registers MMIO size */
-	u32 scaphys;		/* SCA registers MMIO base (physical) */
+	phys_addr_t scaphys;	/* SCA registers MMIO base (physical) */
 	void __iomem * scabase;	/* SCA registers MMIO base (virtual) */
 	u32 scasize;		/* SCA registers MMIO size */
-	u32 ramphys;		/* On-board RAM MMIO base (physical) */
+	phys_addr_t ramphys;	/* On-board RAM MMIO base (physical) */
 	void __iomem * rambase;	/* On-board RAM MMIO base (virtual) */
 	u32 alloc_ramsize;	/* RAM MMIO size allocated by the PCI bridge */
 	u32 ramsize;		/* On-board RAM MMIO size */
-	u32 falcphys;		/* FALC registers MMIO base (physical) */
+	phys_addr_t falcphys;	/* FALC registers MMIO base (physical) */
 	void __iomem * falcbase;/* FALC registers MMIO base (virtual) */
 	u32 falcsize;		/* FALC registers MMIO size */
 } pc300hw_t;
 
+#endif /* __KERNEL__ */
+
+/*
+ * It's problematic to pass the addresses out to userland, since their sizes
+ * are so platform-dependent.  The userland pc300cfg program might be 32-bit
+ * even on a 64-bit kernel, and in any case it can't see phys_addr_t.  Since
+ * this information isn't even very interesting and in any case is visible in
+ * from the printk() calls when we init, just leave it out when responding to
+ * SIOCGPC300CONF.
+ */
+
+struct pc300hw_user {
+	int type;               /* RSV, X21, etc. */
+	int bus;                /* Bus (PCI, PMC, etc.) */
+	int nchan;              /* number of channels */
+	int irq;                /* interrupt request level */
+	u32 clock;              /* Board clock */
+	u8 cpld_id;             /* CPLD ID (TE only) */
+	u16 cpld_reg1;          /* CPLD reg 1 (TE only) */
+	u16 cpld_reg2;          /* CPLD reg 2 (TE only) */
+	u16 gpioc_reg;          /* PLX GPIOC reg */
+	u16 intctl_reg;         /* PLX Int Ctrl/Status reg */
+	u32 iosize;             /* PLX registers I/O size */
+	u32 plxsize;            /* PLX registers MMIO size */
+	u32 scasize;            /* SCA registers MMIO size */
+	u32 alloc_ramsize;      /* RAM MMIO size allocated by the PCI bridge */
+	u32 ramsize;            /* On-board RAM MMIO size */
+	u32 falcsize;           /* FALC registers MMIO size */
+};
+
 typedef struct pc300chconf {
 	sync_serial_settings	phys_settings;	/* Clock type/rate (in bps),
 						   loopback mode */
 	raw_hdlc_proto		proto_settings;	/* Encoding, parity (CRC) */
 	u32 media;		/* HW media (RS232, V.35, etc.) */
 	u32 proto;		/* Protocol (PPP, X.25, etc.) */
+	u8 monitor;		/* Monitor mode (0 = off, !0 = on) */
 
 	/* TE-specific parameters */
 	u8 lcode;		/* Line Code (AMI, B8ZS, etc.) */
@@ -346,6 +451,8 @@ typedef struct pc300chconf {
 	u32 tslot_bitmap;	/* bit[i]=1  =>  timeslot _i_ is active */
 } pc300chconf_t;
 
+#ifdef __KERNEL__
+
 typedef struct pc300ch {
 	struct pc300 *card;
 	int channel;
@@ -365,8 +472,10 @@ typedef struct pc300 {
 	spinlock_t card_lock;
 } pc300_t;
 
+#endif /* __KERNEL__ */
+
 typedef struct pc300conf {
-	pc300hw_t hw;
+	struct pc300hw_user hw;
 	pc300chconf_t conf;
 } pc300conf_t;
 
@@ -430,7 +539,8 @@ enum pc300_loopback_cmds {
 #define PC300_TX_QUEUE_LEN	100
 #define	PC300_DEF_MTU		1600
 
-/* Function Prototypes */
-int cpc_open(struct net_device *dev);
+#ifdef __KERNEL__
+int cpc_open(struct net_device *);
+#endif /* __KERNEL__ */
 
 #endif	/* _PC300_H */
diff -Npur -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/net/wan/pc300_drv.c linux-2.6.36-pc300/drivers/net/wan/pc300_drv.c
--- linux-2.6.36/drivers/net/wan/pc300_drv.c	2010-10-20 13:30:22.000000000 -0700
+++ linux-2.6.36-pc300/drivers/net/wan/pc300_drv.c	2010-10-23 01:46:19.000000000 -0700
@@ -1,6 +1,6 @@
 #define	USE_PCI_CLOCK
 static char rcsid[] = 
-"Revision: 3.4.5 Date: 2002/03/07 ";
+"Revision: 4.1.0 Date: 2004/02/20 ";
 
 /*
  * pc300.c	Cyclades-PC300(tm) Driver.
@@ -8,7 +8,7 @@ static char rcsid[] = 
  * Author:	Ivan Passos <ivan@cyclades.com>
  * Maintainer:	PC300 Maintainer <pc300@cyclades.com>
  *
- * Copyright:	(c) 1999-2003 Cyclades Corp.
+ * Copyright:	(c) 1999-2004 Cyclades Corp.
  *
  *	This program is free software; you can redistribute it and/or
  *	modify it under the terms of the GNU General Public License
@@ -16,6 +16,13 @@ static char rcsid[] = 
  *	2 of the License, or (at your option) any later version.
  *	
  *	Using tabstop = 4.
+ *
+ * Cyclades version 4.1.0 merged in, with new portability fixes,
+ * and ported to recent kernels by Andrea Shepard <andrea@persephoneslair.org>
+ *
+ * Due to changes in certain ioctls necessary for portability, this
+ * version requires a new version of pc300utils, which may be found
+ * at: http://charon.persephoneslair.org/~andrea/software/pc300utils/
  * 
  * $Log: pc300_drv.c,v $
  * Revision 3.23  2002/03/20 13:58:40  henrique
@@ -236,21 +243,22 @@ static char rcsid[] = 
 
 #include "pc300.h"
 
-#define	CPC_LOCK(card,flags)		\
-		do {						\
-		spin_lock_irqsave(&card->card_lock, flags);	\
-		} while (0)
-
-#define CPC_UNLOCK(card,flags)			\
-		do {							\
-		spin_unlock_irqrestore(&card->card_lock, flags);	\
-		} while (0)
+#define	CPC_LOCK(card, flags) \
+		{ \
+		    spin_lock_irqsave(&((card)->card_lock), (flags)); \
+		}
+
+#define CPC_UNLOCK(card, flags) \
+		{ \
+		    spin_unlock_irqrestore(&((card)->card_lock), (flags)); \
+		}
 
 #undef	PC300_DEBUG_PCI
 #undef	PC300_DEBUG_INTR
 #undef	PC300_DEBUG_TX
 #undef	PC300_DEBUG_RX
 #undef	PC300_DEBUG_OTHER
+#undef  PC300_DEBUG_QUEUE
 
 static DEFINE_PCI_DEVICE_TABLE(cpc_pci_dev_id) = {
 	/* PC300/RSV or PC300/X21, 2 chan */
@@ -277,20 +285,88 @@ MODULE_DEVICE_TABLE(pci, cpc_pci_dev_id)
 #define	cpc_max(a,b)	(((a)>(b))?(a):(b))
 #endif
 
-/* prototypes */
-static void tx_dma_buf_pt_init(pc300_t *, int);
-static void tx_dma_buf_init(pc300_t *, int);
-static void rx_dma_buf_pt_init(pc300_t *, int);
+/* DMA routines */
+static int dma_buf_read(pc300_t *, int, struct sk_buff *);
+static int dma_buf_write(pc300_t *, int, u8 *, int);
+static int dma_get_rx_frame_size(pc300_t *, int);
+static void rx_dma_buf_check(pc300_t *, int);
 static void rx_dma_buf_init(pc300_t *, int);
+static void rx_dma_buf_pt_init(pc300_t *, int);
+static void rx_dma_start(pc300_t *, int);
+static void rx_dma_stop(pc300_t *, int);
+#ifdef PC300_DEBUG_OTHER
+static void tx1_dma_buf_check(pc300_t *, int);
+#endif
 static void tx_dma_buf_check(pc300_t *, int);
-static void rx_dma_buf_check(pc300_t *, int);
-static irqreturn_t cpc_intr(int, void *);
+static void tx_dma_buf_init(pc300_t *, int);
+static void tx_dma_buf_pt_init(pc300_t *, int);
+static void tx_dma_stop(pc300_t *, int);
+
+/* FALC routines */
+static void falc_check_status(pc300_t *, int, unsigned char);
+static void falc_close_all_timeslots(pc300_t *, int);
+static void falc_close_timeslot(pc300_t *, int, int);
+static void falc_disable_comm(pc300_t *, int);
+static void falc_e1_intr(pc300_t *, int);
+static void falc_e1_loop_detection(pc300_t *, int, u8);
+static void falc_enable_comm(pc300_t *, int);
+static void falc_generate_loop_down_code(pc300_t *, int);
+static void falc_generate_loop_up_code(pc300_t *, int);
+static void falc_init_e1(pc300_t *, int);
+static void falc_init_hdlc(pc300_t *, int);
+static void falc_init_t1(pc300_t *, int);
+static void falc_init_timeslot(pc300_t *, int);
+static void falc_intr_enable(pc300_t *, int);
+static void falc_intr(pc300_t *);
+static void falc_issue_cmd(pc300_t *, int, u8);
+static void falc_local_loop(pc300_t *, int, int);
+static void falc_open_all_timeslots(pc300_t *, int);
+static void falc_open_timeslot(pc300_t *, int, int);
+static u16 falc_pattern_test_error(pc300_t *, int);
+static void falc_pattern_test(pc300_t *, int, unsigned int);
+static void falc_payload_loop(pc300_t *, int, int);
+static void falc_remote_loop(pc300_t *, int, int);
+static void falc_t1_intr(pc300_t *, int);
+static void falc_t1_loop_detection(pc300_t *, int, u8);
+static void falc_update_stats(pc300_t *, int);
+static void te_config(pc300_t *, int);
+static void turn_off_xld(pc300_t *, int);
+static void turn_off_xlu(pc300_t *, int);
+
+static void sca_intr(pc300_t *);
+static void sca_tx_intr(pc300dev_t *);
+
+static int ch_config(pc300dev_t *);
 static int clock_rate_calc(u32, u32, int *);
 static u32 detect_ram(pc300_t *);
 static void plx_init(pc300_t *);
-static void cpc_trace(struct net_device *, struct sk_buff *, char);
+static int rx_config(pc300dev_t *);
+static inline void show_version(void);
+static int tx_config(pc300dev_t *);
+
 static int cpc_attach(struct net_device *, unsigned short, unsigned short);
-static int cpc_close(struct net_device *dev);
+static int cpc_change_mtu(struct net_device *, int);
+static void __exit cpc_cleanup_module(void);
+static void cpc_closech(pc300dev_t *);
+static int cpc_close(struct net_device *);
+static void cpc_falc_status(pc300_t *, int);
+static struct net_device_stats *cpc_get_stats(struct net_device *);
+static void cpc_hw_info_to_user(const pc300hw_t *, struct pc300hw_user *);
+static void cpc_init_card(pc300_t *);
+static int __devinit cpc_init_one(struct pci_dev *,
+				  const struct pci_device_id *);
+static int __init cpc_init(void);
+static irqreturn_t cpc_intr(int, void *);
+static int cpc_ioctl(struct net_device *, struct ifreq *, int);
+static void cpc_net_rx(struct net_device *);
+static void cpc_net_stats_to_user(const struct net_device_stats *,
+				  struct pc300_net_stats *);
+static int cpc_opench(pc300dev_t *);
+static int cpc_queue_xmit(struct sk_buff *, struct net_device *);
+static void __devexit cpc_remove_one(struct pci_dev *);
+static void cpc_sca_status(pc300_t *, int);
+static void cpc_trace(struct net_device *, struct sk_buff *, char);
+static void cpc_tx_timeout(struct net_device *);
 
 #ifdef CONFIG_PC300_MLPPP
 void cpc_tty_init(pc300dev_t * dev);
@@ -300,6 +376,18 @@ void cpc_tty_trigger_poll(pc300dev_t * p
 void cpc_tty_reset_var(void);
 #endif
 
+static const struct net_device_ops pc300_netdev_ops = {
+	.ndo_change_mtu = cpc_change_mtu,
+	.ndo_do_ioctl = cpc_ioctl,
+	.ndo_get_stats = cpc_get_stats,
+	.ndo_open = cpc_open,
+	.ndo_set_mac_address = NULL,
+	.ndo_start_xmit = cpc_queue_xmit,
+	.ndo_stop = cpc_close,
+	.ndo_tx_timeout = cpc_tx_timeout,
+	.ndo_validate_addr = NULL
+};
+
 /************************/
 /***   DMA Routines   ***/
 /************************/
@@ -370,23 +458,25 @@ static void tx_dma_buf_check(pc300_t * c
 	u16 first_bd = card->chan[ch].tx_first_bd;
 	u16 next_bd = card->chan[ch].tx_next_bd;
 
-	printk("#CH%d: f_bd = %d(0x%08zx), n_bd = %d(0x%08zx)\n", ch,
-	       first_bd, TX_BD_ADDR(ch, first_bd),
-	       next_bd, TX_BD_ADDR(ch, next_bd));
+	printk(KERN_DEBUG "#CH%d: f_bd = %d(0x%08x), n_bd = %d(0x%08x)\n", ch,
+	       first_bd, (u32)TX_BD_ADDR(ch, first_bd),
+	       next_bd, (u32)TX_BD_ADDR(ch, next_bd));
 	for (i = first_bd,
-	     ptdescr = (card->hw.rambase + TX_BD_ADDR(ch, first_bd));
+	     ptdescr = (pcsca_bd_t *)(card->hw.rambase +
+			TX_BD_ADDR(ch, first_bd));
 	     i != ((next_bd + 1) & (N_DMA_TX_BUF - 1));
 	     i = (i + 1) & (N_DMA_TX_BUF - 1), 
-		 ptdescr = (card->hw.rambase + TX_BD_ADDR(ch, i))) {
-		printk("\n CH%d TX%d: next=0x%x, ptbuf=0x%x, ST=0x%x, len=%d",
-		       ch, i, cpc_readl(&ptdescr->next),
-		       cpc_readl(&ptdescr->ptbuf),
+		ptdescr = (pcsca_bd_t *)
+		(card->hw.rambase + TX_BD_ADDR(ch, i))) {
+		printk("\n CH%d TX%d: next=0x%08x, ptbuf=0x%08x, ST=0x%2x, len=%d",
+		       ch, i, (u32) cpc_readl(&ptdescr->next),
+		       (u32) cpc_readl(&ptdescr->ptbuf),
 		       cpc_readb(&ptdescr->status), cpc_readw(&ptdescr->len));
 	}
 	printk("\n");
 }
 
-#ifdef	PC300_DEBUG_OTHER
+#ifdef PC300_DEBUG_OTHER
 /* Show all TX buffer descriptors */
 static void tx1_dma_buf_check(pc300_t * card, int ch)
 {
@@ -394,21 +484,37 @@ static void tx1_dma_buf_check(pc300_t * 
 	int i;
 	u16 first_bd = card->chan[ch].tx_first_bd;
 	u16 next_bd = card->chan[ch].tx_next_bd;
-	u32 scabase = card->hw.scabase;
+	uintptr_t scabase = card->hw.scabase;
 
 	printk ("\nnfree_tx_bd = %d\n", card->chan[ch].nfree_tx_bd);
 	printk("#CH%d: f_bd = %d(0x%08x), n_bd = %d(0x%08x)\n", ch,
-	       first_bd, TX_BD_ADDR(ch, first_bd),
-	       next_bd, TX_BD_ADDR(ch, next_bd));
+	       first_bd, (u32)TX_BD_ADDR(ch, first_bd),
+	       next_bd, (u32)TX_BD_ADDR(ch, next_bd));
 	printk("TX_CDA=0x%08x, TX_EDA=0x%08x\n",
-	       cpc_readl(scabase + DTX_REG(CDAL, ch)),
-	       cpc_readl(scabase + DTX_REG(EDAL, ch)));
+	       (u32)(cpc_readl(scabase + DTX_REG(CDAL, ch))),
+	       (u32)(cpc_readl(scabase + DTX_REG(EDAL, ch))));
+	printk(KERN_DEBUG "TX_CDA(BH/B/H/L) = %02x %02x %02x %02x\n",
+	       (u8) cpc_readb(scabase + DTX_REG(CDABH, ch)),
+	       (u8) cpc_readb(scabase + DTX_REG(CDAB, ch)),
+	       (u8) cpc_readb(scabase + DTX_REG(CDAH, ch)),
+	       (u8) cpc_readb(scabase + DTX_REG(CDAL, ch)));
+	printk(KERN_DEBUG "TX_EDA(BH/B/H/L) = %02x %02x %02x %02x\n",
+	       (u8) cpc_readb(scabase + DTX_REG(EDABH, ch)),
+	       (u8) cpc_readb(scabase + DTX_REG(EDAB, ch)),
+	       (u8) cpc_readb(scabase + DTX_REG(EDAH, ch)),
+	       (u8) cpc_readb(scabase + DTX_REG(EDAL, ch)));
 	for (i = 0; i < N_DMA_TX_BUF; i++) {
 		ptdescr = (card->hw.rambase + TX_BD_ADDR(ch, i));
 		printk("\n CH%d TX%d: next=0x%x, ptbuf=0x%x, ST=0x%x, len=%d",
-		       ch, i, cpc_readl(&ptdescr->next),
-		       cpc_readl(&ptdescr->ptbuf),
+		       ch, i, (u32) cpc_readl(&ptdescr->next),
+		       (u32) cpc_readl(&ptdescr->ptbuf),
 		       cpc_readb(&ptdescr->status), cpc_readw(&ptdescr->len));
+		printk("\n CH%d TX%d: next=0x%02x%02x%02x%02x (endianess-correct)",
+		       ch, i,
+		       cpc_readb((unsigned char *)(&(ptdescr->next))+0x3),
+		       cpc_readb((unsigned char *)(&(ptdescr->next))+0x2),
+		       cpc_readb((unsigned char *)(&(ptdescr->next))+0x1),
+		       cpc_readb((unsigned char *)(&(ptdescr->next))+0x0));
 	}
 	printk("\n");
 }
@@ -424,15 +530,16 @@ static void rx_dma_buf_check(pc300_t * c
 
 	ch_factor = ch * N_DMA_RX_BUF;
 	printk("#CH%d: f_bd = %d, l_bd = %d\n", ch, first_bd, last_bd);
-	for (i = 0, ptdescr = (card->hw.rambase +
+	for (i = 0, ptdescr = (pcsca_bd_t *) (card->hw.rambase +
 					      DMA_RX_BD_BASE + ch_factor * sizeof(pcsca_bd_t));
 	     i < N_DMA_RX_BUF; i++, ptdescr++) {
 		if (cpc_readb(&ptdescr->status) & DST_OSB)
-			printk ("\n CH%d RX%d: next=0x%x, ptbuf=0x%x, ST=0x%x, len=%d",
-				 ch, i, cpc_readl(&ptdescr->next),
-				 cpc_readl(&ptdescr->ptbuf),
-				 cpc_readb(&ptdescr->status),
-				 cpc_readw(&ptdescr->len));
+			printk(KERN_DEBUG
+			       "\n CH%d RX%d: next=0x%08x, ptbuf=0x%08x, ST=0x%2x, len=%d",
+				ch, i, (u32) cpc_readl(&ptdescr->next),
+				(u32) cpc_readl(&ptdescr->ptbuf),
+				cpc_readb(&ptdescr->status),
+				cpc_readw(&ptdescr->len));
 	}
 	printk("\n");
 }
@@ -444,7 +551,7 @@ static int dma_get_rx_frame_size(pc300_t
 	int rcvd = 0;
 	volatile u8 status;
 
-	ptdescr = (card->hw.rambase + RX_BD_ADDR(ch, first_bd));
+	ptdescr = (pcsca_bd_t *)(card->hw.rambase + RX_BD_ADDR(ch, first_bd));
 	while ((status = cpc_readb(&ptdescr->status)) & DST_OSB) {
 		rcvd += cpc_readw(&ptdescr->len);
 		first_bd = (first_bd + 1) & (N_DMA_RX_BUF - 1);
@@ -453,7 +560,8 @@ static int dma_get_rx_frame_size(pc300_t
 			* (dma_buf_read will clean the buffer descriptors in this case). */
 			return (rcvd);
 		}
-		ptdescr = (card->hw.rambase + cpc_readl(&ptdescr->next));
+		ptdescr = (pcsca_bd_t *)(card->hw.rambase +
+					 cpc_readl(&ptdescr->next));
 	}
 	return (-1);
 }
@@ -474,7 +582,7 @@ static int dma_buf_write(pc300_t *card, 
 	}
 
 	for (i = 0; i < nbuf; i++) {
-		ptdescr = (card->hw.rambase +
+		ptdescr = (pcsca_bd_t *) (card->hw.rambase +
 					  TX_BD_ADDR(ch, card->chan[ch].tx_next_bd));
 		nchar = cpc_min(BD_DEF_LEN, tosend);
 		if (cpc_readb(&ptdescr->status) & DST_OSB) {
@@ -511,7 +619,7 @@ static int dma_buf_read(pc300_t * card, 
 	int rcvd = 0;
 	volatile u8 status;
 
-	ptdescr = (card->hw.rambase +
+	ptdescr = (pcsca_bd_t *)(card->hw.rambase +
 				  RX_BD_ADDR(ch, chan->rx_first_bd));
 	while ((status = cpc_readb(&ptdescr->status)) & DST_OSB) {
 		nchar = cpc_readw(&ptdescr->len);
@@ -527,7 +635,7 @@ static int dma_buf_read(pc300_t * card, 
 				chan->rx_first_bd = (chan->rx_first_bd+1) & (N_DMA_RX_BUF-1);
 				if (status & DST_EOM)
 					break;
-				ptdescr = (card->hw.rambase +
+				ptdescr = (pcsca_bd_t *) (card->hw.rambase +
 							  cpc_readl(&ptdescr->next));
 				status = cpc_readb(&ptdescr->status);
 			}
@@ -536,7 +644,8 @@ static int dma_buf_read(pc300_t * card, 
 		if (nchar != 0) {
 			if (skb) {
 				memcpy_fromio(skb_put(skb, nchar),
-				 (card->hw.rambase+cpc_readl(&ptdescr->ptbuf)),nchar);
+					(void *)(card->hw.rambase +
+					cpc_readl(&ptdescr->ptbuf)), nchar);
 			}
 			rcvd += nchar;
 		}
@@ -547,7 +656,8 @@ static int dma_buf_read(pc300_t * card, 
 		if (status & DST_EOM)
 			break;
 
-		ptdescr = (card->hw.rambase + cpc_readl(&ptdescr->next));
+		ptdescr = (pcsca_bd_t *)(card->hw.rambase +
+					 cpc_readl(&ptdescr->next));
 	}
 
 	if (rcvd != 0) {
@@ -562,7 +672,7 @@ static int dma_buf_read(pc300_t * card, 
 
 static void tx_dma_stop(pc300_t * card, int ch)
 {
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 	u8 drr_ena_bit = 1 << (5 + 2 * ch);
 	u8 drr_rst_bit = 1 << (1 + 2 * ch);
 
@@ -573,7 +683,7 @@ static void tx_dma_stop(pc300_t * card, 
 
 static void rx_dma_stop(pc300_t * card, int ch)
 {
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 	u8 drr_ena_bit = 1 << (4 + 2 * ch);
 	u8 drr_rst_bit = 1 << (2 * ch);
 
@@ -584,7 +694,7 @@ static void rx_dma_stop(pc300_t * card, 
 
 static void rx_dma_start(pc300_t * card, int ch)
 {
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	
 	/* Start DMA */
@@ -600,7 +710,7 @@ static void rx_dma_start(pc300_t * card,
 	cpc_writew(scabase + DRX_REG(BFLL, ch), BD_DEF_LEN);
 	cpc_writeb(scabase + DSR_RX(ch), DSR_DE);
 	if (!(cpc_readb(scabase + DSR_RX(ch)) & DSR_DE)) {
-	cpc_writeb(scabase + DSR_RX(ch), DSR_DE);
+		cpc_writeb(scabase + DSR_RX(ch), DSR_DE);
 	}
 }
 
@@ -609,7 +719,7 @@ static void rx_dma_start(pc300_t * card,
 /*************************/
 static void falc_issue_cmd(pc300_t *card, int ch, u8 cmd)
 {
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	unsigned long i = 0;
 
 	while (cpc_readb(falcbase + F_REG(SIS, ch)) & SIS_CEC) {
@@ -627,7 +737,7 @@ static void falc_intr_enable(pc300_t * c
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	/* Interrupt pins are open-drain */
 	cpc_writeb(falcbase + F_REG(IPC, ch),
@@ -674,7 +784,7 @@ static void falc_intr_enable(pc300_t * c
 
 static void falc_open_timeslot(pc300_t * card, int ch, int timeslot)
 {
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u8 tshf = card->chan[ch].falc.offset;
 
 	cpc_writeb(falcbase + F_REG((ICB1 + (timeslot - tshf) / 8), ch),
@@ -690,7 +800,7 @@ static void falc_open_timeslot(pc300_t *
 
 static void falc_close_timeslot(pc300_t * card, int ch, int timeslot)
 {
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u8 tshf = card->chan[ch].falc.offset;
 
 	cpc_writeb(falcbase + F_REG((ICB1 + (timeslot - tshf) / 8), ch),
@@ -708,7 +818,7 @@ static void falc_close_all_timeslots(pc3
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	cpc_writeb(falcbase + F_REG(ICB1, ch), 0xff);
 	cpc_writeb(falcbase + F_REG(TTR1, ch), 0);
@@ -730,7 +840,7 @@ static void falc_open_all_timeslots(pc30
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	cpc_writeb(falcbase + F_REG(ICB1, ch), 0);
 	if (conf->fr_mode == PC300_FR_UNFRAMED) {
@@ -811,7 +921,7 @@ static void falc_init_t1(pc300_t * card,
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u8 dja = (ch ? (LIM2_DJA2 | LIM2_DJA1) : 0);
 
 	/* Switch to T1 mode (PCM 24) */
@@ -980,7 +1090,7 @@ static void falc_init_e1(pc300_t * card,
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u8 dja = (ch ? (LIM2_DJA2 | LIM2_DJA1) : 0);
 
 	/* Switch to E1 mode (PCM 30) */
@@ -1157,7 +1267,7 @@ static void falc_init_e1(pc300_t * card,
 
 static void falc_init_hdlc(pc300_t * card, int ch)
 {
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 
@@ -1186,7 +1296,7 @@ static void te_config(pc300_t * card, in
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u8 dummy;
 	unsigned long flags;
 
@@ -1246,7 +1356,7 @@ static void falc_check_status(pc300_t * 
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	/* Verify LOS */
 	if (frs0 & FRS0_LOS) {
@@ -1402,7 +1512,7 @@ static void falc_update_stats(pc300_t * 
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u16 counter;
 
 	counter = cpc_readb(falcbase + F_REG(FECL, ch));
@@ -1454,7 +1564,7 @@ static void falc_remote_loop(pc300_t * c
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (loop_on) {
 		// EVENT_FALC_ABNORMAL
@@ -1498,7 +1608,7 @@ static void falc_local_loop(pc300_t * ca
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (loop_on) {
 		cpc_writeb(falcbase + F_REG(LIM0, ch),
@@ -1526,7 +1636,7 @@ static void falc_payload_loop(pc300_t * 
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (loop_on) {
 		// EVENT_FALC_ABNORMAL
@@ -1579,7 +1689,7 @@ static void turn_off_xlu(pc300_t * card,
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (conf->media == IF_IFACE_T1) {
 		cpc_writeb(falcbase + F_REG(FMR5, ch),
@@ -1600,7 +1710,7 @@ static void turn_off_xld(pc300_t * card,
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (conf->media == IF_IFACE_T1) {
 		cpc_writeb(falcbase + F_REG(FMR5, ch),
@@ -1623,7 +1733,7 @@ static void falc_generate_loop_up_code(p
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (conf->media == IF_IFACE_T1) {
 		cpc_writeb(falcbase + F_REG(FMR5, ch),
@@ -1656,7 +1766,7 @@ static void falc_generate_loop_down_code
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (conf->media == IF_IFACE_T1) {
 		cpc_writeb(falcbase + F_REG(FMR5, ch),
@@ -1686,7 +1796,7 @@ static void falc_pattern_test(pc300_t * 
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (activate) {
 		pfalc->prbs = 1;
@@ -1773,12 +1883,17 @@ static void cpc_tx_timeout(struct net_de
 	pc300dev_t *d = (pc300dev_t *) dev_to_hdlc(dev)->priv;
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300_t *card = (pc300_t *) chan->card;
+	struct net_device_stats *stats = &(dev->stats);
 	int ch = chan->channel;
 	unsigned long flags;
 	u8 ilar;
 
-	dev->stats.tx_errors++;
-	dev->stats.tx_aborted_errors++;
+#ifdef PC300_DEBUG_OTHER
+	printk(KERN_DEBUG "cpc_tx_timeout()\n");
+	cpc_sca_status(card, ch);
+#endif
+	stats->tx_errors++;
+	stats->tx_aborted_errors++;
 	CPC_LOCK(card, flags);
 	if ((ilar = cpc_readb(card->hw.scabase + ILAR)) != 0) {
 		printk("%s: ILAR=0x%x\n", dev->name, ilar);
@@ -1792,6 +1907,10 @@ static void cpc_tx_timeout(struct net_de
 	}
 	dev->trans_start = jiffies; /* prevent tx timeout */
 	CPC_UNLOCK(card, flags);
+#ifdef PC300_DEBUG_QUEUE
+	printk(KERN_DEBUG "%s: waking queue, finished cpc_tx_timeout()\n",
+	       dev->name);
+#endif
 	netif_wake_queue(dev);
 }
 
@@ -1800,22 +1919,72 @@ static int cpc_queue_xmit(struct sk_buff
 	pc300dev_t *d = (pc300dev_t *) dev_to_hdlc(dev)->priv;
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300_t *card = (pc300_t *) chan->card;
+	struct net_device_stats *stats = &(dev->stats);
 	int ch = chan->channel;
 	unsigned long flags;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 #ifdef PC300_DEBUG_TX
 	int i;
 #endif
 
-	if (!netif_carrier_ok(dev)) {
+#ifdef PC300_DEBUG_TX
+	printk(KERN_DEBUG "%s: cpc_queue_xmit called wih %d bytes\n",
+	       dev->name, skb->len);
+#endif
+	if (cpc_readb(scabase + M_REG(ST3, ch)) & ST3_DCD) {
+		if (netif_carrier_ok(dev)) {
+			printk(KERN_INFO "%s: DCD is OFF. Going administrative down.\n",
+			       dev->name);
+#ifdef CONFIG_PC300_MLPPP
+		if (chan->conf.proto != PC300_PROTO_MLPPP)
+			netif_carrier_off(dev);
+#else
+		netif_carrier_off(dev);
+#endif
+		card->chan[ch].d.line_off++;
+		}
+	} else {	/* DCD = 1 */
+		if (!netif_carrier_ok(dev)) {
+			printk(KERN_INFO "%s: DCD is ON. Going administrative up.\n",
+			       dev->name);
+#ifdef CONFIG_PC300_MLPPP
+			if (chan->conf.proto != PC300_PROTO_MLPPP) {
+				/* verify if driver is not TTY */
+				netif_carrier_on(dev);
+			}
+#else
+			netif_carrier_on(dev);
+#endif
+			card->chan[ch].d.line_on++;
+		}
+	}
+
+	if (chan->conf.monitor) {
+		/* In monitor mode no Tx is done: ignore packet */
+		dev_kfree_skb(skb);
+#ifdef PC300_DEBUG_OTHER
+		printk(KERN_DEBUG "%s: dropping TX packet because in monitor mode\n",
+		       dev->name);
+#endif
+		return 0;
+	} else if (!netif_carrier_ok(dev)) {
 		/* DCD must be OFF: drop packet */
 		dev_kfree_skb(skb);
-		dev->stats.tx_errors++;
-		dev->stats.tx_carrier_errors++;
+		stats->tx_errors++;
+		stats->tx_carrier_errors++;
+#ifdef PC300_DEBUG_OTHER
+		printk(KERN_DEBUG "%s: TX carrier error; dropping silently\n",
+		       dev->name);
+#endif
 		return 0;
 	} else if (cpc_readb(card->hw.scabase + M_REG(ST3, ch)) & ST3_DCD) {
 		printk("%s: DCD is OFF. Going administrative down.\n", dev->name);
-		dev->stats.tx_errors++;
-		dev->stats.tx_carrier_errors++;
+		stats->tx_errors++;
+		stats->tx_carrier_errors++;
+#ifdef PC300_DEBUG_OTHER
+		printk(KERN_DEBUG "%s: TX carrier error; dropping silently\n",
+		       dev->name);
+#endif
 		dev_kfree_skb(skb);
 		netif_carrier_off(dev);
 		CPC_LOCK(card, flags);
@@ -1826,19 +1995,33 @@ static int cpc_queue_xmit(struct sk_buff
 				   			~(CPLD_REG2_FALC_LED1 << (2 * ch)));
 		}
 		CPC_UNLOCK(card, flags);
+#ifdef PC300_DEBUG_QUEUE
+		printk(KERN_DEBUG "%s: waking queue after TX carrier error\n",
+		       dev->name);
+#endif
 		netif_wake_queue(dev);
 		return 0;
 	}
 
+	CPC_LOCK(card, flags);
 	/* Write buffer to DMA buffers */
-	if (dma_buf_write(card, ch, (u8 *)skb->data, skb->len) != 0) {
-//		printk("%s: write error. Dropping TX packet.\n", dev->name);
+	if (dma_buf_write(card, ch, (u8 *) skb->data, skb->len) != 0) {
+		CPC_UNLOCK(card, flags);
+		printk(KERN_ERR "%s: write error. Dropping TX packet.\n",
+		       dev->name);
+#ifdef PC300_DEBUG_QUEUE
+		printk(KERN_DEBUG "%s: stopping queue due to DMA error\n",
+		       dev->name);
+#endif
+		d->reason_stopped = CPC_DMA_ERROR;
 		netif_stop_queue(dev);
+
 		dev_kfree_skb(skb);
-		dev->stats.tx_errors++;
-		dev->stats.tx_dropped++;
+		stats->tx_errors++;
+		stats->tx_dropped++;
 		return 0;
-	}
+	} else
+		CPC_UNLOCK(card, flags);
 #ifdef PC300_DEBUG_TX
 	printk("%s T:", dev->name);
 	for (i = 0; i < skb->len; i++)
@@ -1852,11 +2035,12 @@ static int cpc_queue_xmit(struct sk_buff
 
 	/* Start transmission */
 	CPC_LOCK(card, flags);
-	/* verify if it has more than one free descriptor */
-	if (card->chan[ch].nfree_tx_bd <= 1) {
-		/* don't have so stop the queue */
-		netif_stop_queue(dev);
-	}
+#ifdef PC300_DEBUG_QUEUE
+	printk(KERN_DEBUG "%s: stopping queue for transmission\n",
+	       dev->name);
+#endif
+	d->reason_stopped = TRANSMISSION_ACTIVE;
+	netif_stop_queue(dev);
 	cpc_writel(card->hw.scabase + DTX_REG(EDAL, ch),
 		   TX_BD_ADDR(ch, chan->tx_next_bd));
 	cpc_writeb(card->hw.scabase + M_REG(CMD, ch), CMD_TX_ENA);
@@ -1866,9 +2050,28 @@ static int cpc_queue_xmit(struct sk_buff
 			   cpc_readb(card->hw.falcbase + card->hw.cpld_reg2) |
 			   (CPLD_REG2_FALC_LED1 << (2 * ch)));
 	}
+	/* verify if it has more than one free descriptor */
+	if (card->chan[ch].nfree_tx_bd > 1) {
+#ifdef PC300_DEBUG_QUEUE
+		printk(KERN_DEBUG "%s: waking queue after transmission\n",
+		       dev->name);
+#endif
+		netif_wake_queue(dev);
+	}
+#ifdef PC300_DEBUG_QUEUE
+	else {
+		printk(KERN_DEBUG "%s: queue full\n",
+		       dev->name);
+	}
+#endif
 	CPC_UNLOCK(card, flags);
 	dev_kfree_skb(skb);
 
+#ifdef PC300_DEBUG_TX
+	printk(KERN_DEBUG "%s: cpc_queue_xmit returning normally\n",
+	       dev->name);
+#endif
+
 	return 0;
 }
 
@@ -1877,20 +2080,30 @@ static void cpc_net_rx(struct net_device
 	pc300dev_t *d = (pc300dev_t *) dev_to_hdlc(dev)->priv;
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300_t *card = (pc300_t *) chan->card;
+	struct net_device_stats *stats = &(dev->stats);
 	int ch = chan->channel;
 #ifdef PC300_DEBUG_RX
 	int i;
 #endif
 	int rxb;
 	struct sk_buff *skb;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 
 	while (1) {
 		if ((rxb = dma_get_rx_frame_size(card, ch)) == -1)
 			return;
 
 		if (!netif_carrier_ok(dev)) {
+			if (!(cpc_readb(scabase + M_REG(ST3, ch)) & ST3_DCD)) {
+				printk(KERN_INFO "%s: DCD ON - going up\n",
+				       dev->name);
+				netif_carrier_on(dev);
+			}
+		}
+		if (!netif_carrier_ok(dev)) {
 			/* DCD must be OFF: drop packet */
-		    printk("%s : DCD is OFF - drop %d rx bytes\n", dev->name, rxb); 
+			printk(KERN_INFO "%s : DCD is OFF - drop %d rx bytes\n",
+			       dev->name, rxb);
 			skb = NULL;
 		} else {
 			if (rxb > (dev->mtu + 40)) { /* add headers */
@@ -1912,24 +2125,24 @@ static void cpc_net_rx(struct net_device
 #endif
 			if ((skb == NULL) && (rxb > 0)) {
 				/* rxb > dev->mtu */
-				dev->stats.rx_errors++;
-				dev->stats.rx_length_errors++;
+				stats->rx_errors++;
+				stats->rx_length_errors++;
 				continue;
 			}
 
 			if (rxb < 0) {	/* Invalid frame */
 				rxb = -rxb;
 				if (rxb & DST_OVR) {
-					dev->stats.rx_errors++;
-					dev->stats.rx_fifo_errors++;
+					stats->rx_errors++;
+					stats->rx_fifo_errors++;
 				}
 				if (rxb & DST_CRC) {
-					dev->stats.rx_errors++;
-					dev->stats.rx_crc_errors++;
+					stats->rx_errors++;
+					stats->rx_crc_errors++;
 				}
 				if (rxb & (DST_RBIT | DST_SHRT | DST_ABT)) {
-					dev->stats.rx_errors++;
-					dev->stats.rx_frame_errors++;
+					stats->rx_errors++;
+					stats->rx_frame_errors++;
 				}
 			}
 			if (skb) {
@@ -1938,7 +2151,7 @@ static void cpc_net_rx(struct net_device
 			continue;
 		}
 
-		dev->stats.rx_bytes += rxb;
+		stats->rx_bytes += rxb;
 
 #ifdef PC300_DEBUG_RX
 		printk("%s R:", dev->name);
@@ -1949,7 +2162,8 @@ static void cpc_net_rx(struct net_device
 		if (d->trace_on) {
 			cpc_trace(dev, skb, 'R');
 		}
-		dev->stats.rx_packets++;
+		stats->rx_packets++;
+		skb_reset_mac_header(skb);
 		skb->protocol = hdlc_type_trans(skb, dev);
 		netif_rx(skb);
 	}
@@ -1963,22 +2177,24 @@ static void sca_tx_intr(pc300dev_t *dev)
 	pc300ch_t *chan = (pc300ch_t *)dev->chan; 
 	pc300_t *card = (pc300_t *)chan->card; 
 	int ch = chan->channel; 
-	volatile pcsca_bd_t __iomem * ptdescr; 
+	pcsca_bd_t *ptdescr;
+	struct net_device_stats *stats = &(dev->netdev->stats);
 
     /* Clean up descriptors from previous transmission */
-	ptdescr = (card->hw.rambase +
+	ptdescr = (pcsca_bd_t *)(card->hw.rambase +
 						TX_BD_ADDR(ch,chan->tx_first_bd));
 	while ((cpc_readl(card->hw.scabase + DTX_REG(CDAL,ch)) !=
-		TX_BD_ADDR(ch,chan->tx_first_bd)) &&
-	       (cpc_readb(&ptdescr->status) & DST_OSB)) {
-		dev->dev->stats.tx_packets++;
-		dev->dev->stats.tx_bytes += cpc_readw(&ptdescr->len);
+		TX_BD_ADDR(ch, chan->tx_first_bd)) &&
+		(cpc_readb(&ptdescr->status) & DST_OSB)) {
+		stats->tx_packets++;
+		stats->tx_bytes += cpc_readw(&ptdescr->len);
 		cpc_writeb(&ptdescr->status, DST_OSB);
 		cpc_writew(&ptdescr->len, 0);
 		chan->nfree_tx_bd++;
 		chan->tx_first_bd = (chan->tx_first_bd + 1) & (N_DMA_TX_BUF - 1);
-		ptdescr = (card->hw.rambase + TX_BD_ADDR(ch,chan->tx_first_bd));
-    }
+		ptdescr = (pcsca_bd_t *)(card->hw.rambase +
+			TX_BD_ADDR(ch, chan->tx_first_bd));
+	}
 
 #ifdef CONFIG_PC300_MLPPP
 	if (chan->conf.proto == PC300_PROTO_MLPPP) {
@@ -1986,7 +2202,13 @@ static void sca_tx_intr(pc300dev_t *dev)
 	} else {
 #endif
 	/* Tell the upper layer we are ready to transmit more packets */
-		netif_wake_queue(dev->dev);
+
+		if (chan->nfree_tx_bd > 1 && netif_queue_stopped(dev->netdev)) {
+#ifdef PC300_DEBUG_QUEUE
+			printk(KERN_DEBUG "Waking queue on TX interrupt\n");
+#endif
+			netif_wake_queue(dev->netdev);
+		}
 #ifdef CONFIG_PC300_MLPPP
 	}
 #endif
@@ -1994,17 +2216,21 @@ static void sca_tx_intr(pc300dev_t *dev)
 
 static void sca_intr(pc300_t * card)
 {
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 	volatile u32 status;
 	int ch;
 	int intr_count = 0;
 	unsigned char dsr_rx;
 
 	while ((status = cpc_readl(scabase + ISR0)) != 0) {
+#ifdef PC300_DEBUG_INTR
+		printk(KERN_DEBUG "sca_intr(): status = %08x\n",
+		       status);
+#endif
 		for (ch = 0; ch < card->hw.nchan; ch++) {
 			pc300ch_t *chan = &card->chan[ch];
 			pc300dev_t *d = &chan->d;
-			struct net_device *dev = d->dev;
+			struct net_device *dev = d->netdev;
 
 			spin_lock(&card->card_lock);
 
@@ -2016,8 +2242,9 @@ static void sca_intr(pc300_t * card)
 				cpc_writeb(scabase + DSR_RX(ch), drx_stat | DSR_DWE);
 
 #ifdef PC300_DEBUG_INTR
-				printk ("sca_intr: RX intr chan[%d] (st=0x%08lx, dsr=0x%02x)\n",
-					 ch, status, drx_stat);
+				printk(KERN_DEBUG
+				       "sca_intr: RX intr chan[%d] (st=0x%08x, dsr=0x%02x)\n",
+				       ch, status, drx_stat);
 #endif
 				if (status & IR0_DRX(IR0_DMIA, ch)) {
 					if (drx_stat & DSR_BOF) {
@@ -2075,8 +2302,10 @@ static void sca_intr(pc300_t * card)
 				}
 				if (!(dsr_rx = cpc_readb(scabase + DSR_RX(ch)) & DSR_DE)) {
 #ifdef PC300_DEBUG_INTR
-		printk("%s: RX intr chan[%d] (st=0x%08lx, dsr=0x%02x, dsr2=0x%02x)\n",
-			dev->name, ch, status, drx_stat, dsr_rx);
+					printk(KERN_DEBUG
+					       "%s: RX intr chan[%d] (st=0x%08x, dsr=0x%02x, dsr2=0x%02x)\n",
+					       dev->name, ch, status,
+					       drx_stat, dsr_rx);
 #endif
 					cpc_writeb(scabase + DSR_RX(ch), (dsr_rx | DSR_DE) & 0xfe);
 				}
@@ -2090,8 +2319,9 @@ static void sca_intr(pc300_t * card)
 				cpc_writeb(scabase + DSR_TX(ch), dtx_stat | DSR_DWE);
 
 #ifdef PC300_DEBUG_INTR
-				printk ("sca_intr: TX intr chan[%d] (st=0x%08lx, dsr=0x%02x)\n",
-					 ch, status, dtx_stat);
+				printk(KERN_DEBUG
+				       "sca_intr: TX intr chan[%d] (st=0x%08x, dsr=0x%02x)\n",
+				       ch, status, dtx_stat);
 #endif
 				if (status & IR0_DTX(IR0_EFT, ch)) {
 					if (dtx_stat & DSR_UDRF) {
@@ -2106,8 +2336,17 @@ static void sca_intr(pc300_t * card)
 						}
 						dev->stats.tx_errors++;
 						dev->stats.tx_fifo_errors++;
-						sca_tx_intr(d);
+#ifdef PC300_DEBUG_OTHER
+						printk(KERN_DEBUG
+						       "sca_intr(): TX underflow!  Dump follows:\n");
+						printk(KERN_DEBUG
+						       "DSR_TX was 0x%02x\n",
+						       dtx_stat);
+						cpc_sca_status(card, ch);
+#endif
+
 					}
+					sca_tx_intr(d);
 				}
 				if (status & IR0_DTX(IR0_DMIA, ch)) {
 					if (dtx_stat & DSR_BOF) {
@@ -2121,11 +2360,12 @@ static void sca_intr(pc300_t * card)
 								    			card->hw.cpld_reg2) &
 								   ~ (CPLD_REG2_FALC_LED1 << (2 * ch)));
 						}
-						sca_tx_intr(d);
 					}
+					sca_tx_intr(d);
 				}
 			}
 
+
 	    /**** MSCI ****/
 			if (status & IR0_M(IR0_RXINTA, ch)) {
 				u8 st1 = cpc_readb(scabase + M_REG(ST1, ch));
@@ -2134,8 +2374,9 @@ static void sca_intr(pc300_t * card)
 				cpc_writeb(scabase + M_REG(ST1, ch), st1);
 
 #ifdef PC300_DEBUG_INTR
-				printk("sca_intr: MSCI intr chan[%d] (st=0x%08lx, st1=0x%02x)\n",
-					 ch, status, st1);
+				printk(KERN_DEBUG
+				       "sca_intr: MSCI intr chan[%d] (st=0x%08x, st1=0x%02x)\n",
+				       ch, status, st1);
 #endif
 				if (st1 & ST1_CDCD) {	/* DCD changed */
 					if (cpc_readb(scabase + M_REG(ST3, ch)) & ST3_DCD) {
@@ -2174,7 +2415,7 @@ static void falc_t1_loop_detection(pc300
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (((cpc_readb(falcbase + F_REG(LCR1, ch)) & LCR1_XPRBS) == 0) &&
 	    !pfalc->loop_gen) {
@@ -2199,7 +2440,7 @@ static void falc_e1_loop_detection(pc300
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 
 	if (((cpc_readb(falcbase + F_REG(LCR1, ch)) & LCR1_XPRBS) == 0) &&
 	    !pfalc->loop_gen) {
@@ -2224,7 +2465,7 @@ static void falc_t1_intr(pc300_t * card,
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u8 isr0, isr3, gis;
 	u8 dummy;
 
@@ -2271,7 +2512,7 @@ static void falc_e1_intr(pc300_t * card,
 {
 	pc300ch_t *chan = (pc300ch_t *) & card->chan[ch];
 	falc_t *pfalc = (falc_t *) & chan->falc;
-	void __iomem *falcbase = card->hw.falcbase;
+	uintptr_t falcbase = (uintptr_t)(card->hw.falcbase);
 	u8 isr1, isr2, isr3, gis, rsp;
 	u8 dummy;
 
@@ -2364,7 +2605,7 @@ static irqreturn_t cpc_intr(int irq, voi
 		return IRQ_NONE;		/* spurious intr */
 	}
 
-	if (!card->hw.rambase) {
+	if (!(card->hw.rambase)) {
 #ifdef PC300_DEBUG_INTR
 		printk("cpc_intr: spurious intr2 %d\n", irq);
 #endif
@@ -2395,21 +2636,28 @@ static irqreturn_t cpc_intr(int irq, voi
 static void cpc_sca_status(pc300_t * card, int ch)
 {
 	u8 ilar;
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 	unsigned long flags;
+	char *reason;
 
+	printk(KERN_DEBUG "tx_dma_buf_check():\n");
 	tx_dma_buf_check(card, ch);
+#ifdef PC300_DEBUG_OTHER
+	printk(KERN_DEBUG "tx1_dma_buf_check():\n");
+	tx1_dma_buf_check(card, ch);
+#endif
+	printk(KERN_DEBUG "rx_dma_buf_check():\n");
 	rx_dma_buf_check(card, ch);
 	ilar = cpc_readb(scabase + ILAR);
 	printk ("ILAR=0x%02x, WCRL=0x%02x, PCR=0x%02x, BTCR=0x%02x, BOLR=0x%02x\n",
 		 ilar, cpc_readb(scabase + WCRL), cpc_readb(scabase + PCR),
 		 cpc_readb(scabase + BTCR), cpc_readb(scabase + BOLR));
 	printk("TX_CDA=0x%08x, TX_EDA=0x%08x\n",
-	       cpc_readl(scabase + DTX_REG(CDAL, ch)),
-	       cpc_readl(scabase + DTX_REG(EDAL, ch)));
+	       (u32) cpc_readl(scabase + DTX_REG(CDAL, ch)),
+	       (u32) cpc_readl(scabase + DTX_REG(EDAL, ch)));
 	printk("RX_CDA=0x%08x, RX_EDA=0x%08x, BFL=0x%04x\n",
-	       cpc_readl(scabase + DRX_REG(CDAL, ch)),
-	       cpc_readl(scabase + DRX_REG(EDAL, ch)),
+	       (u32) cpc_readl(scabase + DRX_REG(CDAL, ch)),
+	       (u32) cpc_readl(scabase + DRX_REG(EDAL, ch)),
 	       cpc_readw(scabase + DRX_REG(BFLL, ch)));
 	printk("DMER=0x%02x, DSR_TX=0x%02x, DSR_RX=0x%02x\n",
 	       cpc_readb(scabase + DMER), cpc_readb(scabase + DSR_TX(ch)),
@@ -2474,7 +2722,25 @@ static void cpc_sca_status(pc300_t * car
 	       cpc_readb(scabase + M_REG(IE2, ch)),
 	       cpc_readb(scabase + M_REG(IE4, ch)),
 	       cpc_readb(scabase + M_REG(FIE, ch)));
-	printk("IER0=0x%08x\n", cpc_readl(scabase + IER0));
+	printk(KERN_DEBUG "IER0=0x%08x\n", (u32) cpc_readl(scabase + IER0));
+	switch (card->chan[ch].d.reason_stopped) {
+	case CPC_DMA_FULL:
+	  reason = "CPC_DMA_FULL";
+	  break;
+	case CPC_DMA_ERROR:
+	  reason = "CPC_DMA_ERROR";
+	  break;
+	case TRANSMISSION_ACTIVE:
+	  reason = "TRANSMISSION_ACTIVE";
+	  break;
+	case CHANNEL_CLOSED:
+	  reason = "CHANNEL_CLOSED";
+	  break;
+	default:
+	  reason = "unknown";
+	  break;
+	}
+	printk(KERN_DEBUG "reason_stopped = %s\n", reason);
 
 	if (ilar != 0) {
 		CPC_LOCK(card, flags);
@@ -2514,29 +2780,89 @@ static void cpc_falc_status(pc300_t * ca
 
 static int cpc_change_mtu(struct net_device *dev, int new_mtu)
 {
+#ifdef PC300_DEBUG_OTHER
+	printk(KERN_DEBUG "%s: change MTU to %d\n", dev->name, new_mtu);
+#endif
 	if ((new_mtu < 128) || (new_mtu > PC300_DEF_MTU))
 		return -EINVAL;
 	dev->mtu = new_mtu;
 	return 0;
 }
 
+/* Helper function to produce userland version of network stats */
+static void cpc_net_stats_to_user(const struct net_device_stats *stats,
+				  struct pc300_net_stats *user_stats)
+{
+	user_stats->rx_packets = stats->rx_packets;
+	user_stats->tx_packets = stats->tx_packets;
+	user_stats->rx_bytes = stats->rx_bytes;
+	user_stats->tx_bytes = stats->tx_bytes;
+	user_stats->rx_errors = stats->rx_errors;
+	user_stats->tx_errors = stats->tx_errors;
+	user_stats->rx_dropped = stats->rx_dropped;
+	user_stats->tx_dropped = stats->tx_dropped;
+	user_stats->multicast = stats->multicast;
+	user_stats->collisions = stats->collisions;
+	user_stats->rx_length_errors = stats->rx_length_errors;
+	user_stats->rx_over_errors = stats->rx_over_errors;
+	user_stats->rx_crc_errors = stats->rx_crc_errors;
+	user_stats->rx_frame_errors = stats->rx_frame_errors;
+	user_stats->rx_fifo_errors = stats->rx_fifo_errors;
+	user_stats->rx_missed_errors = stats->rx_missed_errors;
+	user_stats->tx_aborted_errors = stats->tx_aborted_errors;
+	user_stats->tx_carrier_errors = stats->tx_carrier_errors;
+	user_stats->tx_fifo_errors = stats->tx_fifo_errors;
+	user_stats->tx_heartbeat_errors = stats->tx_heartbeat_errors;
+	user_stats->tx_window_errors = stats->tx_window_errors;
+	user_stats->rx_compressed = stats->rx_compressed;
+	user_stats->tx_compressed = stats->tx_compressed;
+}
+
+/* Helper function to produce userland version of pc300hw struct */
+static void cpc_hw_info_to_user(const pc300hw_t *hw,
+				struct pc300hw_user *user_hw)
+{
+	memset(user_hw, 0, sizeof(*user_hw));
+	user_hw->type = hw->type;
+	user_hw->bus = hw->bus;
+	user_hw->nchan = hw->nchan;
+	user_hw->irq = hw->irq;
+	user_hw->clock = hw->clock;
+	user_hw->cpld_id = hw->cpld_id;
+	user_hw->cpld_reg1 = hw->cpld_reg1;
+	user_hw->cpld_reg2 = hw->cpld_reg2;
+	user_hw->gpioc_reg = hw->gpioc_reg;
+	user_hw->intctl_reg = hw->intctl_reg;
+	user_hw->iosize = hw->iosize;
+	user_hw->plxsize = hw->plxsize;
+	user_hw->scasize = hw->scasize;
+	user_hw->alloc_ramsize = hw->alloc_ramsize;
+	user_hw->ramsize = hw->ramsize;
+	user_hw->falcsize = hw->falcsize;
+}
+
 static int cpc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
-	pc300dev_t *d = (pc300dev_t *) dev_to_hdlc(dev)->priv;
+	pc300dev_t *d = (pc300dev_t *) (dev_to_hdlc(dev))->priv;
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300_t *card = (pc300_t *) chan->card;
 	pc300conf_t conf_aux;
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	int ch = chan->channel;
-	void __user *arg = ifr->ifr_data;
+	void *arg = (void *) ifr->ifr_data;
 	struct if_settings *settings = &ifr->ifr_settings;
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 
 	if (!capable(CAP_NET_ADMIN))
 		return -EPERM;
 
 	switch (cmd) {
 		case SIOCGPC300CONF:
+#ifdef PC300_DEBUG_OTHER
+			printk(KERN_DEBUG
+			       "%s: SIOCGPC300CONF called, with conf->monitor = %d\n",
+			       dev->name, conf->monitor);
+#endif
 #ifdef CONFIG_PC300_MLPPP
 			if (conf->proto != PC300_PROTO_MLPPP) {
 				conf->proto = /* FIXME hdlc->proto.id */ 0;
@@ -2545,12 +2871,22 @@ static int cpc_ioctl(struct net_device *
 			conf->proto = /* FIXME hdlc->proto.id */ 0;
 #endif
 			memcpy(&conf_aux.conf, conf, sizeof(pc300chconf_t));
-			memcpy(&conf_aux.hw, &card->hw, sizeof(pc300hw_t));
+			cpc_hw_info_to_user(&card->hw, &conf_aux.hw);
 			if (!arg || 
 				copy_to_user(arg, &conf_aux, sizeof(pc300conf_t))) 
 				return -EINVAL;
+#ifdef PC300_DEBUG_OTHER
+			printk(KERN_DEBUG
+			       "%s: SIOCGPC300CONF returning, with conf->monitor = %d\n",
+			       dev->name, conf->monitor);
+#endif
 			return 0;
 		case SIOCSPC300CONF:
+#ifdef PC300_DEBUG_OTHER
+			printk(KERN_DEBUG
+			       "%s: SIOCSPC300CONF called, with conf->monitor = %d\n",
+			       dev->name, conf->monitor);
+#endif
 			if (!capable(CAP_NET_ADMIN))
 				return -EPERM;
 			if (!arg || 
@@ -2582,6 +2918,11 @@ static int cpc_ioctl(struct net_device *
 			memcpy(conf, &conf_aux.conf, sizeof(pc300chconf_t));
 			/* FIXME hdlc->proto.id = conf->proto; */
 #endif
+#ifdef PC300_DEBUG_OTHER
+			printk(KERN_DEBUG
+			       "%s: SIOCSPC300CONF returning, with conf->monitor = %d\n",
+			       dev->name, conf->monitor);
+#endif
 			return 0;
 		case SIOCGPC300STATUS:
 			cpc_sca_status(card, ch);
@@ -2604,8 +2945,13 @@ static int cpc_ioctl(struct net_device *
 					pc300stats.hw_type = card->hw.type;
 					pc300stats.line_on = card->chan[ch].d.line_on;
 					pc300stats.line_off = card->chan[ch].d.line_off;
-					memcpy(&pc300stats.gen_stats, &dev->stats,
-					       sizeof(dev->stats));
+					/*
+					 * Do this instead of passing dev->stats
+					 * out so 32-bit userland on 64-bit
+					 * kernel works.
+					 */
+					cpc_net_stats_to_user(&(dev->stats),
+						&(pc300stats.net_stats));
 					if (card->hw.type == PC300_TE)
 						memcpy(&pc300stats.te_stats,&chan->falc,sizeof(falc_t));
 				    	if (copy_to_user(arg, &pc300stats, sizeof(pc300stats_t)))
@@ -2811,6 +3157,16 @@ static int cpc_ioctl(struct net_device *
 	}
 }
 
+static struct net_device_stats *cpc_get_stats(struct net_device *dev)
+{
+	pc300dev_t *d = (pc300dev_t *) (dev_to_hdlc(dev))->priv;
+
+	if (d)
+		return &(dev->stats);
+	else
+		return NULL;
+}
+
 static int clock_rate_calc(u32 rate, u32 clock, int *br_io)
 {
 	int br, tc;
@@ -2845,8 +3201,8 @@ static int ch_config(pc300dev_t * d)
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300chconf_t *conf = (pc300chconf_t *) & chan->conf;
 	pc300_t *card = (pc300_t *) chan->card;
-	void __iomem *scabase = card->hw.scabase;
-	void __iomem *plxbase = card->hw.plxbase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
+	uintptr_t plxbase = (uintptr_t)(card->hw.plxbase);
 	int ch = chan->channel;
 	u32 clkrate = chan->conf.phys_settings.clock_rate;
 	u32 clktype = chan->conf.phys_settings.clock_type;
@@ -2985,8 +3341,10 @@ static int ch_config(pc300dev_t * d)
 		   IR0_DTX(IR0_EFT | IR0_DMIA | IR0_DMIB, ch));
 	cpc_writeb(scabase + M_REG(IE0, ch),
 		   cpc_readl(scabase + M_REG(IE0, ch)) | IE0_RXINTA);
+
+	/* Was cpc_readl(), changed for unaligned access */
 	cpc_writeb(scabase + M_REG(IE1, ch),
-		   cpc_readl(scabase + M_REG(IE1, ch)) | IE1_CDCD);
+		   cpc_readb(scabase + M_REG(IE1, ch)) | IE1_CDCD);
 
 	return 0;
 }
@@ -2995,14 +3353,15 @@ static int rx_config(pc300dev_t * d)
 {
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300_t *card = (pc300_t *) chan->card;
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 	int ch = chan->channel;
 
 	cpc_writeb(scabase + DSR_RX(ch), 0);
 
 	/* General RX settings */
 	cpc_writeb(scabase + M_REG(RRC, ch), 0);
-	cpc_writeb(scabase + M_REG(RNR, ch), 16);
+	cpc_writeb(scabase + M_REG(RNR, ch), 8);
+	cpc_writeb(scabase + M_REG(RCR, ch), 16);
 
 	/* Enable reception */
 	cpc_writeb(scabase + M_REG(CMD, ch), CMD_RX_CRC_INIT);
@@ -3026,17 +3385,17 @@ static int tx_config(pc300dev_t * d)
 {
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300_t *card = (pc300_t *) chan->card;
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 	int ch = chan->channel;
 
 	cpc_writeb(scabase + DSR_TX(ch), 0);
 
 	/* General TX settings */
 	cpc_writeb(scabase + M_REG(TRC0, ch), 0);
-	cpc_writeb(scabase + M_REG(TFS, ch), 32);
-	cpc_writeb(scabase + M_REG(TNR0, ch), 20);
-	cpc_writeb(scabase + M_REG(TNR1, ch), 48);
-	cpc_writeb(scabase + M_REG(TCR, ch), 8);
+	cpc_writeb(scabase + M_REG(TFS, ch), 0x3c);
+	cpc_writeb(scabase + M_REG(TNR0, ch), 0x38);
+	cpc_writeb(scabase + M_REG(TNR1, ch), 0x3f);
+	cpc_writeb(scabase + M_REG(TCR, ch), 0x38);
 
 	/* Enable transmission */
 	cpc_writeb(scabase + M_REG(CMD, ch), CMD_TX_CRC_INIT);
@@ -3090,7 +3449,7 @@ static int cpc_opench(pc300dev_t * d)
 	pc300ch_t *chan = (pc300ch_t *) d->chan;
 	pc300_t *card = (pc300_t *) chan->card;
 	int ch = chan->channel, rc;
-	void __iomem *scabase = card->hw.scabase;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
 
 	rc = ch_config(d);
 	if (rc)
@@ -3140,13 +3499,17 @@ int cpc_open(struct net_device *dev)
 	pc300dev_t *d = (pc300dev_t *) dev_to_hdlc(dev)->priv;
 	struct ifreq ifr;
 	int result;
+	pc300ch_t *chan = (pc300ch_t *) d->chan;
+	pc300_t *card = (pc300_t *) chan->card;
+	int ch = chan->channel;
+	uintptr_t scabase = (uintptr_t)(card->hw.scabase);
+
 
 #ifdef	PC300_DEBUG_OTHER
-	printk("pc300: cpc_open");
+	printk("pc300: cpc_open\n");
 #endif
 
 	result = hdlc_open(dev);
-
 	if (result)
 		return result;
 
@@ -3155,7 +3518,16 @@ int cpc_open(struct net_device *dev)
 	if (result)
 		goto err_out;
 
+#ifdef PC300_DEBUG_QUEUE
+	printk(KERN_DEBUG "%s: starting queue for open\n",
+	       dev->name);
+#endif
 	netif_start_queue(dev);
+	if (cpc_readb(scabase + M_REG(ST3, ch)) & ST3_DCD)
+		netif_carrier_off(dev);
+	else
+		netif_carrier_on(dev);
+
 	return 0;
 
 err_out:
@@ -3171,9 +3543,13 @@ static int cpc_close(struct net_device *
 	unsigned long flags;
 
 #ifdef	PC300_DEBUG_OTHER
-	printk("pc300: cpc_close");
+	printk(KERN_DEBUG "pc300: cpc_close\n");
+#endif
+#ifdef PC300_DEBUG_QUEUE
+	printk(KERN_DEBUG "%s: stopping queue\n", dev->name);
 #endif
 
+	d->reason_stopped = CHANNEL_CLOSED;
 	netif_stop_queue(dev);
 
 	CPC_LOCK(card, flags);
@@ -3181,7 +3557,6 @@ static int cpc_close(struct net_device *
 	CPC_UNLOCK(card, flags);
 
 	hdlc_close(dev);
-
 #ifdef CONFIG_PC300_MLPPP
 	if (chan->conf.proto == PC300_PROTO_MLPPP) {
 		cpc_tty_unregister_service(d);
@@ -3196,7 +3571,7 @@ static u32 detect_ram(pc300_t * card)
 {
 	u32 i;
 	u8 data;
-	void __iomem *rambase = card->hw.rambase;
+	uintptr_t rambase = (uintptr_t)(card->hw.rambase);
 
 	card->hw.ramsize = PC300_RAMSIZE;
 	/* Let's find out how much RAM is present on this board */
@@ -3212,7 +3587,8 @@ static u32 detect_ram(pc300_t * card)
 
 static void plx_init(pc300_t * card)
 {
-	struct RUNTIME_9050 __iomem *plx_ctl = card->hw.plxbase;
+	struct RUNTIME_9050 __iomem *plx_ctl =
+		(struct RUNTIME_9050 *) card->hw.plxbase;
 
 	/* Reset PLX */
 	cpc_writel(&plx_ctl->init_ctrl,
@@ -3246,16 +3622,6 @@ static inline void show_version(void)
 		rcsvers, rcsdate, __DATE__, __TIME__);
 }				/* show_version */
 
-static const struct net_device_ops cpc_netdev_ops = {
-	.ndo_open		= cpc_open,
-	.ndo_stop		= cpc_close,
-	.ndo_tx_timeout		= cpc_tx_timeout,
-	.ndo_set_mac_address	= NULL,
-	.ndo_change_mtu		= cpc_change_mtu,
-	.ndo_do_ioctl		= cpc_ioctl,
-	.ndo_validate_addr	= eth_validate_addr,
-};
-
 static void cpc_init_card(pc300_t * card)
 {
 	int i, devcount = 0;
@@ -3345,6 +3711,7 @@ static void cpc_init_card(pc300_t * card
 				break;
 		}
 		chan->conf.proto = IF_PROTO_PPP;
+		chan->conf.monitor = 0;
 		chan->tx_first_bd = 0;
 		chan->tx_next_bd = 0;
 		chan->rx_first_bd = 0;
@@ -3352,6 +3719,7 @@ static void cpc_init_card(pc300_t * card
 		chan->nfree_tx_bd = N_DMA_TX_BUF;
 
 		d->chan = chan;
+		d->tx_skb = NULL;
 		d->trace_on = 0;
 		d->line_on = 0;
 		d->line_off = 0;
@@ -3360,19 +3728,22 @@ static void cpc_init_card(pc300_t * card
 		if (dev == NULL)
 			continue;
 
-		hdlc = dev_to_hdlc(dev);
-		hdlc->xmit = cpc_queue_xmit;
-		hdlc->attach = cpc_attach;
-		d->dev = dev;
 		dev->mem_start = card->hw.ramphys;
 		dev->mem_end = card->hw.ramphys + card->hw.ramsize - 1;
 		dev->irq = card->hw.irq;
 		dev->tx_queue_len = PC300_TX_QUEUE_LEN;
 		dev->mtu = PC300_DEF_MTU;
-
-		dev->netdev_ops = &cpc_netdev_ops;
+		dev->netdev_ops = &pc300_netdev_ops;
 		dev->watchdog_timeo = PC300_TX_TIMEOUT;
 
+		hdlc = dev_to_hdlc(dev);
+		hdlc->xmit = cpc_queue_xmit;
+		hdlc->attach = cpc_attach;
+		d->hdlc = hdlc;
+
+		d->netdev = dev;
+		d->reason_stopped = CHANNEL_CLOSED;
+
 		if (register_hdlc_device(dev) == 0) {
 			printk("%s: Cyclades-PC300/", dev->name);
 			switch (card->hw.type) {
@@ -3393,14 +3764,33 @@ static void cpc_init_card(pc300_t * card
 					printk("RSV ");
 					break;
 			}
-			printk (" #%d, %dKB of RAM at 0x%08x, IRQ%d, channel %d.\n",
-				 board_nbr, card->hw.ramsize / 1024,
-				 card->hw.ramphys, card->hw.irq, i + 1);
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+			printk(KERN_INFO
+			       " #%d, %dKB of RAM at 0x%016lx, IRQ%d, channel %d.\n",
+			       board_nbr, card->hw.ramsize / 1024,
+			       (unsigned long)(card->hw.ramphys),
+			       card->hw.irq, i + 1);
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
+			printk(KERN_INFO
+			       " #%d, %dKB of RAM at 0x%08x, IRQ%d, channel %d.\n",
+			       board_nbr, card->hw.ramsize / 1024,
+			       (unsigned int)(card->hw.ramphys),
+			       card->hw.irq, i + 1);
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
+
 			devcount++;
 		} else {
-			printk ("Dev%d on card(0x%08x): unable to allocate i/f name.\n",
-				 i + 1, card->hw.ramphys);
-			free_netdev(dev);
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+			printk(KERN_ERR
+			       "Dev%d on card(0x%016lx): unable to allocate i/f name.\n",
+			       i + 1, (unsigned long)(card->hw.ramphys));
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
+			printk(KERN_ERR
+			       "Dev%d on card(0x%08x): unable to allocate i/f name.\n",
+			       i + 1, (unsigned int)(card->hw.ramphys));
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
+			*(dev->name) = 0;
+			kfree(d->hdlc);
 			continue;
 		}
 	}
@@ -3413,7 +3803,7 @@ static int __devinit
 cpc_init_one(struct pci_dev *pdev, const struct pci_device_id *ent)
 {
 	static int first_time = 1;
-	int err, eeprom_outdated = 0;
+	int err = 0, eeprom_outdated = 0;
 	u16 device_id;
 	pc300_t *card;
 
@@ -3425,20 +3815,20 @@ cpc_init_one(struct pci_dev *pdev, const
 #endif
 	}
 
-	if ((err = pci_enable_device(pdev)) < 0)
-		return err;
-
 	card = kzalloc(sizeof(pc300_t), GFP_KERNEL);
 	if (card == NULL) {
-		printk("PC300 found at RAM 0x%016llx, "
-		       "but could not allocate card structure.\n",
-		       (unsigned long long)pci_resource_start(pdev, 3));
-		err = -ENOMEM;
-		goto err_disable_dev;
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%016lx, but could not allocate card structure.\n",
+		       (unsigned long)(pci_resource_start(pdev, 3)));
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%08x, but could not allocate card structure.\n",
+		       (unsigned int)(pci_resource_start(pdev, 3)));
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
+		return -ENOMEM;
 	}
 
-	err = -ENODEV;
-
 	/* read PCI configuration area */
 	device_id = ent->device;
 	card->hw.irq = pdev->irq;
@@ -3470,18 +3860,36 @@ cpc_init_one(struct pci_dev *pdev, const
 #ifdef PC300_DEBUG_PCI
 	printk("cpc (bus=0x0%x,pci_id=0x%x,", pdev->bus->number, pdev->devfn);
 	printk("rev_id=%d) IRQ%d\n", pdev->revision, card->hw.irq);
-	printk("cpc:found  ramaddr=0x%08lx plxaddr=0x%08lx "
-	       "ctladdr=0x%08lx falcaddr=0x%08lx\n",
-	       card->hw.ramphys, card->hw.plxphys, card->hw.scaphys,
-	       card->hw.falcphys);
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+	printk(KERN_INFO
+	       "cpc:found  ramaddr=0x%016lx plxaddr=0x%016lx "
+	       "ctladdr=0x%016lx falcaddr=0x%016lx\n",
+	       (unsigned long)(card->hw.ramphys),
+	       (unsigned long)(card->hw.plxphys),
+	       (unsigned long)(card->hw.scaphys),
+	       (unsigned long)(card->hw.falcphys));
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
+	printk(KERN_INFO
+	       "cpc:found  ramaddr=0x%08x plxaddr=0x%08x "
+	       "ctladdr=0x%08x falcaddr=0x%08x\n",
+	       (unsigned int)(card->hw.ramphys),
+	       (unsigned int)(card->hw.plxphys),
+	       (unsigned int)(card->hw.scaphys),
+	       (unsigned int)(card->hw.falcphys));
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
 #endif
 	/* Although we don't use this I/O region, we should
 	 * request it from the kernel anyway, to avoid problems
 	 * with other drivers accessing it. */
 	if (!request_region(card->hw.iophys, card->hw.iosize, "PLX Registers")) {
 		/* In case we can't allocate it, warn user */
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+		printk("WARNING: couldn't allocate I/O region for PC300 board "
+		       "at 0x%016lx!\n", (unsigned long)(card->hw.ramphys));
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
 		printk("WARNING: couldn't allocate I/O region for PC300 board "
-		       "at 0x%08x!\n", card->hw.ramphys);
+		       "at 0x%08x!\n", (unsigned int)(card->hw.ramphys));
+#endif
 	}
 
 	if (card->hw.plxphys) {
@@ -3494,29 +3902,64 @@ cpc_init_one(struct pci_dev *pdev, const
 
 	if (!request_mem_region(card->hw.plxphys, card->hw.plxsize,
 				"PLX Registers")) {
-		printk("PC300 found at RAM 0x%08x, "
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%016lx, "
 		       "but could not allocate PLX mem region.\n",
-		       card->hw.ramphys);
+		       (unsigned long)(card->hw.ramphys));
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%08x, "
+		       "but could not allocate PLX mem region.\n",
+		       (unsigned int)(card->hw.ramphys));
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
+		err = -ENODEV;
 		goto err_release_io;
 	}
 	if (!request_mem_region(card->hw.ramphys, card->hw.alloc_ramsize,
 				"On-board RAM")) {
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+		printk("PC300 found at RAM 0x%016lx, "
+		       "but could not allocate SCA mem region.\n",
+		       (unsigned long)(card->hw.ramphys));
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
 		printk("PC300 found at RAM 0x%08x, "
 		       "but could not allocate RAM mem region.\n",
-		       card->hw.ramphys);
+		       (unsigned int)(card->hw.ramphys));
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
+		err = -ENODEV;
 		goto err_release_plx;
 	}
 	if (!request_mem_region(card->hw.scaphys, card->hw.scasize,
 				"SCA-II Registers")) {
-		printk("PC300 found at RAM 0x%08x, "
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%016lx, "
+		       "but could not allocate SCA mem region.\n",
+		       (unsigned long)(card->hw.ramphys));
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%08x, "
 		       "but could not allocate SCA mem region.\n",
-		       card->hw.ramphys);
+		       (unsigned int)(card->hw.ramphys));
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
+		err = -ENODEV;
 		goto err_release_ram;
 	}
 
-	card->hw.plxbase = ioremap(card->hw.plxphys, card->hw.plxsize);
-	card->hw.rambase = ioremap(card->hw.ramphys, card->hw.alloc_ramsize);
-	card->hw.scabase = ioremap(card->hw.scaphys, card->hw.scasize);
+	err = pci_enable_device(pdev);
+	if (err != 0)
+		goto err_release_sca;
+
+	card->hw.plxbase =
+		(void __iomem *) ioremap(card->hw.plxphys,
+					 card->hw.plxsize);
+	card->hw.rambase =
+		(void __iomem *) ioremap(card->hw.ramphys,
+					 card->hw.alloc_ramsize);
+	card->hw.scabase =
+		(void __iomem *) ioremap(card->hw.scaphys,
+					 card->hw.scasize);
 	switch (device_id) {
 		case PCI_DEVICE_ID_PC300_TE_1:
 		case PCI_DEVICE_ID_PC300_TE_2:
@@ -3524,7 +3967,9 @@ cpc_init_one(struct pci_dev *pdev, const
 		case PCI_DEVICE_ID_PC300_TE_M_2:
 			request_mem_region(card->hw.falcphys, card->hw.falcsize,
 					   "FALC Registers");
-			card->hw.falcbase = ioremap(card->hw.falcphys, card->hw.falcsize);
+			card->hw.falcbase =
+				(void __iomem *) ioremap(card->hw.falcphys,
+							 card->hw.falcsize);
 			break;
 
 		case PCI_DEVICE_ID_PC300_RX_1:
@@ -3535,10 +3980,23 @@ cpc_init_one(struct pci_dev *pdev, const
 	}
 
 #ifdef PC300_DEBUG_PCI
-	printk("cpc: relocate ramaddr=0x%08lx plxaddr=0x%08lx "
-	       "ctladdr=0x%08lx falcaddr=0x%08lx\n",
-	       card->hw.rambase, card->hw.plxbase, card->hw.scabase,
-	       card->hw.falcbase);
+#ifdef CONFIG_64BIT
+	printk(KERN_DEBUG
+	       "cpc: relocate ramaddr=0x%016lx plxaddr=0x%016lx "
+	       "ctladdr=0x%016lx falcaddr=0x%016lx\n",
+	       (unsigned long)(card->hw.rambase),
+	       (unsigned long)(card->hw.plxbase),
+	       (unsigned long)(card->hw.scabase),
+	       (unsigned long)(card->hw.falcbase));
+#else /* !CONFIG_64BIT */
+	printk(KERN_DEBUG
+	       "cpc: relocate ramaddr=0x%08x plxaddr=0x%08x "
+	       "ctladdr=0x%08x falcaddr=0x%08x\n",
+	       (unsigned int)(card->hw.rambase),
+	       (unsigned int)(card->hw.plxbase),
+	       (unsigned int)(card->hw.scabase),
+	       (unsigned int)(card->hw.falcbase));
+#endif /* CONFIG_64BIT */
 #endif
 
 	/* Set PCI drv pointer to the card structure */
@@ -3584,8 +4042,15 @@ cpc_init_one(struct pci_dev *pdev, const
 
 	/* Allocate IRQ */
 	if (request_irq(card->hw.irq, cpc_intr, IRQF_SHARED, "Cyclades-PC300", card)) {
-		printk ("PC300 found at RAM 0x%08x, but could not allocate IRQ%d.\n",
-			 card->hw.ramphys, card->hw.irq);
+#ifdef CONFIG_PHYS_ADDR_T_64BIT
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%016lx, but could not allocate IRQ%d.\n",
+		       (unsigned long)(card->hw.ramphys), card->hw.irq);
+#else /* !CONFIG_PHYS_ADDR_T_64BIT */
+		printk(KERN_ERR
+		       "PC300 found at RAM 0x%08x, but could not allocate IRQ%d.\n",
+		       (unsigned int)(card->hw.ramphys), card->hw.irq);
+#endif /* CONFIG_PHYS_ADDR_T_64BIT */
 		goto err_io_unmap;
 	}
 
@@ -3603,6 +4068,7 @@ err_io_unmap:
 		iounmap(card->hw.falcbase);
 		release_mem_region(card->hw.falcphys, card->hw.falcsize);
 	}
+err_release_sca:
 	release_mem_region(card->hw.scaphys, card->hw.scasize);
 err_release_ram:
 	release_mem_region(card->hw.ramphys, card->hw.alloc_ramsize);
@@ -3611,9 +4077,7 @@ err_release_plx:
 err_release_io:
 	release_region(card->hw.iophys, card->hw.iosize);
 	kfree(card);
-err_disable_dev:
-	pci_disable_device(pdev);
-	return err;
+	return -ENODEV;
 }
 
 static void __devexit cpc_remove_one(struct pci_dev *pdev)
@@ -3628,7 +4092,8 @@ static void __devexit cpc_remove_one(str
 			   cpc_readw(card->hw.plxbase + card->hw.intctl_reg) & ~(0x0040));
 
 		for (i = 0; i < card->hw.nchan; i++) {
-			unregister_hdlc_device(card->chan[i].d.dev);
+			unregister_hdlc_device(card->chan[i].d.netdev);
+			free_netdev(card->chan[i].d.netdev);
 		}
 		iounmap(card->hw.plxbase);
 		iounmap(card->hw.scabase);
@@ -3641,13 +4106,9 @@ static void __devexit cpc_remove_one(str
 			iounmap(card->hw.falcbase);
 			release_mem_region(card->hw.falcphys, card->hw.falcsize);
 		}
-		for (i = 0; i < card->hw.nchan; i++)
-			if (card->chan[i].d.dev)
-				free_netdev(card->chan[i].d.dev);
 		if (card->hw.irq)
 			free_irq(card->hw.irq, card);
 		kfree(card);
-		pci_disable_device(pdev);
 	}
 }
 
diff -Npur -X linux-2.6.36/Documentation/dontdiff linux-2.6.36/drivers/net/wan/pc300_tty.c linux-2.6.36-pc300/drivers/net/wan/pc300_tty.c
--- linux-2.6.36/drivers/net/wan/pc300_tty.c	2010-10-20 13:30:22.000000000 -0700
+++ linux-2.6.36-pc300/drivers/net/wan/pc300_tty.c	2010-10-23 01:31:35.000000000 -0700
@@ -3,7 +3,7 @@
  *
  * Author:	Regina Kodato <reginak@cyclades.com>
  *
- * Copyright:	(c) 1999-2002 Cyclades Corp.
+ * Copyright:	(c) 1999-2004 Cyclades Corp.
  *
  *	This program is free software; you can redistribute it and/or
  *  modify it under the terms of the GNU General Public License
@@ -50,6 +50,7 @@
 #include <linux/tty.h>
 #include <linux/tty_flip.h>
 #include <linux/serial.h>
+#include <linux/workqueue.h>
 
 #include <asm/io.h>
 #include <asm/uaccess.h>
@@ -153,7 +154,7 @@ static void cpc_tty_signal_off(pc300dev_
 	unsigned long flags; 
 
 	CPC_TTY_DBG("%s-tty: Clear signal %x\n",
-		pc300dev->dev->name, signal);
+		((struct net_device *)(pc300dev->hdlc))->name, signal);
 	CPC_TTY_LOCK(card, flags); 
 	cpc_writeb(card->hw.scabase + M_REG(CTL,ch), 
 		cpc_readb(card->hw.scabase+M_REG(CTL,ch))& signal);
@@ -171,7 +172,7 @@ static void cpc_tty_signal_on(pc300dev_t
 	unsigned long flags; 
 
 	CPC_TTY_DBG("%s-tty: Set signal %x\n",
-		pc300dev->dev->name, signal);
+		((struct net_device *)(pc300dev->hdlc))->name, signal);
 	CPC_TTY_LOCK(card, flags); 
 	cpc_writeb(card->hw.scabase + M_REG(CTL,ch), 
 		cpc_readb(card->hw.scabase+M_REG(CTL,ch))& ~signal);
@@ -204,22 +205,22 @@ static const struct tty_operations pc300
  */
 void cpc_tty_init(pc300dev_t *pc300dev)
 {
-	unsigned long port;
 	int aux;
+	long port;
 	st_cpc_tty_area * cpc_tty;
 
 	/* hdlcX - X=interface number */
-	port = pc300dev->dev->name[4] - '0';
+	port = ((struct net_device *)(pc300dev->hdlc))->name[4] - '0';
 	if (port >= CPC_TTY_NPORTS) {
 		printk("%s-tty: invalid interface selected (0-%i): %li",
-			pc300dev->dev->name,
+			((struct net_device *)(pc300dev->hdlc))->name,
 			CPC_TTY_NPORTS-1,port);
 		return;
 	}
 
 	if (cpc_tty_cnt == 0) { /* first TTY connection -> register driver */
 		CPC_TTY_DBG("%s-tty: driver init, major:%i, minor range:%i=%i\n",
-			pc300dev->dev->name,
+			((struct net_device *)(pc300dev->hdlc))->name,
 			CPC_TTY_MAJOR, CPC_TTY_MINOR_START,
 			CPC_TTY_MINOR_START+CPC_TTY_NPORTS);
 		/* initialize tty driver struct */
@@ -244,7 +245,7 @@ void cpc_tty_init(pc300dev_t *pc300dev)
 		/* register the TTY driver */
 		if (tty_register_driver(&serial_drv)) { 
 			printk("%s-tty: Failed to register serial driver! ",
-				pc300dev->dev->name);
+				((struct net_device *)(pc300dev->hdlc))->name);
 		   	return;
 		} 
 
@@ -256,7 +257,8 @@ void cpc_tty_init(pc300dev_t *pc300dev)
 	
 	if (cpc_tty->state != CPC_TTY_ST_IDLE) {
 		CPC_TTY_DBG("%s-tty: TTY port %i, already in use.\n",
-				pc300dev->dev->name, port);
+			    ((struct net_device *)(pc300dev->hdlc))->name,
+			    port);
 		return;
 	}
 
@@ -273,11 +275,11 @@ void cpc_tty_init(pc300dev_t *pc300dev)
 
 	pc300dev->cpc_tty = (void *)cpc_tty; 
 	
-	aux = strlen(pc300dev->dev->name);
-	memcpy(cpc_tty->name, pc300dev->dev->name, aux);
+	aux = strlen(pc300dev->netdev->name);
+	memcpy(cpc_tty->name, pc300dev->netdev->name, aux);
 	memcpy(&cpc_tty->name[aux], "-tty", 5);
 	
-	cpc_open(pc300dev->dev);
+	cpc_open(pc300dev->netdev);
 	cpc_tty_signal_off(pc300dev, CTL_DTR);
 
 	CPC_TTY_DBG("%s: Initializing TTY Sync Driver, tty major#%d minor#%i\n",
@@ -410,7 +412,7 @@ static void cpc_tty_close(struct tty_str
 
 	CPC_TTY_DBG("%s: TTY closed\n",cpc_tty->name);
 	
-	if (!serial_drv.refcount && cpc_tty_unreg_flag) {
+	if (!cpc_tty_cnt && cpc_tty_unreg_flag) {
 		cpc_tty_unreg_flag = 0;
 		CPC_TTY_DBG("%s: unregister the tty driver\n", cpc_tty->name);
 		if ((res=tty_unregister_driver(&serial_drv))) { 
@@ -429,14 +431,16 @@ static void cpc_tty_close(struct tty_str
  * o verify the DCD signal
  * o send characters to board and start the transmission
  */
-static int cpc_tty_write(struct tty_struct *tty, const unsigned char *buf, int count)
+static int cpc_tty_write(struct tty_struct *tty,
+			const unsigned char *buf, int count)
 {
 	st_cpc_tty_area    *cpc_tty; 
 	pc300ch_t *pc300chan; 
 	pc300_t *card; 
 	int ch; 
 	unsigned long flags; 
-	struct net_device_stats *stats; 
+	struct net_device_stats *stats;
+	int from_user = 1;
 
 	if (!tty || !tty->driver_data ) { 
 		CPC_TTY_DBG("hdlcX-tty: no TTY in write\n");
@@ -455,10 +459,11 @@ static int cpc_tty_write(struct tty_stru
 		return -EINVAL;        /* frame too big */ 
 	}
 
-	CPC_TTY_DBG("%s: cpc_tty_write data len=%i\n",cpc_tty->name,count);
+	CPC_TTY_DBG("%s: cpc_tty_write %s data len=%i\n", cpc_tty->name,
+		(from_user) ? "from user" : "from kernel", count);
 	
 	pc300chan = (pc300ch_t *)((pc300dev_t*)cpc_tty->pc300dev)->chan; 
-	stats = &cpc_tty->pc300dev->dev->stats;
+	stats = &(cpc_tty->pc300dev->netdev->stats);
 	card = (pc300_t *) pc300chan->card;
 	ch = pc300chan->channel; 
 
@@ -482,10 +487,30 @@ static int cpc_tty_write(struct tty_stru
 		return -EINVAL; 
 	}
 
-	if (cpc_tty_send_to_card(cpc_tty->pc300dev, (void*)buf, count)) { 
-	   /* failed to send */
-	   CPC_TTY_DBG("%s: trasmition error\n", cpc_tty->name);
-	   return 0;
+	if (from_user) {
+		unsigned char *buf_tmp;
+
+		buf_tmp = cpc_tty->buf_tx;
+		if (copy_from_user(buf_tmp, buf, count)) {
+			/* failed to copy from user */
+			CPC_TTY_DBG("%s: error in copy from user\n"
+				    cpc_tty->name);
+			return -EINVAL;
+		}
+
+		if (cpc_tty_send_to_card(cpc_tty->pc300dev,
+					 (void *) buf_tmp, count)) {
+			/* failed to send */
+			CPC_TTY_DBG("%s: transmission error\n", cpc_tty->name);
+			return 0;
+		}
+	} else {
+		if (cpc_tty_send_to_card(cpc_tty->pc300dev,
+					 (void *)buf, count)) {
+			/* failed to send */
+			CPC_TTY_DBG("%s: trasmition error\n", cpc_tty->name);
+			return 0;
+		}
 	}
 	return count; 
 } 
@@ -619,7 +644,14 @@ static void cpc_tty_flush_buffer(struct 
 
 	CPC_TTY_DBG("%s: call wake_up_interruptible\n",cpc_tty->name);
 
-	tty_wakeup(tty);	
+	wake_up_interruptible(&tty->write_wait);
+
+	if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && tty->ldisc &&
+		tty->ldisc->ops && tty->ldisc->ops->write_wakeup){
+		CPC_TTY_DBG("%s: call line disc. wake up\n", cpc_tty->name);
+		tty->ldisc->ops->write_wakeup(tty);
+	}
+
 	return; 
 } 
 
@@ -646,7 +678,7 @@ static void cpc_tty_hangup(struct tty_st
 		CPC_TTY_DBG("%s: TTY is not opened\n",cpc_tty->name);
 		return ;
 	}
-	if (!serial_drv.refcount && cpc_tty_unreg_flag) {
+	if (!cpc_tty_cnt && cpc_tty_unreg_flag) {
 		cpc_tty_unreg_flag = 0;
 		CPC_TTY_DBG("%s: unregister the tty driver\n", cpc_tty->name);
 		if ((res=tty_unregister_driver(&serial_drv))) { 
@@ -667,11 +699,10 @@ static void cpc_tty_hangup(struct tty_st
 static void cpc_tty_rx_work(struct work_struct *work)
 {
 	st_cpc_tty_area *cpc_tty;
-	unsigned long port;
 	int i, j;
-	volatile st_cpc_rx_buf *buf;
+	unsigned long port;
+	st_cpc_rx_buf *buf;
 	char flags=0,flg_rx=1; 
-	struct tty_ldisc *ld;
 
 	if (cpc_tty_cnt == 0) return;
 	
@@ -685,16 +716,18 @@ static void cpc_tty_rx_work(struct work_
 			cpc_tty = &cpc_tty_area[port];
 		
 			if ((buf=cpc_tty->buf_rx.first) != NULL) {
-				if (cpc_tty->tty) {
-					ld = tty_ldisc_ref(cpc_tty->tty);
-					if (ld) {
-						if (ld->ops->receive_buf) {
-							CPC_TTY_DBG("%s: call line disc. receive_buf\n",cpc_tty->name);
-							ld->ops->receive_buf(cpc_tty->tty, (char *)(buf->data), &flags, buf->size);
-						}
-						tty_ldisc_deref(ld);
-					}
-				}	
+				if (cpc_tty->tty && cpc_tty->tty->ldisc &&
+				    cpc_tty->tty->ldisc->ops &&
+				    cpc_tty->tty->ldisc->ops->receive_buf) {
+					CPC_TTY_DBG(
+					  "%s: call line disc. receive_buf\n",
+					  cpc_tty->name);
+					cpc_tty->tty->
+					  ldisc->ops->
+					  receive_buf(cpc_tty->tty,
+						(char *)(buf->data),
+						&flags, buf->size);
+				}
 				cpc_tty->buf_rx.first = cpc_tty->buf_rx.first->next;
 				kfree((void *)buf);
 				buf = cpc_tty->buf_rx.first;
@@ -743,11 +776,11 @@ void cpc_tty_receive(pc300dev_t *pc300de
 	pc300_t *card = (pc300_t *)pc300chan->card; 
 	int ch = pc300chan->channel; 
 	volatile pcsca_bd_t  __iomem * ptdescr; 
-	struct net_device_stats *stats = &pc300dev->dev->stats;
+	struct net_device_stats *stats = &pc300dev->netdev->stats;
 	int rx_len, rx_aux; 
 	volatile unsigned char status; 
 	unsigned short first_bd = pc300chan->rx_first_bd;
-	st_cpc_rx_buf *new = NULL;
+	st_cpc_rx_buf *new;
 	unsigned char dsr_rx;
 
 	if (pc300dev->cpc_tty == NULL) { 
@@ -776,7 +809,6 @@ void cpc_tty_receive(pc300dev_t *pc300de
 				cpc_writel(card->hw.scabase + DRX_REG(EDAL, ch), 
 						RX_BD_ADDR(ch, pc300chan->rx_last_bd)); 
 			}
-			kfree(new);
 			return; 
 		}
 		
@@ -822,8 +854,7 @@ void cpc_tty_receive(pc300dev_t *pc300de
 						cpc_tty->name);
 				cpc_tty_rx_disc_frame(pc300chan);
 				rx_len = 0;
-				kfree(new);
-				new = NULL;
+				kfree((unsigned char *)new);
 				break; /* read next frame - while(1) */
 			}
 
@@ -832,8 +863,7 @@ void cpc_tty_receive(pc300dev_t *pc300de
 				cpc_tty_rx_disc_frame(pc300chan);
 				stats->rx_dropped++; 
 				rx_len = 0; 
-				kfree(new);
-				new = NULL;
+				kfree((unsigned char *)new);
 				break; /* read next frame - while(1) */
 			}
 
@@ -901,7 +931,14 @@ static void cpc_tty_tx_work(struct work_
 		CPC_TTY_DBG("%s: the interface is not opened\n",cpc_tty->name);
 		return; 
 	}
-	tty_wakeup(tty);
+
+	if ((tty->flags & (1 << TTY_DO_WRITE_WAKEUP)) && tty->ldisc &&
+	     tty->ldisc->ops && tty->ldisc->ops->write_wakeup) {
+		CPC_TTY_DBG("%s:call line disc. wakeup\n", cpc_tty->name);
+		tty->ldisc->ops->write_wakeup(tty);
+	}
+
+	wake_up_interruptible(&tty->write_wait);
 }
 
 /*
@@ -917,7 +954,7 @@ static int cpc_tty_send_to_card(pc300dev
 	pc300ch_t *chan = (pc300ch_t *)dev->chan; 
 	pc300_t *card = (pc300_t *)chan->card; 
 	int ch = chan->channel; 
-	struct net_device_stats *stats = &dev->dev->stats;
+	struct net_device_stats *stats = &dev->netdev->stats;
 	unsigned long flags; 
 	volatile pcsca_bd_t __iomem *ptdescr; 
 	int i, nchar;
@@ -1001,18 +1038,19 @@ static void cpc_tty_trace(pc300dev_t *de
 
 	if ((skb = dev_alloc_skb(10 + len)) == NULL) { 
 		/* out of memory */ 
-		CPC_TTY_DBG("%s: tty_trace - out of memory\n", dev->dev->name);
+		CPC_TTY_DBG("%s: tty_trace - out of memory\n",
+			((struct net_device *)(dev->hdlc))->name);
 		return; 
 	}
 
 	skb_put (skb, 10 + len); 
-	skb->dev = dev->dev; 
+	skb->dev = (struct net_device *) dev->hdlc;
 	skb->protocol = htons(ETH_P_CUST); 
 	skb_reset_mac_header(skb);
 	skb->pkt_type = PACKET_HOST; 
 	skb->len = 10 + len; 
 
-	skb_copy_to_linear_data(skb, dev->dev->name, 5);
+	skb_copy_to_linear_data(skb, dev->netdev->name, 5);
 	skb->data[5] = '['; 
 	skb->data[6] = rxtx; 
 	skb->data[7] = ']'; 
@@ -1033,31 +1071,27 @@ void cpc_tty_unregister_service(pc300dev
 	ulong flags;
 	int res;
 
-	if ((cpc_tty= (st_cpc_tty_area *) pc300dev->cpc_tty) == NULL) {
-		CPC_TTY_DBG("%s: interface is not TTY\n", pc300dev->dev->name);
+	cpc_tty = (st_cpc_tty_area *) pc300dev->cpc_tty;
+	if (cpc_tty == NULL) {
+		CPC_TTY_DBG("%s: interface is not TTY\n",
+			((struct net_device *)(pc300dev->hdlc))->name);
 		return; 
 	}
 	CPC_TTY_DBG("%s: cpc_tty_unregister_service", cpc_tty->name);
 
 	if (cpc_tty->pc300dev != pc300dev) { 
 		CPC_TTY_DBG("%s: invalid tty ptr=%s\n", 
-		pc300dev->dev->name, cpc_tty->name);
+		((struct net_device *)(pc300dev->hdlc))->name, cpc_tty->name);
 		return; 
 	}
 
 	if (--cpc_tty_cnt == 0) { 
-		if (serial_drv.refcount) {
-			CPC_TTY_DBG("%s: unregister is not possible, refcount=%d",
-							cpc_tty->name, serial_drv.refcount);
-			cpc_tty_cnt++;
-			cpc_tty_unreg_flag = 1;
-			return;
-		} else { 
-			CPC_TTY_DBG("%s: unregister the tty driver\n", cpc_tty->name);
-			if ((res=tty_unregister_driver(&serial_drv))) { 
-				CPC_TTY_DBG("%s: ERROR ->unregister the tty driver error=%d\n",
-								cpc_tty->name,res);
-			}
+		CPC_TTY_DBG("%s: unregister the tty driver\n", cpc_tty->name);
+		res = tty_unregister_driver(&serial_drv);
+		if (res) {
+			CPC_TTY_DBG(
+				"%s: ERROR ->unregister the tty driver error=%d\n",
+				cpc_tty->name, res);
 		}
 	}
 	CPC_TTY_LOCK(pc300dev->chan->card,flags);

^ permalink raw reply

* Re: [rfc v2 00/10] ipvs network name space (netns) aware
From: Julian Anastasov @ 2010-10-23  9:04 UTC (permalink / raw)
  To: Simon Horman
  Cc: lvs-devel, netdev, netfilter-devel, Hans Schillstrom,
	Daniel Lezcano, Wensong Zhang
In-Reply-To: <20101022200934.822223308@joe.akashicho.tokyo.vergenet.net>


 	Hello,

On Fri, 22 Oct 2010, Simon Horman wrote:

> Hi Hans,
>
> this is a re-base of your patch-set against the current nf-next-2.6 tree,
> which includes all the changes currently queued for 2.6.37-rc1 and nothing
> else.
>
> I also removed the BUG_ON() statements and incorported various
> suggestions that were made in response to your original post.
>
> It is compile tested only (partly because I am in an areoplane).
>
> I have not re-split the patches into logical units.
> Having worked with these patches a bit, I really think
> that split needs to occur.
>
> For the benefit of others, your original cover email is below,
> updated as appropriate.
>
> -----
>
> This patch series adds network name space (netns) support to the LVS.
>
> REVISION
>
> This is version 2
>
> OVERVIEW
>
> The patch doesn't remove or add any functionality except for netns.
> For users that don't use network name space (netns) this patch is
> completely transparent.
>
> No it's possible to run LVS in a Linux container (see lxc-tools)
> i.e.  a light weight virtualization. For example it's possible to run
> one or several lvs on a real server in their own network name spaces.
>> From the LVS point of view it looks like it runs on it's own machine.
>
> IMPLEMENTATION
> Basic requirements for netns awareness
> - Global variables has to be moved to dyn. allocated memory.
>
> Most global variables now resides in a struct ipvs { } in netns/ip_vs.h.
> What is moved and what is not ?
>
> Some cache aligned locks are still in global, module init params and some debug_level.
>
> Algorithm files they are untouched.
>
> QUESTIONS
> Drop rate in ip_vs_ctl per netns or grand total ?

 	If different containers can have different memory limit
we should restrict their memory with per-ns limits
and variables, i.e. DoS logic per-ns.

> Should more lock variables be moved (or less) ?
>
> Include files,
> A new file added include/net/netns/ip_vs.h containg all netns specific data.
> include/net/net_namespce.h, pointer to "struct ipvs"  added.
> include/net/ip_vs.h a new struct added, and many prototypes changed.
>
> * ip_vs_core.c
> All netns init origins from this file - ip_vs_init()
>
> * ip_vs_conn.c
> Lock array for conn table is kept due to performance,
> (or am I wrong here ?).
> "static struct ip_vs_aligned_lock
> __ip_vs_conntbl_lock_array[CT_LOCKARRAY_SIZE] __cacheline_aligned;"
>
> * ip_vs_ctl.c
> drop_ rate is still global

 	May be should be per-ns

> TESTING
> This patch have been running for a month now with three LVS/machine
> one in root name-space and two in other name-space.
> Both IPv4 & IPv6 have been tested in all three modes DR/TUN and NAT
> Only a limited set of algos have been used (read rr).
>
> Backup have been there all the time and a switch has been performed a couple of times.
>
> Not tested yet:
> Drop level, DOS,  schedulers, performance ....
> Netns exit after usage of LVS (due to a bug in netdev/ipip somewhere tunl0 and

 	Main points:

- May be we have to use global table for connections and to
filter by cp->net

- We have to use ip_vs_proto_data_get in many places where
pp = ip_vs_proto_get(protocol) was used. Then when pp
is needed we can use pd->pp->XXX

- tcp_timeout_change should work with the new struct ip_vs_proto_data
 	so that tcp_state_table will go to pd->state_table
 	and set_tcp_state will get pd instead of pp

- ipvs_skbnet must be used only for traffic after the
 	check for !skb_dst(skb)

 	Other notes:

rfc v2 01/10:
 	set_state_timeout: infrastructure is there but never added
 		to ipvsadm. If we keep it, it should be per-ns
 	Functions that can use cp->net and do not need argument:
 		ip_vs_conn_fill_cport
 		ip_vs_tcp_conn_listen
 		ip_vs_bind_app?
 		ip_vs_unbind_app

rfc v2 02/10

rfc v2 03/10
 	ip_vs_conn_hash: use cp->net
 	ip_vs_conn_unhash: use cp->net
 	ip_vs_conn_fill_param_proto: use ipvs_skbnet(skb)
 	ip_vs_conn_fill_cport: use cp->net
 	ip_vs_try_bind_dest: use cp->net
 	ip_vs_check_template: use ct->net
 	ip_vs_conn_new: assign cp->net from p->net early before
 		using it for ip_vs_bind_app, etc
 	Why not using global ip_vs_conn_tab[], we have cp->net

rfc v2 04/10
 	ip_vs_in_stats: use cp->net
 	ip_vs_out_stats: use cp->net
 	ip_vs_conn_stats: use cp->net
 	ip_vs_sched_persist: use ipvs_skbnet
 	ip_vs_schedule: use ipvs_skbnet
 	handle_response_icmp: use ipvs_skbnet
 	handle_response: use cp->net
 	ip_vs_out: assign net with ipvs_skbnet after
 		'if (unlikely(!skb_dst(skb)))' check
 	ip_vs_in: assign net with ipvs_skbnet before if-block for
 		ip_vs_in_icmp_v6 after skb_dst check
 	ip_vs_sync_conn: use cp->net

rfc v2 05/10
 	ipvs_skbnet will be used only from skbs containing traffic,
 		i.e. replace dev_net(skb->dev) with ipvs_skbnet(skb)
 		when used for traffic

rfc v2 06/10
 	sysctl_drop_entry is per net but update_defense_level
 		changes global ip_vs_dropentry?
 	ip_vs_protocol_timeout_change: where is net? It must call
 		pp->timeout_change for every struct ip_vs_proto_data
 	ip_vs_genl_dump_services: DO NOT USE ipvs_skbnet, may be
 		from skb->sk? sock_net(skb->sk) ?
 	ip_vs_genl_dump_dests: DO NOT USE ipvs_skbnet
 	ip_vs_genl_set_cmd: DO NOT USE ipvs_skbnet
 	ip_vs_genl_get_cmd: DO NOT USE ipvs_skbnet

rfc v2 07/10

rfc v2 08/10
 	ip_vs_ftp_out: use ipvs_skbnet
 	ip_vs_ftp_in: use ipvs_skbnet

rfc v2 09/10
 	register_ip_vs_proto_netns result is not checked in
 		__ip_vs_protocol_init
 	ah_esp_conn_in_get: use ipvs_skbnet
 	ah_esp_conn_out_get: use ipvs_skbnet
 	sctp_conn_schedule: use ipvs_skbnet
 	set_sctp_state: use cp->net
 	sctp_app_conn_bind: use cp->net
 	tcp_conn_schedule: use ipvs_skbnet
 	set_tcp_state: use cp->net
 	tcp_app_conn_bind: use cp->net
 	ip_vs_tcp_conn_listen: use cp->net
 	udp_conn_schedule: use ipvs_skbnet
 	udp_app_conn_bind: use cp->net
 	udp_state_transition: use cp->net

rfc v2 10/10
 	ip_vs_sync_conn: use cp->net
 	ip_vs_nat_xmit*: ip_vs_conn_fill_cport should use cp->net

Regards

--
Julian Anastasov <ja@ssi.bg>

^ permalink raw reply

* Re: [rfc v2 00/10] ipvs network name space (netns) aware
From: Hans Schillstrom @ 2010-10-23  8:44 UTC (permalink / raw)
  To: Simon Horman
  Cc: lvs-devel, netdev, netfilter-devel, Hans Schillstrom,
	Julian Anastasov, Daniel Lezcano, Wensong Zhang
In-Reply-To: <20101022200934.822223308@joe.akashicho.tokyo.vergenet.net>

Hi Simon
Thanx a lot. for your work, I will use this a the new base

On Friday, October 22, 2010 22:09:34 Simon Horman wrote:
> Hi Hans,
> 
> this is a re-base of your patch-set against the current nf-next-2.6 tree,
> which includes all the changes currently queued for 2.6.37-rc1 and nothing
> else.
> 
> I also removed the BUG_ON() statements and incorported various
> suggestions that were made in response to your original post.
> 
> It is compile tested only (partly because I am in an areoplane).
> 
> I have not re-split the patches into logical units.
> Having worked with these patches a bit, I really think
> that split needs to occur.

Daniel  will help me with that, i.e. we will split the work between us.
The plan is to do it in small steps

> 
> For the benefit of others, your original cover email is below,
> updated as appropriate.
> 
> -----
> 
> This patch series adds network name space (netns) support to the LVS.
> 
> REVISION
> 
> This is version 2
> 
> OVERVIEW
> 
> The patch doesn't remove or add any functionality except for netns.
> For users that don't use network name space (netns) this patch is
> completely transparent.
> 
> No it's possible to run LVS in a Linux container (see lxc-tools)
> i.e.  a light weight virtualization. For example it's possible to run
> one or several lvs on a real server in their own network name spaces.
> >From the LVS point of view it looks like it runs on it's own machine.
> 
> IMPLEMENTATION
> Basic requirements for netns awareness
>  - Global variables has to be moved to dyn. allocated memory.
> 
> Most global variables now resides in a struct ipvs { } in netns/ip_vs.h.
> What is moved and what is not ?
> 
> Some cache aligned locks are still in global, module init params and some debug_level.
> 
> Algorithm files they are untouched.
> 
> QUESTIONS
> Drop rate in ip_vs_ctl per netns or grand total ?
> Should more lock variables be moved (or less) ?
> 
> Include files,
> A new file added include/net/netns/ip_vs.h containg all netns specific data.
> include/net/net_namespce.h, pointer to "struct ipvs"  added.
> include/net/ip_vs.h a new struct added, and many prototypes changed.
> 
> * ip_vs_core.c
> All netns init origins from this file - ip_vs_init()
> 
> * ip_vs_conn.c
> Lock array for conn table is kept due to performance,
> (or am I wrong here ?).
> "static struct ip_vs_aligned_lock
> __ip_vs_conntbl_lock_array[CT_LOCKARRAY_SIZE] __cacheline_aligned;"
> 
> * ip_vs_ctl.c
> drop_ rate is still global
> 
> TESTING
> This patch have been running for a month now with three LVS/machine
> one in root name-space and two in other name-space.
> Both IPv4 & IPv6 have been tested in all three modes DR/TUN and NAT
> Only a limited set of algos have been used (read rr).
> 
> Backup have been there all the time and a switch has been performed a couple of times.
> 
> Not tested yet:
>  Drop level, DOS,  schedulers, performance ....
>  Netns exit after usage of LVS (due to a bug in netdev/ipip somewhere tunl0 and
> 
> --
> To unsubscribe from this list: send the line "unsubscribe lvs-devel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
-- 
Mvh
Hasse Schillstrom <hans@schillstrom.com>


^ permalink raw reply

* Re: kernel panic in fib_rules_lookup [2.6.27.7 vendor-patched]
From: Eric Dumazet @ 2010-10-23  3:44 UTC (permalink / raw)
  To: Joe Buehler; +Cc: netdev
In-Reply-To: <4CC1F47C.9020104@cox.net>

Le vendredi 22 octobre 2010 à 16:30 -0400, Joe Buehler a écrit :
> Eric Dumazet wrote:
> 
> > Could you provide a disassembly of function fib_rules_lookup ?
> 
> Try looking in http://68.100.141.95:3000/linux-crash/.  There should be
> the source file I am using (not current release if you recall), the .o,
> the disassembly, and a -S compile that makes deducing the line numbers a
> little easier.
> 

Hmm, I'll take a look sometime in the future, thanks

> I have tried adding a recursive spinlock as a quick fix without much
> success.  It looks like the code in net/core/fib_rules.c results in some
> rather complex code paths through the kernel involving softirq handlers.
>  I get lockups though I took steps to make sure local interrupts were
> off and preemption disabled when taking the spinlock.
> 
> I do not know the RCU API or the network code at all but some of the
> code in fib_rules.c does not look right prima facie.  For example,
> dump_rules does not seem to bother about RCU when traversing rules_list.
>  Its caller, fib_nl_dumprule does, but only for one of two calls.  The
> fib_nl_newrule and fib_nl_delrule functions traverse rules_list without
> any obvious RCU precautions.

There is no obligation RCU shall be used in a slow path algorithm.

This slow path uses regular locking to prevent another process to change
the things while we read them, thats it.

Patrick made a change in the past so that RTNL is locked on dump
operations, so no dump_rules() is in fact protected by RTNL, it doesnt
need to take care of 'RCU'.

Thanks




^ permalink raw reply

* Re: linux-next: manual merge of the bkl-llseek tree with the wireless tree
From: Stephen Rothwell @ 2010-10-23  3:23 UTC (permalink / raw)
  To: John W. Linville, David Miller, netdev
  Cc: linux-next, linux-kernel, Arnd Bergmann, Felix Fietkau, Linus
In-Reply-To: <20101018173543.c33530e9.sfr@canb.auug.org.au>

Hi John, Dave,

On Mon, 18 Oct 2010 17:35:43 +1100 Stephen Rothwell <sfr@canb.auug.org.au> wrote:
>
> Today's linux-next merge of the bkl-llseek tree got a conflict in
> drivers/net/wireless/ath/ath9k/debug.c between commit
> 772d5515635fef5bc7a9d0efee785b58b0181ee5 ("ath9k: make rate control
> debugfs stats per station") from the wireless tree and commit
> 6038f373a3dc1f1c26496e60b6c40b164716f07e ("llseek: automatically
> add .llseek fop") from the bkl-llseek tree.
> 
> The former moved some of the code modified by the latter to another file.
> 
> I added this merge fix patch:

This patch (reproduced below) will now be needed if the wireless or net
tree is merged with Linus' tree.  I also think I have missed a similar
needed fix in drivers/net/wireless/ath/ath5k/debug.c ...

-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au
http://www.canb.auug.org.au/~sfr/

From: Stephen Rothwell <sfr@canb.auug.org.au>
Date: Mon, 18 Oct 2010 17:33:25 +1100
Subject: [PATCH] ath9k: fix up for .llseek fop change

Signed-off-by: Stephen Rothwell <sfr@canb.auug.org.au>
---
 drivers/net/wireless/ath/ath9k/rc.c |    3 ++-
 1 files changed, 2 insertions(+), 1 deletions(-)

diff --git a/drivers/net/wireless/ath/ath9k/rc.c b/drivers/net/wireless/ath/ath9k/rc.c
index 0cee90c..e4c1ea3 100644
--- a/drivers/net/wireless/ath/ath9k/rc.c
+++ b/drivers/net/wireless/ath/ath9k/rc.c
@@ -1582,7 +1582,8 @@ static ssize_t read_file_rcstat(struct file *file, char __user *user_buf,
 static const struct file_operations fops_rcstat = {
 	.read = read_file_rcstat,
 	.open = ath9k_debugfs_open,
-	.owner = THIS_MODULE
+	.owner = THIS_MODULE,
+	.llseek = default_llseek,
 };
 
 static void ath_rate_add_sta_debugfs(void *priv, void *priv_sta,
-- 
1.7.1

^ permalink raw reply related

* Re: [PATCH] af_packet: account for VLAN when checking packet size
From: Simon Horman @ 2010-10-22  8:41 UTC (permalink / raw)
  To: David Miller; +Cc: mst, eric.dumazet, netdev, johann.baudy
In-Reply-To: <20101012.104032.71103852.davem@davemloft.net>

On Tue, Oct 12, 2010 at 10:40:32AM -0700, David Miller wrote:
> From: "Michael S. Tsirkin" <mst@redhat.com>
> Date: Tue, 12 Oct 2010 19:19:41 +0200
> 
> > Yes, like eth_type_trans does I guess.  I think we had a similar
> > discussion already:
> > 
> > http://lists.openwall.net/netdev/2010/01/06/38
> > 
> > Summary: if we want to make the protocol field have the correct
> > value for this case we need to make it work for other
> > transports not just for ethernet.
> 
> Right, so for now we should just allow 4-byte larger
> than MTU TX packets, as long as the device is ethernet
> and can handle VLANs properly.

Incidently, I believe that this problem will only become more acute
and complex if support for 802.1ad (Provider Bridges, aka Q-in-Q),
802.1ah (Provider Backbone Bridges, aka MAC-in-MAC) or other standards
which further extend the maximum frame size.

Dave, you were mentioning to me the other day that the kernel
already supports some notion of Q-in-Q (though its not 802.1ad).
Does the current implementation allow for frames > 1504 bytes?
Is that a complication to the change proposed here?


^ permalink raw reply

* [rfc v2 05/10] ipvs: Add ipvs_skbnet
From: Simon Horman @ 2010-10-22 20:09 UTC (permalink / raw)
  To: lvs-devel, netdev, netfilter-devel
  Cc: Hans Schillstrom, Julian Anastasov, Daniel Lezcano, Wensong Zhang
In-Reply-To: <20101022200934.822223308@joe.akashicho.tokyo.vergenet.net>

[-- Attachment #1: ipvs_skbnet.patch --]
[-- Type: text/plain, Size: 648 bytes --]

As suggested by Julian Anastasov

Cc: Julian Anastasov <ja@ssi.bg>
Signed-off-by: Simon Horman <horms@verge.net.au>

Index: lvs-test-2.6/include/net/ip_vs.h
===================================================================
--- lvs-test-2.6.orig/include/net/ip_vs.h	2010-10-22 21:16:52.000000000 +0200
+++ lvs-test-2.6/include/net/ip_vs.h	2010-10-22 21:16:56.000000000 +0200
@@ -1097,6 +1097,11 @@ static inline void ip_vs_conn_drop_connt
 /* CONFIG_IP_VS_NFCT */
 #endif
 
+static inline struct net *ipvs_skbnet(struct sk_buff *skb)
+{
+	return dev_net(skb->dev ? : skb_dst(skb)->dev);
+}
+
 #endif /* __KERNEL__ */
 
 #endif	/* _NET_IP_VS_H */


^ permalink raw reply

* [rfc v2 00/10] ipvs network name space (netns) aware
From: Simon Horman @ 2010-10-22 20:09 UTC (permalink / raw)
  To: lvs-devel, netdev, netfilter-devel
  Cc: Hans Schillstrom, Julian Anastasov, Daniel Lezcano, Wensong Zhang

Hi Hans,

this is a re-base of your patch-set against the current nf-next-2.6 tree,
which includes all the changes currently queued for 2.6.37-rc1 and nothing
else.

I also removed the BUG_ON() statements and incorported various
suggestions that were made in response to your original post.

It is compile tested only (partly because I am in an areoplane).

I have not re-split the patches into logical units.
Having worked with these patches a bit, I really think
that split needs to occur.

For the benefit of others, your original cover email is below,
updated as appropriate.

-----

This patch series adds network name space (netns) support to the LVS.

REVISION

This is version 2

OVERVIEW

The patch doesn't remove or add any functionality except for netns.
For users that don't use network name space (netns) this patch is
completely transparent.

No it's possible to run LVS in a Linux container (see lxc-tools)
i.e.  a light weight virtualization. For example it's possible to run
one or several lvs on a real server in their own network name spaces.
>From the LVS point of view it looks like it runs on it's own machine.

IMPLEMENTATION
Basic requirements for netns awareness
 - Global variables has to be moved to dyn. allocated memory.

Most global variables now resides in a struct ipvs { } in netns/ip_vs.h.
What is moved and what is not ?

Some cache aligned locks are still in global, module init params and some debug_level.

Algorithm files they are untouched.

QUESTIONS
Drop rate in ip_vs_ctl per netns or grand total ?
Should more lock variables be moved (or less) ?

Include files,
A new file added include/net/netns/ip_vs.h containg all netns specific data.
include/net/net_namespce.h, pointer to "struct ipvs"  added.
include/net/ip_vs.h a new struct added, and many prototypes changed.

* ip_vs_core.c
All netns init origins from this file - ip_vs_init()

* ip_vs_conn.c
Lock array for conn table is kept due to performance,
(or am I wrong here ?).
"static struct ip_vs_aligned_lock
__ip_vs_conntbl_lock_array[CT_LOCKARRAY_SIZE] __cacheline_aligned;"

* ip_vs_ctl.c
drop_ rate is still global

TESTING
This patch have been running for a month now with three LVS/machine
one in root name-space and two in other name-space.
Both IPv4 & IPv6 have been tested in all three modes DR/TUN and NAT
Only a limited set of algos have been used (read rr).

Backup have been there all the time and a switch has been performed a couple of times.

Not tested yet:
 Drop level, DOS,  schedulers, performance ....
 Netns exit after usage of LVS (due to a bug in netdev/ipip somewhere tunl0 and


^ permalink raw reply


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox