Netdev List
 help / color / mirror / Atom feed
* Re: [PATCH] net: allow netdev_wait_allrefs() to run faster
From: Eric W. Biederman @ 2009-10-30  1:45 UTC (permalink / raw)
  To: Benjamin LaHaise; +Cc: Eric Dumazet, Octavian Purdila, netdev, Cosmin Ratiu
In-Reply-To: <20091029233848.GV3141@kvack.org>

Benjamin LaHaise <bcrl@lhnet.ca> writes:

> On Thu, Oct 29, 2009 at 04:07:18PM -0700, Eric W. Biederman wrote:
>> Could you keep me in the loop with that.  I have some pending cleanups for
>> all of those pieces of code and may be able to help/advice/review.
>
> Here are the sysfs scaling improvements.  I have to break them up, as there 
> are 3 separate changes in this patch: 1. use an rbtree for name lookup in 
> sysfs, 2. keep track of the number of directories for the purpose of 
> generating the link count, as otherwise too much cpu time is spent in 
> sysfs_count_nlink when new entries are added, and 3. when adding a new 
> sysfs_dirent, walk the list backwards when linking it in, as higher 
> numbered inodes tend to be at the end of the list, not the beginning.

The reason for the existence of sysfs_dirent is as things grow larger
we want to keep the amount of RAM consumed down.  So we don't pin
everything in the dcache.  So we try and keep the amount of memory
consumed down.

So I would like to see how much we can par down.

For dealing with seeks in the middle of readdir I expect the best way
to do that is to be inspired by htrees in extNfs and return a hash of
the filename as our position, and keep the filename list sorted by
that hash.  Since we are optimizing for size we don't need to store
that hash.  Then we can turn that list into a some flavor of sorted
binary tree.

I'm surprised sysfs_count_nlink shows up, as it is not directly on the
add or remove path.  I think the answer there is to change s_flags
into a set of bitfields and make link_count one of them, perhaps
16bits long.  If we ever overflow our bitfield we can just set link
count to 0, and userspace (aka find) will know it can't optimized
based on link count.

I was expecting someone to run into problems with the linear directory
of sysfs someday.

Eric


^ permalink raw reply

* Re: wanPMC-CxT1E1
From: Krzysztof Halasa @ 2009-10-30  1:52 UTC (permalink / raw)
  To: Bob Beers; +Cc: Greg KH, netdev
In-Reply-To: <4f6ba3b0910271048n10ff37fek9af191b133892e1e@mail.gmail.com>

Bob Beers <bob.beers@gmail.com> writes:

> ok, so where do I start, I have a system ready to start
>  git cloning, and creating patches. I googled for a while
>  but didn't find a nice recipe for participating in the -staging
>  process.

I gave it a try. At least compiles with few warnings. Not sure about the
WORK_INIT() change.

Created drivers/net/wan/cxt1e1, moved all relevant SBE's .c and .h
there, added a simple Makefile/Kconfig. Quick and dirty. There is a
_lot_ of work to be done before it meets the usual kernel standards.

It's not in staging/ so the paths need to be corrected but I can't work
further on it at this time. Hand-edited but I tried to be careful.

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>

 drivers/net/wan/Kconfig         |   22 ++++++++++++++++++++++
 drivers/net/wan/Makefile        |    1 +
 drivers/net/wan/cxt1e1/Makefile |    3 +++
 drivers/net/wan/cxt1e1/functions.c           |  117 +----
 drivers/net/wan/cxt1e1/hwprobe.c             |   30 +-
 drivers/net/wan/cxt1e1/libsbew.h             |    4 -
 drivers/net/wan/cxt1e1/linux.c               |  631 +++++++------------------
 drivers/net/wan/cxt1e1/musycc.c              |  237 +----------
 drivers/net/wan/cxt1e1/musycc.h              |   51 +--
 drivers/net/wan/cxt1e1/pmcc4_defs.h          |   28 +--
 drivers/net/wan/cxt1e1/pmcc4_drv.c           |  114 +-----
 drivers/net/wan/cxt1e1/pmcc4_private.h       |   34 +--
 drivers/net/wan/cxt1e1/pmcc4_sysdep.h        |   77 +---
 drivers/net/wan/cxt1e1/sbecom_inline_linux.h |   65 +---
 drivers/net/wan/cxt1e1/sbeid.c               |   38 +--
 drivers/net/wan/cxt1e1/sbeproc.c             |   70 +---
 drivers/net/wan/cxt1e1/sbeproc.h             |   39 +--

diff --git a/drivers/net/wan/Kconfig b/drivers/net/wan/Kconfig
index d08ce6a..0c3c761 100644
--- a/drivers/net/wan/Kconfig
+++ b/drivers/net/wan/Kconfig
@@ -342,6 +342,28 @@ config IXP4XX_HSS
 	  Say Y here if you want to use built-in HSS ports
 	  on IXP4xx processor.
 
+config CXT1E1
+	tristate "SBE wanPMC-C[421]T1E1 hardware support"
+	depends on HDLC && PCI
+	help
+	  This driver supports the SBE wanPMC-CxT1E1 1, 2 and 4 port T1
+	  channelized stream WAN adapter card which contains a HDLC/Transparent
+	  mode controller.
+
+	  To compile this driver as a module, choose M here: the
+	  module will be called cxt1e1.
+
+	  If unsure, say N.
+
+config SBE_PMCC4_NCOMM
+	bool "SBE PMCC4 NCOMM support"
+	depends on SBE_PMCC4
+	help
+          SBE supplies optional support for NCOMM products.
+
+	  If you have purchased this optional support you must say Y or M
+	  here to allow the driver to operate with the NCOMM product.
+
 config DLCI
 	tristate "Frame Relay DLCI support"
 	---help---
diff --git a/drivers/net/wan/Makefile b/drivers/net/wan/Makefile
index 19d14bc..1715c14 100644
--- a/drivers/net/wan/Makefile
+++ b/drivers/net/wan/Makefile
@@ -42,6 +42,7 @@ obj-$(CONFIG_WANXL)		+= wanxl.o
 obj-$(CONFIG_PCI200SYN)		+= pci200syn.o
 obj-$(CONFIG_PC300TOO)		+= pc300too.o
 obj-$(CONFIG_IXP4XX_HSS)	+= ixp4xx_hss.o
+obj-$(CONFIG_CXT1E1)		+= cxt1e1/
 
 clean-files := wanxlfw.inc
 $(obj)/wanxl.o:	$(obj)/wanxlfw.inc
diff --git a/drivers/net/wan/cxt1e1/Makefile b/drivers/net/wan/cxt1e1/Makefile
new file mode 100644
index 0000000..82b9118
--- /dev/null
+++ b/drivers/net/wan/cxt1e1/Makefile
@@ -0,0 +1,3 @@
+obj-$(CONFIG_CXT1E1) += cxt1e1.o
+
+cxt1e1-objs := comet.o comet_tables.o functions.o hwprobe.o linux.o musycc.o pmc93x6_eeprom.o pmcc4_drv.o sbecrc.o sbeid.o sbeproc.o
diff --git a/drivers/net/wan/cxt1e1/functions.c b/drivers/net/wan/cxt1e1/functions.c
index e490b5e..52581d7 100644
--- a/drivers/net/wan/cxt1e1/functions.c
+++ b/drivers/net/wan/cxt1e1/functions.c
@@ -1,10 +1,4 @@
 /*
- * $Id: functions.c,v 2.1 2007/08/15 21:59:46 rickd PMCC4_3_1B $
- */
-
-/*-----------------------------------------------------------------------------
- * functions.c -
- *
  * Copyright (C) 2003-2005  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -16,47 +10,15 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 2.1 $
- * Last changed on $Date: 2007/08/15 21:59:46 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: functions.c,v $
- * Revision 2.1  2007/08/15 21:59:46  rickd
- * Watchdog data address casting to *ULONG* for 64bit kernel compatibility.
- *
- * Revision 2.0  2005/09/28 00:10:05  rickd
- * Add inlining of functions. Use OS_ function-name prefix.
- *
- * Revision 1.3  2005/05/10 22:45:12  rickd
- * Add c4_sem_init().  Fix udelay for large delays which use mdelay()
- * and then udelay() for remnants and short delays per Linux documentation
- * suggestions that udelay() for long delays is not accurate.
- * CI prior to major code upgrade to standardize to 256T3 code model.
- *
- * Revision 1.2  2005/04/28 23:54:48  rickd
- * Add RCS tracking header.
- *
- *-----------------------------------------------------------------------------
  */
 
-char        SBEid_pmcc4_functionsc[] =
-"@(#)functions.c - $Revision: 2.1 $      (c) Copyright 2002-2005 SBE, Inc.";
-
-
-#include "pmcc4_sysdep.h"
 #include <linux/slab.h>
-#include <asm/io.h>
-#include <asm/byteorder.h>
-#include <asm/semaphore.h>
 #include <linux/netdevice.h>
 #include <linux/delay.h>
 #include <linux/hdlc.h>
-
+#include <asm/io.h>
+#include <asm/byteorder.h>
+#include "pmcc4_sysdep.h"
 #include "sbecom_inline_linux.h"
 #include "libsbew.h"
 #include "pmcc4.h"
@@ -159,41 +121,22 @@ watchdog_func (unsigned long arg)
             printk (KERN_WARNING "watchdog_func: drvr not available (%x)\n", drvr_state);
         return;
     }
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    /* Initialize the tq entry only the first time */
-    if (wd->init_tq)
-    {
-        wd->init_tq = 0;
-        wd->tq.routine = wd->func;
-        wd->tq.sync = 0;
-        wd->tq.data = wd->softc;
-    }
-    schedule_task (&wd->tq);
-#else
     schedule_work (&wd->work);
-#endif
     mod_timer (&wd->h, jiffies + wd->ticks);
 }
 
-int         OS_init_watchdog (struct watchdog * wdp, void (*f) (void *), void *c, int usec)
+int OS_init_watchdog(struct watchdog *wdp, void (*f)(struct work_struct *),
+		     void *c, int usec)
 {
-    wdp->func = f;
-    wdp->softc = c;
-    wdp->ticks = (HZ) * (usec / 1000) / 1000;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    wdp->init_tq = 1;               /* initialize the tq entry only the first
-                                     * time */
-#else
-    INIT_WORK (&wdp->work, f, c);
-#endif
-    init_timer (&wdp->h);
-    {
-        ci_t       *ci = (ci_t *) c;
-
+	ci_t *ci = (ci_t *)c;
+	wdp->func = f;
+	wdp->softc = c;
+	wdp->ticks = (HZ) * (usec / 1000) / 1000;
+	INIT_WORK(&wdp->work, f);
+	init_timer(&wdp->h);
         wdp->h.data = (unsigned long) &ci->wd;
-    }
-    wdp->h.function = watchdog_func;
-    return 0;
+	wdp->h.function = watchdog_func;
+	return 0;
 }
 
 void
@@ -303,35 +246,15 @@ sd_queue_stopped (void *user)
     return (netif_queue_stopped (ndev));
 }
 
-void
-sd_recv_consume (void *token, size_t len, void *user)
+void sd_recv_consume(void *token, size_t len, void *user)
 {
-    struct net_device *ndev = user;
-    struct sk_buff *skb = token;
-
-    skb->dev = ndev;
-    ndev->last_rx = jiffies;
-    skb_put (skb, len);
-    skb->mac.raw = skb->data;
-#if !defined(GENERIC_HDLC_VERSION) || (GENERIC_HDLC_VERSION < 4)
-    V7 (hdlc_netif_rx) (dev_to_hdlc (ndev), skb);
-#else
-#ifdef CONFIG_SBE_HDLC_V20
-    /*
-     * hdlc implementation under 2.4.20 seems to contain an interim <hdlc>
-     * stack
-     */
-    skb->protocol = htons (ETH_P_HDLC);
-#else
-    /*
-     * hdlc implementation under 2.4.21+ seems to contain an augmented <hdlc>
-     * stack whereby linux/hdlc.h contains the following "inline" routine
-     */
+	struct sk_buff *skb = token;
+	struct net_device *dev = user;
 
-    skb->protocol = hdlc_type_trans (skb, ndev);
-#endif
-    netif_rx (skb);
-#endif
+	skb->dev = dev;
+	skb_put(skb, len);
+	skb->protocol = hdlc_type_trans(skb, dev);
+	netif_rx(skb);
 }
 
 
diff --git a/drivers/net/wan/cxt1e1/hwprobe.c b/drivers/net/wan/cxt1e1/hwprobe.c
index 8f5b1d1..8b5d955 100644
--- a/drivers/net/wan/cxt1e1/hwprobe.c
+++ b/drivers/net/wan/cxt1e1/hwprobe.c
@@ -107,7 +107,7 @@ show_two (hdw_info_t * hi, int brdno)
     bp = banner;
     memset (banner, 0, 80);         /* clear print buffer */
 
-    ci = (ci_t *) hi->ndev->priv;
+    ci = netdev_priv(hi->ndev);
     bid = sbeid_get_bdname (ci);
     switch (hi->promfmt)
     {
@@ -243,27 +243,25 @@ cleanup_ioremap (void)
 }
 
 
-void
-cleanup_devs (void)
+void cleanup_devs(void)
 {
-    hdw_info_t *hi;
-    int         i;
+	hdw_info_t *hi;
+	int i;
 
-    for (i = 0, hi = hdw_info; i < MAX_BOARDS; i++, hi++)
-    {
-        if (hi->pci_slot == 0xff || !hi->ndev)
-            break;
-        c4_stopwd (hi->ndev->priv);
+	for (i = 0, hi = hdw_info; i < MAX_BOARDS; i++, hi++) {
+		if (hi->pci_slot == 0xff || !hi->ndev)
+			break;
+		c4_stopwd(netdev_priv(hi->ndev));
 #ifdef CONFIG_PROC_FS
-        sbecom_proc_brd_cleanup (hi->ndev->priv);
+		sbecom_proc_brd_cleanup(netdev_priv(hi->ndev));
 #endif
-        unregister_netdev (hi->ndev);
-        free_irq (hi->pdev[0]->irq, hi->ndev);
+		unregister_netdev(hi->ndev);
+		free_irq (hi->pdev[0]->irq, hi->ndev);
 #ifdef CONFIG_SBE_PMCC4_NCOMM
-        free_irq (hi->pdev[1]->irq, hi->ndev);
+		free_irq(hi->pdev[1]->irq, hi->ndev);
 #endif
-        OS_kfree (hi->ndev);
-    }
+		OS_kfree(hi->ndev);
+	}
 }
 
 
diff --git a/drivers/net/wan/cxt1e1/libsbew.h b/drivers/net/wan/cxt1e1/libsbew.h
index 5c99646..359a36a 100644
--- a/drivers/net/wan/cxt1e1/libsbew.h
+++ b/drivers/net/wan/cxt1e1/libsbew.h
@@ -232,9 +232,7 @@ struct sbecom_port_param
     u_int8_t    portP;          /* more port parameters (clock source - 0x80;
                                  * and LBO - 0xf; */
                                 /* bits 0x70 are reserved for future use ) */
-#ifdef SBE_PMCC4_ENABLE
 	u_int32_t   hypersize;  /* RLD DEBUG - add this in until I learn how to make this entry obsolete */
-#endif
     int         reserved[3-1];    /* reserved for future use */
     int    _res[4];
 };
@@ -271,11 +269,9 @@ struct sbecom_port_param
     struct sbecom_chan_param
     {
         u_int32_t   channum;    /* 0: */
-#ifdef SBE_PMCC4_ENABLE
 	u_int32_t   card;  /* RLD DEBUG - add this in until I learn how to make this entry obsolete */
 	u_int32_t   port;  /* RLD DEBUG - add this in until I learn how to make this entry obsolete */
 	u_int8_t bitmask[32];
-#endif
         u_int32_t   intr_mask;  /* 4: interrupt mask, specify ored
                                  * (SS7_)INTR_* to disable */
         u_int8_t    status;     /* 8: channel transceiver status (TX_ENABLED,
diff --git a/drivers/net/wan/cxt1e1/linux.c b/drivers/net/wan/cxt1e1/linux.c
index a8d6784..de33908 100644
--- a/drivers/net/wan/cxt1e1/linux.c
+++ b/drivers/net/wan/cxt1e1/linux.c
@@ -1,11 +1,4 @@
-/*
- * $Id: linux.c,v 2.11 2008/01/03 20:53:03 rdobbs PMCC4_3_1B $
- */
-
-/*-----------------------------------------------------------------------------
- * linux.c -
- *
- * Copyright (C) 2007-2008  One Stop Systems
+/* Copyright (C) 2007-2008  One Stop Systems
  * Copyright (C) 2003-2006  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -17,86 +10,17 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@onestopsystems.com
- * One Stop Systems  Escondido, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 2.11 $
- * Last changed on $Date: 2008/01/03 20:53:03 $
- * Changed by $Author: rdobbs $
- *-----------------------------------------------------------------------------
- * $Log: linux.c,v $
- * Revision 2.11  2008/01/03 20:53:03  rdobbs
- * Release string name from SBE to OSSI.
- *
- * Revision 2.10  2007/08/15 22:04:02  rickd
- * Correct casting to *ULONG* w/in do_reset() to support 64bit compatibility.
- *
- * Revision 2.9  2007/05/02 22:50:19  rickd
- * Add GCC compiler checks from kernel's init/main.c
- *
- * Revision 2.8  2006/04/21 00:56:40  rickd
- * workqueue files now prefixed with <sbecom> prefix.
- *
- * Revision 2.7  2005/11/03 00:03:26  rickd
- * Routine c4_add_dev() can be declared __init.
- *
- * Revision 2.6  2005/11/02 23:48:22  rickd
- * Routine create_chan() was erroneoulsy declared __init, which is causing
- * panic under 2.6.13 as code is correctly removed from kernel space due
- * to the declaration (so removed declaration).
- *
- * Revision 2.5  2005/11/01 19:23:48  rickd
- * Add sanity checks against max_port for ioctl functions.
- * Several functions should return status_t for consistant usage of same.
- *
- * Revision 2.4  2005/10/27 18:54:18  rickd
- * Return c4_chan_up() failure code.  Clean out old code.
- *
- * Revision 2.3  2005/10/17 23:55:27  rickd
- * Initial port of NCOMM support patches from original work found
- * in pmc_c4t1e1 as updated by NCOMM.  Ref: CONFIG_SBE_PMCC4_NCOMM.
- * Added cleanup w/in c4_add_dev() if c4_init2() fails.
- *
- * Revision 2.2  2005/10/13 20:36:28  rickd
- * Fix compiler warning causaed by mixing code/declarations of <priv>.
- *
- * Revision 2.1  2005/10/11 18:35:15  rickd
- * Remove option ifname, it's not supported by the system's hdlc driver
- * which explicitly names interface only <hdlc>.
- *
- * Revision 2.0  2005/09/28 00:10:06  rickd
- * Implement 2.6 workqueue for TX/RX restart. Use board's
- * serial number.
- *
- * Revision 1.4  2005/08/12 17:47:03  rickd
- * Major rewrite including MUSYCC bug fix updates.
- *
- * Revision 1.3  2005/05/10 22:40:54  rickd
- * Start switch to common structure variable names and routines.
- * Switch to THIS_MODULE usage in printks to handle alternate driver names.
- *
- * Revision 1.2  2005/04/28 23:54:48  rickd
- * Add RCS tracking header.
- *
- *-----------------------------------------------------------------------------
  */
 
-char        OSSIid_pmcc4_linuxc[] =
-"@(#)linux.c - $Revision: 2.11 $   (c) Copyright 2008 One Stop Systems";
-
-
 #include <linux/types.h>
-#include "pmcc4_sysdep.h"
 #include <linux/netdevice.h>
 #include <linux/hdlc.h>
 #include <linux/if_arp.h>
 #include <linux/init.h>
-#include <asm/uaccess.h>
 #include <linux/rtnetlink.h>
 #include <linux/skbuff.h>
-
+#include <asm/uaccess.h>
+#include "pmcc4_sysdep.h"
 #include "sbecom_inline_linux.h"
 #include "libsbew.h"
 #include "pmcc4.h"
@@ -139,7 +63,6 @@ status_t    c4_chan_work_init (mpi_t *, mch_t *);
 void        musycc_wq_chan_restart (void *);
 status_t __init c4_init (ci_t *, u_char *, u_char *);
 status_t __init c4_init2 (ci_t *);
-ci_t       *__init c4_new (void *);
 int __init  c4hw_attach_all (void);
 void __init hdw_sn_get (hdw_info_t *, int);
 
@@ -160,7 +83,7 @@ status_t    musycc_chan_down (ci_t *, int);
 irqreturn_t musycc_intr_th_handler (void *);
 int         musycc_start_xmit (ci_t *, int, void *);
 
-extern char pmcc4_OSSI_release[];
+static const char pmcc4_OSSI_release[] = "based on PMCC4_3_1B";
 extern ci_t *CI;
 extern struct s_hdw_info hdw_info[];
 
@@ -185,24 +108,23 @@ extern int  unregister_hdlc_device_v7 (hdlc_device *);
 int         error_flag;         /* module load error reporting */
 int         log_level = LOG_ERROR;
 int         log_level_default = LOG_ERROR;
+module_param(log_level, int, 0444);
 
-MODULE_PARM (log_level, "i");
 int         max_mru = MUSYCC_MRU;
 int         max_mru_default = MUSYCC_MRU;
+module_param(max_mru, int, 0444);
 
-MODULE_PARM (max_mru, "i");
 int         max_mtu = MUSYCC_MTU;
 int         max_mtu_default = MUSYCC_MTU;
+module_param(max_mtu, int, 0444);
 
-MODULE_PARM (max_mtu, "i");
 int         max_txdesc_used = MUSYCC_TXDESC_MIN;
 int         max_txdesc_default = MUSYCC_TXDESC_MIN;
+module_param(max_txdesc_used, int, 0444);
 
-MODULE_PARM (max_txdesc_used, "i");
 int         max_rxdesc_used = MUSYCC_RXDESC_MIN;
 int         max_rxdesc_default = MUSYCC_RXDESC_MIN;
-
-MODULE_PARM (max_rxdesc_used, "i");
+module_param(max_rxdesc_used, int, 0444);
 
 /****************************************************************************/
 /****************************************************************************/
@@ -218,10 +140,6 @@ getuserbychan (int channum)
 }
 
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-#define DEV_TO_PRIV(dev) ( * (struct c4_priv **) ((hdlc_device*)(dev)+1))
-#else
-
 char       *
 get_hdlc_name (hdlc_device * hdlc)
 {
@@ -230,7 +148,6 @@ get_hdlc_name (hdlc_device * hdlc)
 
     return dev->name;
 }
-#endif
 
 
 static      status_t
@@ -282,19 +199,11 @@ c4_wk_chan_restart (mch_t * ch)
     queue_work (pi->wq_port, &ch->ch_work);
 }
 
-status_t
-c4_wk_chan_init (mpi_t * pi, mch_t * ch)
+status_t c4_wk_chan_init(mpi_t * pi, mch_t * ch)
 {
-    /*
-     * this will be used to restart a stopped channel
-     */
-
-    /** INIT_WORK (struct work_struct *work,
-     **            void (*function)(void *),
-     **            void *data);
-     **/
-    INIT_WORK (&ch->ch_work, musycc_wq_chan_restart, ch);
-    return 0;                       /* success */
+	/* this will be used to restart a stopped channel */
+	INIT_WORK (&ch->ch_work, musycc_wq_chan_restart);
+	return 0;
 }
 
 status_t
@@ -337,14 +246,11 @@ c4_wq_port_cleanup (mpi_t * pi)
 
 /***************************************************************************/
 
-irqreturn_t
-c4_linux_interrupt (int irq, void *dev_instance, struct pt_regs * regs)
+irqreturn_t c4_linux_interrupt(int irq, void *dev_instance)
 {
-    struct net_device *ndev = dev_instance;
+	struct net_device *ndev = dev_instance;
 
-    if (!ndev->priv)
-        return IRQ_NONE;
-    return musycc_intr_th_handler (ndev->priv);
+	return musycc_intr_th_handler(netdev_priv(ndev));
 }
 
 
@@ -362,12 +268,6 @@ c4_ebus_interrupt (int irq, void *dev_instance, struct pt_regs * regs)
 
 
 static int
-void_init (struct net_device * ndev)
-{
-    return 0;
-}
-
-static int
 void_open (struct net_device * ndev)
 {
     printk ("%s: trying to open master device !\n", ndev->name);
@@ -375,161 +275,50 @@ void_open (struct net_device * ndev)
 }
 
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-#if !defined(GENERIC_HDLC_VERSION) || (GENERIC_HDLC_VERSION < 4)
-
-/** Linux 2.4.18-19 **/
-STATIC int
-chan_open (hdlc_device * hdlc)
-{
-    status_t    ret;
-
-    if ((ret = c4_chan_up (DEV_TO_PRIV (hdlc)->ci, DEV_TO_PRIV (hdlc)->channum)))
-        return -ret;
-    MOD_INC_USE_COUNT;
-    netif_start_queue (hdlc_to_dev (hdlc));
-    return 0;                       /* no error = success */
-}
-
-#else
-
-/** Linux 2.4.20 and higher **/
-STATIC int
-chan_open (struct net_device * ndev)
+STATIC int chan_open(struct net_device *ndev)
 {
-    hdlc_device *hdlc = dev_to_hdlc (ndev);
-    status_t    ret;
-
-    hdlc->proto = IF_PROTO_HDLC;
-    if ((ret = hdlc_open (hdlc)))
-    {
-        printk ("%s: hdlc_open failure, err %d.\n", THIS_MODULE->name, ret);
-        return ret;
-    }
-    if ((ret = c4_chan_up (DEV_TO_PRIV (hdlc)->ci, DEV_TO_PRIV (hdlc)->channum)))
-        return -ret;
-    MOD_INC_USE_COUNT;
-    netif_start_queue (hdlc_to_dev (hdlc));
-    return 0;                       /* no error = success */
-}
-#endif
-
-#else
-
-/** Linux 2.6 **/
-STATIC int
-chan_open (struct net_device * ndev)
-{
-    hdlc_device *hdlc = dev_to_hdlc (ndev);
-    const struct c4_priv *priv = hdlc->priv;
-    int         ret;
-
-    hdlc->proto.id = IF_PROTO_HDLC;
-    if ((ret = hdlc_open (ndev)))
-    {
-        printk ("%s: hdlc_open failure, err %d.\n", THIS_MODULE->name, ret);
-        return ret;
-    }
-    if ((ret = c4_chan_up (priv->ci, priv->channum)))
-        return -ret;
-    try_module_get (THIS_MODULE);
-    netif_start_queue (ndev);
-    return 0;                       /* no error = success */
+	hdlc_device *hdlc = dev_to_hdlc (ndev);
+	const struct c4_priv *priv = hdlc->priv;
+	int ret;
+
+	if ((ret = hdlc_open (ndev))) {
+		printk ("%s: hdlc_open failure, err %d.\n",
+			THIS_MODULE->name, ret);
+		return ret;
+	}
+	if ((ret = c4_chan_up (priv->ci, priv->channum)))
+		return -ret;
+	try_module_get(THIS_MODULE);
+	netif_start_queue(ndev);
+	return 0;
 }
-#endif
 
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-#if !defined(GENERIC_HDLC_VERSION) || (GENERIC_HDLC_VERSION < 4)
-
-/** Linux 2.4.18-19 **/
-STATIC void
-chan_close (hdlc_device * hdlc)
+STATIC int chan_close(struct net_device *ndev)
 {
-    netif_stop_queue (hdlc_to_dev (hdlc));
-    musycc_chan_down ((ci_t *) 0, DEV_TO_PRIV (hdlc)->channum);
-    MOD_DEC_USE_COUNT;
+	hdlc_device *hdlc = dev_to_hdlc (ndev);
+	const struct c4_priv *priv = hdlc->priv;
+
+	netif_stop_queue (ndev);
+	musycc_chan_down ((ci_t *) 0, priv->channum);
+	hdlc_close (ndev);
+	module_put (THIS_MODULE);
+	return 0;
 }
-#else
 
-/** Linux 2.4.20 and higher **/
-STATIC int
-chan_close (struct net_device * ndev)
-{
-    hdlc_device *hdlc = dev_to_hdlc (ndev);
-
-    netif_stop_queue (hdlc_to_dev (hdlc));
-    musycc_chan_down ((ci_t *) 0, DEV_TO_PRIV (hdlc)->channum);
-    hdlc_close (hdlc);
-    MOD_DEC_USE_COUNT;
-    return 0;
-}
-#endif
 
-#else
-
-/** Linux 2.6 **/
-STATIC int
-chan_close (struct net_device * ndev)
+STATIC int chan_dev_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
-    hdlc_device *hdlc = dev_to_hdlc (ndev);
-    const struct c4_priv *priv = hdlc->priv;
-
-    netif_stop_queue (ndev);
-    musycc_chan_down ((ci_t *) 0, priv->channum);
-    hdlc_close (ndev);
-    module_put (THIS_MODULE);
-    return 0;
+    return hdlc_ioctl(dev, ifr, cmd);
 }
-#endif
-
 
-#if !defined(GENERIC_HDLC_VERSION) || (GENERIC_HDLC_VERSION < 4)
 
-/** Linux 2.4.18-19 **/
-STATIC int
-chan_ioctl (hdlc_device * hdlc, struct ifreq * ifr, int cmd)
-{
-    if (cmd == HDLCSCLOCK)
-    {
-        ifr->ifr_ifru.ifru_ivalue = LINE_DEFAULT;
-        return 0;
-    }
-    return -EINVAL;
-}
-#endif
-
-
-#if !defined(GENERIC_HDLC_VERSION) || (GENERIC_HDLC_VERSION < 4)
-STATIC int
-chan_dev_ioctl (struct net_device * hdlc, struct ifreq * ifr, int cmd)
-{
-    if (cmd == HDLCSCLOCK)
-    {
-        ifr->ifr_ifru.ifru_ivalue = LINE_DEFAULT;
-        return 0;
-    }
-    return -EINVAL;
-}
-#else
-STATIC int
-chan_dev_ioctl (struct net_device * dev, struct ifreq * ifr, int cmd)
-{
-    return hdlc_ioctl (dev, ifr, cmd);
-}
-
-
-STATIC int
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-chan_attach_noop (hdlc_device * hdlc, unsigned short foo_1, unsigned short foo_2)
-#else
-chan_attach_noop (struct net_device * ndev, unsigned short foo_1, unsigned short foo_2)
-#endif
+STATIC int chan_attach_noop(struct net_device *ndev, unsigned short foo_1,
+			    unsigned short foo_2)
 {
     return 0;                   /* our driver has nothing to do here, show's
                                  * over, go home */
 }
-#endif
 
 
 STATIC struct net_device_stats *
@@ -539,23 +328,16 @@ chan_get_stats (struct net_device * ndev)
     struct net_device_stats *nstats;
     struct sbecom_chan_stats *stats;
     int         channum;
+    struct c4_priv *priv;
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    channum = DEV_TO_PRIV (ndev)->channum;
-#else
-    {
-        struct c4_priv *priv;
-
-        priv = (struct c4_priv *) dev_to_hdlc (ndev)->priv;
-        channum = priv->channum;
-    }
-#endif
+    priv = (struct c4_priv *)dev_to_hdlc(ndev)->priv;
+    channum = priv->channum;
 
     ch = c4_find_chan (channum);
     if (ch == NULL)
         return NULL;
 
-    nstats = &dev_to_hdlc (ndev)->stats;
+    nstats = &ndev->stats;
     stats = &ch->s;
 
     memset (nstats, 0, sizeof (struct net_device_stats));
@@ -589,46 +371,34 @@ chan_get_stats (struct net_device * ndev)
 }
 
 
-static ci_t *
-get_ci_by_dev (struct net_device * ndev)
+static ci_t* get_ci_by_dev(struct net_device *ndev)
 {
-    return (ci_t *) ndev->priv;
+	return (ci_t *)netdev_priv(ndev);
 }
 
 
-#if !defined(GENERIC_HDLC_VERSION) || (GENERIC_HDLC_VERSION < 4)
-STATIC int
-c4_linux_xmit (hdlc_device * hdlc, struct sk_buff * skb)
+STATIC int c4_linux_xmit(struct sk_buff *skb, struct net_device *ndev)
 {
-    int         rval;
+	const struct c4_priv *priv;
+	int rval;
+	hdlc_device *hdlc = dev_to_hdlc(ndev);
 
-    rval = musycc_start_xmit (DEV_TO_PRIV (hdlc)->ci, DEV_TO_PRIV (hdlc)->channum, skb);
-    return -rval;
+	priv = hdlc->priv;
+	rval = musycc_start_xmit (priv->ci, priv->channum, skb);
+	return -rval;
 }
-#else                           /* new */
-STATIC int
-c4_linux_xmit (struct sk_buff * skb, struct net_device * ndev)
-{
-    const struct c4_priv *priv;
-    int         rval;
-
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    priv = DEV_TO_PRIV (ndev);
-#else
-    hdlc_device *hdlc = dev_to_hdlc (ndev);
-
-    priv = hdlc->priv;
-#endif
 
-    rval = musycc_start_xmit (priv->ci, priv->channum, skb);
-    return -rval;
-}
-#endif                          /* GENERIC_HDLC_VERSION */
 
+static const struct net_device_ops chan_ops = {
+	.ndo_open       = chan_open,
+	.ndo_stop       = chan_close,
+	.ndo_start_xmit = c4_linux_xmit,
+	.ndo_do_ioctl   = chan_dev_ioctl,
+	.ndo_get_stats  = chan_get_stats,
+};
 
-STATIC struct net_device *
-create_chan (struct net_device * ndev, ci_t * ci,
-             struct sbecom_chan_param * cp)
+STATIC struct net_device* create_chan(struct net_device *ndev, ci_t *ci,
+				      struct sbecom_chan_param *cp)
 {
     hdlc_device *hdlc;
     struct net_device *dev;
@@ -638,27 +408,6 @@ create_chan (struct net_device * ndev, ci_t * ci,
     if (c4_find_chan (cp->channum))
         return 0;                   /* channel already exists */
 
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    hdlc = (hdlc_device *) OS_kmalloc (sizeof (hdlc_device) + sizeof (void *));
-    if (!hdlc)
-    {
-        printk (KERN_WARNING "%s: no memory for hdlc_device !\n", ci->devname);
-        return 0;
-    }
-    dev = hdlc_to_dev (hdlc);
-
-    /* allocate and fill in private data structure */
-    DEV_TO_PRIV (dev) = kmalloc (sizeof (struct c4_priv), GFP_KERNEL);
-    if (!DEV_TO_PRIV (dev))
-    {
-        printk (KERN_WARNING "%s: no memory for c4_priv !\n", ci->devname);
-        OS_kfree (hdlc);
-        return 0;
-    }
-    DEV_TO_PRIV (dev)->ci = ci;
-    DEV_TO_PRIV (dev)->channum = cp->channum;
-
-#else
     {
         struct c4_priv *priv;
 
@@ -681,13 +430,10 @@ create_chan (struct net_device * ndev, ci_t * ci,
     }
 
     hdlc = dev_to_hdlc (dev);
-#endif
 
     dev->base_addr = 0;             /* not I/O mapped */
     dev->irq = ndev->irq;
-    dev->init = void_init;
     dev->type = ARPHRD_RAWHDLC;
-    dev->do_ioctl = chan_dev_ioctl;
     *dev->name = 0;                 /* default ifconfig name = "hdlc" */
 
     hi = (hdw_info_t *) ci->hdw_info;
@@ -711,15 +457,7 @@ create_chan (struct net_device * ndev, ci_t * ci,
     }
 
     hdlc->xmit = c4_linux_xmit;
-
-#if !defined(GENERIC_HDLC_VERSION) || (GENERIC_HDLC_VERSION < 4)
-    hdlc->open = chan_open;
-    hdlc->close = chan_close;
-    hdlc->ioctl = chan_ioctl;
-#else                               /* new */
-    dev->hard_start_xmit = c4_linux_xmit;
-    dev->open = chan_open;
-    dev->stop = chan_close;
+    dev->netdev_ops = &chan_ops;
     /*
      * The native hdlc stack calls this 'attach' routine during
      * hdlc_raw_ioctl(), passing parameters for line encoding and parity.
@@ -730,16 +468,10 @@ create_chan (struct net_device * ndev, ci_t * ci,
      */
 
     hdlc->attach = chan_attach_noop;
-#endif                              /* GENERIC_HDLC_VERSION */
 
     rtnl_unlock ();                 /* needed due to Ioctl calling sequence */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    ret = V7 (register_hdlc_device) (hdlc);
-#else
     ret = register_hdlc_device (dev);
-#endif
     /* NOTE: <stats> setting must occur AFTER registration in order to "take" */
-    dev->get_stats = chan_get_stats;
     dev->tx_queue_len = MAX_DEFAULT_IFQLEN;
 
     rtnl_lock ();                   /* needed due to Ioctl calling sequence */
@@ -748,12 +480,7 @@ create_chan (struct net_device * ndev, ci_t * ci,
         if (log_level >= LOG_WARN)
             printk ("%s: create_chan[%d] registration error = %d.\n",
                     ci->devname, cp->channum, ret);
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-        OS_kfree (DEV_TO_PRIV (dev));   /* cleanup */
-        OS_kfree (hdlc);            /* cleanup */
-#else
         free_netdev (dev);          /* cleanup */
-#endif
         return 0;                   /* failed to register */
     }
     return dev;
@@ -1036,26 +763,26 @@ do_deluser (struct net_device * ndev, int lockit)
     return 0;
 }
 
-int
-do_del_chan (struct net_device * musycc_dev, void *data)
+int do_del_chan(struct net_device *musycc_dev, void *data)
 {
     struct sbecom_chan_param cp;
-    char        buf[sizeof (CHANNAME) + 3];
+    char buf[sizeof(CHANNAME) + 3];
     struct net_device *dev;
-    int         ret;
-
-    if (copy_from_user (&cp, data,
-                        sizeof (struct sbecom_chan_param)))
-        return -EFAULT;
-    sprintf (buf, CHANNAME "%d", cp.channum);
-    if (!(dev = dev_get_by_name (buf)))
-        return -ENOENT;
-    dev_put (dev);
-    ret = do_deluser (dev, 1);
+    int ret;
+
+    if (copy_from_user(&cp, data,
+		       sizeof(struct sbecom_chan_param)))
+	    return -EFAULT;
+    sprintf(buf, CHANNAME "%d", cp.channum);
+    if (!(dev = dev_get_by_name(&init_net, buf)))
+	    return -ENOENT;
+    dev_put(dev);
+    ret = do_deluser(dev, 1);
     if (ret)
-        return ret;
-    return c4_del_chan (cp.channum);
+	    return ret;
+    return c4_del_chan(cp.channum);
 }
+
 int         c4_reset_board (void *);
 
 int
@@ -1070,20 +797,16 @@ do_reset (struct net_device * musycc_dev, void *data)
         char        buf[sizeof (CHANNAME) + 3];
 
         sprintf (buf, CHANNAME "%d", i);
-        if (!(ndev = dev_get_by_name (buf)))
+        if (!(ndev = dev_get_by_name (&init_net, buf)))
             continue;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-        priv = DEV_TO_PRIV (ndev);
-#else
         priv = dev_to_hdlc (ndev)->priv;
-#endif
 
 #if 0
         if ((unsigned long) (DEV_TO_PRIV (ndev)->ci) ==
             (unsigned long) (musycc_dev->priv))
 #else
         if ((unsigned long) (priv->ci) ==
-            (unsigned long) (musycc_dev->priv))
+            (unsigned long) (netdev_priv(musycc_dev)))
 #endif
         {
             ndev->flags &= ~IFF_UP;
@@ -1227,107 +950,108 @@ c4_ioctl (struct net_device * ndev, struct ifreq * ifr, int cmd)
 }
 
 
-struct net_device *__init
-c4_add_dev (hdw_info_t * hi, int brdno, unsigned long f0, unsigned long f1,
-            int irq0, int irq1)
-{
-    struct net_device *ndev;
-    ci_t       *ci;
+static const struct net_device_ops c4_ops = {
+	.ndo_open       = void_open,
+	.ndo_start_xmit = c4_linux_xmit,
+	.ndo_do_ioctl   = c4_ioctl,
+};
 
-    ndev = (struct net_device *) OS_kmalloc (sizeof (struct net_device));
-    if (!ndev)
-    {
-        printk (KERN_WARNING "%s: no memory for struct net_device !\n", hi->devname);
-        error_flag = ENOMEM;
-        return 0;
-    }
-    ndev->base_addr = 0;            /* not I/O mapped */
-    ndev->irq = irq0;
-    ndev->init = void_init;
-    ndev->type = ARPHRD_VOID;
-    ndev->open = void_open;
-    ndev->do_ioctl = c4_ioctl;
-    dev_alloc_name (ndev, SBE_IFACETMPL);
-
-    ndev->priv = c4_new ((void *) hi);
-    if (!ndev->priv)
-    {
-        printk (KERN_WARNING "%s: no memory for struct card_info !\n", hi->devname);
-        OS_kfree (ndev);
-        error_flag = ENOMEM;
-        return 0;
-    }
-    ci = (ci_t *) ndev->priv;
-    strcpy (ci->devname, hi->devname);
-    ci->release = &pmcc4_OSSI_release[0];
 
-    /* tasklet */
+static void c4_setup(struct net_device *dev)
+{
+	dev->type = ARPHRD_VOID;
+	dev->netdev_ops = &c4_ops;
+}
+
+struct net_device *__init c4_add_dev(hdw_info_t *hi, int brdno,
+				     unsigned long f0, unsigned long f1,
+				     int irq0, int irq1)
+{
+	struct net_device *ndev;
+	ci_t *ci;
+
+	ndev = alloc_netdev(sizeof(ci_t), SBE_IFACETMPL, c4_setup);
+	if (!ndev) {
+		printk(KERN_WARNING "%s: no memory for struct net_device !\n",
+		       hi->devname);
+		error_flag = ENOMEM;
+		return 0;
+	}
+	ci = netdev_priv(ndev);
+	ndev->irq = irq0;
+
+	ci->hdw_info = hi;
+	ci->state = C_INIT;         /* mark as hardware not available */
+	ci->next = c4_list;
+	c4_list = ci;
+	ci->brdno = ci->next ? ci->next->brdno + 1 : 0;
+
+	if (CI == 0)
+		CI = ci;                    /* DEBUG, only board 0 usage */
+
+	strcpy (ci->devname, hi->devname);
+	ci->release = &pmcc4_OSSI_release[0];
+
+	/* tasklet */
 #if defined(SBE_ISR_TASKLET)
-    tasklet_init (&ci->ci_musycc_isr_tasklet,
-                  (void (*) (unsigned long)) musycc_intr_bh_tasklet,
-                  (unsigned long) ci);
+	tasklet_init (&ci->ci_musycc_isr_tasklet,
+		      (void (*) (unsigned long)) musycc_intr_bh_tasklet,
+		      (unsigned long) ci);
 
-    if (atomic_read (&ci->ci_musycc_isr_tasklet.count) == 0)
-        tasklet_disable_nosync (&ci->ci_musycc_isr_tasklet);
+	if (atomic_read (&ci->ci_musycc_isr_tasklet.count) == 0)
+		tasklet_disable_nosync (&ci->ci_musycc_isr_tasklet);
 #elif defined(SBE_ISR_IMMEDIATE)
-    ci->ci_musycc_isr_tq.routine = (void *) (unsigned long) musycc_intr_bh_tasklet;
-    ci->ci_musycc_isr_tq.data = ci;
+	ci->ci_musycc_isr_tq.routine = (void *) (unsigned long) musycc_intr_bh_tasklet;
+	ci->ci_musycc_isr_tq.data = ci;
 #endif
 
 
-    if (register_netdev (ndev) ||
-        (c4_init (ci, (u_char *) f0, (u_char *) f1) != SBE_DRVR_SUCCESS))
-    {
-        OS_kfree (ndev->priv);
-        OS_kfree (ndev);
-        error_flag = ENODEV;
-        return 0;
-    }
-    /*************************************************************
-     *  int request_irq(unsigned int irq,
-     *                  void (*handler)(int, void *, struct pt_regs *),
-     *                  unsigned long flags, const char *dev_name, void *dev_id);
-     *  wherein:
-     *  irq      -> The interrupt number that is being requested.
-     *  handler  -> Pointer to handling function being installed.
-     *  flags    -> A bit mask of options related to interrupt management.
-     *  dev_name -> String used in /proc/interrupts to show owner of interrupt.
-     *  dev_id   -> Pointer (for shared interrupt lines) to point to its own
-     *              private data area (to identify which device is interrupting).
-     *
-     *  extern void free_irq(unsigned int irq, void *dev_id);
-     **************************************************************/
-
-    if (request_irq (irq0, &c4_linux_interrupt,
-#if defined(SBE_ISR_TASKLET)
-                     SA_INTERRUPT | SA_SHIRQ,
-#elif defined(SBE_ISR_IMMEDIATE)
-                     SA_INTERRUPT | SA_SHIRQ,
+	if (register_netdev (ndev) ||
+	    (c4_init (ci, (u_char *) f0, (u_char *) f1) != SBE_DRVR_SUCCESS)) {
+		free_netdev(ndev);
+		error_flag = ENODEV;
+		return 0;
+	}
+	/*************************************************************
+	 *  int request_irq(unsigned int irq,
+	 *                  void (*handler)(int, void *, struct pt_regs *),
+	 *                  unsigned long flags, const char *dev_name, void *dev_id);
+	 *  wherein:
+	 *  irq      -> The interrupt number that is being requested.
+	 *  handler  -> Pointer to handling function being installed.
+	 *  flags    -> A bit mask of options related to interrupt management.
+	 *  dev_name -> String used in /proc/interrupts to show owner of interrupt.
+	 *  dev_id   -> Pointer (for shared interrupt lines) to point to its own
+	 *              private data area (to identify which device is interrupting).
+	 *
+	 *  extern void free_irq(unsigned int irq, void *dev_id);
+	 **************************************************************/
+
+	if (request_irq(irq0, &c4_linux_interrupt,
+#if defined(SBE_ISR_TASKLET) || defined(SBE_ISR_IMMEDIATE)
+			 IRQF_DISABLED | IRQF_SHARED,
 #elif defined(SBE_ISR_INLINE)
-                     SA_SHIRQ,
+			 IRQF_SHARED,
 #endif
-                     ndev->name, ndev))
-    {
-        printk (KERN_WARNING "%s: MUSYCC could not get irq: %d\n",
-                ndev->name, irq0);
-        unregister_netdev (ndev);
-        OS_kfree (ndev->priv);
-        OS_kfree (ndev);
-        error_flag = EIO;
-        return 0;
-    }
+			 ndev->name, ndev)) {
+		printk(KERN_WARNING "%s: MUSYCC could not get irq: %d\n",
+			ndev->name, irq0);
+		unregister_netdev(ndev);
+		free_netdev(ndev);
+		error_flag = EIO;
+		return 0;
+	}
 #ifdef CONFIG_SBE_PMCC4_NCOMM
-    if (request_irq (irq1, &c4_ebus_interrupt, SA_SHIRQ, ndev->name, ndev))
-    {
-        printk (KERN_WARNING "%s: EBUS could not get irq: %d\n",
-                hi->devname, irq1);
-        unregister_netdev (ndev);
-        free_irq (irq0, ndev);
-        OS_kfree (ndev->priv);
-        OS_kfree (ndev);
-        error_flag = EIO;
-        return 0;
-    }
+	if (request_irq(irq1, &c4_ebus_interrupt, IRQF_SHARED, ndev->name, ndev))
+	{
+		printk (KERN_WARNING "%s: EBUS could not get irq: %d\n",
+			hi->devname, irq1);
+		unregister_netdev(ndev);
+		free_irq(irq0, ndev);
+		free_netdev(ndev);
+		error_flag = EIO;
+		return 0;
+	}
 #endif
 
     /* setup board identification information */
@@ -1382,8 +1106,7 @@ c4_add_dev (hdw_info_t * hi, int brdno, unsigned long f0, unsigned long f1,
         unregister_netdev (ndev);
         free_irq (irq1, ndev);
         free_irq (irq0, ndev);
-        OS_kfree (ndev->priv);
-        OS_kfree (ndev);
+	free_netdev(ndev);
         return 0;                   /* failure, error_flag is set */
     }
     return ndev;
@@ -1443,7 +1166,7 @@ cleanup_hdlc (void)
     {
         if (hi->ndev)               /* a board has been attached */
         {
-            ci = (ci_t *) hi->ndev->priv;
+	    ci = (ci_t *) netdev_priv(hi->ndev);
             for (j = 0; j < ci->max_port; j++)
                 for (k = 0; k < MUSYCC_NCHANS; k++)
                     if ((ndev = ci->port[j].chan[k]->user))
diff --git a/drivers/net/wan/cxt1e1/musycc.c b/drivers/net/wan/cxt1e1/musycc.c
index 8fc42dd..d72f610 100644
--- a/drivers/net/wan/cxt1e1/musycc.c
+++ b/drivers/net/wan/cxt1e1/musycc.c
@@ -1,14 +1,7 @@
-/*
- * $Id: musycc.c,v 2.1 2007/08/15 23:32:17 rickd PMCC4_3_1B $
- */
-
 unsigned int max_intcnt = 0;
 unsigned int max_bh = 0;
 
-/*-----------------------------------------------------------------------------
- * musycc.c -
- *
- * Copyright (C) 2007  One Stop Systems, Inc.
+/* Copyright (C) 2007  One Stop Systems, Inc.
  * Copyright (C) 2003-2006  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -20,63 +13,12 @@ unsigned int max_bh = 0;
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@onestopsystems.com
- * One Stop Systems, Inc.  Escondido, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 2.1 $
- * Last changed on $Date: 2007/08/15 23:32:17 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: musycc.c,v $
- * Revision 2.1  2007/08/15 23:32:17  rickd
- * Use 'if 0' instead of GNU comment delimeter to avoid line wrap induced compiler errors.
- *
- * Revision 2.0  2007/08/15 22:13:20  rickd
- * Update to printf pointer %p usage and correct some UINT to ULONG for
- * 64bit comptibility.
- *
- * Revision 1.7  2006/04/21 00:56:40  rickd
- * workqueue files now prefixed with <sbecom> prefix.
- *
- * Revision 1.6  2005/10/27 18:54:19  rickd
- * Clean out old code.  Default to HDLC_FCS16, not TRANS.
- *
- * Revision 1.5  2005/10/17 23:55:28  rickd
- * Initial port of NCOMM support patches from original work found
- * in pmc_c4t1e1 as updated by NCOMM.  Ref: CONFIG_SBE_PMCC4_NCOMM.
- *
- * Revision 1.4  2005/10/13 20:35:25  rickd
- * Cleanup warning for unused <flags> variable.
- *
- * Revision 1.3  2005/10/13 19:19:22  rickd
- * Disable redundant driver removal cleanup code.
- *
- * Revision 1.2  2005/10/11 18:36:16  rickd
- * Clean up warning messages caused by de-implemented some <flags> associated
- * with spin_lock() removals.
- *
- * Revision 1.1  2005/10/05 00:45:28  rickd
- * Re-enable xmit on flow-controlled and full channel to fix restart hang.
- * Add some temp spin-lock debug code (rld_spin_owner).
- *
- * Revision 1.0  2005/09/28 00:10:06  rickd
- * Initial release for C4T1E1 support. Lots of transparent
- * mode updates.
- *
- *-----------------------------------------------------------------------------
  */
-
-char        SBEid_pmcc4_musyccc[] =
-"@(#)musycc.c - $Revision: 2.1 $      (c) Copyright 2004-2006 SBE, Inc.";
-
-
 #include <linux/types.h>
-#include "pmcc4_sysdep.h"
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/init.h>
+#include "pmcc4_sysdep.h"
 #include "sbecom_inline_linux.h"
 #include "libsbew.h"
 #include "pmcc4_private.h"
@@ -706,9 +648,7 @@ rewrite:
 }
 
 
-#ifdef  SBE_PMCC4_ENABLE
-void
-musycc_update_timeslots (mpi_t * pi)
+void musycc_update_timeslots(mpi_t *pi)
 {
     int         i, ch;
     char        e1mode = IS_FRAME_ANY_E1 (pi->p.port_mode);
@@ -773,43 +713,6 @@ musycc_update_timeslots (mpi_t * pi)
     musycc_serv_req (pi, SR_SUBCHANNEL_MAP | SR_RX_DIRECTION);
     musycc_serv_req (pi, SR_SUBCHANNEL_MAP | SR_TX_DIRECTION);
 }
-#endif
-
-
-#ifdef SBE_WAN256T3_ENABLE
-void
-musycc_update_timeslots (mpi_t * pi)
-{
-    mch_t      *ch;
-
-    u_int8_t    ts, hmask, tsen;
-    int         gchan;
-    int         i;
-
-#ifdef SBE_PMCC4_ENABLE
-    hmask = (0x1f << pi->up->p.hypersize) & 0x1f;
-#endif
-#ifdef SBE_WAN256T3_ENABLE
-    hmask = (0x1f << hyperdummy) & 0x1f;
-#endif
-    for (i = 0; i < 128; i++)
-    {
-        gchan = ((pi->portnum * MUSYCC_NCHANS) + (i & hmask)) % MUSYCC_NCHANS;
-        ch = pi->chan[gchan];
-        if (ch->p.mode_56k)
-            tsen = MODE_56KBPS;
-        else
-            tsen = MODE_64KBPS;     /* also the default */
-        ts = ((pi->portnum % 4) == (i / 32)) ? (tsen << 5) | (i & hmask) : 0;
-        pi->regram->rtsm[i] = ts;
-        pi->regram->ttsm[i] = ts;
-    }
-    FLUSH_MEM_WRITE ();
-    musycc_serv_req (pi, SR_TIMESLOT_MAP | SR_RX_DIRECTION);
-    musycc_serv_req (pi, SR_TIMESLOT_MAP | SR_TX_DIRECTION);
-}
-#endif
-
 
  /*
   * This routine converts a generic library channel configuration parameter
@@ -841,41 +744,6 @@ musycc_chan_proto (int proto)
     return reg;
 }
 
-#ifdef SBE_WAN256T3_ENABLE
-STATIC void __init
-musycc_init_port (mpi_t * pi)
-{
-    pci_write_32 ((u_int32_t *) &pi->reg->gbp, OS_vtophys (pi->regram));
-
-    pi->regram->grcd =
-        __constant_cpu_to_le32 (MUSYCC_GRCD_RX_ENABLE |
-                                MUSYCC_GRCD_TX_ENABLE |
-                                MUSYCC_GRCD_SF_ALIGN |
-                                MUSYCC_GRCD_SUBCHAN_DISABLE |
-                                MUSYCC_GRCD_OOFMP_DISABLE |
-                                MUSYCC_GRCD_COFAIRQ_DISABLE |
-                                MUSYCC_GRCD_MC_ENABLE |
-                       (MUSYCC_GRCD_POLLTH_32 << MUSYCC_GRCD_POLLTH_SHIFT));
-
-    pi->regram->pcd =
-        __constant_cpu_to_le32 (MUSYCC_PCD_E1X4_MODE |
-                                MUSYCC_PCD_TXDATA_RISING |
-                                MUSYCC_PCD_TX_DRIVEN);
-
-    /* Message length descriptor */
-    pi->regram->mld = __constant_cpu_to_le32 (max_mru | (max_mru << 16));
-    FLUSH_MEM_WRITE ();
-
-    musycc_serv_req (pi, SR_GROUP_INIT | SR_RX_DIRECTION);
-    musycc_serv_req (pi, SR_GROUP_INIT | SR_TX_DIRECTION);
-
-    musycc_init_mdt (pi);
-
-    musycc_update_timeslots (pi);
-}
-#endif
-
-
 status_t    __init
 musycc_init (ci_t * ci)
 {
@@ -969,10 +837,6 @@ musycc_init (ci_t * ci)
                 THIS_MODULE->name, max_mtu, 0xffe);
         max_mtu = 0xffe;
     }
-#ifdef SBE_WAN256T3_ENABLE
-    for (i = 0; i < MUSYCC_NPORTS; i++)
-        musycc_init_port (&ci->port[i]);
-#endif
 
     return SBE_DRVR_SUCCESS;        /* no error */
 }
@@ -1072,24 +936,6 @@ musycc_bh_tx_eom (mpi_t * pi, int gchan)
             atomic_sub (OS_mem_token_tlen (md->mem_token), &ch->tx_pending);
             /* upcount card */
             atomic_sub (OS_mem_token_tlen (md->mem_token), &pi->up->tx_pending);
-#ifdef SBE_WAN256T3_ENABLE
-            if (!atomic_read (&pi->up->tx_pending))
-                wan256t3_led (pi->up, LED_TX, 0);
-#endif
-
-#ifdef CONFIG_SBE_WAN256T3_NCOMM
-            /* callback that our packet was sent */
-            {
-                int         hdlcnum = (pi->portnum * 32 + gchan);
-
-                if (hdlcnum >= 228)
-                {
-                    if (nciProcess_TX_complete)
-                        (*nciProcess_TX_complete) (hdlcnum,
-                                                   getuserbychan (gchan));
-                }
-            }
-#endif                              /*** CONFIG_SBE_WAN256T3_NCOMM ***/
 
             OS_mem_token_free_irq (md->mem_token);
             md->mem_token = 0;
@@ -1197,21 +1043,6 @@ musycc_bh_rx_eom (mpi_t * pi, int gchan)
         error = (status >> 16) & 0xf;
         if (error == 0)
         {
-#ifdef CONFIG_SBE_WAN256T3_NCOMM
-            int         hdlcnum = (pi->portnum * 32 + gchan);
-
-            /*
-             * if the packet number belongs to NCOMM, then send it to the TMS
-             * driver
-             */
-            if (hdlcnum >= 228)
-            {
-                if (nciProcess_RX_packet)
-                    (*nciProcess_RX_packet) (hdlcnum, status & 0x3fff, m, ch->user);
-            } else
-#endif                              /*** CONFIG_SBE_WAN256T3_NCOMM ***/
-
-            {
                 if ((m2 = OS_mem_token_alloc (max_mru)))
                 {
                     /* substitute the mbuf+cluster */
@@ -1226,7 +1057,6 @@ musycc_bh_rx_eom (mpi_t * pi, int gchan)
                 {
                     ch->s.rx_dropped++;
                 }
-            }
         } else if (error == ERR_FCS)
         {
             ch->s.rx_crc_errors++;
@@ -1750,9 +1580,7 @@ musycc_new_chan (ci_t * ci, int channum, void *user)
 #endif
 
 
-#ifdef SBE_PMCC4_ENABLE
-status_t
-musycc_chan_down (ci_t * dummy, int channum)
+status_t musycc_chan_down(ci_t *dummy, int channum)
 {
     mpi_t      *pi;
     mch_t      *ch;
@@ -1803,7 +1631,6 @@ musycc_chan_down (ci_t * dummy, int channum)
     pi->openchans--;
     return 0;
 }
-#endif
 
 
 int
@@ -2035,9 +1862,6 @@ musycc_start_xmit (ci_t * ci, int channum, void *mem_token)
         musycc_chan_restart (ch);
 #endif
     }
-#ifdef SBE_WAN256T3_ENABLE
-    wan256t3_led (ci, LED_TX, LEDV_G);
-#endif
     return 0;
 }
 
@@ -2125,56 +1949,3 @@ musycc_get_chan_stats (ci_t * ci, int channum, struct sbecom_chan_stats * p)
     p->tx_pending = atomic_read (&ch->tx_pending);
     return 0;
 }
-
-
-
-#ifdef SBE_WAN256T3_ENABLE
-int
-musycc_chan_down (ci_t * ci, int channum)
-{
-    mch_t      *ch;
-    mpi_t      *pi;
-    int         i, gchan;
-
-    if (!(ch = sd_find_chan (ci, channum)))
-        return EINVAL;
-    pi = ch->up;
-    gchan = ch->gchan;
-
-    /* Deactivate the channel */
-    musycc_serv_req (pi, SR_CHANNEL_DEACTIVATE | SR_RX_DIRECTION | gchan);
-    ch->ch_start_rx = 0;
-    musycc_serv_req (pi, SR_CHANNEL_DEACTIVATE | SR_TX_DIRECTION | gchan);
-    ch->ch_start_tx = 0;
-
-    if (ch->state == DOWN)
-        return 0;
-    ch->state = DOWN;
-
-    pi->regram->thp[gchan] = 0;
-    pi->regram->tmp[gchan] = 0;
-    pi->regram->rhp[gchan] = 0;
-    pi->regram->rmp[gchan] = 0;
-    FLUSH_MEM_WRITE ();
-    for (i = 0; i < ch->txd_num; i++)
-    {
-        if (ch->mdt[i].mem_token != 0)
-            OS_mem_token_free (ch->mdt[i].mem_token);
-    }
-
-    for (i = 0; i < ch->rxd_num; i++)
-    {
-        if (ch->mdr[i].mem_token != 0)
-            OS_mem_token_free (ch->mdr[i].mem_token);
-    }
-
-    OS_kfree (ch->mdt);
-    ch->mdt = 0;
-    OS_kfree (ch->mdr);
-    ch->mdr = 0;
-
-    return 0;
-}
-#endif
-
-/*** End-of-File ***/
diff --git a/drivers/net/wan/cxt1e1/musycc.h b/drivers/net/wan/cxt1e1/musycc.h
index d2c91ef..c4c074c 100644
--- a/drivers/net/wan/cxt1e1/musycc.h
+++ b/drivers/net/wan/cxt1e1/musycc.h
@@ -1,12 +1,7 @@
-/*
- * $Id: musycc.h,v 1.3 2005/09/28 00:10:08 rickd PMCC4_3_1B $
- */
-
 #ifndef _INC_MUSYCC_H_
 #define _INC_MUSYCC_H_
 
-/*-----------------------------------------------------------------------------
- * musycc.h - Multichannel Synchronous Communications Controller
+/* musycc.h - Multichannel Synchronous Communications Controller
  *            CN8778/8474A/8472A/8471A
  *
  * Copyright (C) 2002-2005  SBE, Inc.
@@ -20,40 +15,13 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.3 $
- * Last changed on $Date: 2005/09/28 00:10:08 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: musycc.h,v $
- * Revision 1.3  2005/09/28 00:10:08  rickd
- * Add GNU license info. Add PMCC4 PCI/DevIDs.  Implement new
- * musycc reg&bits namings. Use PORTMAP_0 GCD grouping.
- *
- * Revision 1.2  2005/04/28 23:43:04  rickd
- * Add RCS tracking heading.
- *
- *-----------------------------------------------------------------------------
  */
 
-#if defined (__FreeBSD__) || defined (__NetBSD__)
-#include <sys/types.h>
-#else
 #include <linux/types.h>
-#endif
 
 #define VINT8   volatile u_int8_t
 #define VINT32  volatile u_int32_t
 
-#ifdef __cplusplus
-extern      "C"
-{
-#endif
-
 #include "pmcc4_defs.h"
 
 
@@ -149,19 +117,10 @@ extern      "C"
                                          * etc... */
 
 /* and board specific assignments... */
-#ifdef SBE_WAN256T3_ENABLE
-#define BLAPSE_VAL      0
-#define ALAPSE_VAL      0
-#define ELAPSE_VAL      7
-#define PORTMAP_VAL     MUSYCC_GCD_PORTMAP_2
-#endif
-
-#ifdef SBE_PMCC4_ENABLE
 #define BLAPSE_VAL      7
 #define ALAPSE_VAL      3
 #define ELAPSE_VAL      7
 #define PORTMAP_VAL     MUSYCC_GCD_PORTMAP_0
-#endif
 
 #define GCD_MAGIC   (((BLAPSE_VAL)<<(MUSYCC_GCD_BLAPSE)) | \
                      ((ALAPSE_VAL)<<(MUSYCC_GCD_ALAPSE)) | \
@@ -448,13 +407,7 @@ extern      "C"
 /*  This must be defined on an entire channel group (Port) basis */
 #define SUERM_THRESHOLD     0x1f
 
-#ifdef __cplusplus
-}
-#endif
-
 #undef VINT32
 #undef VINT8
 
-#endif                          /*** _INC_MUSYCC_H_ ***/
-
-/*** End-of-File ***/
+#endif
diff --git a/drivers/net/wan/cxt1e1/pmcc4_defs.h b/drivers/net/wan/cxt1e1/pmcc4_defs.h
index 186347b..2c6e95c 100644
--- a/drivers/net/wan/cxt1e1/pmcc4_defs.h
+++ b/drivers/net/wan/cxt1e1/pmcc4_defs.h
@@ -1,14 +1,7 @@
-/*
- * $Id: pmcc4_defs.h,v 1.0 2005/09/28 00:10:09 rickd PMCC4_3_1B $
- */
-
 #ifndef _INC_PMCC4_DEFS_H_
 #define _INC_PMCC4_DEFS_H_
 
-/*-----------------------------------------------------------------------------
- * c4_defs.h -
- *
- *   Implementation elements of the wanPMC-C4T1E1 device driver
+/*   Implementation elements of the wanPMC-C4T1E1 device driver
  *
  * Copyright (C) 2005  SBE, Inc.
  *
@@ -21,32 +14,13 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.0 $
- * Last changed on $Date: 2005/09/28 00:10:09 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: pmcc4_defs.h,v $
- * Revision 1.0  2005/09/28 00:10:09  rickd
- * Initial revision
- *
- *-----------------------------------------------------------------------------
  */
 
 
 #define MAX_BOARDS          8
 #define MAX_CHANS_USED      128
 
-#ifdef  SBE_PMCC4_ENABLE
 #define MUSYCC_NPORTS       4     /* CN8474 */
-#endif
-#ifdef SBE_WAN256T3_ENABLE
-#define MUSYCC_NPORTS       8     /* CN8478 */
-#endif
 #define MUSYCC_NCHANS       32    /* actually, chans per port */
 
 #define MUSYCC_NIQD         0x1000    /* power of 2 */
diff --git a/drivers/net/wan/cxt1e1/pmcc4_drv.c b/drivers/net/wan/cxt1e1/pmcc4_drv.c
index 27f2a74..8647cac 100644
--- a/drivers/net/wan/cxt1e1/pmcc4_drv.c
+++ b/drivers/net/wan/cxt1e1/pmcc4_drv.c
@@ -1,12 +1,4 @@
-/*
- * $Id: pmcc4_drv.c,v 3.1 2007/08/15 23:32:17 rickd PMCC4_3_1B $
- */
-
-
-/*-----------------------------------------------------------------------------
- * pmcc4_drv.c -
- *
- * Copyright (C) 2007  One Stop Systems, Inc.
+/* Copyright (C) 2007  One Stop Systems, Inc.
  * Copyright (C) 2002-2006  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -18,87 +10,16 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@onestopsystems.com
- * One Stop Systems, Inc.  Escondido, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 3.1 $
- * Last changed on $Date: 2007/08/15 23:32:17 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: pmcc4_drv.c,v $
- * Revision 3.1  2007/08/15 23:32:17  rickd
- * Use 'if 0' instead of GNU comment delimeter to avoid line wrap induced compiler errors.
- *
- * Revision 3.0  2007/08/15 22:19:55  rickd
- * Correct sizeof() castings and pi->regram to support 64bit compatibility.
- *
- * Revision 2.10  2006/04/21 00:56:40  rickd
- * workqueue files now prefixed with <sbecom> prefix.
- *
- * Revision 2.9  2005/11/01 19:22:49  rickd
- * Add sanity checks against max_port for ioctl functions.
- *
- * Revision 2.8  2005/10/27 18:59:25  rickd
- * Code cleanup.  Default channel config to HDLC_FCS16.
- *
- * Revision 2.7  2005/10/18 18:16:30  rickd
- * Further NCOMM code repairs - (1) interrupt matrix usage inconsistant
- * for indexing into nciInterrupt[][], code missing double parameters.
- * (2) check input of ncomm interrupt registration cardID for correct
- * boundary values.
- *
- * Revision 2.6  2005/10/17 23:55:28  rickd
- * Initial port of NCOMM support patches from original work found
- * in pmc_c4t1e1 as updated by NCOMM.  Ref: CONFIG_SBE_PMCC4_NCOMM.
- * Corrected NCOMMs wanpmcC4T1E1_getBaseAddress() to correctly handle
- * multiple boards.
- *
- * Revision 2.5  2005/10/13 23:01:28  rickd
- * Correct panic for illegal address reference w/in get_brdinfo on
- * first_if/last_if name acquistion under Linux 2.6
- *
- * Revision 2.4  2005/10/13 21:20:19  rickd
- * Correction of c4_cleanup() wherein next should be acquired before
- * ci_t structure is free'd.
- *
- * Revision 2.3  2005/10/13 19:20:10  rickd
- * Correct driver removal cleanup code for multiple boards.
- *
- * Revision 2.2  2005/10/11 18:34:04  rickd
- * New routine added to determine number of ports (comets) on board.
- *
- * Revision 2.1  2005/10/05 00:48:13  rickd
- * Add some RX activation trace code.
- *
- * Revision 2.0  2005/09/28 00:10:06  rickd
- * Implement 2.6 workqueue for TX/RX restart.  Correction to
- * hardware register boundary checks allows expanded access of MUSYCC.
- * Implement new musycc reg&bits namings.
- *
- *-----------------------------------------------------------------------------
  */
 
-char        OSSIid_pmcc4_drvc[] =
-"@(#)pmcc4_drv.c - $Revision: 3.1 $   (c) Copyright 2002-2007 One Stop Systems, Inc.";
-
-
-#if defined (__FreeBSD__) || defined (__NetBSD__)
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/errno.h>
-#else
 #include <linux/types.h>
-#include "pmcc4_sysdep.h"
 #include <linux/errno.h>
 #include <linux/kernel.h>
 #include <linux/sched.h>        /* include for timer */
 #include <linux/timer.h>        /* include for timer */
 #include <linux/hdlc.h>
 #include <asm/io.h>
-#endif
-
+#include "pmcc4_sysdep.h"
 #include "sbecom_inline_linux.h"
 #include "libsbew.h"
 #include "pmcc4_private.h"
@@ -118,12 +39,9 @@ char        OSSIid_pmcc4_drvc[] =
 #define KERN_WARN KERN_WARNING
 
 /* forward references */
-#if LINUX_VERSION_CODE > KERNEL_VERSION(2,5,41)
 status_t    c4_wk_chan_init (mpi_t *, mch_t *);
 void        c4_wq_port_cleanup (mpi_t *);
 status_t    c4_wq_port_init (mpi_t *);
-
-#endif
 int         c4_loop_port (ci_t *, int, u_int8_t);
 status_t    c4_set_port (ci_t *, int);
 status_t    musycc_chan_down (ci_t *, int);
@@ -201,34 +119,6 @@ c4_find_chan (int channum)
 }
 
 
-ci_t       *__init
-c4_new (void *hi)
-{
-    ci_t       *ci;
-
-#ifdef SBE_MAP_DEBUG
-    printk (KERN_WARNING "%s: c4_new() entered, ci needs %u.\n",
-            THIS_MODULE->name, (unsigned int) sizeof (ci_t));
-#endif
-
-    ci = (ci_t *) OS_kmalloc (sizeof (ci_t));
-    if (ci)
-    {
-        ci->hdw_info = hi;
-        ci->state = C_INIT;         /* mark as hardware not available */
-        ci->next = c4_list;
-        c4_list = ci;
-        ci->brdno = ci->next ? ci->next->brdno + 1 : 0;
-    } else
-        printk (KERN_WARNING "%s: failed CI malloc, size %u.\n",
-                THIS_MODULE->name, (unsigned int) sizeof (ci_t));
-
-    if (CI == 0)
-        CI = ci;                    /* DEBUG, only board 0 usage */
-    return ci;
-}
-
-
 /***
  * Check port state and set LED states using watchdog or ioctl...
  * also check for in-band SF loopback commands (& cause results if they are there)
diff --git a/drivers/net/wan/cxt1e1/pmcc4_private.h b/drivers/net/wan/cxt1e1/pmcc4_private.h
index 4ee424f..431a718 100644
--- a/drivers/net/wan/cxt1e1/pmcc4_private.h
+++ b/drivers/net/wan/cxt1e1/pmcc4_private.h
@@ -1,14 +1,7 @@
-/*
- * $Id: pmcc4_private.h,v 1.4 2005/10/27 18:54:19 rickd PMCC4_3_1B $
- */
-
 #ifndef _INC_PMCC4_PRIVATE_H_
 #define _INC_PMCC4_PRIVATE_H_
 
-/*-----------------------------------------------------------------------------
- * pmcc4_private.h -
- *
- * Copyright (C) 2005  SBE, Inc.
+/* Copyright (C) 2005  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -19,40 +12,15 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.4 $
- * Last changed on $Date: 2005/10/27 18:54:19 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: pmcc4_private.h,v $
- * Revision 1.4  2005/10/27 18:54:19  rickd
- * Clean out old watchdog_copy code.  Msg Desc <status> to volatile.
- *
- * Revision 1.3  2005/09/28 00:10:09  rickd
- * Add GNU License info.  Name changed from c4_private.h.
- *
- * Revision 1.2  2005/04/28 23:43:03  rickd
- * Add RCS tracking heading.
- *
- *-----------------------------------------------------------------------------
  */
 
 
 #include <linux/kernel.h>
 #include <linux/sched.h>
 #include <linux/spinlock.h>
-#include <asm/semaphore.h>
 #include <linux/interrupt.h>    /* support for tasklets */
 #include <linux/timer.h>        /* support for timer */
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-#include <linux/tqueue.h>       /* support for tq_struct */
-#else
 #include <linux/workqueue.h>
-#endif
 #include <linux/hdlc.h>
 
 #include "libsbew.h"
diff --git a/drivers/net/wan/cxt1e1/pmcc4_sysdep.h b/drivers/net/wan/cxt1e1/pmcc4_sysdep.h
index 9e71a8b..bde7f0a 100644
--- a/drivers/net/wan/cxt1e1/pmcc4_sysdep.h
+++ b/drivers/net/wan/cxt1e1/pmcc4_sysdep.h
@@ -1,12 +1,9 @@
-/*
- * $Id: pmcc4_sysdep.h,v 1.1 2005/09/28 00:10:09 rickd PMCC4_3_1B $
- */
-
 #ifndef _INC_PMCC4_SYSDEP_H_
 #define _INC_PMCC4_SYSDEP_H_
 
-/*-----------------------------------------------------------------------------
- * pmcc4_sysdep.h -
+#include <linux/kernel.h>
+
+/*
  *
  * Copyright (C) 2005  SBE, Inc.
  *
@@ -20,55 +17,8 @@
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
  *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.1 $
- * Last changed on $Date: 2005/09/28 00:10:09 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: pmcc4_sysdep.h,v $
- * Revision 1.1  2005/09/28 00:10:09  rickd
- * Add GNU License info.
- *
- * Revision 1.0  2005/05/04 17:19:25  rickd
- * Initial revision
- *
- *-----------------------------------------------------------------------------
  */
 
-
-#if defined (__FreeBSD__) || defined (__NetBSD__)
-#   include <sys/types.h>
-#else
-#   include <linux/types.h>
-#   include <linux/config.h>
-#   if defined(CONFIG_SMP) && ! defined(__SMP__)
-#      define __SMP__
-#   endif
-#   if defined(CONFIG_MODVERSIONS) && defined(MODULE) && ! defined(MODVERSIONS)
-#      define MODVERSIONS
-#   endif
-#
-#   include <linux/version.h>
-#   ifdef MODULE
-#      ifdef MODVERSIONS
-#         if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-#            include <linux/modversions.h>
-#         else
-#            include <config/modversions.h>
-#         endif
-#      endif
-#      include <linux/module.h>
-#   else
-#      define MOD_INC_USE_COUNT
-#      define MOD_DEC_USE_COUNT
-#      define SET_MODULE_OWNER(dev)
-#      define MODULE_DEVICE_TABLE(pci, pci_tbl)
-#   endif
-#endif
-
 /* reduce multiple autoconf entries to a single definition */
 
 #ifdef CONFIG_SBE_PMCC4_HDLC_V7_MODULE
@@ -86,39 +36,22 @@
  * otherwise a memory barrier needs to be inserted.
  */
 
-#if defined (__FreeBSD__) || defined (__NetBSD__)
-#else
-#define IO_CACHE_COHERENT      1
-#define MEM_CACHE_COHERENT     0
-#if IO_CACHE_COHERENT
-#define FLUSH_PCI_READ()
-#define FLUSH_PCI_WRITE()
-#else
 #define FLUSH_PCI_READ()     rmb()
 #define FLUSH_PCI_WRITE()    wmb()
-#endif
-#if MEM_CACHE_COHERENT
-#define FLUSH_MEM_READ()
-#define FLUSH_MEM_WRITE()
-#else
 #define FLUSH_MEM_READ()     rmb()
 #define FLUSH_MEM_WRITE()    wmb()
-#endif
-#endif
-
 
 /*
  * System dependent callbacks routines, not inlined...
  * For inlined system dependent routines, see include/sbecom_inlinux_linux.h
  */
-                                                                                
+
 /*
  * passes received memory token back to the system, <user> is parameter from
  * sd_new_chan() used to create the channel which the data arrived on
  */
 
 void        sd_recv_consume (void *token, size_t len, void *user);
-
 void        sd_disable_xmit (void *user);
 void        sd_enable_xmit (void *user);
 int         sd_line_is_ok (void *user);
@@ -126,4 +59,4 @@ void        sd_line_is_up (void *user);
 void        sd_line_is_down (void *user);
 int         sd_queue_stopped (void *user);
 
-#endif                          /*** _INC_PMCC4_SYSDEP_H_ ***/
+#endif
diff --git a/drivers/net/wan/cxt1e1/sbecom_inline_linux.h b/drivers/net/wan/cxt1e1/sbecom_inline_linux.h
index c1d8cba..d2a2b95 100644
--- a/drivers/net/wan/cxt1e1/sbecom_inline_linux.h
+++ b/drivers/net/wan/cxt1e1/sbecom_inline_linux.h
@@ -1,14 +1,7 @@
-/*
- * $Id: sbecom_inline_linux.h,v 1.2 2007/08/15 22:51:35 rickd PMCC4_3_1B $
- */
-
 #ifndef _INC_SBECOM_INLNX_H_
 #define _INC_SBECOM_INLNX_H_
 
-/*-----------------------------------------------------------------------------
- * sbecom_inline_linux.h - SBE common Linux inlined routines
- *
- * Copyright (C) 2007  One Stop Systems, Inc.
+/* Copyright (C) 2007  One Stop Systems, Inc.
  * Copyright (C) 2005  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
@@ -20,57 +13,12 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@onestopsystems.com
- * One Stop Systems, Inc.  Escondido, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.2 $
- * Last changed on $Date: 2007/08/15 22:51:35 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: sbecom_inline_linux.h,v $
- * Revision 1.2  2007/08/15 22:51:35  rickd
- * Remove duplicate version.h entry.
- *
- * Revision 1.1  2007/08/15 22:50:29  rickd
- * Update linux/config for 2.6.18 and later.
- *
- * Revision 1.0  2005/09/28 00:10:09  rickd
- * Initial revision
- *
- *-----------------------------------------------------------------------------
  */
 
 
-#if defined (__FreeBSD__) || defined (__NetBSD__)
-#include <sys/types.h>
-#else
+#include <linux/kernel.h>       /* resolves kmalloc references */
 #include <linux/types.h>
 #include <linux/version.h>
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)
-#include <linux/config.h>
-#endif
-#if defined(CONFIG_SMP) && ! defined(__SMP__)
-#define __SMP__
-#endif
-#if defined(CONFIG_MODVERSIONS) && defined(MODULE) && ! defined(MODVERSIONS)
-#define MODVERSIONS
-#endif
-
-#ifdef MODULE
-#ifdef MODVERSIONS
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-#include <linux/modversions.h>
-#else
-#include <config/modversions.h>
-#endif
-#endif
-#include <linux/module.h>
-#endif
-#endif
-
-#include <linux/kernel.h>       /* resolves kmalloc references */
 #include <linux/skbuff.h>       /* resolves skb references */
 #include <linux/netdevice.h>    /* resolves dev_kree_skb_any */
 #include <asm/byteorder.h>      /* resolves cpu_to_le32 */
@@ -260,13 +208,9 @@ OS_sem_free (void *sem)
 struct watchdog
 {
     struct timer_list h;
-#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)
-    struct tq_struct tq;
-#else
     struct work_struct work;
-#endif
     void       *softc;
-    void        (*func) (void *softc);
+    void        (*func)(struct work_struct *softc);
     int         ticks;
     int         init_tq;
 };
@@ -304,7 +248,8 @@ void        OS_uwait_dummy (void);
 
 
 /* watchdog functions */
-int         OS_init_watchdog (struct watchdog * wdp, void (*f) (void *), void *ci, int usec);
+int OS_init_watchdog (struct watchdog * wdp, void (*f) (struct work_struct *),
+		      void *ci, int usec);
 
 
 #endif                          /*** _INC_SBECOM_INLNX_H_ ***/
diff --git a/drivers/net/wan/cxt1e1/sbeid.c b/drivers/net/wan/cxt1e1/sbeid.c
index 37c7629..7a1c66a 100644
--- a/drivers/net/wan/cxt1e1/sbeid.c
+++ b/drivers/net/wan/cxt1e1/sbeid.c
@@ -1,11 +1,4 @@
-/*
- * $Id: sbeid.c,v 1.2 2005/10/13 19:13:23 rickd PMCC4_3_1B $
- */
-
-/*-----------------------------------------------------------------------------
- * sbeid.c - generic board identification routines
- *
- * Copyright (C) 2005  SBE, Inc.
+/* Copyright (C) 2005  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -16,36 +9,9 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.2 $
- * Last changed on $Date: 2005/10/13 19:13:23 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: sbeid.c,v $
- * Revision 1.2  2005/10/13 19:13:23  rickd
- * Fix PMCC4 enabling by correction of "ifdef" flag usage.
- *
- * Revision 1.1  2005/10/11 18:32:21  rickd
- * Maximum ports setting set elsewhere during module initialization.
- * C4T1E1 PCI BID appears to be global, now further parse this setting
- * and reassign number based upon number of found ports.
- *
- * Revision 1.0  2005/09/28 00:10:07  rickd
- * Initial revision
- *
- *-----------------------------------------------------------------------------
  */
 
-char        SBEid_sbeid[] =
-"@(#)sbeid.c - $Revision: 1.2 $      (c) Copyright 2005 SBE, Inc.";
-
-
 #include "pmcc4_sysdep.h"
-
 #include "sbecom_inline_linux.h"
 #include "libsbew.h"
 #include "pmcc4_private.h"
@@ -154,7 +120,6 @@ sbeid_set_hdwbid (ci_t * ci)
     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPMC_C1T1E1_L):
         ci->hdw_bid = SBE_BID_PMC_C1T1E1;       /* 0xC1 - SBE wanPMC-C1T1E1 */
         break;
-#ifdef SBE_PMCC4_ENABLE
         /*
          * This case is entered as a result of the inability to obtain the
          * <bid> from the board's EEPROM.  Assume a PCI board and set
@@ -164,7 +129,6 @@ sbeid_set_hdwbid (ci_t * ci)
         /* start by assuming 4-port for ZERO casing */
         ci->brd_id = SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1);
         /* drop thru to set hdw_bid and alternate PCI CxT1E1 settings */
-#endif
     case SBE_BOARD_ID (PCI_VENDOR_ID_SBE, PCI_DEVICE_ID_WANPCI_C4T1E1):
         /*
          * This Board ID is a generic identification.  Use the number of
diff --git a/drivers/net/wan/cxt1e1/sbeproc.c b/drivers/net/wan/cxt1e1/sbeproc.c
index d9ccb19..c435639 100644
--- a/drivers/net/wan/cxt1e1/sbeproc.c
+++ b/drivers/net/wan/cxt1e1/sbeproc.c
@@ -1,11 +1,4 @@
-/*
- * $Id: sbeproc.c,v 1.5 2005/10/31 20:26:37 rickd PMCC4_3_1B $
- */
-
-/*-----------------------------------------------------------------------------
- * sbeproc.c -
- *
- * Copyright (C) 2004-2005  SBE, Inc.
+/* Copyright (C) 2004-2005  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -16,50 +9,8 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.5 $
- * Last changed on $Date: 2005/10/31 20:26:37 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: sbeproc.c,v $
- * Revision 1.5  2005/10/31 20:26:37  rickd
- * Fix for compilation warning re: declaration w/in ...get_sge_info().
- *
- * Revision 1.4  2005/10/27 18:54:19  rickd
- * Display driver tuning variable settings.
- *
- * Revision 1.3  2005/10/11 18:31:22  rickd
- * Add number of physical ports to displayed board info.
- *
- * Revision 1.2  2005/09/28 00:10:07  rickd
- * Add EEPROM Type 2 info.  Switch from os_ to OS_ named functions.
- *
- * Revision 1.3  2005/06/06 23:47:51  rickd
- * OS support routine names changed from sd_ to OS_.  Implement
- * in-line OS function support via inclusion of sbecom_inline_linux.h
- *
- * Revision 1.2  2005/04/18 21:23:20  rickd
- * Make directory within /proc/driver using proc_root_driver because
- * trying w/in /proc failed for multiple cards/drivers.
- *
- * Revision 1.1  2005/04/01 00:17:52  rickd
- * Use alternate proc_mkdir() to create driver/board directory.
- *
- * Revision 1.0  2004/12/03 23:32:07  rickd
- * Initial CI.
- *
- *-----------------------------------------------------------------------------
  */
 
-
-char        SBEid_sbeproc_c[] =
-"@(#)sbeproc.c        $Revision: 1.5 $      (c) Copyright 2004-2005 SBE, Inc.";
-
-
 #include "pmcc4_sysdep.h"
 #include <linux/types.h>
 #include <linux/module.h>
@@ -73,8 +24,7 @@ char        SBEid_sbeproc_c[] =
 #include "pmcc4_private.h"
 #include "sbeproc.h"
 
-/* forwards */
-void        sbecom_get_brdinfo (ci_t *, struct sbe_brd_info *, u_int8_t *);
+void sbecom_get_brdinfo (ci_t *, struct sbe_brd_info *, u_int8_t *);
 extern struct s_hdw_info hdw_info[MAX_BOARDS];
 
 #ifdef CONFIG_PROC_FS
@@ -83,14 +33,15 @@ extern struct s_hdw_info hdw_info[MAX_BOARDS];
 /* procfs stuff                                                     */
 /********************************************************************/
 
-
 void
 sbecom_proc_brd_cleanup (ci_t * ci)
 {
     if (ci->dir_dev)
     {
+	char dir[7 + SBE_IFACETMPL_SIZE + 1];
+	snprintf(dir, sizeof(dir), "driver/%s", ci->devname);
         remove_proc_entry ("info", ci->dir_dev);
-        remove_proc_entry (ci->devname, proc_root_driver);
+        remove_proc_entry (dir, NULL);
         ci->dir_dev = NULL;
     }
 }
@@ -214,9 +165,7 @@ sbecom_proc_get_sbe_info (char *buffer, char **start, off_t offset,
     }
     len += sprintf (buffer + len, "PCI Bus Speed: %s\n", spd);
     len += sprintf (buffer + len, "Release:       %s\n", ci->release);
-    len += sprintf (buffer + len, "Module Name:   %s\n", ci->dir_dev->owner->name);
 
-#ifdef SBE_PMCC4_ENABLE
     {
         extern int max_mru;
 #if 0
@@ -224,7 +173,7 @@ sbecom_proc_get_sbe_info (char *buffer, char **start, off_t offset,
         extern int max_mtu;
 #endif
         extern int max_rxdesc_used, max_txdesc_used;
-                                                                                                        
+
         len += sprintf (buffer + len, "\nmax_mru:         %d\n", max_mru);
 #if 0
         len += sprintf (buffer + len, "\nmax_chans_used:  %d\n", max_chans_used);
@@ -233,7 +182,6 @@ sbecom_proc_get_sbe_info (char *buffer, char **start, off_t offset,
         len += sprintf (buffer + len, "max_rxdesc_used: %d\n", max_rxdesc_used);
         len += sprintf (buffer + len, "max_txdesc_used: %d\n", max_txdesc_used);
     }
-#endif
 
     OS_kfree (bip);                 /* cleanup */
 
@@ -359,16 +307,17 @@ int         __init
 sbecom_proc_brd_init (ci_t * ci)
 {
     struct proc_dir_entry *e;
+    char dir[7 + SBE_IFACETMPL_SIZE + 1];
 
     /* create a directory in the root procfs */
-    ci->dir_dev = proc_mkdir (ci->devname, proc_root_driver);
+    snprintf(dir, sizeof(dir), "driver/%s", ci->devname);
+    ci->dir_dev = proc_mkdir(dir, NULL);
     if (!ci->dir_dev)
     {
         printk (KERN_ERR "%s: Unable to create directory /proc/driver/%s\n",
                 THIS_MODULE->name, ci->devname);
         goto fail;
     }
-    ci->dir_dev->owner = THIS_MODULE;
     e = create_proc_read_entry ("info", S_IFREG | S_IRUGO,
                                 ci->dir_dev, sbecom_proc_get_sbe_info, ci);
     if (!e)
@@ -377,7 +326,6 @@ sbecom_proc_brd_init (ci_t * ci)
                 THIS_MODULE->name, ci->devname);
         goto fail;
     }
-    e->owner = THIS_MODULE;
     return 0;
 
 fail:
diff --git a/drivers/net/wan/cxt1e1/sbeproc.h b/drivers/net/wan/cxt1e1/sbeproc.h
index 4aa53f4..f8025f7 100644
--- a/drivers/net/wan/cxt1e1/sbeproc.h
+++ b/drivers/net/wan/cxt1e1/sbeproc.h
@@ -1,14 +1,7 @@
-/*
- * $Id: sbeproc.h,v 1.2 2005/10/17 23:55:28 rickd PMCC4_3_1B $
- */
-
 #ifndef _INC_SBEPROC_H_
 #define _INC_SBEPROC_H_
 
-/*-----------------------------------------------------------------------------
- * sbeproc.h -
- *
- * Copyright (C) 2004-2005  SBE, Inc.
+/* Copyright (C) 2004-2005  SBE, Inc.
  *
  *   This program is free software; you can redistribute it and/or modify
  *   it under the terms of the GNU General Public License as published by
@@ -19,34 +12,14 @@
  *   but WITHOUT ANY WARRANTY; without even the implied warranty of
  *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  *   GNU General Public License for more details.
- *
- * For further information, contact via email: support@sbei.com
- * SBE, Inc.  San Ramon, California  U.S.A.
- *-----------------------------------------------------------------------------
- * RCS info:
- * RCS revision: $Revision: 1.2 $
- * Last changed on $Date: 2005/10/17 23:55:28 $
- * Changed by $Author: rickd $
- *-----------------------------------------------------------------------------
- * $Log: sbeproc.h,v $
- * Revision 1.2  2005/10/17 23:55:28  rickd
- * sbecom_proc_brd_init() is an declared an __init function.
- *
- * Revision 1.1  2005/09/28 00:10:09  rickd
- * Remove unneeded inclusion of c4_private.h.
- *
- * Revision 1.0  2005/05/10 22:21:46  rickd
- * Initial check-in.
- *
- *-----------------------------------------------------------------------------
  */
 
 
 #ifdef CONFIG_PROC_FS
 #ifdef __KERNEL__
-void        sbecom_proc_brd_cleanup (ci_t *);
-int __init  sbecom_proc_brd_init (ci_t *);
+void sbecom_proc_brd_cleanup(ci_t *);
+int __init sbecom_proc_brd_init(ci_t *);
 
-#endif                          /*** __KERNEL__ ***/
-#endif                          /*** CONFIG_PROC_FS ***/
-#endif                          /*** _INC_SBEPROC_H_ ***/
+#endif
+#endif
+#endif

-- 
Krzysztof Halasa

^ permalink raw reply related

* Re: [PATCH] sky2: set carrier off in probe
From: Stephen Hemminger @ 2009-10-30  3:09 UTC (permalink / raw)
  To: Brandon Philips; +Cc: netdev
In-Reply-To: <20091029235807.GF3228@jenkins.home.ifup.org>

On Thu, 29 Oct 2009 16:58:07 -0700
Brandon Philips <bphilips@suse.de> wrote:

> Before bringing up a sky2 interface up ethtool reports 
> "Link detected: yes". Do as ixgbe does and netif_carrier_off() on
> probe().
> 
> Signed-off-by: Brandon Philips <bphilips@suse.de>
> 
> ---
>  drivers/net/sky2.c |    2 ++
>  1 file changed, 2 insertions(+)
> 
> Index: linux-2.6/drivers/net/sky2.c
> ===================================================================
> --- linux-2.6.orig/drivers/net/sky2.c
> +++ linux-2.6/drivers/net/sky2.c
> @@ -4538,6 +4538,8 @@ static int __devinit sky2_probe(struct p
>  		goto err_out_free_netdev;
>  	}
>  
> +	netif_carrier_off(dev);
> +
>  	netif_napi_add(dev, &hw->napi, sky2_poll, NAPI_WEIGHT);
>  
>  	err = request_irq(pdev->irq, sky2_intr,

IMHO carrier is meaningless until device is up? What software
cares?

-- 

^ permalink raw reply

* linux-next: manual merge of the net/wireless tree with the staging.current tree
From: Stephen Rothwell @ 2009-10-30  3:18 UTC (permalink / raw)
  To: David Miller, netdev
  Cc: linux-next, linux-kernel, Randy Dunlap, Greg Kroah-Hartman,
	Larry Finger, John W. Linville

Hi all,

Today's linux-next merge of the net tree got conflicts in
drivers/staging/rtl8187se/Kconfig and drivers/staging/rtl8192e/Kconfig
between commit a26961e914c88e3e2ed46ef67f83a33ad7b57c36 ("Staging: fix
wireless drivers depends") from the staging.current tree and commit
125b181aec7a67c71234284ecf6d9c729d05deda ("staging: Add proper selection
of WIRELESS_EXT and WEXT_PRIV") from the net/wireless tree.

Just context changes.  I fixed it up (see below) and can carry the fix
for a while.
-- 
Cheers,
Stephen Rothwell                    sfr@canb.auug.org.au

diff --cc drivers/staging/rtl8187se/Kconfig
index 203c79b,faf6c60..0000000
--- a/drivers/staging/rtl8187se/Kconfig
+++ b/drivers/staging/rtl8187se/Kconfig
@@@ -1,6 -1,7 +1,7 @@@
  config RTL8187SE
  	tristate "RealTek RTL8187SE Wireless LAN NIC driver"
 -	depends on PCI
 +	depends on PCI && WLAN
- 	depends on WIRELESS_EXT
+ 	select WIRELESS_EXT
+ 	select WEXT_PRIV
  	default N
  	---help---
diff --cc drivers/staging/rtl8192e/Kconfig
index 37e4fde,5c077b9..0000000
--- a/drivers/staging/rtl8192e/Kconfig
+++ b/drivers/staging/rtl8192e/Kconfig
@@@ -1,6 -1,7 +1,7 @@@
  config RTL8192E
  	tristate "RealTek RTL8192E Wireless LAN NIC driver"
 -	depends on PCI
 +	depends on PCI && WLAN
- 	depends on WIRELESS_EXT
+ 	select WIRELESS_EXT
+ 	select WEXT_PRIV
  	default N
  	---help---

^ permalink raw reply

* Re: [PATCH] udev: create empty regular files to represent net interfaces
From: Marco d'Itri @ 2009-10-30  3:30 UTC (permalink / raw)
  To: dann frazier
  Cc: Greg KH, Matt Domsch, Kay Sievers, linux-hotplug, Narendra_K,
	netdev, Jordan_Hargrave, Charles_Rose, Ben Hutchings
In-Reply-To: <20091029174600.GC3612@ldl.fc.hp.com>

[-- Attachment #1: Type: text/plain, Size: 324 bytes --]

On Oct 29, dann frazier <dannf@dannf.org> wrote:

> That would make a lot of users much happier (myself included), but it
> does restrict us into one view. At different times, admins think of
> their NICs by different properties. I may want to do IP assignment by
[Citation needed]

(An admin.)

-- 
ciao,
Marco

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply

* Re: linux-next: manual merge of the net/wireless tree with the staging.current tree
From: Greg KH @ 2009-10-30  3:44 UTC (permalink / raw)
  To: Stephen Rothwell
  Cc: David Miller, netdev, linux-next, linux-kernel, Randy Dunlap,
	Larry Finger, John W. Linville
In-Reply-To: <20091030141800.eb72e320.sfr@canb.auug.org.au>

On Fri, Oct 30, 2009 at 02:18:00PM +1100, Stephen Rothwell wrote:
> Hi all,
> 
> Today's linux-next merge of the net tree got conflicts in
> drivers/staging/rtl8187se/Kconfig and drivers/staging/rtl8192e/Kconfig
> between commit a26961e914c88e3e2ed46ef67f83a33ad7b57c36 ("Staging: fix
> wireless drivers depends") from the staging.current tree and commit
> 125b181aec7a67c71234284ecf6d9c729d05deda ("staging: Add proper selection
> of WIRELESS_EXT and WEXT_PRIV") from the net/wireless tree.
> 
> Just context changes.  I fixed it up (see below) and can carry the fix
> for a while.

Thanks, the fix looks fine to me.

greg k-h

^ permalink raw reply

* Re: [PATCH] sky2: set carrier off in probe
From: Brandon Philips @ 2009-10-30  3:51 UTC (permalink / raw)
  To: Stephen Hemminger; +Cc: netdev
In-Reply-To: <20091029200905.00f4c13d@nehalam>

On 20:09 Thu 29 Oct 2009, Stephen Hemminger wrote:
> On Thu, 29 Oct 2009 16:58:07 -0700
> Brandon Philips <bphilips@suse.de> wrote:
> 
> > Before bringing up a sky2 interface up ethtool reports 
> > "Link detected: yes". Do as ixgbe does and netif_carrier_off() on
> > probe().
> > 
> > Signed-off-by: Brandon Philips <bphilips@suse.de>
> > 
> > ---
> >  drivers/net/sky2.c |    2 ++
> >  1 file changed, 2 insertions(+)
> > 
> > Index: linux-2.6/drivers/net/sky2.c
> > ===================================================================
> > --- linux-2.6.orig/drivers/net/sky2.c
> > +++ linux-2.6/drivers/net/sky2.c
> > @@ -4538,6 +4538,8 @@ static int __devinit sky2_probe(struct p
> >  		goto err_out_free_netdev;
> >  	}
> >  
> > +	netif_carrier_off(dev);
> > +
> >  	netif_napi_add(dev, &hw->napi, sky2_poll, NAPI_WEIGHT);
> >  
> >  	err = request_irq(pdev->irq, sky2_intr,
> 
> IMHO carrier is meaningless until device is up? What software
> cares?

A customer had a script that was testing for ethtool reporting "Link
detected: yes" and taking some sort of action. They found other
drivers reported "Link detected: No" until the first interface up.

The right thing to do is up the interface first before looking at the
the Link state, and I told them to do that, but I figured that this
patch made sense too to fix the initial buglet.

Cheers,

	Brandon

^ permalink raw reply

* Re: [PATCH] sky2: set carrier off in probe
From: David Miller @ 2009-10-30  4:12 UTC (permalink / raw)
  To: bphilips; +Cc: shemminger, netdev
In-Reply-To: <20091030035128.GA3380@jenkins.home.ifup.org>

From: Brandon Philips <bphilips@suse.de>
Date: Thu, 29 Oct 2009 20:51:28 -0700

> The right thing to do is up the interface first before looking at the
> the Link state, and I told them to do that, but I figured that this
> patch made sense too to fix the initial buglet.

It is not valid to expect link status before bringing the interface
up.

Otherwise, if link status is expected in this case, drivers cannot
fully power down all elements of the chip when the device is not even
brought up.

^ permalink raw reply

* Re: [PATCH v3 4/7] fsl_pq_mdio: Add Suport for etsec2.0 devices.
From: David Miller @ 2009-10-30  4:21 UTC (permalink / raw)
  To: Sandeep.Kumar; +Cc: netdev, afleming
In-Reply-To: <1256826229-529-1-git-send-email-Sandeep.Kumar@freescale.com>

From: Sandeep Gopalpet <Sandeep.Kumar@freescale.com>
Date: Thu, 29 Oct 2009 19:53:49 +0530

> From: Sandeep Gopalpet <sandeep.kumar@freescale.com>
> 
> This patch adds mdio support for etsec2.0 devices.
> 
> Modified the fsl_pq_mdio structure to include the new mdio
> members.
> 
> Signed-off-by: Sandeep Gopalpet <sandeep.kumar@freescale.com>
> ---
>  *. Rebased to the net-next-2.6 tree as of 20091028 cloned from
>     http://www.kernel.org/pub/scm/linux/kernel/git/davem/net-next-2.6.git

It does not apply, again.

And again, here is the bundle I tried to apply using "git am --signoff":

	http://vger.kernel.org/~davem/bundle-641.mbox

--------------------
davem@sunset:~/src/GIT/net-next-2.6$ git am --signoff bundle-641.mbox 
Applying: gianfar: Add per queue structure support
Applying: gianfar: Introduce logical group support.
Applying: gianfar: Add Multiple Queue Support
Applying: fsl_pq_mdio: Add Suport for etsec2.0 devices.
error: patch failed: drivers/net/fsl_pq_mdio.c:405
error: drivers/net/fsl_pq_mdio.c: patch does not apply
Patch failed at 0004 fsl_pq_mdio: Add Suport for etsec2.0 devices.
When you have resolved this problem run "git am --resolved".
If you would prefer to skip this patch, instead run "git am --skip".
To restore the original branch and stop patching run "git am --abort".
--------------------

Did you try the bundle I posted yesterday which failed?  This
one is identical, you didn't change anything.

This is getting rediculious.

Try again, and when you do take the patches from patchwork at:

	http://patchwork.ozlabs.org/project/netdev/list/

and you try to apply them to net-next-2.6 using git (_not_ 'patch',
'patch' is way too lenient about fuzz and line offsets) so that you
can see what's happening.

I'm completely ignoring your patch postings until you sort this out.

You cannot have line offsets or fuzz when you send patches that are to
be applied by GIT, and that is the problem with patch #4:

davem@sunset:~/src/GIT/net-next-2.6$ patch -p1 <diff
patching file drivers/net/fsl_pq_mdio.c
Hunk #6 succeeded at 436 with fuzz 1.
patching file drivers/net/fsl_pq_mdio.h

GIT does not allow line fuzz, you must make absolutely pristine
patches, and therefore if you are testing your submission with just
'patch' that absolutely will not work.

Thanks.

^ permalink raw reply

* Re: [PATCH 1/4] gro: Name the GRO result enumeration type
From: David Miller @ 2009-10-30  4:29 UTC (permalink / raw)
  To: herbert; +Cc: bhutchings, netdev, linux-net-drivers
In-Reply-To: <20091029174811.GA30749@gondor.apana.org.au>

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Thu, 29 Oct 2009 13:48:11 -0400

> On Thu, Oct 29, 2009 at 05:17:09PM +0000, Ben Hutchings wrote:
>> This clarifies which return and parameter types are GRO result codes
>> and not RX result codes.
>> 
>> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
> 
> Acked-by: Herbert Xu <herbert@gondor.apana.org.au>

Applied.

^ permalink raw reply

* Re: [PATCH 2/4] gro: Change all receive functions to return GRO result codes
From: David Miller @ 2009-10-30  4:29 UTC (permalink / raw)
  To: herbert; +Cc: bhutchings, netdev, linux-net-drivers
In-Reply-To: <20091029174823.GB30749@gondor.apana.org.au>

From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Thu, 29 Oct 2009 13:48:23 -0400

> On Thu, Oct 29, 2009 at 05:18:15PM +0000, Ben Hutchings wrote:
>> This will allow drivers to adjust their receive path dynamically
>> based on whether GRO is being applied successfully.
>> 
>> Currently all in-tree callers ignore the return values of these
>> functions and do not need to be changed.
>> 
>> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
> 
> Acked-by: Herbert Xu <herbert@gondor.apana.org.au>

Applied.

^ permalink raw reply

* Re: [PATCHv2] gro: Name the GRO result enumeration type
From: David Miller @ 2009-10-30  4:32 UTC (permalink / raw)
  To: bhutchings; +Cc: netdev, linux-net-drivers
In-Reply-To: <1256840775.2827.83.camel@achroite>

From: Ben Hutchings <bhutchings@solarflare.com>
Date: Thu, 29 Oct 2009 18:26:15 +0000

> This clarifies which return and parameter types are GRO result codes
> and not RX result codes.
> 
> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>
> ---
> This replaces the previous patch 1/4 and avoids introducing compiler
> warnings.  The original patches 2-4 will still apply on top of it.

You can't do this Ben.

Changing this patch makes the follow-on patches not apply cleanly.

So if you respin stuff like this, you have to respin the follow-on
patches too.

I'll fix this up, but I am so irritated that I've wasted so much time
tonight already on patch submissions that were not handled with any
care at all.  And it's all at my expense.

^ permalink raw reply

* Re: [PATCH 3/4] sfc: Feed GRO result into RX allocation policy and interrupt moderation
From: David Miller @ 2009-10-30  4:33 UTC (permalink / raw)
  To: bhutchings; +Cc: netdev, linux-net-drivers
In-Reply-To: <1256836884.2827.73.camel@achroite>

From: Ben Hutchings <bhutchings@solarflare.com>
Date: Thu, 29 Oct 2009 17:21:24 +0000

> When GRO is successfully merging received packets, we should allocate
> raw page buffers rather than skbs that will be discarded by GRO.
> Otherwise, we should allocate skbs.
> 
> GRO also benefits from higher interrupt moderation, so increase the
> score for mergeable RX packets.
> 
> Signed-off-by: Ben Hutchings <bhutchings@solarflare.com>

I'll pull net-2.6 into net-next-2.6 before applying this patch and the
next one.

But you need to tell me that such dependencies exist when you submit
patches like this, ok?

^ permalink raw reply

* Re: [PATCH] sky2: set carrier off in probe
From: Brandon Philips @ 2009-10-30  4:30 UTC (permalink / raw)
  To: David Miller; +Cc: shemminger, netdev
In-Reply-To: <20091029.211219.182331672.davem@davemloft.net>

On 21:12 Thu 29 Oct 2009, David Miller wrote:
> From: Brandon Philips <bphilips@suse.de>
> Date: Thu, 29 Oct 2009 20:51:28 -0700
> 
> > The right thing to do is up the interface first before looking at the
> > the Link state, and I told them to do that, but I figured that this
> > patch made sense too to fix the initial buglet.
> 
> It is not valid to expect link status before bringing the interface
> up.

I agree the link state makes no sense when the interface isn't up.
The buglet is that other drivers seem to report "Link detected: no"
after probe while sky2 doesn't.

I don't have a strong feeling on this patch since the customer fixed
their script to do the right thing.

Cheers,

	Brandon

^ permalink raw reply

* Re: [PATCH] sky2: set carrier off in probe
From: David Miller @ 2009-10-30  4:38 UTC (permalink / raw)
  To: bphilips; +Cc: shemminger, netdev
In-Reply-To: <20091030043050.GB3380@jenkins.home.ifup.org>

From: Brandon Philips <bphilips@suse.de>
Date: Thu, 29 Oct 2009 21:30:50 -0700

> The buglet is that other drivers seem to report "Link detected: no"
> after probe while sky2 doesn't.

I agree that we should report something consistent before interface
up and 'no' is probably the best.

I remember fixing something similar in other drivers a few months
ago.

^ permalink raw reply

* Re: [RFC-PATCH] dhcp provisioning support in cxgb3i
From: Rakesh Ranjan @ 2009-10-30  5:24 UTC (permalink / raw)
  To: Mike Christie
  Cc: davem, James Bottomley, Karen Xie, open-iscsi@googlegroups.com,
	LKML, linux-scsi@vger.kernel.org, netdev
In-Reply-To: <4AEA04A4.1060800@cs.wisc.edu>

Mike Christie wrote:
> Rakesh Ranjan wrote:
>> Hi Mike,
>>
>> Herein attached patches for having dhcp provisioning support in 
>> cxgb3i. I have added one new iscsi netlink message 
>> ISCSI_UEVENT_REQ_IPCONF. 
> 
> Is the idea to have iscsid/uip send down this msg?
> 
> Was it not possible to hook in more like how bnx2i does dhcp?

yep, idea is to have iscsid send down ISCSI_UEVENT_REQ_IPCONF msg. bnx2i 
approach in our case for at least T3 is not feasible.

Regards
Rakesh Ranjan

^ permalink raw reply

* Re: [PATCH] udev: create empty regular files to represent net interfaces
From: dann frazier @ 2009-10-30  5:38 UTC (permalink / raw)
  To: Greg KH, Matt Domsch, Kay Sievers, linux-hotplug, Narendra_K,
	netdev, Jordan_Ha
In-Reply-To: <20091030033029.GA4412@bongo.bofh.it>

On Fri, Oct 30, 2009 at 04:30:29AM +0100, Marco d'Itri wrote:
> On Oct 29, dann frazier <dannf@dannf.org> wrote:
> 
> > That would make a lot of users much happier (myself included), but it
> > does restrict us into one view. At different times, admins think of
> > their NICs by different properties. I may want to do IP assignment by
> [Citation needed]

Is "I" not clear, or do you just not believe I admin servers?

-- 
dann frazier


^ permalink raw reply

* Re: [PATCH kernel 2.6.32-rc5] pcnet_cs: add cis of PreMax PE-200 ethernet pcmcia card
From: David Miller @ 2009-10-30  5:51 UTC (permalink / raw)
  To: ken_kawasaki; +Cc: netdev
In-Reply-To: <20091018103920.ca9217ee.ken_kawasaki@spring.nifty.jp>

From: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>
Date: Sun, 18 Oct 2009 10:39:20 +0900

> 
> pcnet_cs,serial_cs:
> 
> add cis of PreMax ethernet pcmcia card,
> and some Sierra Wireless serial card(AC555, AC7xx, AC8xx).
> 
> use PROD_ID for AC7xx, because MANF_ID of AC7xx and AC8xx are the same.
> 
> 
> Signed-off-by: Ken Kawasaki <ken_kawasaki@spring.nifty.jp>

Applied to net-2.6, thanks.

^ permalink raw reply

* Re: [PATCH] net: Fix RPF to work with policy routing
From: David Miller @ 2009-10-30  5:51 UTC (permalink / raw)
  To: hadi; +Cc: netdev, atis, eric.dumazet, zenczykowski
In-Reply-To: <1255867954.4815.25.camel@dogo.mojatatu.com>

From: jamal <hadi@cyberus.ca>
Date: Sun, 18 Oct 2009 08:12:33 -0400

> commit f7c6fd2465d8e6f4f89c5d1262da10b4a6d499d0
> Author: Jamal Hadi Salim <hadi@cyberus.ca>
> Date:   Sun Oct 18 08:04:51 2009 -0400
> 
>     [PATCH] net: Fix RPF to work with policy routing
>     Policy routing is not looked up by mark on reverse path filtering.
>     This fixes it.
>     
>     Signed-off-by: Jamal Hadi Salim <hadi@cyberus.ca>

Applied to net-2.6, thanks.

^ permalink raw reply

* Re: [PATCH 0/6] sky2: driver update
From: David Miller @ 2009-10-30  5:53 UTC (permalink / raw)
  To: shemminger; +Cc: netdev
In-Reply-To: <20091029163704.793246334@vyatta.com>

From: Stephen Hemminger <shemminger@vyatta.com>
Date: Thu, 29 Oct 2009 09:37:04 -0700

> This patch set adds support for Yukon Optima (88E8059) based
> on the vendor driver.  Hopefully, it can go in 2.6.32.

Sorry, this is too much too late.  You don't even have the hardware
to test the changes you are making to the driver which makes this
even more questionable for net-2.6

I'll toss this into net-next-2.6 and let's let it cook there for
a while at least.

If you want to pick out a small bug fix or two from this series
for net-2.6, please feel free to resubmit them specifically for
net-2.6 inclusion.

Thanks.

^ permalink raw reply

* Re: [PATCH] net: fix kmemcheck annotations
From: David Miller @ 2009-10-30  5:54 UTC (permalink / raw)
  To: eric.dumazet; +Cc: netdev
In-Reply-To: <4AE97220.3000004@gmail.com>

From: Eric Dumazet <eric.dumazet@gmail.com>
Date: Thu, 29 Oct 2009 11:44:48 +0100

> David Miller a écrit :
>> 
>> We may be trading size for performance here, I wonder if
>> it's wise to move queue_mapping like that and what
>> locality change we get as a result.
> 
> I agree, but could not convince me it makes a difference.

Ok, I'll apply your patch as-is to net-2.6, thanks!

^ permalink raw reply

* Re: [net-2.6 PATCH] e100: e100_phy_init() isolates selected PHY, causes 10 second boot delay
From: David Miller @ 2009-10-30  5:54 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, bernhard.kaindl, bruce.w.allan
In-Reply-To: <20091029234228.5100.17917.stgit@localhost.localdomain>

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 29 Oct 2009 16:42:41 -0700

> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> A change in how PHYs are electrically isolated caused all PHYs to be
> isolated followed by reverting that isolation for the selected PHY.
> Unfortunately, isolating the selected PHY for even a short period of
> time can result in DHCP negotiation taking more than 10 seconds on certain
> embedded configurations delaying boot time as reported by Bernhard Kaindl.
> This patch reverts the change to how PHYs are isolated yet still works
> around the issue for 82552 needing the selected PHY's BMCR register to
> be written after the unused PHYs are isolated.  This code is moved below
> the setting of nic->phy ID in order to do the 82552-specific workaround.
> 
> Cc: Bernhard Kaindl <bernhard.kaindl@gmx.net>
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>

Applied.

^ permalink raw reply

* Re: [net-2.6 PATCH 1/2] e1000e: config PHY via software after resets
From: David Miller @ 2009-10-30  5:54 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, bruce.w.allan
In-Reply-To: <20091029234545.5413.9667.stgit@localhost.localdomain>

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 29 Oct 2009 16:45:45 -0700

> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> On PCH-based (82577/82578) and some ICH8-based parts (82566) there is an
> issue with the hardware automatically configuring the PHY with contents
> from the EEPROM after the PHY is reset, so do the configuration by the
> driver instead.  This was already similarly done for some 82566 parts in
> e1000_phy_hw_reset_ich8lan() but needs to be done after other resets,
> so move the PHY configuration code to its own function and call after
> all PHY resets.
> 
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>

Applied.

^ permalink raw reply

* Re: [net-2.6 PATCH 2/2] e1000e: rework disable K1 at 1000Mbps for 82577/82578
From: David Miller @ 2009-10-30  5:54 UTC (permalink / raw)
  To: jeffrey.t.kirsher; +Cc: netdev, gospo, bruce.w.allan
In-Reply-To: <20091029234604.5413.1698.stgit@localhost.localdomain>

From: Jeff Kirsher <jeffrey.t.kirsher@intel.com>
Date: Thu, 29 Oct 2009 16:46:05 -0700

> From: Bruce Allan <bruce.w.allan@intel.com>
> 
> This patch reworks a previous workaround (commit 7d3cabbcc) for an issue
> in hardware where noise on the interconnect between the MAC and PHY could
> be generated by a lower power mode (K1) at 1000Mbps resulting in bad
> packets.  Disable K1 while at 1000 Mbps but keep it enabled for 10/100Mbps
> and when the cable is disconnected.  The original version of this
> workaround was found to be incomplete.
> 
> Signed-off-by: Bruce Allan <bruce.w.allan@intel.com>
> Signed-off-by: Jeff Kirsher <jeffrey.t.kirsher@intel.com>

Applied.

^ permalink raw reply

* Re: [PATCH] ibmtr: possible Read buffer overflow?
From: David Miller @ 2009-10-30  5:54 UTC (permalink / raw)
  To: roel.kluin; +Cc: netdev, akpm
In-Reply-To: <4AC7C19F.2080800@gmail.com>

From: Roel Kluin <roel.kluin@gmail.com>
Date: Sat, 03 Oct 2009 23:26:55 +0200

> Prevent read outside array bounds.
> 
> Signed-off-by: Roel Kluin <roel.kluin@gmail.com>
> ---
> Is this maybe required?

I can't see anything that protects against this, so yes it
seems to be required.

Applied to net-2.6, thanks.

^ 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