[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <m3d4454phz.fsf@intrepid.localdomain>
Date: Fri, 30 Oct 2009 02:52:40 +0100
From: Krzysztof Halasa <khc@...waw.pl>
To: Bob Beers <bob.beers@...il.com>
Cc: Greg KH <greg@...ah.com>, netdev@...r.kernel.org
Subject: Re: wanPMC-CxT1E1
Bob Beers <bob.beers@...il.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@...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@...i.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@...stopsystems.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@...stopsystems.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@...i.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@...i.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@...stopsystems.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@...i.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@...i.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@...stopsystems.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@...i.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@...i.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@...i.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
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists