netdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PULL REQ] WAN: LMC driver
@ 2010-07-31 14:36 Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 01/29] LMC: whitespace and cosmetic fixes Krzysztof Halasa
                   ` (28 more replies)
  0 siblings, 29 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 14:36 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

David,

I have done a bit of work on the LMC WAN driver. It's still far from
perfection, though I think it's a visible improvement. It merges with
your current "next" tree cleanly. I'll also post the individual patches.
Please pull. Thanks.

The following changes since Linux 2.6.35-rc6 are available in the git
repository at:
  git://git.kernel.org/pub/scm/linux/kernel/git/chris/linux-2.6.git lmc

Krzysztof Hałasa (29):
      LMC: whitespace and cosmetic fixes.
      LMC: Remove "lmc_" prefix from source file names.
      LMC: Remove 3 typedefs.
      LMC: fix initialization messages.
      LMC: Remove non-LMC_PPP modes, everything is already handled by generic HDLC.
      LMC: Remove stub files proto.[ch].
      LMC: Convert media structs to named initializers.
      LMC: Remove "dummy" media functions.
      LMC: shuffle protocol routines to avoid a need for prototypes.
      LMC: Remove empty media functions.
      LMC: Get rid of lmcConsoleLog().
      LMC: Get rid of the event logger.
      LMC: Get rid of debug.[ch].
      LMC: Remove now empty header file lmc.h.
      LMC: lanmedia.com is not functional anymore.
      LMC: Remove unused macros.
      LMC: don't wait in lmc_trace().
      LMC: strip "lmc_" prefix from field names in struct card.
      LMC: Remove sc->check. We don't do such checks in drivers.
      LMC: Remove unused sc->board_idx.
      LMC: I'm sure Linux doesn't swap PCI subsystem device and vendor IDs.
      LMC: Move model logic to media structs.
      LMC: lmc_set_protocol() is effectively a NOP, remove it.
      LMC: Remove unused variables.
      LMC: Remove unneeded prototypes.
      LMC: Remove redundant macro.
      LMC: Remove redundant card->name.
      LMC: Simplify and fix CSR names and logic.
      LMC: Report proper card type before the first dev->open().

 drivers/net/wan/lmc/Makefile    |    4 +-
 drivers/net/wan/lmc/ioctl.h     |  228 +++++
 drivers/net/wan/lmc/lmc.h       |   32 -
 drivers/net/wan/lmc/lmc_debug.c |   82 --
 drivers/net/wan/lmc/lmc_debug.h |   52 -
 drivers/net/wan/lmc/lmc_ioctl.h |  257 -----
 drivers/net/wan/lmc/lmc_main.c  | 2145 ---------------------------------------
 drivers/net/wan/lmc/lmc_media.c | 1211 ----------------------
 drivers/net/wan/lmc/lmc_proto.c |  135 ---
 drivers/net/wan/lmc/lmc_proto.h |   18 -
 drivers/net/wan/lmc/lmc_var.h   |  470 ---------
 drivers/net/wan/lmc/main.c      | 1834 +++++++++++++++++++++++++++++++++
 drivers/net/wan/lmc/media.c     |  944 +++++++++++++++++
 drivers/net/wan/lmc/var.h       |  423 ++++++++
 14 files changed, 3431 insertions(+), 4404 deletions(-)
 create mode 100644 drivers/net/wan/lmc/ioctl.h
 delete mode 100644 drivers/net/wan/lmc/lmc.h
 delete mode 100644 drivers/net/wan/lmc/lmc_debug.c
 delete mode 100644 drivers/net/wan/lmc/lmc_debug.h
 delete mode 100644 drivers/net/wan/lmc/lmc_ioctl.h
 delete mode 100644 drivers/net/wan/lmc/lmc_main.c
 delete mode 100644 drivers/net/wan/lmc/lmc_media.c
 delete mode 100644 drivers/net/wan/lmc/lmc_proto.c
 delete mode 100644 drivers/net/wan/lmc/lmc_proto.h
 delete mode 100644 drivers/net/wan/lmc/lmc_var.h
 create mode 100644 drivers/net/wan/lmc/main.c
 create mode 100644 drivers/net/wan/lmc/media.c
 create mode 100644 drivers/net/wan/lmc/var.h

-- 
Krzysztof Halasa

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 01/29] LMC: whitespace and cosmetic fixes.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 02/29] LMC: Remove "lmc_" prefix from source file names Krzysztof Halasa
                   ` (27 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/lmc.h       |    9 +-
 drivers/net/wan/lmc/lmc_debug.c |  103 +-
 drivers/net/wan/lmc/lmc_debug.h |    8 +-
 drivers/net/wan/lmc/lmc_ioctl.h |  349 ++---
 drivers/net/wan/lmc/lmc_main.c  | 3348 +++++++++++++++++++--------------------
 drivers/net/wan/lmc/lmc_media.c | 1840 ++++++++++------------
 drivers/net/wan/lmc/lmc_proto.c |  129 +-
 drivers/net/wan/lmc/lmc_var.h   |  726 ++++-----
 8 files changed, 3059 insertions(+), 3453 deletions(-)

diff --git a/drivers/net/wan/lmc/lmc.h b/drivers/net/wan/lmc/lmc.h
index 4ced7ac..6d3af03 100644
--- a/drivers/net/wan/lmc/lmc.h
+++ b/drivers/net/wan/lmc/lmc.h
@@ -3,14 +3,11 @@
 
 #include "lmc_var.h"
 
-/*
- * prototypes for everyone
- */
-int lmc_probe(struct net_device * dev);
+int lmc_probe(struct net_device *dev);
 unsigned lmc_mii_readreg(lmc_softc_t * const sc, unsigned
-      			  devaddr, unsigned regno);
+			 devaddr, unsigned regno);
 void lmc_mii_writereg(lmc_softc_t * const sc, unsigned devaddr,
-			       unsigned regno, unsigned data);
+		      unsigned regno, unsigned data);
 void lmc_led_on(lmc_softc_t * const, u32);
 void lmc_led_off(lmc_softc_t * const, u32);
 unsigned lmc_mii_readreg(lmc_softc_t * const, unsigned, unsigned);
diff --git a/drivers/net/wan/lmc/lmc_debug.c b/drivers/net/wan/lmc/lmc_debug.c
index 15049d7..35a8610 100644
--- a/drivers/net/wan/lmc/lmc_debug.c
+++ b/drivers/net/wan/lmc/lmc_debug.c
@@ -1,50 +1,45 @@
 #include <linux/types.h>
 #include <linux/netdevice.h>
 #include <linux/interrupt.h>
-
 #include "lmc_debug.h"
 
 /*
  * Prints out len, max to 80 octets using printk, 20 per line
  */
-#ifdef DEBUG
-#ifdef LMC_PACKET_LOG
+
+#if defined(DEBUG) && defined(LMC_PACKET_LOG)
 void lmcConsoleLog(char *type, unsigned char *ucData, int iLen)
 {
-  int iNewLine = 1;
-  char str[80], *pstr;
-  
-  sprintf(str, KERN_DEBUG "lmc: %s: ", type);
-  pstr = str+strlen(str);
-  
-  if(iLen > 240){
-      printk(KERN_DEBUG "lmc: Printing 240 chars... out of: %d\n", iLen);
-    iLen = 240;
-  }
-  else{
-      printk(KERN_DEBUG "lmc: Printing %d chars\n", iLen);
-  }
+	int iNewLine = 1;
+	char str[80], *pstr;
 
-  while(iLen > 0) 
-    {
-      sprintf(pstr, "%02x ", *ucData);
-      pstr+=3;
-      ucData++;
-      if( !(iNewLine % 20))
-	{
-	  sprintf(pstr, "\n");
-	  printk(str);
-	  sprintf(str, KERN_DEBUG "lmc: %s: ", type);
-	  pstr=str+strlen(str);
+	sprintf(str, KERN_DEBUG "lmc: %s: ", type);
+	pstr = str+strlen(str);
+
+	if (iLen > 240) {
+		printk(KERN_DEBUG "lmc: Printing 240 chars... out of: %d\n",
+		       iLen);
+		iLen = 240;
+	} else
+		printk(KERN_DEBUG "lmc: Printing %d chars\n", iLen);
+
+	while (iLen > 0) {
+		sprintf(pstr, "%02x ", *ucData);
+		pstr += 3;
+		ucData++;
+		if (!(iNewLine % 20)) {
+			sprintf(pstr, "\n");
+			printk(str);
+			sprintf(str, KERN_DEBUG "lmc: %s: ", type);
+			pstr = str + strlen(str);
+		}
+		iNewLine++;
+		iLen--;
 	}
-      iNewLine++;
-      iLen--;
-    }
-  sprintf(pstr, "\n");
-  printk(str);
+	sprintf(pstr, "\n");
+	printk(str);
 }
 #endif
-#endif
 
 #ifdef DEBUG
 u32 lmcEventLogIndex;
@@ -52,31 +47,29 @@ u32 lmcEventLogBuf[LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS];
 
 void lmcEventLog(u32 EventNum, u32 arg2, u32 arg3)
 {
-  lmcEventLogBuf[lmcEventLogIndex++] = EventNum;
-  lmcEventLogBuf[lmcEventLogIndex++] = arg2;
-  lmcEventLogBuf[lmcEventLogIndex++] = arg3;
-  lmcEventLogBuf[lmcEventLogIndex++] = jiffies;
-
-  lmcEventLogIndex &= (LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS) - 1;
+	lmcEventLogBuf[lmcEventLogIndex++] = EventNum;
+	lmcEventLogBuf[lmcEventLogIndex++] = arg2;
+	lmcEventLogBuf[lmcEventLogIndex++] = arg3;
+	lmcEventLogBuf[lmcEventLogIndex++] = jiffies;
+	lmcEventLogIndex &= (LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS) - 1;
 }
-#endif  /*  DEBUG  */
+#endif  /* DEBUG */
 
-void lmc_trace(struct net_device *dev, char *msg){
+void lmc_trace(struct net_device *dev, char *msg)
+{
 #ifdef LMC_TRACE
-    unsigned long j = jiffies + 3; /* Wait for 50 ms */
+	unsigned long j = jiffies + 3; /* Wait for 50 ms */
 
-    if(in_interrupt()){
-        printk("%s: * %s\n", dev->name, msg);
-//        while(time_before(jiffies, j+10))
-//            ;
-    }
-    else {
-        printk("%s: %s\n", dev->name, msg);
-        while(time_before(jiffies, j))
-            schedule();
-    }
+	if (in_interrupt()) {
+		printk(KERN_DEBUG "%s: * %s\n", dev->name, msg);
+#if 0
+		while (time_before(jiffies, j + 10))
+			;
+#endif
+	} else {
+		printk(KERN_DEBUG "%s: %s\n", dev->name, msg);
+		while (time_before(jiffies, j))
+			schedule();
+	}
 #endif
 }
-
-
-/* --------------------------- end if_lmc_linux.c ------------------------ */
diff --git a/drivers/net/wan/lmc/lmc_debug.h b/drivers/net/wan/lmc/lmc_debug.h
index 2d46f12..289f7d9 100644
--- a/drivers/net/wan/lmc/lmc_debug.h
+++ b/drivers/net/wan/lmc/lmc_debug.h
@@ -3,12 +3,12 @@
 
 #ifdef DEBUG
 #ifdef LMC_PACKET_LOG
-#define LMC_CONSOLE_LOG(x,y,z) lmcConsoleLog((x), (y), (z))
+#define LMC_CONSOLE_LOG(x, y, z) lmcConsoleLog((x), (y), (z))
 #else
-#define LMC_CONSOLE_LOG(x,y,z)
+#define LMC_CONSOLE_LOG(x, y, z)
 #endif
 #else
-#define LMC_CONSOLE_LOG(x,y,z)
+#define LMC_CONSOLE_LOG(x, y, z)
 #endif
 
 
@@ -42,7 +42,7 @@ extern u32 lmcEventLogIndex;
 extern u32 lmcEventLogBuf[LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS];
 #define LMC_EVENT_LOG(x, y, z) lmcEventLog((x), (y), (z))
 #else
-#define LMC_EVENT_LOG(x,y,z)
+#define LMC_EVENT_LOG(x, y, z)
 #endif /* end ifdef _DBG_EVENTLOG */
 
 void lmcConsoleLog(char *type, unsigned char *ucData, int iLen);
diff --git a/drivers/net/wan/lmc/lmc_ioctl.h b/drivers/net/wan/lmc/lmc_ioctl.h
index 72fb113..45b97e0 100644
--- a/drivers/net/wan/lmc/lmc_ioctl.h
+++ b/drivers/net/wan/lmc/lmc_ioctl.h
@@ -1,76 +1,69 @@
 #ifndef _LMC_IOCTL_H_
 #define _LMC_IOCTL_H_
-/*	$Id: lmc_ioctl.h,v 1.15 2000/04/06 12:16:43 asj Exp $	*/
-
- /*
-  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
-  * All rights reserved.  www.lanmedia.com
-  *
-  * This code is written by:
-  * Andrew Stanley-Jones (asj@cban.com)
-  * Rob Braun (bbraun@vix.com),
-  * Michael Graff (explorer@vix.com) and
-  * Matt Thomas (matt@3am-software.com).
-  *
-  * This software may be used and distributed according to the terms
-  * of the GNU General Public License version 2, incorporated herein by reference.
-  */
-
-#define LMCIOCGINFO             SIOCDEVPRIVATE+3 /* get current state */
-#define LMCIOCSINFO             SIOCDEVPRIVATE+4 /* set state to user values */
-#define LMCIOCGETLMCSTATS       SIOCDEVPRIVATE+5
-#define LMCIOCCLEARLMCSTATS     SIOCDEVPRIVATE+6
-#define LMCIOCDUMPEVENTLOG      SIOCDEVPRIVATE+7
-#define LMCIOCGETXINFO          SIOCDEVPRIVATE+8
-#define LMCIOCSETCIRCUIT        SIOCDEVPRIVATE+9
-#define LMCIOCUNUSEDATM         SIOCDEVPRIVATE+10
-#define LMCIOCRESET             SIOCDEVPRIVATE+11
-#define LMCIOCT1CONTROL         SIOCDEVPRIVATE+12
-#define LMCIOCIFTYPE            SIOCDEVPRIVATE+13
-#define LMCIOCXILINX            SIOCDEVPRIVATE+14
-
-#define LMC_CARDTYPE_UNKNOWN            -1
-#define LMC_CARDTYPE_HSSI               1       /* probed card is a HSSI card */
-#define LMC_CARDTYPE_DS3                2       /* probed card is a DS3 card */
-#define LMC_CARDTYPE_SSI                3       /* probed card is a SSI card */
-#define LMC_CARDTYPE_T1                 4       /* probed card is a T1 card */
-
-#define LMC_CTL_CARDTYPE_LMC5200	0	/* HSSI */
-#define LMC_CTL_CARDTYPE_LMC5245	1	/* DS3 */
-#define LMC_CTL_CARDTYPE_LMC1000	2	/* SSI, V.35 */
-#define LMC_CTL_CARDTYPE_LMC1200        3       /* DS1 */
-
-#define LMC_CTL_OFF			0	/* generic OFF value */
-#define LMC_CTL_ON			1	/* generic ON value */
-
-#define LMC_CTL_CLOCK_SOURCE_EXT	0	/* clock off line */
-#define LMC_CTL_CLOCK_SOURCE_INT	1	/* internal clock */
+/*
+ * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
+ * All rights reserved.  www.lanmedia.com
+ *
+ * This code is written by:
+ * Andrew Stanley-Jones (asj@cban.com)
+ * Rob Braun (bbraun@vix.com),
+ * Michael Graff (explorer@vix.com) and
+ * Matt Thomas (matt@3am-software.com).
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License version 2, incorporated herein by reference.
+ */
+
+#define LMCIOCGINFO         (SIOCDEVPRIVATE + 3) /* get current state */
+#define LMCIOCSINFO         (SIOCDEVPRIVATE + 4) /* set state to user values */
+#define LMCIOCGETLMCSTATS   (SIOCDEVPRIVATE + 5)
+#define LMCIOCCLEARLMCSTATS (SIOCDEVPRIVATE + 6)
+#define LMCIOCDUMPEVENTLOG  (SIOCDEVPRIVATE + 7)
+#define LMCIOCGETXINFO      (SIOCDEVPRIVATE + 8)
+#define LMCIOCSETCIRCUIT    (SIOCDEVPRIVATE + 9)
+#define LMCIOCUNUSEDATM     (SIOCDEVPRIVATE + 10)
+#define LMCIOCRESET         (SIOCDEVPRIVATE + 11)
+#define LMCIOCT1CONTROL     (SIOCDEVPRIVATE + 12)
+#define LMCIOCIFTYPE        (SIOCDEVPRIVATE + 13)
+#define LMCIOCXILINX        (SIOCDEVPRIVATE + 14)
+
+#define LMC_CARDTYPE_UNKNOWN		-1
+#define LMC_CARDTYPE_HSSI		1 /* probed card is a HSSI card */
+#define LMC_CARDTYPE_DS3		2 /* probed card is a DS3 card */
+#define LMC_CARDTYPE_SSI		3 /* probed card is a SSI card */
+#define LMC_CARDTYPE_T1			4 /* probed card is a T1 card */
+
+#define LMC_CTL_CARDTYPE_LMC5200	0 /* HSSI */
+#define LMC_CTL_CARDTYPE_LMC5245	1 /* DS3 */
+#define LMC_CTL_CARDTYPE_LMC1000	2 /* SSI, V.35 */
+#define LMC_CTL_CARDTYPE_LMC1200	3 /* DS1 */
+
+#define LMC_CTL_OFF			0 /* generic OFF value */
+#define LMC_CTL_ON			1 /* generic ON value */
+
+#define LMC_CTL_CLOCK_SOURCE_EXT	0 /* clock off line */
+#define LMC_CTL_CLOCK_SOURCE_INT	1 /* internal clock */
 
 #define LMC_CTL_CRC_LENGTH_16		16
 #define LMC_CTL_CRC_LENGTH_32		32
-#define LMC_CTL_CRC_BYTESIZE_2          2
-#define LMC_CTL_CRC_BYTESIZE_4          4
+#define LMC_CTL_CRC_BYTESIZE_2		2
+#define LMC_CTL_CRC_BYTESIZE_4		4
 
 
-#define LMC_CTL_CABLE_LENGTH_LT_100FT	0	/* DS3 cable < 100 feet */
-#define LMC_CTL_CABLE_LENGTH_GT_100FT	1	/* DS3 cable >= 100 feet */
+#define LMC_CTL_CABLE_LENGTH_LT_100FT	0 /* DS3 cable < 100 feet */
+#define LMC_CTL_CABLE_LENGTH_GT_100FT	1 /* DS3 cable >= 100 feet */
 
-#define LMC_CTL_CIRCUIT_TYPE_E1 0
-#define LMC_CTL_CIRCUIT_TYPE_T1 1
+#define LMC_CTL_CIRCUIT_TYPE_E1		0
+#define LMC_CTL_CIRCUIT_TYPE_T1		1
 
-/*
- * IFTYPE defines
- */
-#define LMC_PPP         1               /* use generic HDLC interface */
-#define LMC_NET         2               /* use direct net interface */
-#define LMC_RAW         3               /* use direct net interface */
+/* IFTYPE defines */
+#define LMC_PPP				1 /* use generic HDLC interface */
+#define LMC_NET				2 /* use direct net interface */
+#define LMC_RAW				3 /* use direct net interface */
 
-/*
- * These are not in the least IOCTL related, but I want them common.
- */
-/*
- * assignments for the GPIO register on the DEC chip (common)
- */
+/* These are not in the least IOCTL related, but I want them common. */
+
+/* assignments for the GPIO register on the DEC chip (common) */
 #define LMC_GEP_INIT		0x01 /* 0: */
 #define LMC_GEP_RESET		0x02 /* 1: */
 #define LMC_GEP_MODE		0x10 /* 4: */
@@ -78,42 +71,32 @@
 #define LMC_GEP_DATA		0x40 /* 6: serial out */
 #define LMC_GEP_CLK	        0x80 /* 7: serial clock */
 
-/*
- * HSSI GPIO assignments
- */
+/* HSSI GPIO assignments */
 #define LMC_GEP_HSSI_ST		0x04 /* 2: receive timing sense (deprecated) */
 #define LMC_GEP_HSSI_CLOCK	0x08 /* 3: clock source */
 
-/*
- * T1 GPIO assignments
- */
+/* T1 GPIO assignments */
 #define LMC_GEP_SSI_GENERATOR	0x04 /* 2: enable prog freq gen serial i/f */
 #define LMC_GEP_SSI_TXCLOCK	0x08 /* 3: provide clock on TXCLOCK output */
 
-/*
- * Common MII16 bits
- */
-#define LMC_MII16_LED0         0x0080
-#define LMC_MII16_LED1         0x0100
-#define LMC_MII16_LED2         0x0200
-#define LMC_MII16_LED3         0x0400  /* Error, and the red one */
-#define LMC_MII16_LED_ALL      0x0780  /* LED bit mask */
-#define LMC_MII16_FIFO_RESET   0x0800
-
-/*
- * definitions for HSSI
- */
-#define LMC_MII16_HSSI_TA      0x0001
-#define LMC_MII16_HSSI_CA      0x0002
-#define LMC_MII16_HSSI_LA      0x0004
-#define LMC_MII16_HSSI_LB      0x0008
-#define LMC_MII16_HSSI_LC      0x0010
-#define LMC_MII16_HSSI_TM      0x0020
-#define LMC_MII16_HSSI_CRC     0x0040
-
-/*
- * assignments for the MII register 16 (DS3)
- */
+/* Common MII16 bits */
+#define LMC_MII16_LED0		0x0080
+#define LMC_MII16_LED1		0x0100
+#define LMC_MII16_LED2		0x0200
+#define LMC_MII16_LED3		0x0400  /* Error, and the red one */
+#define LMC_MII16_LED_ALL	0x0780  /* LED bit mask */
+#define LMC_MII16_FIFO_RESET	0x0800
+
+/* definitions for HSSI */
+#define LMC_MII16_HSSI_TA	0x0001
+#define LMC_MII16_HSSI_CA	0x0002
+#define LMC_MII16_HSSI_LA	0x0004
+#define LMC_MII16_HSSI_LB	0x0008
+#define LMC_MII16_HSSI_LC	0x0010
+#define LMC_MII16_HSSI_TM	0x0020
+#define LMC_MII16_HSSI_CRC	0x0040
+
+/* assignments for the MII register 16 (DS3) */
 #define LMC_MII16_DS3_ZERO	0x0001
 #define LMC_MII16_DS3_TRLBK	0x0002
 #define LMC_MII16_DS3_LNLBK	0x0004
@@ -126,127 +109,115 @@
 #define LMC_MII16_DS3_SCRAM_LARS 0x4000
 
 /* Note: 2 pairs of LEDs where swapped by mistake
- * in Xilinx code for DS3 & DS1 adapters */
-#define LMC_DS3_LED0    0x0100          /* bit 08  yellow */
-#define LMC_DS3_LED1    0x0080          /* bit 07  blue   */
-#define LMC_DS3_LED2    0x0400          /* bit 10  green  */
-#define LMC_DS3_LED3    0x0200          /* bit 09  red    */
-
-/*
- * framer register 0 and 7 (7 is latched and reset on read)
- */
-#define LMC_FRAMER_REG0_DLOS            0x80    /* digital loss of service */
-#define LMC_FRAMER_REG0_OOFS            0x40    /* out of frame sync */
-#define LMC_FRAMER_REG0_AIS             0x20    /* alarm indication signal */
-#define LMC_FRAMER_REG0_CIS             0x10    /* channel idle */
-#define LMC_FRAMER_REG0_LOC             0x08    /* loss of clock */
-
-/*
- * Framer register 9 contains the blue alarm signal
- */
-#define LMC_FRAMER_REG9_RBLUE          0x02     /* Blue alarm failure */
-
-/*
- * Framer register 0x10 contains xbit error
- */
-#define LMC_FRAMER_REG10_XBIT          0x01     /* X bit error alarm failure */
-
-/*
- * And SSI, LMC1000
- */
-#define LMC_MII16_SSI_DTR	0x0001	/* DTR output RW */
-#define LMC_MII16_SSI_DSR	0x0002	/* DSR input RO */
-#define LMC_MII16_SSI_RTS	0x0004	/* RTS output RW */
-#define LMC_MII16_SSI_CTS	0x0008	/* CTS input RO */
-#define LMC_MII16_SSI_DCD	0x0010	/* DCD input RO */
-#define LMC_MII16_SSI_RI		0x0020	/* RI input RO */
-#define LMC_MII16_SSI_CRC                0x1000  /* CRC select - RW */
-
-/*
- * bits 0x0080 through 0x0800 are generic, and described
- * above with LMC_MII16_LED[0123] _LED_ALL, and _FIFO_RESET
- */
-#define LMC_MII16_SSI_LL		0x1000	/* LL output RW */
-#define LMC_MII16_SSI_RL		0x2000	/* RL output RW */
-#define LMC_MII16_SSI_TM		0x4000	/* TM input RO */
-#define LMC_MII16_SSI_LOOP	0x8000	/* loopback enable RW */
-
-/*
- * Some of the MII16 bits are mirrored in the MII17 register as well,
- * but let's keep thing separate for now, and get only the cable from
- * the MII17.
- */
-#define LMC_MII17_SSI_CABLE_MASK	0x0038	/* mask to extract the cable type */
-#define LMC_MII17_SSI_CABLE_SHIFT 3	/* shift to extract the cable type */
+   in Xilinx code for DS3 & DS1 adapters */
+#define LMC_DS3_LED0		0x0100 /* bit 08 yellow */
+#define LMC_DS3_LED1		0x0080 /* bit 07 blue   */
+#define LMC_DS3_LED2		0x0400 /* bit 10 green  */
+#define LMC_DS3_LED3		0x0200 /* bit 09 red    */
+
+/* framer register 0 and 7 (7 is latched and reset on read) */
+#define LMC_FRAMER_REG0_DLOS	0x80 /* digital loss of service */
+#define LMC_FRAMER_REG0_OOFS	0x40 /* out of frame sync */
+#define LMC_FRAMER_REG0_AIS	0x20 /* alarm indication signal */
+#define LMC_FRAMER_REG0_CIS	0x10 /* channel idle */
+#define LMC_FRAMER_REG0_LOC	0x08 /* loss of clock */
+
+/* Framer register 9 contains the blue alarm signal */
+#define LMC_FRAMER_REG9_RBLUE	0x02 /* Blue alarm failure */
+
+/* Framer register 0x10 contains xbit error */
+#define LMC_FRAMER_REG10_XBIT	0x01 /* X bit error alarm failure */
+
+/* And SSI, LMC1000 */
+#define LMC_MII16_SSI_DTR	0x0001 /* DTR output RW */
+#define LMC_MII16_SSI_DSR	0x0002 /* DSR input RO */
+#define LMC_MII16_SSI_RTS	0x0004 /* RTS output RW */
+#define LMC_MII16_SSI_CTS	0x0008 /* CTS input RO */
+#define LMC_MII16_SSI_DCD	0x0010 /* DCD input RO */
+#define LMC_MII16_SSI_RI	0x0020 /* RI input RO */
+#define LMC_MII16_SSI_CRC	0x1000 /* CRC select - RW */
+
+/* bits 0x0080 through 0x0800 are generic, and described
+   above with LMC_MII16_LED[0123] _LED_ALL, and _FIFO_RESET */
+#define LMC_MII16_SSI_LL	0x1000 /* LL output RW */
+#define LMC_MII16_SSI_RL	0x2000 /* RL output RW */
+#define LMC_MII16_SSI_TM	0x4000 /* TM input RO */
+#define LMC_MII16_SSI_LOOP	0x8000 /* loopback enable RW */
+
+/* Some of the MII16 bits are mirrored in the MII17 register as well,
+   but let's keep thing separate for now, and get only the cable from
+   the MII17. */
+#define LMC_MII17_SSI_CABLE_MASK	0x0038 /* mask to extract the cable type */
+#define LMC_MII17_SSI_CABLE_SHIFT	3 /* shift to extract the cable type */
 
 /*
  * And T1, LMC1200
  */
-#define LMC_MII16_T1_UNUSED1    0x0003
-#define LMC_MII16_T1_XOE                0x0004
-#define LMC_MII16_T1_RST                0x0008  /* T1 chip reset - RW */
-#define LMC_MII16_T1_Z                  0x0010  /* output impedance T1=1, E1=0 output - RW */
-#define LMC_MII16_T1_INTR               0x0020  /* interrupt from 8370 - RO */
-#define LMC_MII16_T1_ONESEC             0x0040  /* one second square wave - ro */
+#define LMC_MII16_T1_UNUSED1	0x0003
+#define LMC_MII16_T1_XOE	0x0004
+#define LMC_MII16_T1_RST	0x0008 /* T1 chip reset - RW */
+#define LMC_MII16_T1_Z		0x0010 /* output impedance T1=1, E1=0 output - RW */
+#define LMC_MII16_T1_INTR	0x0020 /* interrupt from 8370 - RO */
+#define LMC_MII16_T1_ONESEC	0x0040 /* one second square wave - ro */
 
-#define LMC_MII16_T1_LED0               0x0100
-#define LMC_MII16_T1_LED1               0x0080
-#define LMC_MII16_T1_LED2               0x0400
-#define LMC_MII16_T1_LED3               0x0200
-#define LMC_MII16_T1_FIFO_RESET 0x0800
+#define LMC_MII16_T1_LED0	0x0100
+#define LMC_MII16_T1_LED1	0x0080
+#define LMC_MII16_T1_LED2	0x0400
+#define LMC_MII16_T1_LED3	0x0200
+#define LMC_MII16_T1_FIFO_RESET	0x0800
 
-#define LMC_MII16_T1_CRC                0x1000  /* CRC select - RW */
-#define LMC_MII16_T1_UNUSED2    0xe000
+#define LMC_MII16_T1_CRC	0x1000 /* CRC select - RW */
+#define LMC_MII16_T1_UNUSED2	0xe000
 
 
-/* 8370 framer registers  */
+/* 8370 framer registers */
 
-#define T1FRAMER_ALARM1_STATUS  0x47
-#define T1FRAMER_ALARM2_STATUS  0x48
-#define T1FRAMER_FERR_LSB               0x50
-#define T1FRAMER_FERR_MSB               0x51    /* framing bit error counter */
-#define T1FRAMER_LCV_LSB                0x54
-#define T1FRAMER_LCV_MSB                0x55    /* line code violation counter */
-#define T1FRAMER_AERR                   0x5A
+#define T1FRAMER_ALARM1_STATUS	0x47
+#define T1FRAMER_ALARM2_STATUS	0x48
+#define T1FRAMER_FERR_LSB	0x50
+#define T1FRAMER_FERR_MSB	0x51 /* framing bit error counter */
+#define T1FRAMER_LCV_LSB	0x54
+#define T1FRAMER_LCV_MSB	0x55 /* line code violation counter */
+#define T1FRAMER_AERR		0x5A
 
 /* mask for the above AERR register */
-#define T1FRAMER_LOF_MASK               (0x0f0) /* receive loss of frame */
-#define T1FRAMER_COFA_MASK              (0x0c0) /* change of frame alignment */
-#define T1FRAMER_SEF_MASK               (0x03)  /* severely errored frame  */
+#define T1FRAMER_LOF_MASK	(0x0f0) /* receive loss of frame */
+#define T1FRAMER_COFA_MASK	(0x0c0) /* change of frame alignment */
+#define T1FRAMER_SEF_MASK	(0x03)/* severely errored frame  */
 
 /* 8370 framer register ALM1 (0x47) values
  * used to determine link status
  */
 
-#define T1F_SIGFRZ      0x01    /* signaling freeze */
-#define T1F_RLOF        0x02    /* receive loss of frame alignment */
-#define T1F_RLOS        0x04    /* receive loss of signal */
-#define T1F_RALOS       0x08    /* receive analog loss of signal or RCKI loss of clock */
-#define T1F_RAIS        0x10    /* receive alarm indication signal */
-#define T1F_UNUSED      0x20
-#define T1F_RYEL        0x40    /* receive yellow alarm */
-#define T1F_RMYEL       0x80    /* receive multiframe yellow alarm */
+#define T1F_SIGFRZ	0x01 /* signaling freeze */
+#define T1F_RLOF	0x02 /* receive loss of frame alignment */
+#define T1F_RLOS	0x04 /* receive loss of signal */
+#define T1F_RALOS	0x08 /* receive analog loss of signal or RCKI loss of clock */
+#define T1F_RAIS	0x10 /* receive alarm indication signal */
+#define T1F_UNUSED	0x20
+#define T1F_RYEL	0x40 /* receive yellow alarm */
+#define T1F_RMYEL	0x80 /* receive multiframe yellow alarm */
 
-#define LMC_T1F_WRITE       0
-#define LMC_T1F_READ        1
+#define LMC_T1F_WRITE	0
+#define LMC_T1F_READ	1
 
 typedef struct lmc_st1f_control {
-  int command;
-  int address;
-  int value;
-  char __user *data;
+	int command;
+	int address;
+	int value;
+	char __user *data;
 } lmc_t1f_control;
 
 enum lmc_xilinx_c {
-    lmc_xilinx_reset = 1,
-    lmc_xilinx_load_prom = 2,
-    lmc_xilinx_load = 3
+	lmc_xilinx_reset = 1,
+	lmc_xilinx_load_prom = 2,
+	lmc_xilinx_load = 3
 };
 
 struct lmc_xilinx_control {
-    enum lmc_xilinx_c command;
-    int len;
-    char __user *data;
+	enum lmc_xilinx_c command;
+	int len;
+	char __user *data;
 };
 
 /* ------------------ end T1 defs ------------------- */
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/lmc_main.c
index e2c6f7f..3c7f23a 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/lmc_main.c
@@ -1,41 +1,41 @@
- /*
-  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
-  * All rights reserved.  www.lanmedia.com
-  * Generic HDLC port Copyright (C) 2008 Krzysztof Halasa <khc@pm.waw.pl>
-  *
-  * This code is written by:
-  * Andrew Stanley-Jones (asj@cban.com)
-  * Rob Braun (bbraun@vix.com),
-  * Michael Graff (explorer@vix.com) and
-  * Matt Thomas (matt@3am-software.com).
-  *
-  * With Help By:
-  * David Boggs
-  * Ron Crane
-  * Alan Cox
-  *
-  * This software may be used and distributed according to the terms
-  * of the GNU General Public License version 2, incorporated herein by reference.
-  *
-  * Driver for the LanMedia LMC5200, LMC5245, LMC1000, LMC1200 cards.
-  *
-  * To control link specific options lmcctl is required.
-  * It can be obtained from ftp.lanmedia.com.
-  *
-  * Linux driver notes:
-  * Linux uses the device struct lmc_private to pass private information
-  * arround.
-  *
-  * The initialization portion of this driver (the lmc_reset() and the
-  * lmc_dec_reset() functions, as well as the led controls and the
-  * lmc_initcsrs() functions.
-  *
-  * The watchdog function runs every second and checks to see if
-  * we still have link, and that the timing source is what we expected
-  * it to be.  If link is lost, the interface is marked down, and
-  * we no longer can transmit.
-  *
-  */
+/*
+ * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
+ * All rights reserved.  www.lanmedia.com
+ * Generic HDLC port Copyright (C) 2008 Krzysztof Halasa <khc@pm.waw.pl>
+ *
+ * This code is written by:
+ * Andrew Stanley-Jones (asj@cban.com)
+ * Rob Braun (bbraun@vix.com),
+ * Michael Graff (explorer@vix.com) and
+ * Matt Thomas (matt@3am-software.com).
+ *
+ * With Help By:
+ * David Boggs
+ * Ron Crane
+ * Alan Cox
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License version 2, incorporated herein by reference.
+ *
+ * Driver for the LanMedia LMC5200, LMC5245, LMC1000, LMC1200 cards.
+ *
+ * To control link specific options lmcctl is required.
+ * It can be obtained from ftp.lanmedia.com.
+ *
+ * Linux driver notes:
+ * Linux uses the device struct lmc_private to pass private information
+ * arround.
+ *
+ * The initialization portion of this driver (the lmc_reset() and the
+ * lmc_dec_reset() functions, as well as the led controls and the
+ * lmc_initcsrs() functions.
+ *
+ * The watchdog function runs every second and checks to see if
+ * we still have link, and that the timing source is what we expected
+ * it to be.  If link is lost, the interface is marked down, and
+ * we no longer can transmit.
+ *
+ */
 
 #include <linux/kernel.h>
 #include <linux/module.h>
@@ -56,12 +56,11 @@
 #include <linux/etherdevice.h>
 #include <linux/skbuff.h>
 #include <linux/inet.h>
+#include <linux/io.h>
 #include <linux/bitops.h>
-#include <asm/processor.h>             /* Processor type for cache alignment. */
-#include <asm/io.h>
+#include <linux/uaccess.h>
+#include <asm/processor.h>   /* Processor type for cache alignment. */
 #include <asm/dma.h>
-#include <asm/uaccess.h>
-//#include <asm/spinlock.h>
 
 #define DRIVER_MAJOR_VERSION     1
 #define DRIVER_MINOR_VERSION    34
@@ -88,15 +87,15 @@ static DEFINE_PCI_DEVICE_TABLE(lmc_pci_tbl) = {
 MODULE_DEVICE_TABLE(pci, lmc_pci_tbl);
 MODULE_LICENSE("GPL v2");
 
-
 static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 					struct net_device *dev);
-static int lmc_rx (struct net_device *dev);
+static int lmc_rx(struct net_device *dev);
 static int lmc_open(struct net_device *dev);
 static int lmc_close(struct net_device *dev);
 static struct net_device_stats *lmc_get_stats(struct net_device *dev);
 static irqreturn_t lmc_interrupt(int irq, void *dev_instance);
-static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, size_t csr_size);
+static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base,
+			 size_t csr_size);
 static void lmc_softreset(lmc_softc_t * const);
 static void lmc_running_reset(struct net_device *dev);
 static int lmc_ifdown(struct net_device * const);
@@ -105,698 +104,652 @@ static void lmc_reset(lmc_softc_t * const sc);
 static void lmc_dec_reset(lmc_softc_t * const sc);
 static void lmc_driver_timeout(struct net_device *dev);
 
-/*
- * linux reserves 16 device specific IOCTLs.  We call them
- * LMCIOC* to control various bits of our world.
- */
-int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd) /*fold00*/
+/* linux reserves 16 device specific IOCTLs.  We call them
+   LMCIOC* to control various bits of our world. */
+int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
-    lmc_ctl_t ctl;
-    int ret = -EOPNOTSUPP;
-    u16 regVal;
-    unsigned long flags;
-
-    lmc_trace(dev, "lmc_ioctl in");
-
-    /*
-     * Most functions mess with the structure
-     * Disable interrupts while we do the polling
-     */
-
-    switch (cmd) {
-        /*
-         * Return current driver state.  Since we keep this up
-         * To date internally, just copy this out to the user.
-         */
-    case LMCIOCGINFO: /*fold01*/
-	if (copy_to_user(ifr->ifr_data, &sc->ictl, sizeof(lmc_ctl_t)))
-		ret = -EFAULT;
-	else
+	lmc_softc_t *sc = dev_to_sc(dev);
+	lmc_ctl_t ctl;
+	int ret = -EOPNOTSUPP;
+	u16 regVal;
+	unsigned long flags;
+
+	lmc_trace(dev, "lmc_ioctl in");
+
+	/* Most functions mess with the structure
+	   Disable interrupts while we do the polling */
+
+	switch (cmd) {
+		/* Return current driver state.  Since we keep this up
+		   To date internally, just copy this out to the user. */
+	case LMCIOCGINFO:
+		if (copy_to_user(ifr->ifr_data, &sc->ictl, sizeof(lmc_ctl_t)))
+			ret = -EFAULT;
+		else
+			ret = 0;
+		break;
+
+	case LMCIOCSINFO:
+		if (!capable(CAP_NET_ADMIN)) {
+			ret = -EPERM;
+			break;
+		}
+
+		if (dev->flags & IFF_UP) {
+			ret = -EBUSY;
+			break;
+		}
+
+		if (copy_from_user(&ctl, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+			ret = -EFAULT;
+			break;
+		}
+
+		spin_lock_irqsave(&sc->lmc_lock, flags);
+		sc->lmc_media->set_status(sc, &ctl);
+
+		if (ctl.crc_length != sc->ictl.crc_length) {
+			sc->lmc_media->set_crc_length(sc, ctl.crc_length);
+			if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16)
+				sc->TxDescriptControlInit |=
+					LMC_TDES_ADD_CRC_DISABLE;
+			else
+				sc->TxDescriptControlInit &=
+					~LMC_TDES_ADD_CRC_DISABLE;
+		}
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
 		ret = 0;
-        break;
+		break;
+
+	case LMCIOCIFTYPE:
+	{
+		u16 old_type = sc->if_type;
+		u16 new_type;
+
+		if (!capable(CAP_NET_ADMIN)) {
+			ret = -EPERM;
+			break;
+		}
 
-    case LMCIOCSINFO: /*fold01*/
-        if (!capable(CAP_NET_ADMIN)) {
-            ret = -EPERM;
-            break;
-        }
+		if (copy_from_user(&new_type, ifr->ifr_data, sizeof(u16))) {
+			ret = -EFAULT;
+			break;
+		}
 
-        if(dev->flags & IFF_UP){
-            ret = -EBUSY;
-            break;
-        }
+		if (new_type == old_type) {
+			ret = 0 ;
+			break;				/* no change */
+		}
 
-	if (copy_from_user(&ctl, ifr->ifr_data, sizeof(lmc_ctl_t))) {
-		ret = -EFAULT;
+		spin_lock_irqsave(&sc->lmc_lock, flags);
+		lmc_proto_close(sc);
+
+		sc->if_type = new_type;
+		lmc_proto_attach(sc);
+		ret = lmc_proto_open(sc);
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
 		break;
 	}
 
-	spin_lock_irqsave(&sc->lmc_lock, flags);
-        sc->lmc_media->set_status (sc, &ctl);
-
-        if(ctl.crc_length != sc->ictl.crc_length) {
-            sc->lmc_media->set_crc_length(sc, ctl.crc_length);
-	    if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16)
-		sc->TxDescriptControlInit |=  LMC_TDES_ADD_CRC_DISABLE;
-	    else
-		sc->TxDescriptControlInit &= ~LMC_TDES_ADD_CRC_DISABLE;
-        }
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	case LMCIOCGETXINFO:
+		spin_lock_irqsave(&sc->lmc_lock, flags);
+		sc->lmc_xinfo.Magic0 = 0xBEEFCAFE;
+
+		sc->lmc_xinfo.PciCardType = sc->lmc_cardtype;
+		sc->lmc_xinfo.PciSlotNumber = 0;
+		sc->lmc_xinfo.DriverMajorVersion = DRIVER_MAJOR_VERSION;
+		sc->lmc_xinfo.DriverMinorVersion = DRIVER_MINOR_VERSION;
+		sc->lmc_xinfo.DriverSubVersion = DRIVER_SUB_VERSION;
+		sc->lmc_xinfo.XilinxRevisionNumber =
+			lmc_mii_readreg(sc, 0, 3) & 0xf;
+		sc->lmc_xinfo.MaxFrameSize = LMC_PKT_BUF_SZ;
+		sc->lmc_xinfo.link_status = sc->lmc_media->get_link_status(sc);
+		sc->lmc_xinfo.mii_reg16 = lmc_mii_readreg(sc, 0, 16);
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+
+		sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
+
+		if (copy_to_user(ifr->ifr_data, &sc->lmc_xinfo,
+				 sizeof(struct lmc_xinfo)))
+			ret = -EFAULT;
+		else
+			ret = 0;
+		break;
 
-        ret = 0;
-        break;
+	case LMCIOCGETLMCSTATS:
+		spin_lock_irqsave(&sc->lmc_lock, flags);
+		if (sc->lmc_cardtype == LMC_CARDTYPE_T1) {
+			lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_LSB);
+			sc->extra_stats.framingBitErrorCount +=
+				lmc_mii_readreg(sc, 0, 18) & 0xff;
+			lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_MSB);
+			sc->extra_stats.framingBitErrorCount +=
+				(lmc_mii_readreg(sc, 0, 18) & 0xff) << 8;
+			lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_LSB);
+			sc->extra_stats.lineCodeViolationCount +=
+				lmc_mii_readreg(sc, 0, 18) & 0xff;
+			lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_MSB);
+			sc->extra_stats.lineCodeViolationCount +=
+				(lmc_mii_readreg(sc, 0, 18) & 0xff) << 8;
+			lmc_mii_writereg(sc, 0, 17, T1FRAMER_AERR);
+			regVal = lmc_mii_readreg(sc, 0, 18) & 0xff;
+
+			sc->extra_stats.lossOfFrameCount +=
+				(regVal & T1FRAMER_LOF_MASK) >> 4;
+			sc->extra_stats.changeOfFrameAlignmentCount +=
+				(regVal & T1FRAMER_COFA_MASK) >> 2;
+			sc->extra_stats.severelyErroredFrameCount +=
+				regVal & T1FRAMER_SEF_MASK;
+		}
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		if (copy_to_user(ifr->ifr_data, &sc->lmc_device->stats,
+				 sizeof(sc->lmc_device->stats)) ||
+		    copy_to_user(ifr->ifr_data + sizeof(sc->lmc_device->stats),
+				 &sc->extra_stats, sizeof(sc->extra_stats)))
+			ret = -EFAULT;
+		else
+			ret = 0;
+		break;
 
-    case LMCIOCIFTYPE: /*fold01*/
-        {
-	    u16 old_type = sc->if_type;
-	    u16	new_type;
+	case LMCIOCCLEARLMCSTATS:
+		if (!capable(CAP_NET_ADMIN)) {
+			ret = -EPERM;
+			break;
+		}
 
-	    if (!capable(CAP_NET_ADMIN)) {
-		ret = -EPERM;
+		spin_lock_irqsave(&sc->lmc_lock, flags);
+		memset(&sc->lmc_device->stats, 0,
+		       sizeof(sc->lmc_device->stats));
+		memset(&sc->extra_stats, 0, sizeof(sc->extra_stats));
+		sc->extra_stats.check = STATCHECK;
+		sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
+			sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
+		sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		ret = 0;
 		break;
-	    }
 
-	    if (copy_from_user(&new_type, ifr->ifr_data, sizeof(u16))) {
-		ret = -EFAULT;
-		break;
-	    }
-
-            
-	    if (new_type == old_type)
-	    {
-		ret = 0 ;
-		break;				/* no change */
-            }
-            
-	    spin_lock_irqsave(&sc->lmc_lock, flags);
-            lmc_proto_close(sc);
-
-            sc->if_type = new_type;
-            lmc_proto_attach(sc);
-	    ret = lmc_proto_open(sc);
-	    spin_unlock_irqrestore(&sc->lmc_lock, flags);
-	    break;
-	}
+	case LMCIOCSETCIRCUIT:
+		if (!capable(CAP_NET_ADMIN)) {
+			ret = -EPERM;
+			break;
+		}
 
-    case LMCIOCGETXINFO: /*fold01*/
-	spin_lock_irqsave(&sc->lmc_lock, flags);
-        sc->lmc_xinfo.Magic0 = 0xBEEFCAFE;
-
-        sc->lmc_xinfo.PciCardType = sc->lmc_cardtype;
-        sc->lmc_xinfo.PciSlotNumber = 0;
-        sc->lmc_xinfo.DriverMajorVersion = DRIVER_MAJOR_VERSION;
-        sc->lmc_xinfo.DriverMinorVersion = DRIVER_MINOR_VERSION;
-        sc->lmc_xinfo.DriverSubVersion = DRIVER_SUB_VERSION;
-        sc->lmc_xinfo.XilinxRevisionNumber =
-            lmc_mii_readreg (sc, 0, 3) & 0xf;
-        sc->lmc_xinfo.MaxFrameSize = LMC_PKT_BUF_SZ;
-        sc->lmc_xinfo.link_status = sc->lmc_media->get_link_status (sc);
-        sc->lmc_xinfo.mii_reg16 = lmc_mii_readreg (sc, 0, 16);
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		if (dev->flags & IFF_UP) {
+			ret = -EBUSY;
+			break;
+		}
 
-        sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
+		if (copy_from_user(&ctl, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+			ret = -EFAULT;
+			break;
+		}
+		spin_lock_irqsave(&sc->lmc_lock, flags);
+		sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
+		sc->ictl.circuit_type = ctl.circuit_type;
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		ret = 0;
+		break;
+
+	case LMCIOCRESET:
+		if (!capable(CAP_NET_ADMIN)) {
+			ret = -EPERM;
+			break;
+		}
 
-        if (copy_to_user(ifr->ifr_data, &sc->lmc_xinfo,
-			 sizeof(struct lmc_xinfo)))
-		ret = -EFAULT;
-	else
+		spin_lock_irqsave(&sc->lmc_lock, flags);
+		/* Reset driver and bring back to current state */
+		printk(KERN_DEBUG " REG16 before reset +%04x\n",
+		       lmc_mii_readreg(sc, 0, 16));
+		lmc_running_reset(dev);
+		printk(KERN_DEBUG " REG16 after reset +%04x\n",
+		       lmc_mii_readreg(sc, 0, 16));
+
+		LMC_EVENT_LOG(LMC_EVENT_FORCEDRESET,
+			      LMC_CSR_READ(sc, csr_status),
+			      lmc_mii_readreg(sc, 0, 16));
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
 		ret = 0;
+		break;
+
+#ifdef DEBUG
+	case LMCIOCDUMPEVENTLOG:
+		if (copy_to_user(ifr->ifr_data, &lmcEventLogIndex,
+				 sizeof(u32))) {
+			ret = -EFAULT;
+			break;
+		}
+		if (copy_to_user(ifr->ifr_data + sizeof(u32), lmcEventLogBuf,
+				 sizeof(lmcEventLogBuf)))
+			ret = -EFAULT;
+		else
+			ret = 0;
 
-        break;
-
-    case LMCIOCGETLMCSTATS:
-	    spin_lock_irqsave(&sc->lmc_lock, flags);
-	    if (sc->lmc_cardtype == LMC_CARDTYPE_T1) {
-		    lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_LSB);
-		    sc->extra_stats.framingBitErrorCount +=
-			    lmc_mii_readreg(sc, 0, 18) & 0xff;
-		    lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_MSB);
-		    sc->extra_stats.framingBitErrorCount +=
-			    (lmc_mii_readreg(sc, 0, 18) & 0xff) << 8;
-		    lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_LSB);
-		    sc->extra_stats.lineCodeViolationCount +=
-			    lmc_mii_readreg(sc, 0, 18) & 0xff;
-		    lmc_mii_writereg(sc, 0, 17, T1FRAMER_LCV_MSB);
-		    sc->extra_stats.lineCodeViolationCount +=
-			    (lmc_mii_readreg(sc, 0, 18) & 0xff) << 8;
-		    lmc_mii_writereg(sc, 0, 17, T1FRAMER_AERR);
-		    regVal = lmc_mii_readreg(sc, 0, 18) & 0xff;
-
-		    sc->extra_stats.lossOfFrameCount +=
-			    (regVal & T1FRAMER_LOF_MASK) >> 4;
-		    sc->extra_stats.changeOfFrameAlignmentCount +=
-			    (regVal & T1FRAMER_COFA_MASK) >> 2;
-		    sc->extra_stats.severelyErroredFrameCount +=
-			    regVal & T1FRAMER_SEF_MASK;
-	    }
-	    spin_unlock_irqrestore(&sc->lmc_lock, flags);
-	    if (copy_to_user(ifr->ifr_data, &sc->lmc_device->stats,
-			     sizeof(sc->lmc_device->stats)) ||
-		copy_to_user(ifr->ifr_data + sizeof(sc->lmc_device->stats),
-			     &sc->extra_stats, sizeof(sc->extra_stats)))
-		    ret = -EFAULT;
-	    else
-		    ret = 0;
-	    break;
-
-    case LMCIOCCLEARLMCSTATS:
-	    if (!capable(CAP_NET_ADMIN)) {
-		    ret = -EPERM;
-		    break;
-	    }
-
-	    spin_lock_irqsave(&sc->lmc_lock, flags);
-	    memset(&sc->lmc_device->stats, 0, sizeof(sc->lmc_device->stats));
-	    memset(&sc->extra_stats, 0, sizeof(sc->extra_stats));
-	    sc->extra_stats.check = STATCHECK;
-	    sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
-		    sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
-	    sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
-	    spin_unlock_irqrestore(&sc->lmc_lock, flags);
-	    ret = 0;
-	    break;
-
-    case LMCIOCSETCIRCUIT: /*fold01*/
-        if (!capable(CAP_NET_ADMIN)){
-            ret = -EPERM;
-            break;
-        }
-
-        if(dev->flags & IFF_UP){
-            ret = -EBUSY;
-            break;
-        }
-
-	if (copy_from_user(&ctl, ifr->ifr_data, sizeof(lmc_ctl_t))) {
-		ret = -EFAULT;
 		break;
-	}
-	spin_lock_irqsave(&sc->lmc_lock, flags);
-        sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
-        sc->ictl.circuit_type = ctl.circuit_type;
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
-        ret = 0;
+#endif /* end ifdef _DBG_EVENTLOG */
+	case LMCIOCT1CONTROL:
+		if (sc->lmc_cardtype != LMC_CARDTYPE_T1) {
+			ret = -EOPNOTSUPP;
+			break;
+		}
+		break;
+	case LMCIOCXILINX:
+	{
+		struct lmc_xilinx_control xc;
 
-        break;
+		if (!capable(CAP_NET_ADMIN)) {
+			ret = -EPERM;
+			break;
+		}
 
-    case LMCIOCRESET: /*fold01*/
-        if (!capable(CAP_NET_ADMIN)){
-            ret = -EPERM;
-            break;
-        }
+		/* Stop the xwitter whlie we restart the hardware */
+		netif_stop_queue(dev);
 
-	spin_lock_irqsave(&sc->lmc_lock, flags);
-        /* Reset driver and bring back to current state */
-        printk (" REG16 before reset +%04x\n", lmc_mii_readreg (sc, 0, 16));
-        lmc_running_reset (dev);
-        printk (" REG16 after reset +%04x\n", lmc_mii_readreg (sc, 0, 16));
+		if (copy_from_user(&xc, ifr->ifr_data,
+				   sizeof(struct lmc_xilinx_control))) {
+			ret = -EFAULT;
+			break;
+		}
+		switch (xc.command) {
+		case lmc_xilinx_reset:
+		{
+			u16 mii;
+			spin_lock_irqsave(&sc->lmc_lock, flags);
+			mii = lmc_mii_readreg(sc, 0, 16);
+
+			/* Make all of them 0 and make */
+			lmc_gpio_mkinput(sc, 0xff);
+
+			/* make the reset output */
+			lmc_gpio_mkoutput(sc, LMC_GEP_RESET);
+
+			/* RESET low to force configuration.  This also forces
+			   the transmitter clock to be internal, but we expect
+			   to reset that later anyway. */
+
+			sc->lmc_gpio &= ~LMC_GEP_RESET;
+			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+			/* hold for more than 10 microseconds */
+			udelay(50);
+
+			sc->lmc_gpio |= LMC_GEP_RESET;
+			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+			/* stop driving Xilinx-related signals */
+			lmc_gpio_mkinput(sc, 0xff);
+
+			/* Reset the frammer hardware */
+			sc->lmc_media->set_link_status(sc, 1);
+			sc->lmc_media->set_status(sc, NULL);
+			/* lmc_softreset(sc); */
+
+			{
+				int i;
+				for (i = 0; i < 5; i++) {
+					lmc_led_on(sc, LMC_DS3_LED0);
+					mdelay(100);
+					lmc_led_off(sc, LMC_DS3_LED0);
+					lmc_led_on(sc, LMC_DS3_LED1);
+					mdelay(100);
+					lmc_led_off(sc, LMC_DS3_LED1);
+					lmc_led_on(sc, LMC_DS3_LED3);
+					mdelay(100);
+					lmc_led_off(sc, LMC_DS3_LED3);
+					lmc_led_on(sc, LMC_DS3_LED2);
+					mdelay(100);
+					lmc_led_off(sc, LMC_DS3_LED2);
+				}
+			}
+			spin_unlock_irqrestore(&sc->lmc_lock, flags);
+			ret = 0x0;
+		}
+		break;
 
-        LMC_EVENT_LOG(LMC_EVENT_FORCEDRESET, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16));
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		case lmc_xilinx_load_prom:
+		{
+			u16 mii;
+			int timeout = 500000;
+			spin_lock_irqsave(&sc->lmc_lock, flags);
+			mii = lmc_mii_readreg(sc, 0, 16);
 
-        ret = 0;
-        break;
+			/* Make all of them 0 and make input */
+			lmc_gpio_mkinput(sc, 0xff);
 
-#ifdef DEBUG
-    case LMCIOCDUMPEVENTLOG:
-	if (copy_to_user(ifr->ifr_data, &lmcEventLogIndex, sizeof(u32))) {
-		ret = -EFAULT;
+			/* make the reset output */
+			lmc_gpio_mkoutput(sc,  LMC_GEP_DP | LMC_GEP_RESET);
+
+			/* RESET low to force configuration.  This also forces
+			   the transmitter clock to be internal, but we expect
+			   to reset that later anyway. */
+
+			sc->lmc_gpio &= ~(LMC_GEP_RESET | LMC_GEP_DP);
+			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+			/* hold for more than 10 microseconds */
+			udelay(50);
+
+			sc->lmc_gpio |= LMC_GEP_DP | LMC_GEP_RESET;
+			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+			/* busy wait for the chip to reset */
+			while ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
+			       (timeout-- > 0))
+				cpu_relax();
+
+			/* stop driving Xilinx-related signals */
+			lmc_gpio_mkinput(sc, 0xff);
+			spin_unlock_irqrestore(&sc->lmc_lock, flags);
+			ret = 0x0;
+			break;
+		}
+
+		case lmc_xilinx_load:
+		{
+			char *data;
+			int pos;
+			int timeout = 500000;
+
+			if (!xc.data) {
+				ret = -EINVAL;
+				break;
+			}
+
+			data = kmalloc(xc.len, GFP_KERNEL);
+			if (!data) {
+				printk(KERN_WARNING
+				       "%s: Failed to allocate memory for copy\n",
+				       dev->name);
+				ret = -ENOMEM;
+				break;
+			}
+
+			if (copy_from_user(data, xc.data, xc.len)) {
+				kfree(data);
+				ret = -ENOMEM;
+				break;
+			}
+
+			printk(KERN_DEBUG
+			       "%s: Starting load of data Len: %d at 0x%p == 0x%p\n",
+			       dev->name, xc.len, xc.data, data);
+
+			spin_lock_irqsave(&sc->lmc_lock, flags);
+			lmc_gpio_mkinput(sc, 0xff);
+
+			/* Clear the Xilinx and start programming from
+			   the DEC */
+
+			/* Set ouput as:
+			   Reset: 0 (active)
+			   DP:    0 (active)
+			   Mode:  1 */
+			sc->lmc_gpio = 0x00;
+			sc->lmc_gpio &= ~LMC_GEP_DP;
+			sc->lmc_gpio &= ~LMC_GEP_RESET;
+			sc->lmc_gpio |=  LMC_GEP_MODE;
+			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+			lmc_gpio_mkoutput(sc, LMC_GEP_MODE | LMC_GEP_DP |
+					  LMC_GEP_RESET);
+
+			/*
+			 * Wait at least 10 us 20 to be safe
+			 */
+			udelay(50);
+
+			/*
+			 * Clear reset and activate programming lines
+			 * Reset: Input
+			 * DP:    Input
+			 * Clock: Output
+			 * Data:  Output
+			 * Mode:  Output
+			 */
+			lmc_gpio_mkinput(sc, LMC_GEP_DP | LMC_GEP_RESET);
+
+			/*
+			 * Set LOAD, DATA, Clock to 1
+			 */
+			sc->lmc_gpio = 0x00;
+			sc->lmc_gpio |= LMC_GEP_MODE;
+			sc->lmc_gpio |= LMC_GEP_DATA;
+			sc->lmc_gpio |= LMC_GEP_CLK;
+			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+			lmc_gpio_mkoutput(sc, LMC_GEP_DATA | LMC_GEP_CLK |
+					  LMC_GEP_MODE);
+
+			/* busy wait for the chip to reset */
+			while ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
+			       (timeout-- > 0))
+				cpu_relax();
+
+			printk(KERN_DEBUG
+			       "%s: Waited %d for the Xilinx to clear it's memory\n",
+			       dev->name, 500000-timeout);
+
+			for (pos = 0; pos < xc.len; pos++) {
+				switch (data[pos]) {
+				case 0:
+					/* Data is 0 */
+					sc->lmc_gpio &= ~LMC_GEP_DATA;
+					break;
+				case 1:
+					/* Data is 1 */
+					sc->lmc_gpio |= LMC_GEP_DATA;
+					break;
+				default:
+					printk(KERN_WARNING
+					       "%s Bad data in xilinx programming data at %d, got %d wanted 0 or 1\n",
+					       dev->name, pos, data[pos]);
+					/* Assume it's 1 */
+					sc->lmc_gpio |= LMC_GEP_DATA;
+				}
+				/* Clock to zero */
+				sc->lmc_gpio &= ~LMC_GEP_CLK;
+				sc->lmc_gpio |= LMC_GEP_MODE;
+				LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+				udelay(1);
+
+				/* Put the clack back to one */
+				sc->lmc_gpio |= LMC_GEP_CLK;
+				sc->lmc_gpio |= LMC_GEP_MODE;
+				LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+				udelay(1);
+			}
+			if ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0) {
+				printk(KERN_WARNING
+				       "%s: Reprogramming FAILED. Needs to be reprogrammed. (corrupted data)\n",
+				       dev->name);
+			} else if ((LMC_CSR_READ(sc, csr_gp) &
+				    LMC_GEP_DP) == 0){
+				printk(KERN_WARNING "%s: Reprogramming FAILED. Needs to be reprogrammed. (done)\n",
+				       dev->name);
+			} else
+				printk(KERN_DEBUG
+				       "%s: Done reprogramming Xilinx, %d bits, good luck!\n",
+				       dev->name, pos);
+
+			lmc_gpio_mkinput(sc, 0xff);
+
+			sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
+			lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+
+			sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET;
+			lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+			spin_unlock_irqrestore(&sc->lmc_lock, flags);
+
+			kfree(data);
+			ret = 0;
+			break;
+		}
+		default:
+			ret = -EBADE;
+			break;
+		}
+
+		netif_wake_queue(dev);
+		sc->lmc_txfull = 0;
+	}
+	break;
+	default:
+		/* If we don't know what to do, give the protocol a shot. */
+		ret = lmc_proto_ioctl(sc, ifr, cmd);
 		break;
 	}
-	if (copy_to_user(ifr->ifr_data + sizeof(u32), lmcEventLogBuf,
-			 sizeof(lmcEventLogBuf)))
-		ret = -EFAULT;
-	else
-		ret = 0;
 
-        break;
-#endif /* end ifdef _DBG_EVENTLOG */
-    case LMCIOCT1CONTROL: /*fold01*/
-        if (sc->lmc_cardtype != LMC_CARDTYPE_T1){
-            ret = -EOPNOTSUPP;
-            break;
-        }
-        break;
-    case LMCIOCXILINX: /*fold01*/
-        {
-            struct lmc_xilinx_control xc; /*fold02*/
-
-            if (!capable(CAP_NET_ADMIN)){
-                ret = -EPERM;
-                break;
-            }
-
-            /*
-             * Stop the xwitter whlie we restart the hardware
-             */
-            netif_stop_queue(dev);
-
-	    if (copy_from_user(&xc, ifr->ifr_data, sizeof(struct lmc_xilinx_control))) {
-		ret = -EFAULT;
-		break;
-	    }
-            switch(xc.command){
-            case lmc_xilinx_reset: /*fold02*/
-                {
-                    u16 mii;
-		    spin_lock_irqsave(&sc->lmc_lock, flags);
-                    mii = lmc_mii_readreg (sc, 0, 16);
-
-                    /*
-                     * Make all of them 0 and make input
-                     */
-                    lmc_gpio_mkinput(sc, 0xff);
-
-                    /*
-                     * make the reset output
-                     */
-                    lmc_gpio_mkoutput(sc, LMC_GEP_RESET);
-
-                    /*
-                     * RESET low to force configuration.  This also forces
-                     * the transmitter clock to be internal, but we expect to reset
-                     * that later anyway.
-                     */
-
-                    sc->lmc_gpio &= ~LMC_GEP_RESET;
-                    LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-
-                    /*
-                     * hold for more than 10 microseconds
-                     */
-                    udelay(50);
-
-                    sc->lmc_gpio |= LMC_GEP_RESET;
-                    LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-
-                    /*
-                     * stop driving Xilinx-related signals
-                     */
-                    lmc_gpio_mkinput(sc, 0xff);
-
-                    /* Reset the frammer hardware */
-                    sc->lmc_media->set_link_status (sc, 1);
-                    sc->lmc_media->set_status (sc, NULL);
-//                    lmc_softreset(sc);
-
-                    {
-                        int i;
-                        for(i = 0; i < 5; i++){
-                            lmc_led_on(sc, LMC_DS3_LED0);
-                            mdelay(100);
-                            lmc_led_off(sc, LMC_DS3_LED0);
-                            lmc_led_on(sc, LMC_DS3_LED1);
-                            mdelay(100);
-                            lmc_led_off(sc, LMC_DS3_LED1);
-                            lmc_led_on(sc, LMC_DS3_LED3);
-                            mdelay(100);
-                            lmc_led_off(sc, LMC_DS3_LED3);
-                            lmc_led_on(sc, LMC_DS3_LED2);
-                            mdelay(100);
-                            lmc_led_off(sc, LMC_DS3_LED2);
-                        }
-                    }
-		    spin_unlock_irqrestore(&sc->lmc_lock, flags);
-                    
-                    
-
-                    ret = 0x0;
-
-                }
-
-                break;
-            case lmc_xilinx_load_prom: /*fold02*/
-                {
-                    u16 mii;
-                    int timeout = 500000;
-		    spin_lock_irqsave(&sc->lmc_lock, flags);
-                    mii = lmc_mii_readreg (sc, 0, 16);
-
-                    /*
-                     * Make all of them 0 and make input
-                     */
-                    lmc_gpio_mkinput(sc, 0xff);
-
-                    /*
-                     * make the reset output
-                     */
-                    lmc_gpio_mkoutput(sc,  LMC_GEP_DP | LMC_GEP_RESET);
-
-                    /*
-                     * RESET low to force configuration.  This also forces
-                     * the transmitter clock to be internal, but we expect to reset
-                     * that later anyway.
-                     */
-
-                    sc->lmc_gpio &= ~(LMC_GEP_RESET | LMC_GEP_DP);
-                    LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-
-                    /*
-                     * hold for more than 10 microseconds
-                     */
-                    udelay(50);
-
-                    sc->lmc_gpio |= LMC_GEP_DP | LMC_GEP_RESET;
-                    LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-                    /*
-                     * busy wait for the chip to reset
-                     */
-                    while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
-                           (timeout-- > 0))
-                        cpu_relax();
-
-
-                    /*
-                     * stop driving Xilinx-related signals
-                     */
-                    lmc_gpio_mkinput(sc, 0xff);
-		    spin_unlock_irqrestore(&sc->lmc_lock, flags);
-
-                    ret = 0x0;
-                    
-
-                    break;
-
-                }
-
-            case lmc_xilinx_load: /*fold02*/
-                {
-                    char *data;
-                    int pos;
-                    int timeout = 500000;
-
-                    if (!xc.data) {
-                            ret = -EINVAL;
-                            break;
-                    }
-
-                    data = kmalloc(xc.len, GFP_KERNEL);
-                    if (!data) {
-                            printk(KERN_WARNING "%s: Failed to allocate memory for copy\n", dev->name);
-                            ret = -ENOMEM;
-                            break;
-                    }
-                    
-                    if(copy_from_user(data, xc.data, xc.len))
-                    {
-                    	kfree(data);
-                    	ret = -ENOMEM;
-                    	break;
-                    }
-
-                    printk("%s: Starting load of data Len: %d at 0x%p == 0x%p\n", dev->name, xc.len, xc.data, data);
-
-		    spin_lock_irqsave(&sc->lmc_lock, flags);
-                    lmc_gpio_mkinput(sc, 0xff);
-
-                    /*
-                     * Clear the Xilinx and start prgramming from the DEC
-                     */
-
-                    /*
-                     * Set ouput as:
-                     * Reset: 0 (active)
-                     * DP:    0 (active)
-                     * Mode:  1
-                     *
-                     */
-                    sc->lmc_gpio = 0x00;
-                    sc->lmc_gpio &= ~LMC_GEP_DP;
-                    sc->lmc_gpio &= ~LMC_GEP_RESET;
-                    sc->lmc_gpio |=  LMC_GEP_MODE;
-                    LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-                    lmc_gpio_mkoutput(sc, LMC_GEP_MODE | LMC_GEP_DP | LMC_GEP_RESET);
-
-                    /*
-                     * Wait at least 10 us 20 to be safe
-                     */
-                    udelay(50);
-
-                    /*
-                     * Clear reset and activate programming lines
-                     * Reset: Input
-                     * DP:    Input
-                     * Clock: Output
-                     * Data:  Output
-                     * Mode:  Output
-                     */
-                    lmc_gpio_mkinput(sc, LMC_GEP_DP | LMC_GEP_RESET);
-
-                    /*
-                     * Set LOAD, DATA, Clock to 1
-                     */
-                    sc->lmc_gpio = 0x00;
-                    sc->lmc_gpio |= LMC_GEP_MODE;
-                    sc->lmc_gpio |= LMC_GEP_DATA;
-                    sc->lmc_gpio |= LMC_GEP_CLK;
-                    LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-                    
-                    lmc_gpio_mkoutput(sc, LMC_GEP_DATA | LMC_GEP_CLK | LMC_GEP_MODE );
-
-                    /*
-                     * busy wait for the chip to reset
-                     */
-                    while( (LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
-                           (timeout-- > 0))
-                        cpu_relax();
-
-                    printk(KERN_DEBUG "%s: Waited %d for the Xilinx to clear it's memory\n", dev->name, 500000-timeout);
-
-                    for(pos = 0; pos < xc.len; pos++){
-                        switch(data[pos]){
-                        case 0:
-                            sc->lmc_gpio &= ~LMC_GEP_DATA; /* Data is 0 */
-                            break;
-                        case 1:
-                            sc->lmc_gpio |= LMC_GEP_DATA; /* Data is 1 */
-                            break;
-                        default:
-                            printk(KERN_WARNING "%s Bad data in xilinx programming data at %d, got %d wanted 0 or 1\n", dev->name, pos, data[pos]);
-                            sc->lmc_gpio |= LMC_GEP_DATA; /* Assume it's 1 */
-                        }
-                        sc->lmc_gpio &= ~LMC_GEP_CLK; /* Clock to zero */
-                        sc->lmc_gpio |= LMC_GEP_MODE;
-                        LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-                        udelay(1);
-                        
-                        sc->lmc_gpio |= LMC_GEP_CLK; /* Put the clack back to one */
-                        sc->lmc_gpio |= LMC_GEP_MODE;
-                        LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-                        udelay(1);
-                    }
-                    if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0){
-                        printk(KERN_WARNING "%s: Reprogramming FAILED. Needs to be reprogrammed. (corrupted data)\n", dev->name);
-                    }
-                    else if((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_DP) == 0){
-                        printk(KERN_WARNING "%s: Reprogramming FAILED. Needs to be reprogrammed. (done)\n", dev->name);
-                    }
-                    else {
-                        printk(KERN_DEBUG "%s: Done reprogramming Xilinx, %d bits, good luck!\n", dev->name, pos);
-                    }
-
-                    lmc_gpio_mkinput(sc, 0xff);
-                    
-                    sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
-                    lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-
-                    sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET;
-                    lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-		    spin_unlock_irqrestore(&sc->lmc_lock, flags);
-
-                    kfree(data);
-                    
-                    ret = 0;
-                    
-                    break;
-                }
-            default: /*fold02*/
-                ret = -EBADE;
-                break;
-            }
-
-            netif_wake_queue(dev);
-            sc->lmc_txfull = 0;
-
-        }
-        break;
-    default: /*fold01*/
-        /* If we don't know what to do, give the protocol a shot. */
-        ret = lmc_proto_ioctl (sc, ifr, cmd);
-        break;
-    }
-
-    lmc_trace(dev, "lmc_ioctl out");
-
-    return ret;
+	lmc_trace(dev, "lmc_ioctl out");
+	return ret;
 }
 
 
 /* the watchdog process that cruises around */
-static void lmc_watchdog (unsigned long data) /*fold00*/
+static void lmc_watchdog(unsigned long data)
 {
-    struct net_device *dev = (struct net_device *)data;
-    lmc_softc_t *sc = dev_to_sc(dev);
-    int link_status;
-    u32 ticks;
-    unsigned long flags;
+	struct net_device *dev = (struct net_device *)data;
+	lmc_softc_t *sc = dev_to_sc(dev);
+	int link_status;
+	u32 ticks;
+	unsigned long flags;
 
-    lmc_trace(dev, "lmc_watchdog in");
+	lmc_trace(dev, "lmc_watchdog in");
 
-    spin_lock_irqsave(&sc->lmc_lock, flags);
+	spin_lock_irqsave(&sc->lmc_lock, flags);
 
-    if(sc->check != 0xBEAFCAFE){
-        printk("LMC: Corrupt net_device struct, breaking out\n");
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
-        return;
-    }
-
-
-    /* Make sure the tx jabber and rx watchdog are off,
-     * and the transmit and receive processes are running.
-     */
-
-    LMC_CSR_WRITE (sc, csr_15, 0x00000011);
-    sc->lmc_cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN;
-    LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode);
-
-    if (sc->lmc_ok == 0)
-        goto kick_timer;
-
-    LMC_EVENT_LOG(LMC_EVENT_WATCHDOG, LMC_CSR_READ (sc, csr_status), lmc_mii_readreg (sc, 0, 16));
-
-    /* --- begin time out check -----------------------------------
-     * check for a transmit interrupt timeout
-     * Has the packet xmt vs xmt serviced threshold been exceeded */
-    if (sc->lmc_taint_tx == sc->lastlmc_taint_tx &&
-	sc->lmc_device->stats.tx_packets > sc->lasttx_packets &&
-	sc->tx_TimeoutInd == 0)
-    {
-
-        /* wait for the watchdog to come around again */
-        sc->tx_TimeoutInd = 1;
-    }
-    else if (sc->lmc_taint_tx == sc->lastlmc_taint_tx &&
-	     sc->lmc_device->stats.tx_packets > sc->lasttx_packets &&
-	     sc->tx_TimeoutInd)
-    {
-
-        LMC_EVENT_LOG(LMC_EVENT_XMTINTTMO, LMC_CSR_READ (sc, csr_status), 0);
-
-        sc->tx_TimeoutDisplay = 1;
-	sc->extra_stats.tx_TimeoutCnt++;
-
-        /* DEC chip is stuck, hit it with a RESET!!!! */
-        lmc_running_reset (dev);
-
-
-        /* look at receive & transmit process state to make sure they are running */
-        LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0);
-
-        /* look at: DSR - 02  for Reg 16
-         *                  CTS - 08
-         *                  DCD - 10
-         *                  RI  - 20
-         * for Reg 17
-         */
-        LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg (sc, 0, 16), lmc_mii_readreg (sc, 0, 17));
-
-        /* reset the transmit timeout detection flag */
-        sc->tx_TimeoutInd = 0;
-        sc->lastlmc_taint_tx = sc->lmc_taint_tx;
-	sc->lasttx_packets = sc->lmc_device->stats.tx_packets;
-    } else {
-        sc->tx_TimeoutInd = 0;
-        sc->lastlmc_taint_tx = sc->lmc_taint_tx;
-	sc->lasttx_packets = sc->lmc_device->stats.tx_packets;
-    }
-
-    /* --- end time out check ----------------------------------- */
-
-
-    link_status = sc->lmc_media->get_link_status (sc);
-
-    /*
-     * hardware level link lost, but the interface is marked as up.
-     * Mark it as down.
-     */
-    if ((link_status == 0) && (sc->last_link_status != 0)) {
-        printk(KERN_WARNING "%s: hardware/physical link down\n", dev->name);
-        sc->last_link_status = 0;
-        /* lmc_reset (sc); Why reset??? The link can go down ok */
-
-        /* Inform the world that link has been lost */
-	netif_carrier_off(dev);
-    }
-
-    /*
-     * hardware link is up, but the interface is marked as down.
-     * Bring it back up again.
-     */
-     if (link_status != 0 && sc->last_link_status == 0) {
-         printk(KERN_WARNING "%s: hardware/physical link up\n", dev->name);
-         sc->last_link_status = 1;
-         /* lmc_reset (sc); Again why reset??? */
-
-	 netif_carrier_on(dev);
-     }
-
-    /* Call media specific watchdog functions */
-    sc->lmc_media->watchdog(sc);
-
-    /*
-     * Poke the transmitter to make sure it
-     * never stops, even if we run out of mem
-     */
-    LMC_CSR_WRITE(sc, csr_rxpoll, 0);
-
-    /*
-     * Check for code that failed
-     * and try and fix it as appropriate
-     */
-    if(sc->failed_ring == 1){
-        /*
-         * Failed to setup the recv/xmit rin
-         * Try again
-         */
-        sc->failed_ring = 0;
-        lmc_softreset(sc);
-    }
-    if(sc->failed_recv_alloc == 1){
-        /*
-         * We failed to alloc mem in the
-         * interrupt handler, go through the rings
-         * and rebuild them
-         */
-        sc->failed_recv_alloc = 0;
-        lmc_softreset(sc);
-    }
-
-
-    /*
-     * remember the timer value
-     */
-kick_timer:
+	if (sc->check != 0xBEAFCAFE) {
+		printk(KERN_ERR
+		       "LMC: Corrupt net_device struct, breaking out\n");
+		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		return;
+	}
+
+
+	/* Make sure the tx jabber and rx watchdog are off,
+	 * and the transmit and receive processes are running.
+	 */
+
+	LMC_CSR_WRITE(sc, csr_15, 0x00000011);
+	sc->lmc_cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN;
+	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
+
+	if (sc->lmc_ok == 0)
+		goto kick_timer;
+
+	LMC_EVENT_LOG(LMC_EVENT_WATCHDOG, LMC_CSR_READ(sc, csr_status),
+		      lmc_mii_readreg(sc, 0, 16));
+
+	/* --- begin time out check -----------------------------------
+	 * check for a transmit interrupt timeout
+	 * Has the packet xmt vs xmt serviced threshold been exceeded */
+	if (sc->lmc_taint_tx == sc->lastlmc_taint_tx &&
+	    sc->lmc_device->stats.tx_packets > sc->lasttx_packets &&
+	    sc->tx_TimeoutInd == 0) {
+
+		/* wait for the watchdog to come around again */
+		sc->tx_TimeoutInd = 1;
+	} else if (sc->lmc_taint_tx == sc->lastlmc_taint_tx &&
+		   sc->lmc_device->stats.tx_packets > sc->lasttx_packets &&
+		   sc->tx_TimeoutInd) {
+
+		LMC_EVENT_LOG(LMC_EVENT_XMTINTTMO,
+			      LMC_CSR_READ(sc, csr_status), 0);
+
+		sc->tx_TimeoutDisplay = 1;
+		sc->extra_stats.tx_TimeoutCnt++;
+
+		/* DEC chip is stuck, hit it with a RESET!!!! */
+		lmc_running_reset(dev);
+
+
+		/* look at receive & transmit process state to make sure
+		   they are running */
+		LMC_EVENT_LOG(LMC_EVENT_RESET1,
+			      LMC_CSR_READ(sc, csr_status), 0);
+
+		/* look at: DSR - 02  for Reg 16
+		 *          CTS - 08
+		 *          DCD - 10
+		 *          RI  - 20
+		 * for Reg 17
+		 */
+		LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
+			      lmc_mii_readreg(sc, 0, 17));
+
+		/* reset the transmit timeout detection flag */
+		sc->tx_TimeoutInd = 0;
+		sc->lastlmc_taint_tx = sc->lmc_taint_tx;
+		sc->lasttx_packets = sc->lmc_device->stats.tx_packets;
+	} else {
+		sc->tx_TimeoutInd = 0;
+		sc->lastlmc_taint_tx = sc->lmc_taint_tx;
+		sc->lasttx_packets = sc->lmc_device->stats.tx_packets;
+	}
+
+	/* --- end time out check ----------------------------------- */
+
+	link_status = sc->lmc_media->get_link_status(sc);
+
+	/* Hardware level link lost, but the interface is marked as up.
+	   Mark it as down. */
+	if ((link_status == 0) && (sc->last_link_status != 0)) {
+		printk(KERN_WARNING "%s: hardware/physical link down\n",
+		       dev->name);
+		sc->last_link_status = 0;
+		/* lmc_reset(sc); Why reset??? The link can go down ok */
+
+		/* Inform the world that link has been lost */
+		netif_carrier_off(dev);
+	}
+
+	/* Hardware link is up, but the interface is marked as down.
+	   Bring it back up again. */
+	if (link_status != 0 && sc->last_link_status == 0) {
+		printk(KERN_WARNING "%s: hardware/physical link up\n",
+		       dev->name);
+		sc->last_link_status = 1;
+		/* lmc_reset(sc); Again why reset??? */
+
+		netif_carrier_on(dev);
+	}
+
+	/* Call media specific watchdog functions */
+	sc->lmc_media->watchdog(sc);
+
+	/* Poke the transmitter to make sure it never stops, even if we run
+	   out of mem */
+	LMC_CSR_WRITE(sc, csr_rxpoll, 0);
+
+	/* Check for code that failed and try and fix it as appropriate */
+	if (sc->failed_ring == 1) {
+		/* Failed to setup the recv/xmit rin. Try again */
+		sc->failed_ring = 0;
+		lmc_softreset(sc);
+	}
 
-    ticks = LMC_CSR_READ (sc, csr_gp_timer);
-    LMC_CSR_WRITE (sc, csr_gp_timer, 0xffffffffUL);
-    sc->ictl.ticks = 0x0000ffff - (ticks & 0x0000ffff);
+	if (sc->failed_recv_alloc == 1) {
+		/*
+		 * We failed to alloc mem in the
+		 * interrupt handler, go through the rings
+		 * and rebuild them
+		 */
+		sc->failed_recv_alloc = 0;
+		lmc_softreset(sc);
+	}
 
-    /*
-     * restart this timer.
-     */
-    sc->timer.expires = jiffies + (HZ);
-    add_timer (&sc->timer);
+	/* remember the timer value */
+kick_timer:
+	ticks = LMC_CSR_READ(sc, csr_gp_timer);
+	LMC_CSR_WRITE(sc, csr_gp_timer, 0xffffffffUL);
+	sc->ictl.ticks = 0x0000ffff - (ticks & 0x0000ffff);
 
-    spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	/* restart this timer. */
+	sc->timer.expires = jiffies + HZ;
+	add_timer(&sc->timer);
 
-    lmc_trace(dev, "lmc_watchdog out");
+	spin_unlock_irqrestore(&sc->lmc_lock, flags);
 
+	lmc_trace(dev, "lmc_watchdog out");
 }
 
 static int lmc_attach(struct net_device *dev, unsigned short encoding,
@@ -893,86 +846,82 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 		goto err_hdlcdev;
 	}
 
-    sc->lmc_cardtype = LMC_CARDTYPE_UNKNOWN;
-    sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
-
-    /*
-     *
-     * Check either the subvendor or the subdevice, some systems reverse
-     * the setting in the bois, seems to be version and arch dependent?
-     * Fix the error, exchange the two values 
-     */
-    if ((subdevice = pdev->subsystem_device) == PCI_VENDOR_ID_LMC)
-	    subdevice = pdev->subsystem_vendor;
-
-    switch (subdevice) {
-    case PCI_DEVICE_ID_LMC_HSSI:
-	printk(KERN_INFO "%s: LMC HSSI\n", dev->name);
-        sc->lmc_cardtype = LMC_CARDTYPE_HSSI;
-        sc->lmc_media = &lmc_hssi_media;
-        break;
-    case PCI_DEVICE_ID_LMC_DS3:
-	printk(KERN_INFO "%s: LMC DS3\n", dev->name);
-        sc->lmc_cardtype = LMC_CARDTYPE_DS3;
-        sc->lmc_media = &lmc_ds3_media;
-        break;
-    case PCI_DEVICE_ID_LMC_SSI:
-	printk(KERN_INFO "%s: LMC SSI\n", dev->name);
-        sc->lmc_cardtype = LMC_CARDTYPE_SSI;
-        sc->lmc_media = &lmc_ssi_media;
-        break;
-    case PCI_DEVICE_ID_LMC_T1:
-	printk(KERN_INFO "%s: LMC T1\n", dev->name);
-        sc->lmc_cardtype = LMC_CARDTYPE_T1;
-        sc->lmc_media = &lmc_t1_media;
-        break;
-    default:
-	printk(KERN_WARNING "%s: LMC UNKNOWN CARD!\n", dev->name);
-        break;
-    }
-
-    lmc_initcsrs (sc, dev->base_addr, 8);
-
-    lmc_gpio_mkinput (sc, 0xff);
-    sc->lmc_gpio = 0;		/* drive no signals yet */
-
-    sc->lmc_media->defaults (sc);
-
-    sc->lmc_media->set_link_status (sc, LMC_LINK_UP);
-
-    /* verify that the PCI Sub System ID matches the Adapter Model number
-     * from the MII register
-     */
-    AdapModelNum = (lmc_mii_readreg (sc, 0, 3) & 0x3f0) >> 4;
-
-    if ((AdapModelNum != LMC_ADAP_T1 || /* detect LMC1200 */
-	 subdevice != PCI_DEVICE_ID_LMC_T1) &&
-	(AdapModelNum != LMC_ADAP_SSI || /* detect LMC1000 */
-	 subdevice != PCI_DEVICE_ID_LMC_SSI) &&
-	(AdapModelNum != LMC_ADAP_DS3 || /* detect LMC5245 */
-	 subdevice != PCI_DEVICE_ID_LMC_DS3) &&
-	(AdapModelNum != LMC_ADAP_HSSI || /* detect LMC5200 */
-	 subdevice != PCI_DEVICE_ID_LMC_HSSI))
-	    printk(KERN_WARNING "%s: Model number (%d) miscompare for PCI"
-		   " Subsystem ID = 0x%04x\n",
-		   dev->name, AdapModelNum, subdevice);
-
-    /*
-     * reset clock
-     */
-    LMC_CSR_WRITE (sc, csr_gp_timer, 0xFFFFFFFFUL);
-
-    sc->board_idx = cards_found++;
-    sc->extra_stats.check = STATCHECK;
-    sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
-	    sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
-    sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
-
-    sc->lmc_ok = 0;
-    sc->last_link_status = 0;
-
-    lmc_trace(dev, "lmc_init_one out");
-    return 0;
+	sc->lmc_cardtype = LMC_CARDTYPE_UNKNOWN;
+	sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
+
+	/*
+	 * Check either the subvendor or the subdevice, some systems reverse
+	 * the setting in the bois, seems to be version and arch dependent?
+	 * Fix the error, exchange the two values
+	 */
+	if ((subdevice = pdev->subsystem_device) == PCI_VENDOR_ID_LMC)
+		subdevice = pdev->subsystem_vendor;
+
+	switch (subdevice) {
+	case PCI_DEVICE_ID_LMC_HSSI:
+		printk(KERN_INFO "%s: LMC HSSI\n", dev->name);
+		sc->lmc_cardtype = LMC_CARDTYPE_HSSI;
+		sc->lmc_media = &lmc_hssi_media;
+		break;
+	case PCI_DEVICE_ID_LMC_DS3:
+		printk(KERN_INFO "%s: LMC DS3\n", dev->name);
+		sc->lmc_cardtype = LMC_CARDTYPE_DS3;
+		sc->lmc_media = &lmc_ds3_media;
+		break;
+	case PCI_DEVICE_ID_LMC_SSI:
+		printk(KERN_INFO "%s: LMC SSI\n", dev->name);
+		sc->lmc_cardtype = LMC_CARDTYPE_SSI;
+		sc->lmc_media = &lmc_ssi_media;
+		break;
+	case PCI_DEVICE_ID_LMC_T1:
+		printk(KERN_INFO "%s: LMC T1\n", dev->name);
+		sc->lmc_cardtype = LMC_CARDTYPE_T1;
+		sc->lmc_media = &lmc_t1_media;
+		break;
+	default:
+		printk(KERN_WARNING "%s: LMC UNKNOWN CARD!\n", dev->name);
+		break;
+	}
+
+	lmc_initcsrs(sc, dev->base_addr, 8);
+
+	lmc_gpio_mkinput(sc, 0xff);
+	sc->lmc_gpio = 0;		/* drive no signals yet */
+
+	sc->lmc_media->defaults(sc);
+
+	sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
+
+	/* verify that the PCI Sub System ID matches the Adapter Model number
+	   from the MII register */
+	AdapModelNum = (lmc_mii_readreg(sc, 0, 3) & 0x3f0) >> 4;
+
+	if ((AdapModelNum != LMC_ADAP_T1 || /* detect LMC1200 */
+	     subdevice != PCI_DEVICE_ID_LMC_T1) &&
+	    (AdapModelNum != LMC_ADAP_SSI || /* detect LMC1000 */
+	     subdevice != PCI_DEVICE_ID_LMC_SSI) &&
+	    (AdapModelNum != LMC_ADAP_DS3 || /* detect LMC5245 */
+	     subdevice != PCI_DEVICE_ID_LMC_DS3) &&
+	    (AdapModelNum != LMC_ADAP_HSSI || /* detect LMC5200 */
+	     subdevice != PCI_DEVICE_ID_LMC_HSSI))
+		printk(KERN_WARNING "%s: Model number (%d) miscompare for PCI"
+		       " Subsystem ID = 0x%04x\n",
+		       dev->name, AdapModelNum, subdevice);
+
+	/* reset clock */
+	LMC_CSR_WRITE(sc, csr_gp_timer, 0xFFFFFFFFUL);
+
+	sc->board_idx = cards_found++;
+	sc->extra_stats.check = STATCHECK;
+	sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
+		sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
+	sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
+
+	sc->lmc_ok = 0;
+	sc->last_link_status = 0;
+
+	lmc_trace(dev, "lmc_init_one out");
+	return 0;
 
 err_hdlcdev:
 	pci_set_drvdata(pdev, NULL);
@@ -984,9 +933,7 @@ err_req_io:
 	return err;
 }
 
-/*
- * Called from pci when removing module.
- */
+/* Called from pci when removing module. */
 static void __devexit lmc_remove_one(struct pci_dev *pdev)
 {
 	struct net_device *dev = pci_get_drvdata(pdev);
@@ -1001,733 +948,678 @@ static void __devexit lmc_remove_one(struct pci_dev *pdev)
 	}
 }
 
-/* After this is called, packets can be sent.
- * Does not initialize the addresses
- */
+/* After this is called, packets can be sent. Does not initialize
+   the addresses */
 static int lmc_open(struct net_device *dev)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
-    int err;
-
-    lmc_trace(dev, "lmc_open in");
-
-    lmc_led_on(sc, LMC_DS3_LED0);
-
-    lmc_dec_reset(sc);
-    lmc_reset(sc);
-
-    LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0);
-    LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
-		  lmc_mii_readreg(sc, 0, 17));
-
-    if (sc->lmc_ok){
-        lmc_trace(dev, "lmc_open lmc_ok out");
-        return (0);
-    }
-
-    lmc_softreset (sc);
-
-    /* Since we have to use PCI bus, this should work on x86,alpha,ppc */
-    if (request_irq (dev->irq, lmc_interrupt, IRQF_SHARED, dev->name, dev)){
-        printk(KERN_WARNING "%s: could not get irq: %d\n", dev->name, dev->irq);
-        lmc_trace(dev, "lmc_open irq failed out");
-        return -EAGAIN;
-    }
-    sc->got_irq = 1;
-
-    /* Assert Terminal Active */
-    sc->lmc_miireg16 |= LMC_MII16_LED_ALL;
-    sc->lmc_media->set_link_status (sc, LMC_LINK_UP);
-
-    /*
-     * reset to last state.
-     */
-    sc->lmc_media->set_status (sc, NULL);
-
-    /* setup default bits to be used in tulip_desc_t transmit descriptor
-     * -baz */
-    sc->TxDescriptControlInit = (
-                                 LMC_TDES_INTERRUPT_ON_COMPLETION
-                                 | LMC_TDES_FIRST_SEGMENT
-                                 | LMC_TDES_LAST_SEGMENT
-                                 | LMC_TDES_SECOND_ADDR_CHAINED
-                                 | LMC_TDES_DISABLE_PADDING
-                                );
-
-    if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16) {
-        /* disable 32 bit CRC generated by ASIC */
-        sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE;
-    }
-    sc->lmc_media->set_crc_length(sc, sc->ictl.crc_length);
-    /* Acknoledge the Terminal Active and light LEDs */
-
-    /* dev->flags |= IFF_UP; */
-
-    if ((err = lmc_proto_open(sc)) != 0)
-	    return err;
-
-    netif_start_queue(dev);
-    sc->extra_stats.tx_tbusy0++;
-
-    /*
-     * select what interrupts we want to get
-     */
-    sc->lmc_intrmask = 0;
-    /* Should be using the default interrupt mask defined in the .h file. */
-    sc->lmc_intrmask |= (TULIP_STS_NORMALINTR
-                         | TULIP_STS_RXINTR
-                         | TULIP_STS_TXINTR
-                         | TULIP_STS_ABNRMLINTR
-                         | TULIP_STS_SYSERROR
-                         | TULIP_STS_TXSTOPPED
-                         | TULIP_STS_TXUNDERFLOW
-                         | TULIP_STS_RXSTOPPED
-		         | TULIP_STS_RXNOBUF
-                        );
-    LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask);
-
-    sc->lmc_cmdmode |= TULIP_CMD_TXRUN;
-    sc->lmc_cmdmode |= TULIP_CMD_RXRUN;
-    LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode);
-
-    sc->lmc_ok = 1; /* Run watchdog */
-
-    /*
-     * Set the if up now - pfb
-     */
-
-    sc->last_link_status = 1;
-
-    /*
-     * Setup a timer for the watchdog on probe, and start it running.
-     * Since lmc_ok == 0, it will be a NOP for now.
-     */
-    init_timer (&sc->timer);
-    sc->timer.expires = jiffies + HZ;
-    sc->timer.data = (unsigned long) dev;
-    sc->timer.function = &lmc_watchdog;
-    add_timer (&sc->timer);
-
-    lmc_trace(dev, "lmc_open out");
-
-    return (0);
+	lmc_softc_t *sc = dev_to_sc(dev);
+	int err;
+
+	lmc_trace(dev, "lmc_open in");
+
+	lmc_led_on(sc, LMC_DS3_LED0);
+
+	lmc_dec_reset(sc);
+	lmc_reset(sc);
+
+	LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0);
+	LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
+		      lmc_mii_readreg(sc, 0, 17));
+
+	if (sc->lmc_ok) {
+		lmc_trace(dev, "lmc_open lmc_ok out");
+		return 0;
+	}
+
+	lmc_softreset(sc);
+
+	/* Since we have to use PCI bus, this should work on x86, alpha, ppc */
+	if (request_irq(dev->irq, lmc_interrupt, IRQF_SHARED,
+			dev->name, dev)) {
+		printk(KERN_WARNING "%s: could not get irq: %d\n",
+		       dev->name, dev->irq);
+		lmc_trace(dev, "lmc_open irq failed out");
+		return -EAGAIN;
+	}
+	sc->got_irq = 1;
+
+	/* Assert Terminal Active */
+	sc->lmc_miireg16 |= LMC_MII16_LED_ALL;
+	sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
+
+	/*
+	 * reset to last state.
+	 */
+	sc->lmc_media->set_status(sc, NULL);
+
+	/* setup default bits to be used in tulip_desc_t transmit descriptor */
+	sc->TxDescriptControlInit = (LMC_TDES_INTERRUPT_ON_COMPLETION |
+				     LMC_TDES_FIRST_SEGMENT |
+				     LMC_TDES_LAST_SEGMENT |
+				     LMC_TDES_SECOND_ADDR_CHAINED |
+				     LMC_TDES_DISABLE_PADDING);
+
+	if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16)
+		/* disable 32 bit CRC generated by ASIC */
+		sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE;
+
+	sc->lmc_media->set_crc_length(sc, sc->ictl.crc_length);
+	/* Acknowledge the Terminal Active and light LEDs */
+
+	/* dev->flags |= IFF_UP; */
+
+	if ((err = lmc_proto_open(sc)) != 0)
+		return err;
+
+	netif_start_queue(dev);
+	sc->extra_stats.tx_tbusy0++;
+
+	/* select what interrupts we want to get */
+	sc->lmc_intrmask = 0;
+	/* Should be using the default interrupt mask defined in the .h file. */
+	sc->lmc_intrmask |= (TULIP_STS_NORMALINTR | TULIP_STS_RXINTR |
+			     TULIP_STS_TXINTR | TULIP_STS_ABNRMLINTR |
+			     TULIP_STS_SYSERROR | TULIP_STS_TXSTOPPED |
+			     TULIP_STS_TXUNDERFLOW | TULIP_STS_RXSTOPPED |
+			     TULIP_STS_RXNOBUF);
+	LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask);
+
+	sc->lmc_cmdmode |= TULIP_CMD_TXRUN;
+	sc->lmc_cmdmode |= TULIP_CMD_RXRUN;
+	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
+
+	sc->lmc_ok = 1; /* Run watchdog */
+
+	/* Set the if up now */
+	sc->last_link_status = 1;
+
+	/* Setup a timer for the watchdog on probe, and start it running.
+	   Since lmc_ok == 0, it will be a NOP for now. */
+	init_timer(&sc->timer);
+	sc->timer.expires = jiffies + HZ;
+	sc->timer.data = (unsigned long) dev;
+	sc->timer.function = &lmc_watchdog;
+	add_timer(&sc->timer);
+
+	lmc_trace(dev, "lmc_open out");
+	return 0;
 }
 
-/* Total reset to compensate for the AdTran DSU doing bad things
- *  under heavy load
- */
+/* Total reset to compensate for the AdTran DSU doing bad things under
+   heavy load */
 
-static void lmc_running_reset (struct net_device *dev) /*fold00*/
+static void lmc_running_reset(struct net_device *dev)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
+	lmc_softc_t *sc = dev_to_sc(dev);
 
-    lmc_trace(dev, "lmc_runnig_reset in");
+	lmc_trace(dev, "lmc_runnig_reset in");
 
-    /* stop interrupts */
-    /* Clear the interrupt mask */
-    LMC_CSR_WRITE (sc, csr_intr, 0x00000000);
+	/* stop interrupts */
+	/* Clear the interrupt mask */
+	LMC_CSR_WRITE(sc, csr_intr, 0x00000000);
 
-    lmc_dec_reset (sc);
-    lmc_reset (sc);
-    lmc_softreset (sc);
-    /* sc->lmc_miireg16 |= LMC_MII16_LED_ALL; */
-    sc->lmc_media->set_link_status (sc, 1);
-    sc->lmc_media->set_status (sc, NULL);
+	lmc_dec_reset(sc);
+	lmc_reset(sc);
+	lmc_softreset(sc);
+	/* sc->lmc_miireg16 |= LMC_MII16_LED_ALL; */
+	sc->lmc_media->set_link_status(sc, 1);
+	sc->lmc_media->set_status(sc, NULL);
 
-    netif_wake_queue(dev);
+	netif_wake_queue(dev);
 
-    sc->lmc_txfull = 0;
-    sc->extra_stats.tx_tbusy0++;
+	sc->lmc_txfull = 0;
+	sc->extra_stats.tx_tbusy0++;
 
-    sc->lmc_intrmask = TULIP_DEFAULT_INTR_MASK;
-    LMC_CSR_WRITE (sc, csr_intr, sc->lmc_intrmask);
+	sc->lmc_intrmask = TULIP_DEFAULT_INTR_MASK;
+	LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask);
 
-    sc->lmc_cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN);
-    LMC_CSR_WRITE (sc, csr_command, sc->lmc_cmdmode);
+	sc->lmc_cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN);
+	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
 
-    lmc_trace(dev, "lmc_runnin_reset_out");
+	lmc_trace(dev, "lmc_runnin_reset_out");
 }
 
 
-/* This is what is called when you ifconfig down a device.
- * This disables the timer for the watchdog and keepalives,
- * and disables the irq for dev.
- */
+/* This is what is called when you ifconfig down a device. This disables
+   the timer for the watchdog and keepalives, and disables the irq for dev. */
 static int lmc_close(struct net_device *dev)
 {
-    /* not calling release_region() as we should */
-    lmc_softc_t *sc = dev_to_sc(dev);
+	/* not calling release_region() as we should */
+	lmc_softc_t *sc = dev_to_sc(dev);
 
-    lmc_trace(dev, "lmc_close in");
+	lmc_trace(dev, "lmc_close in");
 
-    sc->lmc_ok = 0;
-    sc->lmc_media->set_link_status (sc, 0);
-    del_timer (&sc->timer);
-    lmc_proto_close(sc);
-    lmc_ifdown (dev);
+	sc->lmc_ok = 0;
+	sc->lmc_media->set_link_status(sc, 0);
+	del_timer(&sc->timer);
+	lmc_proto_close(sc);
+	lmc_ifdown(dev);
 
-    lmc_trace(dev, "lmc_close out");
+	lmc_trace(dev, "lmc_close out");
 
-    return 0;
+	return 0;
 }
 
-/* Ends the transfer of packets */
-/* When the interface goes down, this is called */
-static int lmc_ifdown (struct net_device *dev) /*fold00*/
+/* Ends the transfer of packets.
+   When the interface goes down, this is called */
+static int lmc_ifdown(struct net_device *dev)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
-    u32 csr6;
-    int i;
-
-    lmc_trace(dev, "lmc_ifdown in");
-
-    /* Don't let anything else go on right now */
-    //    dev->start = 0;
-    netif_stop_queue(dev);
-    sc->extra_stats.tx_tbusy1++;
-
-    /* stop interrupts */
-    /* Clear the interrupt mask */
-    LMC_CSR_WRITE (sc, csr_intr, 0x00000000);
-
-    /* Stop Tx and Rx on the chip */
-    csr6 = LMC_CSR_READ (sc, csr_command);
-    csr6 &= ~LMC_DEC_ST;		/* Turn off the Transmission bit */
-    csr6 &= ~LMC_DEC_SR;		/* Turn off the Receive bit */
-    LMC_CSR_WRITE (sc, csr_command, csr6);
-
-    sc->lmc_device->stats.rx_missed_errors +=
-	    LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
-
-    /* release the interrupt */
-    if(sc->got_irq == 1){
-        free_irq (dev->irq, dev);
-        sc->got_irq = 0;
-    }
-
-    /* free skbuffs in the Rx queue */
-    for (i = 0; i < LMC_RXDESCS; i++)
-    {
-        struct sk_buff *skb = sc->lmc_rxq[i];
-        sc->lmc_rxq[i] = NULL;
-        sc->lmc_rxring[i].status = 0;
-        sc->lmc_rxring[i].length = 0;
-        sc->lmc_rxring[i].buffer1 = 0xDEADBEEF;
-        if (skb != NULL)
-            dev_kfree_skb(skb);
-        sc->lmc_rxq[i] = NULL;
-    }
-
-    for (i = 0; i < LMC_TXDESCS; i++)
-    {
-        if (sc->lmc_txq[i] != NULL)
-            dev_kfree_skb(sc->lmc_txq[i]);
-        sc->lmc_txq[i] = NULL;
-    }
-
-    lmc_led_off (sc, LMC_MII16_LED_ALL);
-
-    netif_wake_queue(dev);
-    sc->extra_stats.tx_tbusy0++;
-
-    lmc_trace(dev, "lmc_ifdown out");
-
-    return 0;
+	lmc_softc_t *sc = dev_to_sc(dev);
+	u32 csr6;
+	int i;
+
+	lmc_trace(dev, "lmc_ifdown in");
+
+	/* Don't let anything else go on right now */
+	/* dev->start = 0; */
+	netif_stop_queue(dev);
+	sc->extra_stats.tx_tbusy1++;
+
+	/* stop interrupts */
+	/* Clear the interrupt mask */
+	LMC_CSR_WRITE(sc, csr_intr, 0x00000000);
+
+	/* Stop Tx and Rx on the chip */
+	csr6 = LMC_CSR_READ(sc, csr_command);
+	csr6 &= ~LMC_DEC_ST;		/* Turn off the Transmission bit */
+	csr6 &= ~LMC_DEC_SR;		/* Turn off the Receive bit */
+	LMC_CSR_WRITE(sc, csr_command, csr6);
+
+	sc->lmc_device->stats.rx_missed_errors +=
+		LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
+
+	/* release the interrupt */
+	if (sc->got_irq == 1) {
+		free_irq(dev->irq, dev);
+		sc->got_irq = 0;
+	}
+
+	/* free skbuffs in the Rx queue */
+	for (i = 0; i < LMC_RXDESCS; i++) {
+		struct sk_buff *skb = sc->lmc_rxq[i];
+		sc->lmc_rxq[i] = NULL;
+		sc->lmc_rxring[i].status = 0;
+		sc->lmc_rxring[i].length = 0;
+		sc->lmc_rxring[i].buffer1 = 0xDEADBEEF;
+		if (skb != NULL)
+			dev_kfree_skb(skb);
+		sc->lmc_rxq[i] = NULL;
+	}
+
+	for (i = 0; i < LMC_TXDESCS; i++) {
+		if (sc->lmc_txq[i] != NULL)
+			dev_kfree_skb(sc->lmc_txq[i]);
+		sc->lmc_txq[i] = NULL;
+	}
+
+	lmc_led_off(sc, LMC_MII16_LED_ALL);
+
+	netif_wake_queue(dev);
+	sc->extra_stats.tx_tbusy0++;
+
+	lmc_trace(dev, "lmc_ifdown out");
+
+	return 0;
 }
 
 /* Interrupt handling routine.  This will take an incoming packet, or clean
- * up after a trasmit.
- */
-static irqreturn_t lmc_interrupt (int irq, void *dev_instance) /*fold00*/
+   up after a trasmit. */
+static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 {
-    struct net_device *dev = (struct net_device *) dev_instance;
-    lmc_softc_t *sc = dev_to_sc(dev);
-    u32 csr;
-    int i;
-    s32 stat;
-    unsigned int badtx;
-    u32 firstcsr;
-    int max_work = LMC_RXDESCS;
-    int handled = 0;
-
-    lmc_trace(dev, "lmc_interrupt in");
-
-    spin_lock(&sc->lmc_lock);
-
-    /*
-     * Read the csr to find what interrupts we have (if any)
-     */
-    csr = LMC_CSR_READ (sc, csr_status);
-
-    /*
-     * Make sure this is our interrupt
-     */
-    if ( ! (csr & sc->lmc_intrmask)) {
-        goto lmc_int_fail_out;
-    }
-
-    firstcsr = csr;
-
-    /* always go through this loop at least once */
-    while (csr & sc->lmc_intrmask) {
-	handled = 1;
-
-        /*
-         * Clear interrupt bits, we handle all case below
-         */
-        LMC_CSR_WRITE (sc, csr_status, csr);
-
-        /*
-         * One of
-         *  - Transmit process timed out CSR5<1>
-         *  - Transmit jabber timeout    CSR5<3>
-         *  - Transmit underflow         CSR5<5>
-         *  - Transmit Receiver buffer unavailable CSR5<7>
-         *  - Receive process stopped    CSR5<8>
-         *  - Receive watchdog timeout   CSR5<9>
-         *  - Early transmit interrupt   CSR5<10>
-         *
-         * Is this really right? Should we do a running reset for jabber?
-         * (being a WAN card and all)
-         */
-        if (csr & TULIP_STS_ABNRMLINTR){
-            lmc_running_reset (dev);
-            break;
-        }
-        
-        if (csr & TULIP_STS_RXINTR){
-            lmc_trace(dev, "rx interrupt");
-            lmc_rx (dev);
-            
-        }
-        if (csr & (TULIP_STS_TXINTR | TULIP_STS_TXNOBUF | TULIP_STS_TXSTOPPED)) {
-
-	    int		n_compl = 0 ;
-            /* reset the transmit timeout detection flag -baz */
-	    sc->extra_stats.tx_NoCompleteCnt = 0;
-
-            badtx = sc->lmc_taint_tx;
-            i = badtx % LMC_TXDESCS;
-
-            while ((badtx < sc->lmc_next_tx)) {
-                stat = sc->lmc_txring[i].status;
-
-                LMC_EVENT_LOG (LMC_EVENT_XMTINT, stat,
-						 sc->lmc_txring[i].length);
-                /*
-                 * If bit 31 is 1 the tulip owns it break out of the loop
-                 */
-                if (stat & 0x80000000)
-                    break;
-
-		n_compl++ ;		/* i.e., have an empty slot in ring */
-                /*
-                 * If we have no skbuff or have cleared it
-                 * Already continue to the next buffer
-                 */
-                if (sc->lmc_txq[i] == NULL)
-                    continue;
+	struct net_device *dev = (struct net_device *) dev_instance;
+	lmc_softc_t *sc = dev_to_sc(dev);
+	u32 csr;
+	int i;
+	s32 stat;
+	unsigned int badtx;
+	u32 firstcsr;
+	int max_work = LMC_RXDESCS;
+	int handled = 0;
 
-		/*
-		 * Check the total error summary to look for any errors
-		 */
-		if (stat & 0x8000) {
-			sc->lmc_device->stats.tx_errors++;
-			if (stat & 0x4104)
-				sc->lmc_device->stats.tx_aborted_errors++;
-			if (stat & 0x0C00)
-				sc->lmc_device->stats.tx_carrier_errors++;
-			if (stat & 0x0200)
-				sc->lmc_device->stats.tx_window_errors++;
-			if (stat & 0x0002)
-				sc->lmc_device->stats.tx_fifo_errors++;
-		} else {
-			sc->lmc_device->stats.tx_bytes += sc->lmc_txring[i].length & 0x7ff;
+	lmc_trace(dev, "lmc_interrupt in");
 
-			sc->lmc_device->stats.tx_packets++;
-                }
+	spin_lock(&sc->lmc_lock);
 
-                //                dev_kfree_skb(sc->lmc_txq[i]);
-                dev_kfree_skb_irq(sc->lmc_txq[i]);
-                sc->lmc_txq[i] = NULL;
+	/* Read the csr to find what interrupts we have (if any) */
+	csr = LMC_CSR_READ(sc, csr_status);
 
-                badtx++;
-                i = badtx % LMC_TXDESCS;
-            }
+	/* Make sure this is our interrupt */
+	if (!(csr & sc->lmc_intrmask))
+		goto lmc_int_fail_out;
 
-            if (sc->lmc_next_tx - badtx > LMC_TXDESCS)
-            {
-                printk ("%s: out of sync pointer\n", dev->name);
-                badtx += LMC_TXDESCS;
-            }
-            LMC_EVENT_LOG(LMC_EVENT_TBUSY0, n_compl, 0);
-            sc->lmc_txfull = 0;
-            netif_wake_queue(dev);
-	    sc->extra_stats.tx_tbusy0++;
+	firstcsr = csr;
 
+	/* always go through this loop at least once */
+	while (csr & sc->lmc_intrmask) {
+		handled = 1;
+
+		/* Clear interrupt bits, we handle all case below */
+		LMC_CSR_WRITE(sc, csr_status, csr);
+
+		/*
+		 * One of
+		 *  - Transmit process timed out CSR5<1>
+		 *  - Transmit jabber timeout    CSR5<3>
+		 *  - Transmit underflow         CSR5<5>
+		 *  - Transmit Receiver buffer unavailable CSR5<7>
+		 *  - Receive process stopped    CSR5<8>
+		 *  - Receive watchdog timeout   CSR5<9>
+		 *  - Early transmit interrupt   CSR5<10>
+
+		 Is this really right? Should we do a running reset for
+		 jabber? (being a WAN card and all) */
+		if (csr & TULIP_STS_ABNRMLINTR) {
+			lmc_running_reset(dev);
+			break;
+		}
 
+		if (csr & TULIP_STS_RXINTR) {
+			lmc_trace(dev, "rx interrupt");
+			lmc_rx(dev);
+
+		}
+		if (csr & (TULIP_STS_TXINTR | TULIP_STS_TXNOBUF |
+			   TULIP_STS_TXSTOPPED)) {
+
+			int n_compl = 0 ;
+			/* reset the transmit timeout detection flag */
+			sc->extra_stats.tx_NoCompleteCnt = 0;
+
+			badtx = sc->lmc_taint_tx;
+			i = badtx % LMC_TXDESCS;
+
+			while ((badtx < sc->lmc_next_tx)) {
+				stat = sc->lmc_txring[i].status;
+
+				LMC_EVENT_LOG(LMC_EVENT_XMTINT, stat,
+					      sc->lmc_txring[i].length);
+				/* If bit 31 is 1 the tulip owns it break out
+				   of the loop */
+				if (stat & 0x80000000)
+					break;
+
+				/* i.e., have an empty slot in ring */
+				n_compl++;
+				/* If we have no skbuff or have cleared it
+				   already. Continue to the next buffer */
+				if (sc->lmc_txq[i] == NULL)
+					continue;
+
+				/* Check the total error summary to look for
+				   any errors */
+				if (stat & 0x8000) {
+					sc->lmc_device->stats.tx_errors++;
+					if (stat & 0x4104)
+						sc->lmc_device->stats.tx_aborted_errors++;
+					if (stat & 0x0C00)
+						sc->lmc_device->stats.tx_carrier_errors++;
+					if (stat & 0x0200)
+						sc->lmc_device->stats.tx_window_errors++;
+					if (stat & 0x0002)
+						sc->lmc_device->stats.tx_fifo_errors++;
+				} else {
+					sc->lmc_device->stats.tx_bytes +=
+						sc->lmc_txring[i].length & 0x7ff;
+
+					sc->lmc_device->stats.tx_packets++;
+				}
+
+				dev_kfree_skb_irq(sc->lmc_txq[i]);
+				sc->lmc_txq[i] = NULL;
+
+				badtx++;
+				i = badtx % LMC_TXDESCS;
+			}
+
+			if (sc->lmc_next_tx - badtx > LMC_TXDESCS) {
+				printk(KERN_WARNING "%s: out of sync pointer\n",
+				       dev->name);
+				badtx += LMC_TXDESCS;
+			}
+			LMC_EVENT_LOG(LMC_EVENT_TBUSY0, n_compl, 0);
+			sc->lmc_txfull = 0;
+			netif_wake_queue(dev);
+			sc->extra_stats.tx_tbusy0++;
 #ifdef DEBUG
-	    sc->extra_stats.dirtyTx = badtx;
-	    sc->extra_stats.lmc_next_tx = sc->lmc_next_tx;
-	    sc->extra_stats.lmc_txfull = sc->lmc_txfull;
+			sc->extra_stats.dirtyTx = badtx;
+			sc->extra_stats.lmc_next_tx = sc->lmc_next_tx;
+			sc->extra_stats.lmc_txfull = sc->lmc_txfull;
 #endif
-            sc->lmc_taint_tx = badtx;
-
-            /*
-             * Why was there a break here???
-             */
-        }			/* end handle transmit interrupt */
-
-        if (csr & TULIP_STS_SYSERROR) {
-            u32 error;
-            printk (KERN_WARNING "%s: system bus error csr: %#8.8x\n", dev->name, csr);
-            error = csr>>23 & 0x7;
-            switch(error){
-            case 0x000:
-                printk(KERN_WARNING "%s: Parity Fault (bad)\n", dev->name);
-                break;
-            case 0x001:
-                printk(KERN_WARNING "%s: Master Abort (naughty)\n", dev->name);
-                break;
-            case 0x010:
-                printk(KERN_WARNING "%s: Target Abort (not so naughty)\n", dev->name);
-                break;
-            default:
-                printk(KERN_WARNING "%s: This bus error code was supposed to be reserved!\n", dev->name);
-            }
-            lmc_dec_reset (sc);
-            lmc_reset (sc);
-            LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0);
-            LMC_EVENT_LOG(LMC_EVENT_RESET2,
-                          lmc_mii_readreg (sc, 0, 16),
-                          lmc_mii_readreg (sc, 0, 17));
-
-        }
-
-        
-        if(max_work-- <= 0)
-            break;
-        
-        /*
-         * Get current csr status to make sure
-         * we've cleared all interrupts
-         */
-        csr = LMC_CSR_READ (sc, csr_status);
-    }				/* end interrupt loop */
-    LMC_EVENT_LOG(LMC_EVENT_INT, firstcsr, csr);
+			sc->lmc_taint_tx = badtx;
+		} /* end handle transmit interrupt */
+
+		if (csr & TULIP_STS_SYSERROR) {
+			u32 error;
+			printk(KERN_WARNING
+				"%s: system bus error csr: %#8.8x\n",
+				dev->name, csr);
+			error = csr>>23 & 0x7;
+			switch (error) {
+			case 0x000:
+				printk(KERN_WARNING
+				       "%s: Parity Fault (bad)\n", dev->name);
+				break;
+			case 0x001:
+				printk(KERN_WARNING
+				       "%s: Master Abort (naughty)\n",
+				       dev->name);
+				break;
+			case 0x010:
+				printk(KERN_WARNING
+				       "%s: Target Abort (not so naughty)\n",
+				       dev->name);
+				break;
+			default:
+				printk(KERN_WARNING
+				       "%s: This bus error code was supposed to be reserved!\n",
+				       dev->name);
+			}
+			lmc_dec_reset(sc);
+			lmc_reset(sc);
+			LMC_EVENT_LOG(LMC_EVENT_RESET1,
+				      LMC_CSR_READ(sc, csr_status), 0);
+			LMC_EVENT_LOG(LMC_EVENT_RESET2,
+				      lmc_mii_readreg(sc, 0, 16),
+				      lmc_mii_readreg(sc, 0, 17));
 
-lmc_int_fail_out:
+		}
 
-    spin_unlock(&sc->lmc_lock);
+		if (max_work-- <= 0)
+			break;
 
-    lmc_trace(dev, "lmc_interrupt out");
-    return IRQ_RETVAL(handled);
+		/* Get current csr status to make sure we've cleared all
+		   interrupts */
+		csr = LMC_CSR_READ(sc, csr_status);
+	} /* end interrupt loop */
+	LMC_EVENT_LOG(LMC_EVENT_INT, firstcsr, csr);
+
+lmc_int_fail_out:
+	spin_unlock(&sc->lmc_lock);
+	lmc_trace(dev, "lmc_interrupt out");
+	return IRQ_RETVAL(handled);
 }
 
 static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 					struct net_device *dev)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
-    u32 flag;
-    int entry;
-    unsigned long flags;
+	lmc_softc_t *sc = dev_to_sc(dev);
+	u32 flag;
+	int entry;
+	unsigned long flags;
 
-    lmc_trace(dev, "lmc_start_xmit in");
+	lmc_trace(dev, "lmc_start_xmit in");
 
-    spin_lock_irqsave(&sc->lmc_lock, flags);
+	spin_lock_irqsave(&sc->lmc_lock, flags);
 
-    /* normal path, tbusy known to be zero */
+	/* normal path, tbusy known to be zero */
 
-    entry = sc->lmc_next_tx % LMC_TXDESCS;
+	entry = sc->lmc_next_tx % LMC_TXDESCS;
 
-    sc->lmc_txq[entry] = skb;
-    sc->lmc_txring[entry].buffer1 = virt_to_bus (skb->data);
+	sc->lmc_txq[entry] = skb;
+	sc->lmc_txring[entry].buffer1 = virt_to_bus(skb->data);
 
-    LMC_CONSOLE_LOG("xmit", skb->data, skb->len);
+	LMC_CONSOLE_LOG("xmit", skb->data, skb->len);
 
 #ifndef GCOM
-    /* If the queue is less than half full, don't interrupt */
-    if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS / 2)
-    {
-        /* Do not interrupt on completion of this packet */
-        flag = 0x60000000;
-        netif_wake_queue(dev);
-    }
-    else if (sc->lmc_next_tx - sc->lmc_taint_tx == LMC_TXDESCS / 2)
-    {
-        /* This generates an interrupt on completion of this packet */
-        flag = 0xe0000000;
-        netif_wake_queue(dev);
-    }
-    else if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS - 1)
-    {
-        /* Do not interrupt on completion of this packet */
-        flag = 0x60000000;
-        netif_wake_queue(dev);
-    }
-    else
-    {
-        /* This generates an interrupt on completion of this packet */
-        flag = 0xe0000000;
-        sc->lmc_txfull = 1;
-        netif_stop_queue(dev);
-    }
+	/* If the queue is less than half full, don't interrupt */
+	if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS / 2) {
+		/* Do not interrupt on completion of this packet */
+		flag = 0x60000000;
+		netif_wake_queue(dev);
+	} else if (sc->lmc_next_tx - sc->lmc_taint_tx == LMC_TXDESCS / 2) {
+		/* This generates an interrupt on completion of this packet */
+		flag = 0xe0000000;
+		netif_wake_queue(dev);
+	} else if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS - 1) {
+		/* Do not interrupt on completion of this packet */
+		flag = 0x60000000;
+		netif_wake_queue(dev);
+	} else {
+		/* This generates an interrupt on completion of this packet */
+		flag = 0xe0000000;
+		sc->lmc_txfull = 1;
+		netif_stop_queue(dev);
+	}
 #else
-    flag = LMC_TDES_INTERRUPT_ON_COMPLETION;
-
-    if (sc->lmc_next_tx - sc->lmc_taint_tx >= LMC_TXDESCS - 1)
-    {				/* ring full, go busy */
-        sc->lmc_txfull = 1;
-	netif_stop_queue(dev);
-	sc->extra_stats.tx_tbusy1++;
-        LMC_EVENT_LOG(LMC_EVENT_TBUSY1, entry, 0);
-    }
+	flag = LMC_TDES_INTERRUPT_ON_COMPLETION;
+
+	if (sc->lmc_next_tx - sc->lmc_taint_tx >= LMC_TXDESCS - 1) {
+		/* ring full, go busy */
+		sc->lmc_txfull = 1;
+		netif_stop_queue(dev);
+		sc->extra_stats.tx_tbusy1++;
+		LMC_EVENT_LOG(LMC_EVENT_TBUSY1, entry, 0);
+	}
 #endif
 
+	if (entry == LMC_TXDESCS - 1)	/* last descriptor in ring */
+		flag |= LMC_TDES_END_OF_RING;	/* flag as such for Tulip */
 
-    if (entry == LMC_TXDESCS - 1)	/* last descriptor in ring */
-	flag |= LMC_TDES_END_OF_RING;	/* flag as such for Tulip */
-
-    /* don't pad small packets either */
-    flag = sc->lmc_txring[entry].length = (skb->len) | flag |
-						sc->TxDescriptControlInit;
+	/* don't pad small packets either */
+	flag = sc->lmc_txring[entry].length = (skb->len) | flag |
+		sc->TxDescriptControlInit;
 
-    /* set the transmit timeout flag to be checked in
-     * the watchdog timer handler. -baz
-     */
+	/* set the transmit timeout flag to be checked in the watchdog timer
+	   handler. */
 
-    sc->extra_stats.tx_NoCompleteCnt++;
-    sc->lmc_next_tx++;
+	sc->extra_stats.tx_NoCompleteCnt++;
+	sc->lmc_next_tx++;
 
-    /* give ownership to the chip */
-    LMC_EVENT_LOG(LMC_EVENT_XMT, flag, entry);
-    sc->lmc_txring[entry].status = 0x80000000;
+	/* give ownership to the chip */
+	LMC_EVENT_LOG(LMC_EVENT_XMT, flag, entry);
+	sc->lmc_txring[entry].status = 0x80000000;
 
-    /* send now! */
-    LMC_CSR_WRITE (sc, csr_txpoll, 0);
+	/* send now! */
+	LMC_CSR_WRITE(sc, csr_txpoll, 0);
 
-    spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	spin_unlock_irqrestore(&sc->lmc_lock, flags);
 
-    lmc_trace(dev, "lmc_start_xmit_out");
-    return NETDEV_TX_OK;
+	lmc_trace(dev, "lmc_start_xmit_out");
+	return NETDEV_TX_OK;
 }
 
 
 static int lmc_rx(struct net_device *dev)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
-    int i;
-    int rx_work_limit = LMC_RXDESCS;
-    unsigned int next_rx;
-    int rxIntLoopCnt;		/* debug -baz */
-    int localLengthErrCnt = 0;
-    long stat;
-    struct sk_buff *skb, *nsb;
-    u16 len;
-
-    lmc_trace(dev, "lmc_rx in");
-
-    lmc_led_on(sc, LMC_DS3_LED3);
-
-    rxIntLoopCnt = 0;		/* debug -baz */
-
-    i = sc->lmc_next_rx % LMC_RXDESCS;
-    next_rx = sc->lmc_next_rx;
-
-    while (((stat = sc->lmc_rxring[i].status) & LMC_RDES_OWN_BIT) != DESC_OWNED_BY_DC21X4)
-    {
-        rxIntLoopCnt++;		/* debug -baz */
-        len = ((stat & LMC_RDES_FRAME_LENGTH) >> RDES_FRAME_LENGTH_BIT_NUMBER);
-        if ((stat & 0x0300) != 0x0300) {  /* Check first segment and last segment */
-		if ((stat & 0x0000ffff) != 0x7fff) {
-			/* Oversized frame */
+	lmc_softc_t *sc = dev_to_sc(dev);
+	int i;
+	int rx_work_limit = LMC_RXDESCS;
+	unsigned int next_rx;
+	int rxIntLoopCnt;		/* debug */
+	int localLengthErrCnt = 0;
+	long stat;
+	struct sk_buff *skb, *nsb;
+	u16 len;
+
+	lmc_trace(dev, "lmc_rx in");
+
+	lmc_led_on(sc, LMC_DS3_LED3);
+
+	rxIntLoopCnt = 0;		/* debug */
+
+	i = sc->lmc_next_rx % LMC_RXDESCS;
+	next_rx = sc->lmc_next_rx;
+
+	while (((stat = sc->lmc_rxring[i].status) & LMC_RDES_OWN_BIT) !=
+	       DESC_OWNED_BY_DC21X4) {
+		rxIntLoopCnt++;		/* debug */
+		len = ((stat & LMC_RDES_FRAME_LENGTH) >>
+		       RDES_FRAME_LENGTH_BIT_NUMBER);
+		if ((stat & 0x0300) != 0x0300) {
+			/* Check first segment and last segment */
+			if ((stat & 0x0000ffff) != 0x7fff) {
+				/* Oversized frame */
+				sc->lmc_device->stats.rx_length_errors++;
+				goto skip_packet;
+			}
+		}
+
+		if (stat & 0x00000008) { /* Catch a dribbling bit error */
+			sc->lmc_device->stats.rx_errors++;
+			sc->lmc_device->stats.rx_frame_errors++;
+			goto skip_packet;
+		}
+
+
+		if (stat & 0x00000004) { /* Catch a CRC error by the Xilinx */
+			sc->lmc_device->stats.rx_errors++;
+			sc->lmc_device->stats.rx_crc_errors++;
+			goto skip_packet;
+		}
+
+		if (len > LMC_PKT_BUF_SZ) {
 			sc->lmc_device->stats.rx_length_errors++;
+			localLengthErrCnt++;
 			goto skip_packet;
 		}
-	}
 
-	if (stat & 0x00000008) { /* Catch a dribbling bit error */
-		sc->lmc_device->stats.rx_errors++;
-		sc->lmc_device->stats.rx_frame_errors++;
-		goto skip_packet;
-	}
+		if (len < sc->lmc_crcSize + 2) {
+			sc->lmc_device->stats.rx_length_errors++;
+			sc->extra_stats.rx_SmallPktCnt++;
+			localLengthErrCnt++;
+			goto skip_packet;
+		}
 
+		if (stat & 0x00004000) {
+			printk(KERN_WARNING
+			       "%s: Receiver descriptor error, receiver out of sync?\n",
+			       dev->name);
+		}
 
-	if (stat & 0x00000004) { /* Catch a CRC error by the Xilinx */
-		sc->lmc_device->stats.rx_errors++;
-		sc->lmc_device->stats.rx_crc_errors++;
-		goto skip_packet;
-	}
+		len -= sc->lmc_crcSize;
 
-	if (len > LMC_PKT_BUF_SZ) {
-		sc->lmc_device->stats.rx_length_errors++;
-		localLengthErrCnt++;
-		goto skip_packet;
+		skb = sc->lmc_rxq[i];
+
+		/* We ran out of memory at some point just allocate an skb buff
+		   and continue. */
+
+		if (!skb) {
+			nsb = dev_alloc_skb(LMC_PKT_BUF_SZ + 2);
+			if (nsb) {
+				sc->lmc_rxq[i] = nsb;
+				nsb->dev = dev;
+				sc->lmc_rxring[i].buffer1 =
+					virt_to_bus(skb_tail_pointer(nsb));
+			}
+			sc->failed_recv_alloc = 1;
+			goto skip_packet;
+		}
+
+		sc->lmc_device->stats.rx_packets++;
+		sc->lmc_device->stats.rx_bytes += len;
+
+		LMC_CONSOLE_LOG("recv", skb->data, len);
+
+		/* I'm not sure of the sanity of this. Packets could be arriving
+		   at a constant 44.210mbits/sec and we're going to copy them
+		   into a new buffer?? */
+
+		if (len > (LMC_MTU - (LMC_MTU>>2))) { /* len > LMC_MTU * 0.75 */
+			/* If it's a large packet don't copy it just hand it
+			   up */
+give_it_anyways:
+			sc->lmc_rxq[i] = NULL;
+			sc->lmc_rxring[i].buffer1 = 0x0;
+
+			skb_put(skb, len);
+			skb->protocol = lmc_proto_type(sc, skb);
+			skb_reset_mac_header(skb);
+			/* skb_reset_network_header(skb); */
+			skb->dev = dev;
+			lmc_proto_netif(sc, skb);
+
+			/* This skb will be destroyed by the upper layers,
+			   make a new one */
+			nsb = dev_alloc_skb(LMC_PKT_BUF_SZ + 2);
+			if (nsb) {
+				sc->lmc_rxq[i] = nsb;
+				nsb->dev = dev;
+				sc->lmc_rxring[i].buffer1 =
+					virt_to_bus(skb_tail_pointer(nsb));
+				/* Transferred to 21140 below */
+			} else {
+				/* We've run out of memory, stop trying to
+				   allocate memory and exit the interrupt
+				   handler The chip may run out of receivers
+				   and stop in which care we'll try to allocate
+				   the buffer again (once a second). */
+				sc->extra_stats.rx_BuffAllocErr++;
+				LMC_EVENT_LOG(LMC_EVENT_RCVINT, stat, len);
+				sc->failed_recv_alloc = 1;
+				goto skip_out_of_mem;
+			}
+		} else {
+			nsb = dev_alloc_skb(len);
+			if (!nsb)
+				goto give_it_anyways;
+			skb_copy_from_linear_data(skb, skb_put(nsb, len), len);
+			nsb->protocol = lmc_proto_type(sc, nsb);
+			skb_reset_mac_header(nsb);
+			/* skb_reset_network_header(nsb); */
+			nsb->dev = dev;
+			lmc_proto_netif(sc, nsb);
+		}
+
+skip_packet:
+		LMC_EVENT_LOG(LMC_EVENT_RCVINT, stat, len);
+		sc->lmc_rxring[i].status = DESC_OWNED_BY_DC21X4;
+
+		sc->lmc_next_rx++;
+		i = sc->lmc_next_rx % LMC_RXDESCS;
+		rx_work_limit--;
+		if (rx_work_limit < 0)
+			break;
 	}
 
-	if (len < sc->lmc_crcSize + 2) {
-		sc->lmc_device->stats.rx_length_errors++;
-		sc->extra_stats.rx_SmallPktCnt++;
-		localLengthErrCnt++;
-		goto skip_packet;
+#if 0
+	/* detect condition for LMC1000 where DSU cable attaches and fills
+	   descriptors with bogus packets */
+
+	if (localLengthErrCnt > LMC_RXDESCS - 3) {
+		sc->extra_stats.rx_BadPktSurgeCnt++;
+		LMC_EVENT_LOG(LMC_EVENT_BADPKTSURGE, localLengthErrCnt,
+			      sc->extra_stats.rx_BadPktSurgeCnt);
 	}
+#endif
 
-        if(stat & 0x00004000){
-            printk(KERN_WARNING "%s: Receiver descriptor error, receiver out of sync?\n", dev->name);
-        }
-
-        len -= sc->lmc_crcSize;
-
-        skb = sc->lmc_rxq[i];
-
-        /*
-         * We ran out of memory at some point
-         * just allocate an skb buff and continue.
-         */
-        
-        if (!skb) {
-            nsb = dev_alloc_skb (LMC_PKT_BUF_SZ + 2);
-            if (nsb) {
-                sc->lmc_rxq[i] = nsb;
-                nsb->dev = dev;
-                sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb));
-            }
-            sc->failed_recv_alloc = 1;
-            goto skip_packet;
-        }
-        
-	sc->lmc_device->stats.rx_packets++;
-	sc->lmc_device->stats.rx_bytes += len;
-
-        LMC_CONSOLE_LOG("recv", skb->data, len);
-
-        /*
-         * I'm not sure of the sanity of this
-         * Packets could be arriving at a constant
-         * 44.210mbits/sec and we're going to copy
-         * them into a new buffer??
-         */
-        
-        if(len > (LMC_MTU - (LMC_MTU>>2))){ /* len > LMC_MTU * 0.75 */
-            /*
-             * If it's a large packet don't copy it just hand it up
-             */
-        give_it_anyways:
-
-            sc->lmc_rxq[i] = NULL;
-            sc->lmc_rxring[i].buffer1 = 0x0;
-
-            skb_put (skb, len);
-            skb->protocol = lmc_proto_type(sc, skb);
-            skb_reset_mac_header(skb);
-            /* skb_reset_network_header(skb); */
-            skb->dev = dev;
-            lmc_proto_netif(sc, skb);
-
-            /*
-             * This skb will be destroyed by the upper layers, make a new one
-             */
-            nsb = dev_alloc_skb (LMC_PKT_BUF_SZ + 2);
-            if (nsb) {
-                sc->lmc_rxq[i] = nsb;
-                nsb->dev = dev;
-                sc->lmc_rxring[i].buffer1 = virt_to_bus(skb_tail_pointer(nsb));
-                /* Transferred to 21140 below */
-            }
-            else {
-                /*
-                 * We've run out of memory, stop trying to allocate
-                 * memory and exit the interrupt handler
-                 *
-                 * The chip may run out of receivers and stop
-                 * in which care we'll try to allocate the buffer
-                 * again.  (once a second)
-                 */
-		sc->extra_stats.rx_BuffAllocErr++;
-                LMC_EVENT_LOG(LMC_EVENT_RCVINT, stat, len);
-                sc->failed_recv_alloc = 1;
-                goto skip_out_of_mem;
-            }
-        }
-        else {
-            nsb = dev_alloc_skb(len);
-            if(!nsb) {
-                goto give_it_anyways;
-            }
-            skb_copy_from_linear_data(skb, skb_put(nsb, len), len);
-            
-            nsb->protocol = lmc_proto_type(sc, nsb);
-            skb_reset_mac_header(nsb);
-            /* skb_reset_network_header(nsb); */
-            nsb->dev = dev;
-            lmc_proto_netif(sc, nsb);
-        }
-
-    skip_packet:
-        LMC_EVENT_LOG(LMC_EVENT_RCVINT, stat, len);
-        sc->lmc_rxring[i].status = DESC_OWNED_BY_DC21X4;
-
-        sc->lmc_next_rx++;
-        i = sc->lmc_next_rx % LMC_RXDESCS;
-        rx_work_limit--;
-        if (rx_work_limit < 0)
-            break;
-    }
-
-    /* detect condition for LMC1000 where DSU cable attaches and fills
-     * descriptors with bogus packets
-     *
-    if (localLengthErrCnt > LMC_RXDESCS - 3) {
-	sc->extra_stats.rx_BadPktSurgeCnt++;
-	LMC_EVENT_LOG(LMC_EVENT_BADPKTSURGE, localLengthErrCnt,
-		      sc->extra_stats.rx_BadPktSurgeCnt);
-    } */
-
-    /* save max count of receive descriptors serviced */
-    if (rxIntLoopCnt > sc->extra_stats.rxIntLoopCnt)
-	    sc->extra_stats.rxIntLoopCnt = rxIntLoopCnt; /* debug -baz */
+	/* save max count of receive descriptors serviced */
+	if (rxIntLoopCnt > sc->extra_stats.rxIntLoopCnt)
+		sc->extra_stats.rxIntLoopCnt = rxIntLoopCnt; /* debug */
 
 #ifdef DEBUG
-    if (rxIntLoopCnt == 0)
-    {
-        for (i = 0; i < LMC_RXDESCS; i++)
-        {
-            if ((sc->lmc_rxring[i].status & LMC_RDES_OWN_BIT)
-                != DESC_OWNED_BY_DC21X4)
-            {
-                rxIntLoopCnt++;
-            }
-        }
-        LMC_EVENT_LOG(LMC_EVENT_RCVEND, rxIntLoopCnt, 0);
-    }
+	if (rxIntLoopCnt == 0) {
+		for (i = 0; i < LMC_RXDESCS; i++) {
+			if ((sc->lmc_rxring[i].status & LMC_RDES_OWN_BIT)
+			    != DESC_OWNED_BY_DC21X4)
+				rxIntLoopCnt++;
+		}
+		LMC_EVENT_LOG(LMC_EVENT_RCVEND, rxIntLoopCnt, 0);
+	}
 #endif
 
-
-    lmc_led_off(sc, LMC_DS3_LED3);
+	lmc_led_off(sc, LMC_DS3_LED3);
 
 skip_out_of_mem:
-
-    lmc_trace(dev, "lmc_rx out");
-
-    return 0;
+	lmc_trace(dev, "lmc_rx out");
+	return 0;
 }
 
 static struct net_device_stats *lmc_get_stats(struct net_device *dev)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
-    unsigned long flags;
-
-    lmc_trace(dev, "lmc_get_stats in");
+	lmc_softc_t *sc = dev_to_sc(dev);
+	unsigned long flags;
 
-    spin_lock_irqsave(&sc->lmc_lock, flags);
+	lmc_trace(dev, "lmc_get_stats in");
 
-    sc->lmc_device->stats.rx_missed_errors += LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
+	spin_lock_irqsave(&sc->lmc_lock, flags);
 
-    spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	sc->lmc_device->stats.rx_missed_errors +=
+		LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
 
-    lmc_trace(dev, "lmc_get_stats out");
+	spin_unlock_irqrestore(&sc->lmc_lock, flags);
 
-    return &sc->lmc_device->stats;
+	lmc_trace(dev, "lmc_get_stats out");
+	return &sc->lmc_device->stats;
 }
 
 static struct pci_driver lmc_driver = {
@@ -1739,407 +1631,365 @@ static struct pci_driver lmc_driver = {
 
 static int __init init_lmc(void)
 {
-    return pci_register_driver(&lmc_driver);
+	return pci_register_driver(&lmc_driver);
 }
 
 static void __exit exit_lmc(void)
 {
-    pci_unregister_driver(&lmc_driver);
+	pci_unregister_driver(&lmc_driver);
 }
 
 module_init(init_lmc);
 module_exit(exit_lmc);
 
-unsigned lmc_mii_readreg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno) /*fold00*/
+unsigned lmc_mii_readreg(lmc_softc_t * const sc, unsigned devaddr,
+			 unsigned regno)
 {
-    int i;
-    int command = (0xf6 << 10) | (devaddr << 5) | regno;
-    int retval = 0;
+	int i;
+	int command = (0xf6 << 10) | (devaddr << 5) | regno;
+	int retval = 0;
 
-    lmc_trace(sc->lmc_device, "lmc_mii_readreg in");
+	lmc_trace(sc->lmc_device, "lmc_mii_readreg in");
 
-    LMC_MII_SYNC (sc);
+	LMC_MII_SYNC(sc);
 
-    lmc_trace(sc->lmc_device, "lmc_mii_readreg: done sync");
+	lmc_trace(sc->lmc_device, "lmc_mii_readreg: done sync");
 
-    for (i = 15; i >= 0; i--)
-    {
-        int dataval = (command & (1 << i)) ? 0x20000 : 0;
+	for (i = 15; i >= 0; i--) {
+		int dataval = (command & (1 << i)) ? 0x20000 : 0;
 
-        LMC_CSR_WRITE (sc, csr_9, dataval);
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-        LMC_CSR_WRITE (sc, csr_9, dataval | 0x10000);
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-    }
-
-    lmc_trace(sc->lmc_device, "lmc_mii_readreg: done1");
+		LMC_CSR_WRITE(sc, csr_9, dataval);
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+		LMC_CSR_WRITE(sc, csr_9, dataval | 0x10000);
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+	}
 
-    for (i = 19; i > 0; i--)
-    {
-        LMC_CSR_WRITE (sc, csr_9, 0x40000);
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-        retval = (retval << 1) | ((LMC_CSR_READ (sc, csr_9) & 0x80000) ? 1 : 0);
-        LMC_CSR_WRITE (sc, csr_9, 0x40000 | 0x10000);
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-    }
+	lmc_trace(sc->lmc_device, "lmc_mii_readreg: done1");
+
+	for (i = 19; i > 0; i--) {
+		LMC_CSR_WRITE(sc, csr_9, 0x40000);
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+		retval = (retval << 1) |
+			((LMC_CSR_READ(sc, csr_9) & 0x80000) ? 1 : 0);
+		LMC_CSR_WRITE(sc, csr_9, 0x40000 | 0x10000);
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+	}
 
-    lmc_trace(sc->lmc_device, "lmc_mii_readreg out");
+	lmc_trace(sc->lmc_device, "lmc_mii_readreg out");
 
-    return (retval >> 1) & 0xffff;
+	return (retval >> 1) & 0xffff;
 }
 
-void lmc_mii_writereg (lmc_softc_t * const sc, unsigned devaddr, unsigned regno, unsigned data) /*fold00*/
+void lmc_mii_writereg(lmc_softc_t * const sc, unsigned devaddr, unsigned regno,
+		      unsigned data)
 {
-    int i = 32;
-    int command = (0x5002 << 16) | (devaddr << 23) | (regno << 18) | data;
-
-    lmc_trace(sc->lmc_device, "lmc_mii_writereg in");
-
-    LMC_MII_SYNC (sc);
-
-    i = 31;
-    while (i >= 0)
-    {
-        int datav;
-
-        if (command & (1 << i))
-            datav = 0x20000;
-        else
-            datav = 0x00000;
-
-        LMC_CSR_WRITE (sc, csr_9, datav);
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-        LMC_CSR_WRITE (sc, csr_9, (datav | 0x10000));
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-        i--;
-    }
-
-    i = 2;
-    while (i > 0)
-    {
-        LMC_CSR_WRITE (sc, csr_9, 0x40000);
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-        LMC_CSR_WRITE (sc, csr_9, 0x50000);
-        lmc_delay ();
-        /* __SLOW_DOWN_IO; */
-        i--;
-    }
-
-    lmc_trace(sc->lmc_device, "lmc_mii_writereg out");
+	int i = 32;
+	int command = (0x5002 << 16) | (devaddr << 23) | (regno << 18) | data;
+
+	lmc_trace(sc->lmc_device, "lmc_mii_writereg in");
+
+	LMC_MII_SYNC(sc);
+
+	i = 31;
+	while (i >= 0) {
+		int datav;
+
+		if (command & (1 << i))
+			datav = 0x20000;
+		else
+			datav = 0x00000;
+
+		LMC_CSR_WRITE(sc, csr_9, datav);
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+		LMC_CSR_WRITE(sc, csr_9, (datav | 0x10000));
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+		i--;
+	}
+
+	i = 2;
+	while (i > 0) {
+		LMC_CSR_WRITE(sc, csr_9, 0x40000);
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+		LMC_CSR_WRITE(sc, csr_9, 0x50000);
+		lmc_delay();
+		/* __SLOW_DOWN_IO; */
+		i--;
+	}
+
+	lmc_trace(sc->lmc_device, "lmc_mii_writereg out");
 }
 
-static void lmc_softreset (lmc_softc_t * const sc) /*fold00*/
+static void lmc_softreset(lmc_softc_t * const sc)
 {
-    int i;
-
-    lmc_trace(sc->lmc_device, "lmc_softreset in");
-
-    /* Initialize the receive rings and buffers. */
-    sc->lmc_txfull = 0;
-    sc->lmc_next_rx = 0;
-    sc->lmc_next_tx = 0;
-    sc->lmc_taint_rx = 0;
-    sc->lmc_taint_tx = 0;
-
-    /*
-     * Setup each one of the receiver buffers
-     * allocate an skbuff for each one, setup the descriptor table
-     * and point each buffer at the next one
-     */
-
-    for (i = 0; i < LMC_RXDESCS; i++)
-    {
-        struct sk_buff *skb;
-
-        if (sc->lmc_rxq[i] == NULL)
-        {
-            skb = dev_alloc_skb (LMC_PKT_BUF_SZ + 2);
-            if(skb == NULL){
-                printk(KERN_WARNING "%s: Failed to allocate receiver ring, will try again\n", sc->name);
-                sc->failed_ring = 1;
-                break;
-            }
-            else{
-                sc->lmc_rxq[i] = skb;
-            }
-        }
-        else
-        {
-            skb = sc->lmc_rxq[i];
-        }
-
-        skb->dev = sc->lmc_device;
-
-        /* owned by 21140 */
-        sc->lmc_rxring[i].status = 0x80000000;
-
-        /* used to be PKT_BUF_SZ now uses skb since we lose some to head room */
-        sc->lmc_rxring[i].length = skb_tailroom(skb);
-
-        /* use to be tail which is dumb since you're thinking why write
-         * to the end of the packj,et but since there's nothing there tail == data
-         */
-        sc->lmc_rxring[i].buffer1 = virt_to_bus (skb->data);
-
-        /* This is fair since the structure is static and we have the next address */
-        sc->lmc_rxring[i].buffer2 = virt_to_bus (&sc->lmc_rxring[i + 1]);
-
-    }
-
-    /*
-     * Sets end of ring
-     */
-    if (i != 0) {
-        sc->lmc_rxring[i - 1].length |= 0x02000000; /* Set end of buffers flag */
-        sc->lmc_rxring[i - 1].buffer2 = virt_to_bus(&sc->lmc_rxring[0]); /* Point back to the start */
-    }
-    LMC_CSR_WRITE (sc, csr_rxlist, virt_to_bus (sc->lmc_rxring)); /* write base address */
-
-    /* Initialize the transmit rings and buffers */
-    for (i = 0; i < LMC_TXDESCS; i++)
-    {
-        if (sc->lmc_txq[i] != NULL){		/* have buffer */
-            dev_kfree_skb(sc->lmc_txq[i]);	/* free it */
-	    sc->lmc_device->stats.tx_dropped++;	/* We just dropped a packet */
-        }
-        sc->lmc_txq[i] = NULL;
-        sc->lmc_txring[i].status = 0x00000000;
-        sc->lmc_txring[i].buffer2 = virt_to_bus (&sc->lmc_txring[i + 1]);
-    }
-    sc->lmc_txring[i - 1].buffer2 = virt_to_bus (&sc->lmc_txring[0]);
-    LMC_CSR_WRITE (sc, csr_txlist, virt_to_bus (sc->lmc_txring));
-
-    lmc_trace(sc->lmc_device, "lmc_softreset out");
+	int i;
+
+	lmc_trace(sc->lmc_device, "lmc_softreset in");
+
+	/* Initialize the receive rings and buffers. */
+	sc->lmc_txfull = 0;
+	sc->lmc_next_rx = 0;
+	sc->lmc_next_tx = 0;
+	sc->lmc_taint_rx = 0;
+	sc->lmc_taint_tx = 0;
+
+	/* Setup each one of the receiver buffers allocate an skbuff for
+	   each one, setup the descriptor table and point each buffer at
+	   the next one */
+
+	for (i = 0; i < LMC_RXDESCS; i++) {
+		struct sk_buff *skb;
+
+		if (sc->lmc_rxq[i] == NULL) {
+			skb = dev_alloc_skb(LMC_PKT_BUF_SZ + 2);
+			if (skb == NULL) {
+				printk(KERN_WARNING
+				       "%s: Failed to allocate receiver ring, will try again\n",
+				       sc->name);
+				sc->failed_ring = 1;
+				break;
+			} else
+				sc->lmc_rxq[i] = skb;
+		} else
+			skb = sc->lmc_rxq[i];
+
+		skb->dev = sc->lmc_device;
+
+		/* owned by 21140 */
+		sc->lmc_rxring[i].status = 0x80000000;
+
+		/* used to be PKT_BUF_SZ now uses skb since we lose some
+		   to head room */
+		sc->lmc_rxring[i].length = skb_tailroom(skb);
+
+		/* use to be tail which is dumb since you're thinking why write
+		   to the end of the packet but since there's nothing there
+		   tail == data */
+		sc->lmc_rxring[i].buffer1 = virt_to_bus(skb->data);
+
+		/* This is fair since the structure is static and we have
+		   the next address */
+		sc->lmc_rxring[i].buffer2 = virt_to_bus(&sc->lmc_rxring[i + 1]);
+	}
+
+	/* Sets end of ring */
+	if (i != 0) {
+		/* Set end of buffers flag */
+		sc->lmc_rxring[i - 1].length |= 0x02000000;
+		/* Point back to the start */
+		sc->lmc_rxring[i - 1].buffer2 = virt_to_bus(&sc->lmc_rxring[0]);
+	}
+	/* write base address */
+	LMC_CSR_WRITE(sc, csr_rxlist, virt_to_bus(sc->lmc_rxring));
+
+	/* Initialize the transmit rings and buffers */
+	for (i = 0; i < LMC_TXDESCS; i++) {
+		if (sc->lmc_txq[i] != NULL) {		/* have buffer */
+			dev_kfree_skb(sc->lmc_txq[i]);	/* free it */
+			/* We just dropped a packet */
+			sc->lmc_device->stats.tx_dropped++;
+		}
+		sc->lmc_txq[i] = NULL;
+		sc->lmc_txring[i].status = 0x00000000;
+		sc->lmc_txring[i].buffer2 = virt_to_bus(&sc->lmc_txring[i + 1]);
+	}
+	sc->lmc_txring[i - 1].buffer2 = virt_to_bus(&sc->lmc_txring[0]);
+	LMC_CSR_WRITE(sc, csr_txlist, virt_to_bus(sc->lmc_txring));
+
+	lmc_trace(sc->lmc_device, "lmc_softreset out");
 }
 
-void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits) /*fold00*/
+void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits)
 {
-    lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in");
-    sc->lmc_gpio_io &= ~bits;
-    LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
-    lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out");
+	lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in");
+	sc->lmc_gpio_io &= ~bits;
+	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
+	lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out");
 }
 
-void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits) /*fold00*/
+void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits)
 {
-    lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in");
-    sc->lmc_gpio_io |= bits;
-    LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
-    lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out");
+	lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in");
+	sc->lmc_gpio_io |= bits;
+	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
+	lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out");
 }
 
-void lmc_led_on(lmc_softc_t * const sc, u32 led) /*fold00*/
+void lmc_led_on(lmc_softc_t * const sc, u32 led)
 {
-    lmc_trace(sc->lmc_device, "lmc_led_on in");
-    if((~sc->lmc_miireg16) & led){ /* Already on! */
-        lmc_trace(sc->lmc_device, "lmc_led_on aon out");
-        return;
-    }
-    
-    sc->lmc_miireg16 &= ~led;
-    lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-    lmc_trace(sc->lmc_device, "lmc_led_on out");
+	lmc_trace(sc->lmc_device, "lmc_led_on in");
+	if ((~sc->lmc_miireg16) & led) { /* Already on! */
+		lmc_trace(sc->lmc_device, "lmc_led_on aon out");
+		return;
+	}
+
+	sc->lmc_miireg16 &= ~led;
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_trace(sc->lmc_device, "lmc_led_on out");
 }
 
-void lmc_led_off(lmc_softc_t * const sc, u32 led) /*fold00*/
+void lmc_led_off(lmc_softc_t * const sc, u32 led)
 {
-    lmc_trace(sc->lmc_device, "lmc_led_off in");
-    if(sc->lmc_miireg16 & led){ /* Already set don't do anything */
-        lmc_trace(sc->lmc_device, "lmc_led_off aoff out");
-        return;
-    }
-    
-    sc->lmc_miireg16 |= led;
-    lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-    lmc_trace(sc->lmc_device, "lmc_led_off out");
+	lmc_trace(sc->lmc_device, "lmc_led_off in");
+	if (sc->lmc_miireg16 & led) { /* Already set don't do anything */
+		lmc_trace(sc->lmc_device, "lmc_led_off aoff out");
+		return;
+	}
+
+	sc->lmc_miireg16 |= led;
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_trace(sc->lmc_device, "lmc_led_off out");
 }
 
-static void lmc_reset(lmc_softc_t * const sc) /*fold00*/
+static void lmc_reset(lmc_softc_t * const sc)
 {
-    lmc_trace(sc->lmc_device, "lmc_reset in");
-    sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
-    lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-
-    sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET;
-    lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-
-    /*
-     * make some of the GPIO pins be outputs
-     */
-    lmc_gpio_mkoutput(sc, LMC_GEP_RESET);
-
-    /*
-     * RESET low to force state reset.  This also forces
-     * the transmitter clock to be internal, but we expect to reset
-     * that later anyway.
-     */
-    sc->lmc_gpio &= ~(LMC_GEP_RESET);
-    LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-    /*
-     * hold for more than 10 microseconds
-     */
-    udelay(50);
-
-    /*
-     * stop driving Xilinx-related signals
-     */
-    lmc_gpio_mkinput(sc, LMC_GEP_RESET);
-
-    /*
-     * Call media specific init routine
-     */
-    sc->lmc_media->init(sc);
-
-    sc->extra_stats.resetCount++;
-    lmc_trace(sc->lmc_device, "lmc_reset out");
+	lmc_trace(sc->lmc_device, "lmc_reset in");
+	sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+
+	sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET;
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+
+	/* make some of the GPIO pins be outputs */
+	lmc_gpio_mkoutput(sc, LMC_GEP_RESET);
+
+	/* RESET low to force state reset.  This also forces the transmitter
+	   clock to be internal, but we expect to reset that later anyway. */
+	sc->lmc_gpio &= ~(LMC_GEP_RESET);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+	/* hold for more than 10 microseconds */
+	udelay(50);
+
+	/* stop driving Xilinx-related signals */
+	lmc_gpio_mkinput(sc, LMC_GEP_RESET);
+
+	/* Call media specific init routine */
+	sc->lmc_media->init(sc);
+
+	sc->extra_stats.resetCount++;
+	lmc_trace(sc->lmc_device, "lmc_reset out");
 }
 
-static void lmc_dec_reset(lmc_softc_t * const sc) /*fold00*/
+static void lmc_dec_reset(lmc_softc_t * const sc)
 {
-    u32 val;
-    lmc_trace(sc->lmc_device, "lmc_dec_reset in");
-
-    /*
-     * disable all interrupts
-     */
-    sc->lmc_intrmask = 0;
-    LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask);
-
-    /*
-     * Reset the chip with a software reset command.
-     * Wait 10 microseconds (actually 50 PCI cycles but at
-     * 33MHz that comes to two microseconds but wait a
-     * bit longer anyways)
-     */
-    LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET);
-    udelay(25);
+	u32 val;
+	lmc_trace(sc->lmc_device, "lmc_dec_reset in");
+
+	/* disable all interrupts */
+	sc->lmc_intrmask = 0;
+	LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask);
+
+	/* Reset the chip with a software reset command. Wait 10 microseconds
+	   (actually 50 PCI cycles but at 33MHz that comes to two microseconds
+	   but wait a bit longer anyways) */
+	LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET);
+	udelay(25);
 #ifdef __sparc__
-    sc->lmc_busmode = LMC_CSR_READ(sc, csr_busmode);
-    sc->lmc_busmode = 0x00100000;
-    sc->lmc_busmode &= ~TULIP_BUSMODE_SWRESET;
-    LMC_CSR_WRITE(sc, csr_busmode, sc->lmc_busmode);
+	sc->lmc_busmode = LMC_CSR_READ(sc, csr_busmode);
+	sc->lmc_busmode = 0x00100000;
+	sc->lmc_busmode &= ~TULIP_BUSMODE_SWRESET;
+	LMC_CSR_WRITE(sc, csr_busmode, sc->lmc_busmode);
 #endif
-    sc->lmc_cmdmode = LMC_CSR_READ(sc, csr_command);
-
-    /*
-     * We want:
-     *   no ethernet address in frames we write
-     *   disable padding (txdesc, padding disable)
-     *   ignore runt frames (rdes0 bit 15)
-     *   no receiver watchdog or transmitter jabber timer
-     *       (csr15 bit 0,14 == 1)
-     *   if using 16-bit CRC, turn off CRC (trans desc, crc disable)
-     */
-
-    sc->lmc_cmdmode |= ( TULIP_CMD_PROMISCUOUS
-                         | TULIP_CMD_FULLDUPLEX
-                         | TULIP_CMD_PASSBADPKT
-                         | TULIP_CMD_NOHEARTBEAT
-                         | TULIP_CMD_PORTSELECT
-                         | TULIP_CMD_RECEIVEALL
-                         | TULIP_CMD_MUSTBEONE
-                       );
-    sc->lmc_cmdmode &= ~( TULIP_CMD_OPERMODE
-                          | TULIP_CMD_THRESHOLDCTL
-                          | TULIP_CMD_STOREFWD
-                          | TULIP_CMD_TXTHRSHLDCTL
-                        );
-
-    LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
-
-    /*
-     * disable receiver watchdog and transmit jabber
-     */
-    val = LMC_CSR_READ(sc, csr_sia_general);
-    val |= (TULIP_WATCHDOG_TXDISABLE | TULIP_WATCHDOG_RXDISABLE);
-    LMC_CSR_WRITE(sc, csr_sia_general, val);
-
-    lmc_trace(sc->lmc_device, "lmc_dec_reset out");
+	sc->lmc_cmdmode = LMC_CSR_READ(sc, csr_command);
+
+	/*
+	 * We want:
+	 *   no ethernet address in frames we write
+	 *   disable padding (txdesc, padding disable)
+	 *   ignore runt frames (rdes0 bit 15)
+	 *   no receiver watchdog or transmitter jabber timer
+	 *       (csr15 bit 0,14 == 1)
+	 *   if using 16-bit CRC, turn off CRC (trans desc, crc disable)
+	 */
+
+	sc->lmc_cmdmode |= (TULIP_CMD_PROMISCUOUS | TULIP_CMD_FULLDUPLEX |
+			    TULIP_CMD_PASSBADPKT | TULIP_CMD_NOHEARTBEAT |
+			    TULIP_CMD_PORTSELECT | TULIP_CMD_RECEIVEALL |
+			    TULIP_CMD_MUSTBEONE);
+	sc->lmc_cmdmode &= ~(TULIP_CMD_OPERMODE | TULIP_CMD_THRESHOLDCTL |
+			     TULIP_CMD_STOREFWD | TULIP_CMD_TXTHRSHLDCTL);
+
+	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
+
+	/* disable receiver watchdog and transmit jabber */
+	val = LMC_CSR_READ(sc, csr_sia_general);
+	val |= (TULIP_WATCHDOG_TXDISABLE | TULIP_WATCHDOG_RXDISABLE);
+	LMC_CSR_WRITE(sc, csr_sia_general, val);
+
+	lmc_trace(sc->lmc_device, "lmc_dec_reset out");
 }
 
-static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base, /*fold00*/
-                         size_t csr_size)
+static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base,
+			 size_t csr_size)
 {
-    lmc_trace(sc->lmc_device, "lmc_initcsrs in");
-    sc->lmc_csrs.csr_busmode	        = csr_base +  0 * csr_size;
-    sc->lmc_csrs.csr_txpoll		= csr_base +  1 * csr_size;
-    sc->lmc_csrs.csr_rxpoll		= csr_base +  2 * csr_size;
-    sc->lmc_csrs.csr_rxlist		= csr_base +  3 * csr_size;
-    sc->lmc_csrs.csr_txlist		= csr_base +  4 * csr_size;
-    sc->lmc_csrs.csr_status		= csr_base +  5 * csr_size;
-    sc->lmc_csrs.csr_command	        = csr_base +  6 * csr_size;
-    sc->lmc_csrs.csr_intr		= csr_base +  7 * csr_size;
-    sc->lmc_csrs.csr_missed_frames	= csr_base +  8 * csr_size;
-    sc->lmc_csrs.csr_9		        = csr_base +  9 * csr_size;
-    sc->lmc_csrs.csr_10		        = csr_base + 10 * csr_size;
-    sc->lmc_csrs.csr_11		        = csr_base + 11 * csr_size;
-    sc->lmc_csrs.csr_12		        = csr_base + 12 * csr_size;
-    sc->lmc_csrs.csr_13		        = csr_base + 13 * csr_size;
-    sc->lmc_csrs.csr_14		        = csr_base + 14 * csr_size;
-    sc->lmc_csrs.csr_15		        = csr_base + 15 * csr_size;
-    lmc_trace(sc->lmc_device, "lmc_initcsrs out");
+	lmc_trace(sc->lmc_device, "lmc_initcsrs in");
+	sc->lmc_csrs.csr_busmode	= csr_base +  0 * csr_size;
+	sc->lmc_csrs.csr_txpoll		= csr_base +  1 * csr_size;
+	sc->lmc_csrs.csr_rxpoll		= csr_base +  2 * csr_size;
+	sc->lmc_csrs.csr_rxlist		= csr_base +  3 * csr_size;
+	sc->lmc_csrs.csr_txlist		= csr_base +  4 * csr_size;
+	sc->lmc_csrs.csr_status		= csr_base +  5 * csr_size;
+	sc->lmc_csrs.csr_command	= csr_base +  6 * csr_size;
+	sc->lmc_csrs.csr_intr		= csr_base +  7 * csr_size;
+	sc->lmc_csrs.csr_missed_frames	= csr_base +  8 * csr_size;
+	sc->lmc_csrs.csr_9		= csr_base +  9 * csr_size;
+	sc->lmc_csrs.csr_10		= csr_base + 10 * csr_size;
+	sc->lmc_csrs.csr_11		= csr_base + 11 * csr_size;
+	sc->lmc_csrs.csr_12		= csr_base + 12 * csr_size;
+	sc->lmc_csrs.csr_13		= csr_base + 13 * csr_size;
+	sc->lmc_csrs.csr_14		= csr_base + 14 * csr_size;
+	sc->lmc_csrs.csr_15		= csr_base + 15 * csr_size;
+	lmc_trace(sc->lmc_device, "lmc_initcsrs out");
 }
 
 static void lmc_driver_timeout(struct net_device *dev)
 {
-    lmc_softc_t *sc = dev_to_sc(dev);
-    u32 csr6;
-    unsigned long flags;
-
-    lmc_trace(dev, "lmc_driver_timeout in");
+	lmc_softc_t *sc = dev_to_sc(dev);
+	u32 csr6;
+	unsigned long flags;
 
-    spin_lock_irqsave(&sc->lmc_lock, flags);
+	lmc_trace(dev, "lmc_driver_timeout in");
 
-    printk("%s: Xmitter busy|\n", dev->name);
+	spin_lock_irqsave(&sc->lmc_lock, flags);
 
-    sc->extra_stats.tx_tbusy_calls++;
-    if (jiffies - dev_trans_start(dev) < TX_TIMEOUT)
-	    goto bug_out;
+	printk(KERN_DEBUG "%s: Xmitter busy|\n", dev->name);
 
-    /*
-     * Chip seems to have locked up
-     * Reset it
-     * This whips out all our decriptor
-     * table and starts from scartch
-     */
+	sc->extra_stats.tx_tbusy_calls++;
+	if (jiffies - dev_trans_start(dev) < TX_TIMEOUT)
+		goto bug_out;
 
-    LMC_EVENT_LOG(LMC_EVENT_XMTPRCTMO,
-                  LMC_CSR_READ (sc, csr_status),
-		  sc->extra_stats.tx_ProcTimeout);
+	/* Chip seems to have locked up. Reset it. This whips out all our
+	   decriptor table and starts from scartch. */
 
-    lmc_running_reset (dev);
+	LMC_EVENT_LOG(LMC_EVENT_XMTPRCTMO, LMC_CSR_READ(sc, csr_status),
+		      sc->extra_stats.tx_ProcTimeout);
 
-    LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ (sc, csr_status), 0);
-    LMC_EVENT_LOG(LMC_EVENT_RESET2,
-                  lmc_mii_readreg (sc, 0, 16),
-                  lmc_mii_readreg (sc, 0, 17));
+	lmc_running_reset(dev);
 
-    /* restart the tx processes */
-    csr6 = LMC_CSR_READ (sc, csr_command);
-    LMC_CSR_WRITE (sc, csr_command, csr6 | 0x0002);
-    LMC_CSR_WRITE (sc, csr_command, csr6 | 0x2002);
+	LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0);
+	LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
+		      lmc_mii_readreg(sc, 0, 17));
 
-    /* immediate transmit */
-    LMC_CSR_WRITE (sc, csr_txpoll, 0);
+	/* restart the tx processes */
+	csr6 = LMC_CSR_READ(sc, csr_command);
+	LMC_CSR_WRITE(sc, csr_command, csr6 | 0x0002);
+	LMC_CSR_WRITE(sc, csr_command, csr6 | 0x2002);
 
-    sc->lmc_device->stats.tx_errors++;
-    sc->extra_stats.tx_ProcTimeout++; /* -baz */
+	/* immediate transmit */
+	LMC_CSR_WRITE(sc, csr_txpoll, 0);
 
-    dev->trans_start = jiffies; /* prevent tx timeout */
+	sc->lmc_device->stats.tx_errors++;
+	sc->extra_stats.tx_ProcTimeout++;
+	dev->trans_start = jiffies; /* prevent tx timeout */
 
 bug_out:
-
-    spin_unlock_irqrestore(&sc->lmc_lock, flags);
-
-    lmc_trace(dev, "lmc_driver_timout out");
-
-
+	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	lmc_trace(dev, "lmc_driver_timout out");
 }
diff --git a/drivers/net/wan/lmc/lmc_media.c b/drivers/net/wan/lmc/lmc_media.c
index 5920c99..a3aa2a0 100644
--- a/drivers/net/wan/lmc/lmc_media.c
+++ b/drivers/net/wan/lmc/lmc_media.c
@@ -1,5 +1,3 @@
-/* $Id: lmc_media.c,v 1.13 2000/04/11 05:25:26 asj Exp $ */
-
 #include <linux/kernel.h>
 #include <linux/string.h>
 #include <linux/timer.h>
@@ -8,19 +6,16 @@
 #include <linux/ioport.h>
 #include <linux/interrupt.h>
 #include <linux/in.h>
+#include <linux/io.h>
 #include <linux/if_arp.h>
 #include <linux/netdevice.h>
 #include <linux/etherdevice.h>
 #include <linux/skbuff.h>
 #include <linux/inet.h>
 #include <linux/bitops.h>
-
-#include <asm/processor.h>             /* Processor type for cache alignment. */
-#include <asm/io.h>
+#include <linux/uaccess.h>
+#include <asm/processor.h>   /* Processor type for cache alignment. */
 #include <asm/dma.h>
-
-#include <asm/uaccess.h>
-
 #include "lmc.h"
 #include "lmc_var.h"
 #include "lmc_ioctl.h"
@@ -28,513 +23,440 @@
 
 #define CONFIG_LMC_IGNORE_HARDWARE_HANDSHAKE 1
 
- /*
-  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
-  * All rights reserved.  www.lanmedia.com
-  *
-  * This code is written by:
-  * Andrew Stanley-Jones (asj@cban.com)
-  * Rob Braun (bbraun@vix.com),
-  * Michael Graff (explorer@vix.com) and
-  * Matt Thomas (matt@3am-software.com).
-  *
-  * This software may be used and distributed according to the terms
-  * of the GNU General Public License version 2, incorporated herein by reference.
-  */
-
 /*
- * protocol independent method.
+ * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
+ * All rights reserved.  www.lanmedia.com
+ *
+ * This code is written by:
+ * Andrew Stanley-Jones (asj@cban.com)
+ * Rob Braun (bbraun@vix.com),
+ * Michael Graff (explorer@vix.com) and
+ * Matt Thomas (matt@3am-software.com).
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License version 2, incorporated herein by reference.
  */
-static void lmc_set_protocol (lmc_softc_t * const, lmc_ctl_t *);
 
-/*
- * media independent methods to check on media status, link, light LEDs,
- * etc.
- */
-static void lmc_ds3_init (lmc_softc_t * const);
-static void lmc_ds3_default (lmc_softc_t * const);
-static void lmc_ds3_set_status (lmc_softc_t * const, lmc_ctl_t *);
-static void lmc_ds3_set_100ft (lmc_softc_t * const, int);
-static int lmc_ds3_get_link_status (lmc_softc_t * const);
-static void lmc_ds3_set_crc_length (lmc_softc_t * const, int);
-static void lmc_ds3_set_scram (lmc_softc_t * const, int);
-static void lmc_ds3_watchdog (lmc_softc_t * const);
-
-static void lmc_hssi_init (lmc_softc_t * const);
-static void lmc_hssi_default (lmc_softc_t * const);
-static void lmc_hssi_set_status (lmc_softc_t * const, lmc_ctl_t *);
-static void lmc_hssi_set_clock (lmc_softc_t * const, int);
-static int lmc_hssi_get_link_status (lmc_softc_t * const);
-static void lmc_hssi_set_link_status (lmc_softc_t * const, int);
-static void lmc_hssi_set_crc_length (lmc_softc_t * const, int);
-static void lmc_hssi_watchdog (lmc_softc_t * const);
-
-static void lmc_ssi_init (lmc_softc_t * const);
-static void lmc_ssi_default (lmc_softc_t * const);
-static void lmc_ssi_set_status (lmc_softc_t * const, lmc_ctl_t *);
-static void lmc_ssi_set_clock (lmc_softc_t * const, int);
-static void lmc_ssi_set_speed (lmc_softc_t * const, lmc_ctl_t *);
-static int lmc_ssi_get_link_status (lmc_softc_t * const);
-static void lmc_ssi_set_link_status (lmc_softc_t * const, int);
-static void lmc_ssi_set_crc_length (lmc_softc_t * const, int);
-static void lmc_ssi_watchdog (lmc_softc_t * const);
-
-static void lmc_t1_init (lmc_softc_t * const);
-static void lmc_t1_default (lmc_softc_t * const);
-static void lmc_t1_set_status (lmc_softc_t * const, lmc_ctl_t *);
-static int lmc_t1_get_link_status (lmc_softc_t * const);
-static void lmc_t1_set_circuit_type (lmc_softc_t * const, int);
-static void lmc_t1_set_crc_length (lmc_softc_t * const, int);
-static void lmc_t1_set_clock (lmc_softc_t * const, int);
-static void lmc_t1_watchdog (lmc_softc_t * const);
-
-static void lmc_dummy_set_1 (lmc_softc_t * const, int);
-static void lmc_dummy_set2_1 (lmc_softc_t * const, lmc_ctl_t *);
-
-static inline void write_av9110_bit (lmc_softc_t *, int);
+/* protocol independent method. */
+static void lmc_set_protocol(lmc_softc_t * const, lmc_ctl_t *);
+
+/* media independent methods to check on media status, link, light LEDs, etc. */
+static void lmc_ds3_init(lmc_softc_t * const);
+static void lmc_ds3_default(lmc_softc_t * const);
+static void lmc_ds3_set_status(lmc_softc_t * const, lmc_ctl_t *);
+static void lmc_ds3_set_100ft(lmc_softc_t * const, int);
+static int lmc_ds3_get_link_status(lmc_softc_t * const);
+static void lmc_ds3_set_crc_length(lmc_softc_t * const, int);
+static void lmc_ds3_set_scram(lmc_softc_t * const, int);
+static void lmc_ds3_watchdog(lmc_softc_t * const);
+
+static void lmc_hssi_init(lmc_softc_t * const);
+static void lmc_hssi_default(lmc_softc_t * const);
+static void lmc_hssi_set_status(lmc_softc_t * const, lmc_ctl_t *);
+static void lmc_hssi_set_clock(lmc_softc_t * const, int);
+static int lmc_hssi_get_link_status(lmc_softc_t * const);
+static void lmc_hssi_set_link_status(lmc_softc_t * const, int);
+static void lmc_hssi_set_crc_length(lmc_softc_t * const, int);
+static void lmc_hssi_watchdog(lmc_softc_t * const);
+
+static void lmc_ssi_init(lmc_softc_t * const);
+static void lmc_ssi_default(lmc_softc_t * const);
+static void lmc_ssi_set_status(lmc_softc_t * const, lmc_ctl_t *);
+static void lmc_ssi_set_clock(lmc_softc_t * const, int);
+static void lmc_ssi_set_speed(lmc_softc_t * const, lmc_ctl_t *);
+static int lmc_ssi_get_link_status(lmc_softc_t * const);
+static void lmc_ssi_set_link_status(lmc_softc_t * const, int);
+static void lmc_ssi_set_crc_length(lmc_softc_t * const, int);
+static void lmc_ssi_watchdog(lmc_softc_t * const);
+
+static void lmc_t1_init(lmc_softc_t * const);
+static void lmc_t1_default(lmc_softc_t * const);
+static void lmc_t1_set_status(lmc_softc_t * const, lmc_ctl_t *);
+static int lmc_t1_get_link_status(lmc_softc_t * const);
+static void lmc_t1_set_circuit_type(lmc_softc_t * const, int);
+static void lmc_t1_set_crc_length(lmc_softc_t * const, int);
+static void lmc_t1_set_clock(lmc_softc_t * const, int);
+static void lmc_t1_watchdog(lmc_softc_t * const);
+
+static void lmc_dummy_set_1(lmc_softc_t * const, int);
+static void lmc_dummy_set2_1(lmc_softc_t * const, lmc_ctl_t *);
+
+static inline void write_av9110_bit(lmc_softc_t *, int);
 static void write_av9110(lmc_softc_t *, u32, u32, u32, u32, u32);
 
 lmc_media_t lmc_ds3_media = {
-  lmc_ds3_init,			/* special media init stuff */
-  lmc_ds3_default,		/* reset to default state */
-  lmc_ds3_set_status,		/* reset status to state provided */
-  lmc_dummy_set_1,		/* set clock source */
-  lmc_dummy_set2_1,		/* set line speed */
-  lmc_ds3_set_100ft,		/* set cable length */
-  lmc_ds3_set_scram,		/* set scrambler */
-  lmc_ds3_get_link_status,	/* get link status */
-  lmc_dummy_set_1,		/* set link status */
-  lmc_ds3_set_crc_length,	/* set CRC length */
-  lmc_dummy_set_1,		/* set T1 or E1 circuit type */
-  lmc_ds3_watchdog
+	lmc_ds3_init,		/* special media init stuff */
+	lmc_ds3_default,	/* reset to default state */
+	lmc_ds3_set_status,	/* reset status to state provided */
+	lmc_dummy_set_1,	/* set clock source */
+	lmc_dummy_set2_1,	/* set line speed */
+	lmc_ds3_set_100ft,	/* set cable length */
+	lmc_ds3_set_scram,	/* set scrambler */
+	lmc_ds3_get_link_status, /* get link status */
+	lmc_dummy_set_1,	/* set link status */
+	lmc_ds3_set_crc_length,	/* set CRC length */
+	lmc_dummy_set_1,	/* set T1 or E1 circuit type */
+	lmc_ds3_watchdog
 };
 
 lmc_media_t lmc_hssi_media = {
-  lmc_hssi_init,		/* special media init stuff */
-  lmc_hssi_default,		/* reset to default state */
-  lmc_hssi_set_status,		/* reset status to state provided */
-  lmc_hssi_set_clock,		/* set clock source */
-  lmc_dummy_set2_1,		/* set line speed */
-  lmc_dummy_set_1,		/* set cable length */
-  lmc_dummy_set_1,		/* set scrambler */
-  lmc_hssi_get_link_status,	/* get link status */
-  lmc_hssi_set_link_status,	/* set link status */
-  lmc_hssi_set_crc_length,	/* set CRC length */
-  lmc_dummy_set_1,		/* set T1 or E1 circuit type */
-  lmc_hssi_watchdog
+	lmc_hssi_init,		/* special media init stuff */
+	lmc_hssi_default,	/* reset to default state */
+	lmc_hssi_set_status,	/* reset status to state provided */
+	lmc_hssi_set_clock,	/* set clock source */
+	lmc_dummy_set2_1,	/* set line speed */
+	lmc_dummy_set_1,	/* set cable length */
+	lmc_dummy_set_1,	/* set scrambler */
+	lmc_hssi_get_link_status, /* get link status */
+	lmc_hssi_set_link_status, /* set link status */
+	lmc_hssi_set_crc_length, /* set CRC length */
+	lmc_dummy_set_1,	/* set T1 or E1 circuit type */
+	lmc_hssi_watchdog
 };
 
-lmc_media_t lmc_ssi_media = { lmc_ssi_init,	/* special media init stuff */
-  lmc_ssi_default,		/* reset to default state */
-  lmc_ssi_set_status,		/* reset status to state provided */
-  lmc_ssi_set_clock,		/* set clock source */
-  lmc_ssi_set_speed,		/* set line speed */
-  lmc_dummy_set_1,		/* set cable length */
-  lmc_dummy_set_1,		/* set scrambler */
-  lmc_ssi_get_link_status,	/* get link status */
-  lmc_ssi_set_link_status,	/* set link status */
-  lmc_ssi_set_crc_length,	/* set CRC length */
-  lmc_dummy_set_1,		/* set T1 or E1 circuit type */
-  lmc_ssi_watchdog
+lmc_media_t lmc_ssi_media = {
+	lmc_ssi_init,		/* special media init stuff */
+	lmc_ssi_default,	/* reset to default state */
+	lmc_ssi_set_status,	/* reset status to state provided */
+	lmc_ssi_set_clock,	/* set clock source */
+	lmc_ssi_set_speed,	/* set line speed */
+	lmc_dummy_set_1,	/* set cable length */
+	lmc_dummy_set_1,	/* set scrambler */
+	lmc_ssi_get_link_status, /* get link status */
+	lmc_ssi_set_link_status, /* set link status */
+	lmc_ssi_set_crc_length,	/* set CRC length */
+	lmc_dummy_set_1,	/* set T1 or E1 circuit type */
+	lmc_ssi_watchdog
 };
 
 lmc_media_t lmc_t1_media = {
-  lmc_t1_init,			/* special media init stuff */
-  lmc_t1_default,		/* reset to default state */
-  lmc_t1_set_status,		/* reset status to state provided */
-  lmc_t1_set_clock,		/* set clock source */
-  lmc_dummy_set2_1,		/* set line speed */
-  lmc_dummy_set_1,		/* set cable length */
-  lmc_dummy_set_1,		/* set scrambler */
-  lmc_t1_get_link_status,	/* get link status */
-  lmc_dummy_set_1,		/* set link status */
-  lmc_t1_set_crc_length,	/* set CRC length */
-  lmc_t1_set_circuit_type,	/* set T1 or E1 circuit type */
-  lmc_t1_watchdog
+	lmc_t1_init,		/* special media init stuff */
+	lmc_t1_default,		/* reset to default state */
+	lmc_t1_set_status,	/* reset status to state provided */
+	lmc_t1_set_clock,	/* set clock source */
+	lmc_dummy_set2_1,	/* set line speed */
+	lmc_dummy_set_1,	/* set cable length */
+	lmc_dummy_set_1,	/* set scrambler */
+	lmc_t1_get_link_status,	/* get link status */
+	lmc_dummy_set_1,	/* set link status */
+	lmc_t1_set_crc_length,	/* set CRC length */
+	lmc_t1_set_circuit_type, /* set T1 or E1 circuit type */
+	lmc_t1_watchdog
 };
 
-static void
-lmc_dummy_set_1 (lmc_softc_t * const sc, int a)
+static void lmc_dummy_set_1(lmc_softc_t * const sc, int a)
 {
 }
 
-static void
-lmc_dummy_set2_1 (lmc_softc_t * const sc, lmc_ctl_t * a)
+static void lmc_dummy_set2_1(lmc_softc_t * const sc, lmc_ctl_t * a)
 {
 }
 
-/*
- *  HSSI methods
- */
+/* HSSI methods */
 
-static void
-lmc_hssi_init (lmc_softc_t * const sc)
+static void lmc_hssi_init(lmc_softc_t * const sc)
 {
-  sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200;
-
-  lmc_gpio_mkoutput (sc, LMC_GEP_HSSI_CLOCK);
+	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200;
+	lmc_gpio_mkoutput(sc, LMC_GEP_HSSI_CLOCK);
 }
 
-static void
-lmc_hssi_default (lmc_softc_t * const sc)
+static void lmc_hssi_default(lmc_softc_t * const sc)
 {
-  sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
-  sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN);
-  sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT);
-  sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16);
+	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
+	sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 }
 
-/*
- * Given a user provided state, set ourselves up to match it.  This will
- * always reset the card if needed.
- */
-static void
-lmc_hssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl)
+/* Given a user provided state, set ourselves up to match it.
+   This will always reset the card if needed. */
+static void lmc_hssi_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 {
-  if (ctl == NULL)
-    {
-      sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source);
-      lmc_set_protocol (sc, NULL);
-
-      return;
-    }
-
-  /*
-   * check for change in clock source
-   */
-  if (ctl->clock_source && !sc->ictl.clock_source)
-    {
-      sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT);
-      sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
-    }
-  else if (!ctl->clock_source && sc->ictl.clock_source)
-    {
-      sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
-      sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT);
-    }
-
-  lmc_set_protocol (sc, ctl);
+	if (ctl == NULL) {
+		sc->lmc_media->set_clock_source(sc, sc->ictl.clock_source);
+		lmc_set_protocol(sc, NULL);
+
+		return;
+	}
+
+	/* check for change in clock source */
+	if (ctl->clock_source && !sc->ictl.clock_source) {
+		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_INT);
+		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
+	} else if (!ctl->clock_source && sc->ictl.clock_source) {
+		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
+		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	}
+
+	lmc_set_protocol(sc, ctl);
 }
 
-/*
- * 1 == internal, 0 == external
- */
-static void
-lmc_hssi_set_clock (lmc_softc_t * const sc, int ie)
+/* 1 == internal, 0 == external */
+static void lmc_hssi_set_clock(lmc_softc_t * const sc, int ie)
 {
-  int old;
-  old = sc->ictl.clock_source;
-  if (ie == LMC_CTL_CLOCK_SOURCE_EXT)
-    {
-      sc->lmc_gpio |= LMC_GEP_HSSI_CLOCK;
-      LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-      sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
-      if(old != ie)
-        printk (LMC_PRINTF_FMT ": clock external\n", LMC_PRINTF_ARGS);
-    }
-  else
-    {
-      sc->lmc_gpio &= ~(LMC_GEP_HSSI_CLOCK);
-      LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-      sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
-      if(old != ie)
-        printk (LMC_PRINTF_FMT ": clock internal\n", LMC_PRINTF_ARGS);
-    }
+	int old;
+	old = sc->ictl.clock_source;
+	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
+		sc->lmc_gpio |= LMC_GEP_HSSI_CLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
+		if (old != ie)
+			printk(LMC_PRINTF_FMT ": clock external\n",
+			       LMC_PRINTF_ARGS);
+	} else {
+		sc->lmc_gpio &= ~(LMC_GEP_HSSI_CLOCK);
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
+		if (old != ie)
+			printk(LMC_PRINTF_FMT ": clock internal\n",
+			       LMC_PRINTF_ARGS);
+	}
 }
 
-/*
- * return hardware link status.
- * 0 == link is down, 1 == link is up.
- */
-static int
-lmc_hssi_get_link_status (lmc_softc_t * const sc)
+/* Return hardware link status. 0 == link is down, 1 == link is up. */
+static int lmc_hssi_get_link_status(lmc_softc_t * const sc)
 {
-    /*
-     * We're using the same code as SSI since
-     * they're practically the same
-     */
-    return lmc_ssi_get_link_status(sc);
+	/* We're using the same code as SSI since they're practically
+	   the same */
+	return lmc_ssi_get_link_status(sc);
 }
 
-static void
-lmc_hssi_set_link_status (lmc_softc_t * const sc, int state)
+static void lmc_hssi_set_link_status(lmc_softc_t * const sc, int state)
 {
-  if (state == LMC_LINK_UP)
-    sc->lmc_miireg16 |= LMC_MII16_HSSI_TA;
-  else
-    sc->lmc_miireg16 &= ~LMC_MII16_HSSI_TA;
+	if (state == LMC_LINK_UP)
+		sc->lmc_miireg16 |= LMC_MII16_HSSI_TA;
+	else
+		sc->lmc_miireg16 &= ~LMC_MII16_HSSI_TA;
 
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-/*
- * 0 == 16bit, 1 == 32bit
- */
-static void
-lmc_hssi_set_crc_length (lmc_softc_t * const sc, int state)
+/* 0 == 16bit, 1 == 32bit */
+static void lmc_hssi_set_crc_length(lmc_softc_t * const sc, int state)
 {
-  if (state == LMC_CTL_CRC_LENGTH_32)
-    {
-      /* 32 bit */
-      sc->lmc_miireg16 |= LMC_MII16_HSSI_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-    }
-  else
-    {
-      /* 16 bit */
-      sc->lmc_miireg16 &= ~LMC_MII16_HSSI_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-    }
-
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	if (state == LMC_CTL_CRC_LENGTH_32) {
+		/* 32 bit */
+		sc->lmc_miireg16 |= LMC_MII16_HSSI_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
+	} else {
+		/* 16 bit */
+		sc->lmc_miireg16 &= ~LMC_MII16_HSSI_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void
-lmc_hssi_watchdog (lmc_softc_t * const sc)
+static void lmc_hssi_watchdog(lmc_softc_t * const sc)
 {
-  /* HSSI is blank */
+	/* HSSI is blank */
 }
 
-/*
- *  DS3 methods
- */
+/* DS3 methods */
 
-/*
- * Set cable length
- */
-static void
-lmc_ds3_set_100ft (lmc_softc_t * const sc, int ie)
+/* Set cable length */
+static void lmc_ds3_set_100ft(lmc_softc_t * const sc, int ie)
 {
-  if (ie == LMC_CTL_CABLE_LENGTH_GT_100FT)
-    {
-      sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO;
-      sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT;
-    }
-  else if (ie == LMC_CTL_CABLE_LENGTH_LT_100FT)
-    {
-      sc->lmc_miireg16 |= LMC_MII16_DS3_ZERO;
-      sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT;
-    }
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	if (ie == LMC_CTL_CABLE_LENGTH_GT_100FT) {
+		sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO;
+		sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT;
+	} else if (ie == LMC_CTL_CABLE_LENGTH_LT_100FT) {
+		sc->lmc_miireg16 |= LMC_MII16_DS3_ZERO;
+		sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT;
+	}
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void
-lmc_ds3_default (lmc_softc_t * const sc)
+static void lmc_ds3_default(lmc_softc_t * const sc)
 {
-  sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
-  sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN);
-  sc->lmc_media->set_cable_length (sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
-  sc->lmc_media->set_scrambler (sc, LMC_CTL_OFF);
-  sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16);
+	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
+	sc->lmc_media->set_cable_length(sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
+	sc->lmc_media->set_scrambler(sc, LMC_CTL_OFF);
+	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 }
 
-/*
- * Given a user provided state, set ourselves up to match it.  This will
- * always reset the card if needed.
- */
-static void
-lmc_ds3_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl)
+/* Given a user provided state, set ourselves up to match it.
+   This will always reset the card if needed. */
+static void lmc_ds3_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 {
-  if (ctl == NULL)
-    {
-      sc->lmc_media->set_cable_length (sc, sc->ictl.cable_length);
-      sc->lmc_media->set_scrambler (sc, sc->ictl.scrambler_onoff);
-      lmc_set_protocol (sc, NULL);
-
-      return;
-    }
-
-  /*
-   * check for change in cable length setting
-   */
-  if (ctl->cable_length && !sc->ictl.cable_length)
-    lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_GT_100FT);
-  else if (!ctl->cable_length && sc->ictl.cable_length)
-    lmc_ds3_set_100ft (sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
-
-  /*
-   * Check for change in scrambler setting (requires reset)
-   */
-  if (ctl->scrambler_onoff && !sc->ictl.scrambler_onoff)
-    lmc_ds3_set_scram (sc, LMC_CTL_ON);
-  else if (!ctl->scrambler_onoff && sc->ictl.scrambler_onoff)
-    lmc_ds3_set_scram (sc, LMC_CTL_OFF);
-
-  lmc_set_protocol (sc, ctl);
+	if (ctl == NULL) {
+		sc->lmc_media->set_cable_length(sc, sc->ictl.cable_length);
+		sc->lmc_media->set_scrambler(sc, sc->ictl.scrambler_onoff);
+		lmc_set_protocol(sc, NULL);
+		return;
+	}
+
+	/* check for change in cable length setting */
+	if (ctl->cable_length && !sc->ictl.cable_length)
+		lmc_ds3_set_100ft(sc, LMC_CTL_CABLE_LENGTH_GT_100FT);
+	else if (!ctl->cable_length && sc->ictl.cable_length)
+		lmc_ds3_set_100ft(sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
+
+	/* Check for change in scrambler setting (requires reset) */
+	if (ctl->scrambler_onoff && !sc->ictl.scrambler_onoff)
+		lmc_ds3_set_scram(sc, LMC_CTL_ON);
+	else if (!ctl->scrambler_onoff && sc->ictl.scrambler_onoff)
+		lmc_ds3_set_scram(sc, LMC_CTL_OFF);
+
+	lmc_set_protocol(sc, ctl);
 }
 
-static void
-lmc_ds3_init (lmc_softc_t * const sc)
+static void lmc_ds3_init(lmc_softc_t * const sc)
 {
-  int i;
+	int i;
 
-  sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5245;
+	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5245;
 
-  /* writes zeros everywhere */
-  for (i = 0; i < 21; i++)
-    {
-      lmc_mii_writereg (sc, 0, 17, i);
-      lmc_mii_writereg (sc, 0, 18, 0);
-    }
+	/* writes zeros everywhere */
+	for (i = 0; i < 21; i++) {
+		lmc_mii_writereg(sc, 0, 17, i);
+		lmc_mii_writereg(sc, 0, 18, 0);
+	}
 
-  /* set some essential bits */
-  lmc_mii_writereg (sc, 0, 17, 1);
-  lmc_mii_writereg (sc, 0, 18, 0x25);	/* ser, xtx */
+	/* set some essential bits */
+	lmc_mii_writereg(sc, 0, 17, 1);
+	lmc_mii_writereg(sc, 0, 18, 0x25);	/* ser, xtx */
 
-  lmc_mii_writereg (sc, 0, 17, 5);
-  lmc_mii_writereg (sc, 0, 18, 0x80);	/* emode */
+	lmc_mii_writereg(sc, 0, 17, 5);
+	lmc_mii_writereg(sc, 0, 18, 0x80);	/* emode */
 
-  lmc_mii_writereg (sc, 0, 17, 14);
-  lmc_mii_writereg (sc, 0, 18, 0x30);	/* rcgen, tcgen */
+	lmc_mii_writereg(sc, 0, 17, 14);
+	lmc_mii_writereg(sc, 0, 18, 0x30);	/* rcgen, tcgen */
 
-  /* clear counters and latched bits */
-  for (i = 0; i < 21; i++)
-    {
-      lmc_mii_writereg (sc, 0, 17, i);
-      lmc_mii_readreg (sc, 0, 18);
-    }
+	/* clear counters and latched bits */
+	for (i = 0; i < 21; i++) {
+		lmc_mii_writereg(sc, 0, 17, i);
+		lmc_mii_readreg(sc, 0, 18);
+	}
 }
 
-/*
- * 1 == DS3 payload scrambled, 0 == not scrambled
- */
-static void
-lmc_ds3_set_scram (lmc_softc_t * const sc, int ie)
+/* 1 == DS3 payload scrambled, 0 == not scrambled */
+static void lmc_ds3_set_scram(lmc_softc_t * const sc, int ie)
 {
-  if (ie == LMC_CTL_ON)
-    {
-      sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM;
-      sc->ictl.scrambler_onoff = LMC_CTL_ON;
-    }
-  else
-    {
-      sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM;
-      sc->ictl.scrambler_onoff = LMC_CTL_OFF;
-    }
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	if (ie == LMC_CTL_ON) {
+		sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM;
+		sc->ictl.scrambler_onoff = LMC_CTL_ON;
+	} else {
+		sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM;
+		sc->ictl.scrambler_onoff = LMC_CTL_OFF;
+	}
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-/*
- * return hardware link status.
- * 0 == link is down, 1 == link is up.
- */
-static int
-lmc_ds3_get_link_status (lmc_softc_t * const sc)
+/* Return hardware link status. 0 == link is down, 1 == link is up. */
+static int lmc_ds3_get_link_status(lmc_softc_t * const sc)
 {
-    u16 link_status, link_status_11;
-    int ret = 1;
-
-    lmc_mii_writereg (sc, 0, 17, 7);
-    link_status = lmc_mii_readreg (sc, 0, 18);
-
-    /* LMC5245 (DS3) & LMC1200 (DS1) LED definitions
-     * led0 yellow = far-end adapter is in Red alarm condition
-     * led1 blue   = received an Alarm Indication signal
-     *               (upstream failure)
-     * led2 Green  = power to adapter, Gate Array loaded & driver
-     *               attached
-     * led3 red    = Loss of Signal (LOS) or out of frame (OOF)
-     *               conditions detected on T3 receive signal
-     */
-
-    lmc_led_on(sc, LMC_DS3_LED2);
-
-    if ((link_status & LMC_FRAMER_REG0_DLOS) ||
-        (link_status & LMC_FRAMER_REG0_OOFS)){
-        ret = 0;
-        if(sc->last_led_err[3] != 1){
-	    u16 r1;
-            lmc_mii_writereg (sc, 0, 17, 01); /* Turn on Xbit error as our cisco does */
-            r1 = lmc_mii_readreg (sc, 0, 18);
-            r1 &= 0xfe;
-            lmc_mii_writereg(sc, 0, 18, r1);
-            printk(KERN_WARNING "%s: Red Alarm - Loss of Signal or Loss of Framing\n", sc->name);
-        }
-        lmc_led_on(sc, LMC_DS3_LED3);	/* turn on red LED */
-        sc->last_led_err[3] = 1;
-    }
-    else {
-        lmc_led_off(sc, LMC_DS3_LED3);	/* turn on red LED */
-        if(sc->last_led_err[3] == 1){
-	    u16 r1;
-            lmc_mii_writereg (sc, 0, 17, 01); /* Turn off Xbit error */
-            r1 = lmc_mii_readreg (sc, 0, 18);
-            r1 |= 0x01;
-            lmc_mii_writereg(sc, 0, 18, r1);
-        }
-        sc->last_led_err[3] = 0;
-    }
-
-    lmc_mii_writereg(sc, 0, 17, 0x10);
-    link_status_11 = lmc_mii_readreg(sc, 0, 18);
-    if((link_status & LMC_FRAMER_REG0_AIS) ||
-       (link_status_11 & LMC_FRAMER_REG10_XBIT)) {
-        ret = 0;
-        if(sc->last_led_err[0] != 1){
-            printk(KERN_WARNING "%s: AIS Alarm or XBit Error\n", sc->name);
-            printk(KERN_WARNING "%s: Remote end has loss of signal or framing\n", sc->name);
-        }
-        lmc_led_on(sc, LMC_DS3_LED0);
-        sc->last_led_err[0] = 1;
-    }
-    else {
-        lmc_led_off(sc, LMC_DS3_LED0);
-        sc->last_led_err[0] = 0;
-    }
-
-    lmc_mii_writereg (sc, 0, 17, 9);
-    link_status = lmc_mii_readreg (sc, 0, 18);
-    
-    if(link_status & LMC_FRAMER_REG9_RBLUE){
-        ret = 0;
-        if(sc->last_led_err[1] != 1){
-            printk(KERN_WARNING "%s: Blue Alarm - Receiving all 1's\n", sc->name);
-        }
-        lmc_led_on(sc, LMC_DS3_LED1);
-        sc->last_led_err[1] = 1;
-    }
-    else {
-        lmc_led_off(sc, LMC_DS3_LED1);
-        sc->last_led_err[1] = 0;
-    }
-
-    return ret;
+	u16 link_status, link_status_11;
+	int ret = 1;
+
+	lmc_mii_writereg(sc, 0, 17, 7);
+	link_status = lmc_mii_readreg(sc, 0, 18);
+
+	/* LMC5245 (DS3) & LMC1200 (DS1) LED definitions
+	 * led0 yellow = far-end adapter is in Red alarm condition
+	 * led1 blue   = received an Alarm Indication signal
+	 *               (upstream failure)
+	 * led2 Green  = power to adapter, Gate Array loaded & driver
+	 *               attached
+	 * led3 red    = Loss of Signal (LOS) or out of frame (OOF)
+	 *               conditions detected on T3 receive signal */
+
+	lmc_led_on(sc, LMC_DS3_LED2);
+
+	if ((link_status & LMC_FRAMER_REG0_DLOS) ||
+	    (link_status & LMC_FRAMER_REG0_OOFS)) {
+		ret = 0;
+		if (sc->last_led_err[3] != 1) {
+			u16 r1;
+
+			 /* Turn on Xbit error as our cisco does */
+			lmc_mii_writereg(sc, 0, 17, 01);
+			r1 = lmc_mii_readreg(sc, 0, 18);
+			r1 &= 0xfe;
+			lmc_mii_writereg(sc, 0, 18, r1);
+			printk(KERN_WARNING
+			       "%s: Red Alarm - Loss of Signal or Loss of Framing\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED3);	/* turn on red LED */
+		sc->last_led_err[3] = 1;
+	} else {
+		lmc_led_off(sc, LMC_DS3_LED3);	/* turn on red LED */
+		if (sc->last_led_err[3] == 1) {
+			u16 r1;
+			/* Turn off Xbit error */
+			lmc_mii_writereg(sc, 0, 17, 01);
+			r1 = lmc_mii_readreg(sc, 0, 18);
+			r1 |= 0x01;
+			lmc_mii_writereg(sc, 0, 18, r1);
+		}
+		sc->last_led_err[3] = 0;
+	}
+
+	lmc_mii_writereg(sc, 0, 17, 0x10);
+	link_status_11 = lmc_mii_readreg(sc, 0, 18);
+	if ((link_status & LMC_FRAMER_REG0_AIS) ||
+	   (link_status_11 & LMC_FRAMER_REG10_XBIT)) {
+		ret = 0;
+		if (sc->last_led_err[0] != 1) {
+			printk(KERN_WARNING
+			       "%s: AIS Alarm or XBit Error\n", sc->name);
+			printk(KERN_WARNING
+			       "%s: Remote end has loss of signal or framing\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED0);
+		sc->last_led_err[0] = 1;
+	} else {
+		lmc_led_off(sc, LMC_DS3_LED0);
+		sc->last_led_err[0] = 0;
+	}
+
+	lmc_mii_writereg(sc, 0, 17, 9);
+	link_status = lmc_mii_readreg(sc, 0, 18);
+
+	if (link_status & LMC_FRAMER_REG9_RBLUE) {
+		ret = 0;
+		if (sc->last_led_err[1] != 1) {
+			printk(KERN_WARNING
+			       "%s: Blue Alarm - Receiving all 1's\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED1);
+		sc->last_led_err[1] = 1;
+	} else {
+		lmc_led_off(sc, LMC_DS3_LED1);
+		sc->last_led_err[1] = 0;
+	}
+
+	return ret;
 }
 
-/*
- * 0 == 16bit, 1 == 32bit
- */
-static void
-lmc_ds3_set_crc_length (lmc_softc_t * const sc, int state)
+/* 0 == 16bit, 1 == 32bit */
+static void lmc_ds3_set_crc_length(lmc_softc_t * const sc, int state)
 {
-  if (state == LMC_CTL_CRC_LENGTH_32)
-    {
-      /* 32 bit */
-      sc->lmc_miireg16 |= LMC_MII16_DS3_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-    }
-  else
-    {
-      /* 16 bit */
-      sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-    }
-
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	if (state == LMC_CTL_CRC_LENGTH_32) {
+		/* 32 bit */
+		sc->lmc_miireg16 |= LMC_MII16_DS3_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
+	} else {
+		/* 16 bit */
+		sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void
-lmc_ds3_watchdog (lmc_softc_t * const sc)
+static void lmc_ds3_watchdog(lmc_softc_t * const sc)
 {
-    
 }
 
 
-/*
- *  SSI methods
- */
+/* SSI methods */
 
 static void lmc_ssi_init(lmc_softc_t * const sc)
 {
@@ -551,333 +473,274 @@ static void lmc_ssi_init(lmc_softc_t * const sc)
 	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
 }
 
-static void
-lmc_ssi_default (lmc_softc_t * const sc)
+static void lmc_ssi_default(lmc_softc_t * const sc)
 {
-  sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
-  /*
-   * make TXCLOCK always be an output
-   */
-  lmc_gpio_mkoutput (sc, LMC_GEP_SSI_TXCLOCK);
+	/* make TXCLOCK always be an output */
+	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
 
-  sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN);
-  sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT);
-  sc->lmc_media->set_speed (sc, NULL);
-  sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16);
+	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
+	sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	sc->lmc_media->set_speed(sc, NULL);
+	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 }
 
-/*
- * Given a user provided state, set ourselves up to match it.  This will
- * always reset the card if needed.
- */
-static void
-lmc_ssi_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl)
+/* Given a user provided state, set ourselves up to match it.
+   This will always reset the card if needed. */
+static void lmc_ssi_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 {
-  if (ctl == NULL)
-    {
-      sc->lmc_media->set_clock_source (sc, sc->ictl.clock_source);
-      sc->lmc_media->set_speed (sc, &sc->ictl);
-      lmc_set_protocol (sc, NULL);
-
-      return;
-    }
-
-  /*
-   * check for change in clock source
-   */
-  if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_INT
-      && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT)
-    {
-      sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_INT);
-      sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
-    }
-  else if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_EXT
-	   && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT)
-    {
-      sc->lmc_media->set_clock_source (sc, LMC_CTL_CLOCK_SOURCE_EXT);
-      sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
-    }
-
-  if (ctl->clock_rate != sc->ictl.clock_rate)
-    sc->lmc_media->set_speed (sc, ctl);
-
-  lmc_set_protocol (sc, ctl);
+	if (ctl == NULL) {
+		sc->lmc_media->set_clock_source(sc, sc->ictl.clock_source);
+		sc->lmc_media->set_speed(sc, &sc->ictl);
+		lmc_set_protocol(sc, NULL);
+		return;
+	}
+
+	/* check for change in clock source */
+	if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_INT
+	    && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) {
+		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_INT);
+		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
+	} else if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_EXT
+		 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) {
+		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
+	}
+
+	if (ctl->clock_rate != sc->ictl.clock_rate)
+		sc->lmc_media->set_speed(sc, ctl);
+
+	lmc_set_protocol(sc, ctl);
 }
 
-/*
- * 1 == internal, 0 == external
- */
-static void
-lmc_ssi_set_clock (lmc_softc_t * const sc, int ie)
+/* 1 == internal, 0 == external */
+static void lmc_ssi_set_clock(lmc_softc_t * const sc, int ie)
 {
-  int old;
-  old = ie;
-  if (ie == LMC_CTL_CLOCK_SOURCE_EXT)
-    {
-      sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
-      LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-      sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
-      if(ie != old)
-        printk (LMC_PRINTF_FMT ": clock external\n", LMC_PRINTF_ARGS);
-    }
-  else
-    {
-      sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
-      LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-      sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
-      if(ie != old)
-        printk (LMC_PRINTF_FMT ": clock internal\n", LMC_PRINTF_ARGS);
-    }
+	int old;
+	old = ie;
+	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
+		sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
+		if (ie != old)
+			printk(LMC_PRINTF_FMT ": clock external\n",
+			       LMC_PRINTF_ARGS);
+	} else {
+		sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
+		if (ie != old)
+			printk(LMC_PRINTF_FMT ": clock internal\n",
+			       LMC_PRINTF_ARGS);
+	}
 }
 
-static void
-lmc_ssi_set_speed (lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_ssi_set_speed(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 {
-  lmc_ctl_t *ictl = &sc->ictl;
-  lmc_av9110_t *av;
-
-  /* original settings for clock rate of:
-   *  100 Khz (8,25,0,0,2) were incorrect
-   *  they should have been 80,125,1,3,3
-   *  There are 17 param combinations to produce this freq.
-   *  For 1.5 Mhz use 120,100,1,1,2 (226 param. combinations)
-   */
-  if (ctl == NULL)
-    {
-      av = &ictl->cardspec.ssi;
-      ictl->clock_rate = 1500000;
-      av->f = ictl->clock_rate;
-      av->n = 120;
-      av->m = 100;
-      av->v = 1;
-      av->x = 1;
-      av->r = 2;
-
-      write_av9110 (sc, av->n, av->m, av->v, av->x, av->r);
-      return;
-    }
-
-  av = &ctl->cardspec.ssi;
-
-  if (av->f == 0)
-    return;
-
-  ictl->clock_rate = av->f;	/* really, this is the rate we are */
-  ictl->cardspec.ssi = *av;
-
-  write_av9110 (sc, av->n, av->m, av->v, av->x, av->r);
+	lmc_ctl_t *ictl = &sc->ictl;
+	lmc_av9110_t *av;
+
+	/* original settings for clock rate of 100 Khz (8,25,0,0,2) were
+	   incorrect. They should have been 80,125,1,3,3. There are 17 param
+	   combinations to produce this freq. For 1.5 Mhz use 120,100,1,1,2
+	   (226 param. combinations) */
+	if (ctl == NULL) {
+		av = &ictl->cardspec.ssi;
+		ictl->clock_rate = 1500000;
+		av->f = ictl->clock_rate;
+		av->n = 120;
+		av->m = 100;
+		av->v = 1;
+		av->x = 1;
+		av->r = 2;
+		write_av9110(sc, av->n, av->m, av->v, av->x, av->r);
+		return;
+	}
+
+	av = &ctl->cardspec.ssi;
+
+	if (av->f == 0)
+		return;
+
+	ictl->clock_rate = av->f;	/* really, this is the rate we are */
+	ictl->cardspec.ssi = *av;
+
+	write_av9110(sc, av->n, av->m, av->v, av->x, av->r);
 }
 
-/*
- * return hardware link status.
- * 0 == link is down, 1 == link is up.
- */
-static int
-lmc_ssi_get_link_status (lmc_softc_t * const sc)
+/* Return hardware link status. 0 == link is down, 1 == link is up. */
+static int lmc_ssi_get_link_status(lmc_softc_t * const sc)
 {
-  u16 link_status;
-  u32 ticks;
-  int ret = 1;
-  int hw_hdsk = 1;
-
-  /*
-   * missing CTS?  Hmm.  If we require CTS on, we may never get the
-   * link to come up, so omit it in this test.
-   *
-   * Also, it seems that with a loopback cable, DCD isn't asserted,
-   * so just check for things like this:
-   *      DSR _must_ be asserted.
-   *      One of DCD or CTS must be asserted.
-   */
-
-  /* LMC 1000 (SSI) LED definitions
-   * led0 Green = power to adapter, Gate Array loaded &
-   *              driver attached
-   * led1 Green = DSR and DTR and RTS and CTS are set
-   * led2 Green = Cable detected
-   * led3 red   = No timing is available from the
-   *              cable or the on-board frequency
-   *              generator.
-   */
-
-  link_status = lmc_mii_readreg (sc, 0, 16);
-
-  /* Is the transmit clock still available */
-  ticks = LMC_CSR_READ (sc, csr_gp_timer);
-  ticks = 0x0000ffff - (ticks & 0x0000ffff);
-
-  lmc_led_on (sc, LMC_MII16_LED0);
-
-  /* ====== transmit clock determination ===== */
-  if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT) {
-      lmc_led_off(sc, LMC_MII16_LED3);
-  }
-  else if (ticks == 0 ) {				/* no clock found ? */
-      ret = 0;
-      if (sc->last_led_err[3] != 1) {
-	      sc->extra_stats.tx_lossOfClockCnt++;
-	      printk(KERN_WARNING "%s: Lost Clock, Link Down\n", sc->name);
-      }
-      sc->last_led_err[3] = 1;
-      lmc_led_on (sc, LMC_MII16_LED3);	/* turn ON red LED */
-  }
-  else {
-      if(sc->last_led_err[3] == 1)
-          printk(KERN_WARNING "%s: Clock Returned\n", sc->name);
-      sc->last_led_err[3] = 0;
-      lmc_led_off (sc, LMC_MII16_LED3);		/* turn OFF red LED */
-  }
-
-  if ((link_status & LMC_MII16_SSI_DSR) == 0) { /* Also HSSI CA */
-      ret = 0;
-      hw_hdsk = 0;
-  }
+	u16 link_status;
+	u32 ticks;
+	int ret = 1;
+	int hw_hdsk = 1;
+
+	/* missing CTS?  Hmm.  If we require CTS on, we may never get the
+	   link to come up, so omit it in this test.
+
+	   Also, it seems that with a loopback cable, DCD isn't asserted,
+	   so just check for things like this:
+	   - DSR _must_ be asserted.
+	   - One of DCD or CTS must be asserted. */
+
+	/* LMC 1000 (SSI) LED definitions
+	   - led0 green = power to adapter, Gate Array loaded & driver attached
+	   - led1 green = DSR and DTR and RTS and CTS are set
+	   - led2 green = Cable detected
+	   - led3 red   = No timing is available from the cable or the on-board
+			  frequency generator. */
+
+	link_status = lmc_mii_readreg(sc, 0, 16);
+
+	/* Is the transmit clock still available */
+	ticks = LMC_CSR_READ(sc, csr_gp_timer);
+	ticks = 0x0000ffff - (ticks & 0x0000ffff);
+
+	lmc_led_on(sc, LMC_MII16_LED0);
+
+	/* transmit clock determination */
+	if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT)
+		lmc_led_off(sc, LMC_MII16_LED3);
+	else if (ticks == 0) {	/* no clock found ? */
+		ret = 0;
+		if (sc->last_led_err[3] != 1) {
+			sc->extra_stats.tx_lossOfClockCnt++;
+			printk(KERN_WARNING "%s: Lost Clock, Link Down\n",
+			       sc->name);
+		}
+		sc->last_led_err[3] = 1;
+		lmc_led_on(sc, LMC_MII16_LED3);	/* turn ON red LED */
+	} else {
+		if (sc->last_led_err[3] == 1)
+			printk(KERN_WARNING "%s: Clock Returned\n", sc->name);
+		sc->last_led_err[3] = 0;
+		lmc_led_off(sc, LMC_MII16_LED3); /* turn OFF red LED */
+	}
+
+	if ((link_status & LMC_MII16_SSI_DSR) == 0) { /* Also HSSI CA */
+		ret = 0;
+		hw_hdsk = 0;
+	}
 
 #ifdef CONFIG_LMC_IGNORE_HARDWARE_HANDSHAKE
-  if ((link_status & (LMC_MII16_SSI_CTS | LMC_MII16_SSI_DCD)) == 0){
-      ret = 0;
-      hw_hdsk = 0;
-  }
+	if ((link_status & (LMC_MII16_SSI_CTS | LMC_MII16_SSI_DCD)) == 0) {
+		ret = 0;
+		hw_hdsk = 0;
+	}
 #endif
 
-  if(hw_hdsk == 0){
-      if(sc->last_led_err[1] != 1)
-          printk(KERN_WARNING "%s: DSR not asserted\n", sc->name);
-      sc->last_led_err[1] = 1;
-      lmc_led_off(sc, LMC_MII16_LED1);
-  }
-  else {
-      if(sc->last_led_err[1] != 0)
-          printk(KERN_WARNING "%s: DSR now asserted\n", sc->name);
-      sc->last_led_err[1] = 0;
-      lmc_led_on(sc, LMC_MII16_LED1);
-  }
-
-  if(ret == 1) {
-      lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */
-  }
-  
-  return ret;
+	if (hw_hdsk == 0) {
+		if (sc->last_led_err[1] != 1)
+			printk(KERN_WARNING "%s: DSR not asserted\n", sc->name);
+		sc->last_led_err[1] = 1;
+		lmc_led_off(sc, LMC_MII16_LED1);
+	} else {
+		if (sc->last_led_err[1] != 0)
+			printk(KERN_WARNING "%s: DSR now asserted\n", sc->name);
+		sc->last_led_err[1] = 0;
+		lmc_led_on(sc, LMC_MII16_LED1);
+	}
+
+	if (ret == 1)
+		lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */
+
+	return ret;
 }
 
-static void
-lmc_ssi_set_link_status (lmc_softc_t * const sc, int state)
+static void lmc_ssi_set_link_status(lmc_softc_t * const sc, int state)
 {
-  if (state == LMC_LINK_UP)
-    {
-      sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
-      printk (LMC_PRINTF_FMT ": asserting DTR and RTS\n", LMC_PRINTF_ARGS);
-    }
-  else
-    {
-      sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
-      printk (LMC_PRINTF_FMT ": deasserting DTR and RTS\n", LMC_PRINTF_ARGS);
-    }
-
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	if (state == LMC_LINK_UP) {
+		sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
+		printk(LMC_PRINTF_FMT ": asserting DTR and RTS\n",
+		       LMC_PRINTF_ARGS);
+	} else {
+		sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
+		printk(LMC_PRINTF_FMT ": deasserting DTR and RTS\n",
+		       LMC_PRINTF_ARGS);
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 
 }
 
-/*
- * 0 == 16bit, 1 == 32bit
- */
-static void
-lmc_ssi_set_crc_length (lmc_softc_t * const sc, int state)
+/* 0 == 16bit, 1 == 32bit */
+static void lmc_ssi_set_crc_length(lmc_softc_t * const sc, int state)
 {
-  if (state == LMC_CTL_CRC_LENGTH_32)
-    {
-      /* 32 bit */
-      sc->lmc_miireg16 |= LMC_MII16_SSI_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-      sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
-
-    }
-  else
-    {
-      /* 16 bit */
-      sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-      sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
-    }
-
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	if (state == LMC_CTL_CRC_LENGTH_32) {
+		/* 32 bit */
+		sc->lmc_miireg16 |= LMC_MII16_SSI_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
+		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
+
+	} else {
+		/* 16 bit */
+		sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
+		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-/*
- * These are bits to program the ssi frequency generator
- */
-static inline void
-write_av9110_bit (lmc_softc_t * sc, int c)
+/* These are bits to program the ssi frequency generator */
+static inline void write_av9110_bit(lmc_softc_t *sc, int c)
 {
-  /*
-   * set the data bit as we need it.
-   */
-  sc->lmc_gpio &= ~(LMC_GEP_CLK);
-  if (c & 0x01)
-    sc->lmc_gpio |= LMC_GEP_DATA;
-  else
-    sc->lmc_gpio &= ~(LMC_GEP_DATA);
-  LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-
-  /*
-   * set the clock to high
-   */
-  sc->lmc_gpio |= LMC_GEP_CLK;
-  LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-
-  /*
-   * set the clock to low again.
-   */
-  sc->lmc_gpio &= ~(LMC_GEP_CLK);
-  LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
+	/* set the data bit as we need it. */
+	sc->lmc_gpio &= ~(LMC_GEP_CLK);
+	if (c & 0x01)
+		sc->lmc_gpio |= LMC_GEP_DATA;
+	else
+		sc->lmc_gpio &= ~(LMC_GEP_DATA);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+	/* set the clock to high */
+	sc->lmc_gpio |= LMC_GEP_CLK;
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+	/* set the clock to low again. */
+	sc->lmc_gpio &= ~(LMC_GEP_CLK);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
 }
 
 static void write_av9110(lmc_softc_t *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
 {
-  int i;
+	int i;
 
 #if 0
-  printk (LMC_PRINTF_FMT ": speed %u, %d %d %d %d %d\n",
-	  LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r);
+	printk(LMC_PRINTF_FMT ": speed %u, %d %d %d %d %d\n",
+	       LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r);
 #endif
 
-  sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR;
-  sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK);
-  LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-
-  /*
-   * Set the TXCLOCK, GENERATOR, SERIAL, and SERIALCLK
-   * as outputs.
-   */
-  lmc_gpio_mkoutput (sc, (LMC_GEP_DATA | LMC_GEP_CLK
-			  | LMC_GEP_SSI_GENERATOR));
-
-  sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR);
-  LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-
-  /*
-   * a shifting we will go...
-   */
-  for (i = 0; i < 7; i++)
-    write_av9110_bit (sc, n >> i);
-  for (i = 0; i < 7; i++)
-    write_av9110_bit (sc, m >> i);
-  for (i = 0; i < 1; i++)
-    write_av9110_bit (sc, v >> i);
-  for (i = 0; i < 2; i++)
-    write_av9110_bit (sc, x >> i);
-  for (i = 0; i < 2; i++)
-    write_av9110_bit (sc, r >> i);
-  for (i = 0; i < 5; i++)
-    write_av9110_bit (sc, 0x17 >> i);
-
-  /*
-   * stop driving serial-related signals
-   */
-  lmc_gpio_mkinput (sc,
-		    (LMC_GEP_DATA | LMC_GEP_CLK
-		     | LMC_GEP_SSI_GENERATOR));
+	sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR;
+	sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+	/* Set the TXCLOCK, GENERATOR, SERIAL, and SERIALCLK as outputs. */
+	lmc_gpio_mkoutput(sc, (LMC_GEP_DATA | LMC_GEP_CLK
+				| LMC_GEP_SSI_GENERATOR));
+
+	sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+	/* a shifting we will go... */
+	for (i = 0; i < 7; i++)
+		write_av9110_bit(sc, n >> i);
+	for (i = 0; i < 7; i++)
+		write_av9110_bit(sc, m >> i);
+	for (i = 0; i < 1; i++)
+		write_av9110_bit(sc, v >> i);
+	for (i = 0; i < 2; i++)
+		write_av9110_bit(sc, x >> i);
+	for (i = 0; i < 2; i++)
+		write_av9110_bit(sc, r >> i);
+	for (i = 0; i < 5; i++)
+		write_av9110_bit(sc, 0x17 >> i);
+
+	/* stop driving serial-related signals */
+	lmc_gpio_mkinput(sc, (LMC_GEP_DATA | LMC_GEP_CLK |
+			      LMC_GEP_SSI_GENERATOR));
 }
 
 static void lmc_ssi_watchdog(lmc_softc_t * const sc)
@@ -889,322 +752,285 @@ static void lmc_ssi_watchdog(lmc_softc_t * const sc)
 		lmc_led_on(sc, LMC_MII16_LED2);
 }
 
-/*
- *  T1 methods
- */
+/* T1 methods */
 
-/*
- * The framer regs are multiplexed through MII regs 17 & 18
- *  write the register address to MII reg 17 and the *  data to MII reg 18. */
-static void
-lmc_t1_write (lmc_softc_t * const sc, int a, int d)
+/* The framer regs are multiplexed through MII regs 17 & 18 write the register
+   address to MII reg 17 and the data to MII reg 18. */
+static void lmc_t1_write(lmc_softc_t * const sc, int a, int d)
 {
-  lmc_mii_writereg (sc, 0, 17, a);
-  lmc_mii_writereg (sc, 0, 18, d);
+	lmc_mii_writereg(sc, 0, 17, a);
+	lmc_mii_writereg(sc, 0, 18, d);
 }
 
 /* Save a warning
-static int
-lmc_t1_read (lmc_softc_t * const sc, int a)
+static int lmc_t1_read(lmc_softc_t * const sc, int a)
 {
-  lmc_mii_writereg (sc, 0, 17, a);
-  return lmc_mii_readreg (sc, 0, 18);
+	lmc_mii_writereg(sc, 0, 17, a);
+	return lmc_mii_readreg(sc, 0, 18);
 }
 */
 
 
-static void
-lmc_t1_init (lmc_softc_t * const sc)
+static void lmc_t1_init(lmc_softc_t * const sc)
 {
-  u16 mii16;
-  int i;
-
-  sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1200;
-  mii16 = lmc_mii_readreg (sc, 0, 16);
-
-  /* reset 8370 */
-  mii16 &= ~LMC_MII16_T1_RST;
-  lmc_mii_writereg (sc, 0, 16, mii16 | LMC_MII16_T1_RST);
-  lmc_mii_writereg (sc, 0, 16, mii16);
-
-  /* set T1 or E1 line.  Uses sc->lmcmii16 reg in function so update it */
-  sc->lmc_miireg16 = mii16;
-  lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
-  mii16 = sc->lmc_miireg16;
-
-  lmc_t1_write (sc, 0x01, 0x1B);	/* CR0     - primary control             */
-  lmc_t1_write (sc, 0x02, 0x42);	/* JAT_CR  - jitter atten config         */
-  lmc_t1_write (sc, 0x14, 0x00);	/* LOOP    - loopback config             */
-  lmc_t1_write (sc, 0x15, 0x00);	/* DL3_TS  - external data link timeslot */
-  lmc_t1_write (sc, 0x18, 0xFF);	/* PIO     - programmable I/O            */
-  lmc_t1_write (sc, 0x19, 0x30);	/* POE     - programmable OE             */
-  lmc_t1_write (sc, 0x1A, 0x0F);	/* CMUX    - clock input mux             */
-  lmc_t1_write (sc, 0x20, 0x41);	/* LIU_CR  - RX LIU config               */
-  lmc_t1_write (sc, 0x22, 0x76);	/* RLIU_CR - RX LIU config               */
-  lmc_t1_write (sc, 0x40, 0x03);	/* RCR0    - RX config                   */
-  lmc_t1_write (sc, 0x45, 0x00);	/* RALM    - RX alarm config             */
-  lmc_t1_write (sc, 0x46, 0x05);	/* LATCH   - RX alarm/err/cntr latch     */
-  lmc_t1_write (sc, 0x68, 0x40);	/* TLIU_CR - TX LIU config               */
-  lmc_t1_write (sc, 0x70, 0x0D);	/* TCR0    - TX framer config            */
-  lmc_t1_write (sc, 0x71, 0x05);	/* TCR1    - TX config                   */
-  lmc_t1_write (sc, 0x72, 0x0B);	/* TFRM    - TX frame format             */
-  lmc_t1_write (sc, 0x73, 0x00);	/* TERROR  - TX error insert             */
-  lmc_t1_write (sc, 0x74, 0x00);	/* TMAN    - TX manual Sa/FEBE config    */
-  lmc_t1_write (sc, 0x75, 0x00);	/* TALM    - TX alarm signal config      */
-  lmc_t1_write (sc, 0x76, 0x00);	/* TPATT   - TX test pattern config      */
-  lmc_t1_write (sc, 0x77, 0x00);	/* TLB     - TX inband loopback config   */
-  lmc_t1_write (sc, 0x90, 0x05);	/* CLAD_CR - clock rate adapter config   */
-  lmc_t1_write (sc, 0x91, 0x05);	/* CSEL    - clad freq sel               */
-  lmc_t1_write (sc, 0xA6, 0x00);	/* DL1_CTL - DL1 control                 */
-  lmc_t1_write (sc, 0xB1, 0x00);	/* DL2_CTL - DL2 control                 */
-  lmc_t1_write (sc, 0xD0, 0x47);	/* SBI_CR  - sys bus iface config        */
-  lmc_t1_write (sc, 0xD1, 0x70);	/* RSB_CR  - RX sys bus config           */
-  lmc_t1_write (sc, 0xD4, 0x30);	/* TSB_CR  - TX sys bus config           */
-  for (i = 0; i < 32; i++)
-    {
-      lmc_t1_write (sc, 0x0E0 + i, 0x00);	/* SBCn - sys bus per-channel ctl    */
-      lmc_t1_write (sc, 0x100 + i, 0x00);	/* TPCn - TX per-channel ctl         */
-      lmc_t1_write (sc, 0x180 + i, 0x00);	/* RPCn - RX per-channel ctl         */
-    }
-  for (i = 1; i < 25; i++)
-    {
-      lmc_t1_write (sc, 0x0E0 + i, 0x0D);	/* SBCn - sys bus per-channel ctl    */
-    }
-
-  mii16 |= LMC_MII16_T1_XOE;
-  lmc_mii_writereg (sc, 0, 16, mii16);
-  sc->lmc_miireg16 = mii16;
+	u16 mii16;
+	int i;
+
+	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1200;
+	mii16 = lmc_mii_readreg(sc, 0, 16);
+
+	/* reset 8370 */
+	mii16 &= ~LMC_MII16_T1_RST;
+	lmc_mii_writereg(sc, 0, 16, mii16 | LMC_MII16_T1_RST);
+	lmc_mii_writereg(sc, 0, 16, mii16);
+
+	/* set T1 or E1 line.  Uses sc->lmcmii16 reg in function so update it */
+	sc->lmc_miireg16 = mii16;
+	lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
+	mii16 = sc->lmc_miireg16;
+
+	lmc_t1_write(sc, 0x01, 0x1B); /* CR0     - primary control */
+	lmc_t1_write(sc, 0x02, 0x42); /* JAT_CR  - jitter atten config */
+	lmc_t1_write(sc, 0x14, 0x00); /* LOOP    - loopback config */
+	lmc_t1_write(sc, 0x15, 0x00); /* DL3_TS  - external data link timeslot */
+	lmc_t1_write(sc, 0x18, 0xFF); /* PIO     - programmable I/O */
+	lmc_t1_write(sc, 0x19, 0x30); /* POE     - programmable OE */
+	lmc_t1_write(sc, 0x1A, 0x0F); /* CMUX    - clock input mux */
+	lmc_t1_write(sc, 0x20, 0x41); /* LIU_CR  - RX LIU config */
+	lmc_t1_write(sc, 0x22, 0x76); /* RLIU_CR - RX LIU config */
+	lmc_t1_write(sc, 0x40, 0x03); /* RCR0    - RX config */
+	lmc_t1_write(sc, 0x45, 0x00); /* RALM    - RX alarm config */
+	lmc_t1_write(sc, 0x46, 0x05); /* LATCH   - RX alarm/err/cntr latch */
+	lmc_t1_write(sc, 0x68, 0x40); /* TLIU_CR - TX LIU config */
+	lmc_t1_write(sc, 0x70, 0x0D); /* TCR0    - TX framer config */
+	lmc_t1_write(sc, 0x71, 0x05); /* TCR1    - TX config */
+	lmc_t1_write(sc, 0x72, 0x0B); /* TFRM    - TX frame format */
+	lmc_t1_write(sc, 0x73, 0x00); /* TERROR  - TX error insert */
+	lmc_t1_write(sc, 0x74, 0x00); /* TMAN    - TX manual Sa/FEBE config */
+	lmc_t1_write(sc, 0x75, 0x00); /* TALM    - TX alarm signal config */
+	lmc_t1_write(sc, 0x76, 0x00); /* TPATT   - TX test pattern config */
+	lmc_t1_write(sc, 0x77, 0x00); /* TLB     - TX inband loopback config */
+	lmc_t1_write(sc, 0x90, 0x05); /* CLAD_CR - clock rate adapter config */
+	lmc_t1_write(sc, 0x91, 0x05); /* CSEL    - clad freq sel */
+	lmc_t1_write(sc, 0xA6, 0x00); /* DL1_CTL - DL1 control */
+	lmc_t1_write(sc, 0xB1, 0x00); /* DL2_CTL - DL2 control */
+	lmc_t1_write(sc, 0xD0, 0x47); /* SBI_CR  - sys bus iface config */
+	lmc_t1_write(sc, 0xD1, 0x70); /* RSB_CR  - RX sys bus config */
+	lmc_t1_write(sc, 0xD4, 0x30); /* TSB_CR  - TX sys bus config */
+	for (i = 0; i < 32; i++) {
+		lmc_t1_write(sc, 0x0E0 + i, 0x00); /* SBCn - sys bus per-channel ctl */
+		lmc_t1_write(sc, 0x100 + i, 0x00); /* TPCn - TX per-channel ctl */
+		lmc_t1_write(sc, 0x180 + i, 0x00); /* RPCn - RX per-channel ctl */
+	}
+	for (i = 1; i < 25; i++)
+		lmc_t1_write(sc, 0x0E0 + i, 0x0D); /* SBCn - sys bus per-channel ctl */
+
+	mii16 |= LMC_MII16_T1_XOE;
+	lmc_mii_writereg(sc, 0, 16, mii16);
+	sc->lmc_miireg16 = mii16;
 }
 
-static void
-lmc_t1_default (lmc_softc_t * const sc)
+static void lmc_t1_default(lmc_softc_t * const sc)
 {
-  sc->lmc_miireg16 = LMC_MII16_LED_ALL;
-  sc->lmc_media->set_link_status (sc, LMC_LINK_DOWN);
-  sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1);
-  sc->lmc_media->set_crc_length (sc, LMC_CTL_CRC_LENGTH_16);
-  /* Right now we can only clock from out internal source */
-  sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
+	sc->lmc_media->set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
+	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	/* Right now we can only clock from out internal source */
+	sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 }
-/* * Given a user provided state, set ourselves up to match it.  This will * always reset the card if needed.
- */
-static void
-lmc_t1_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl)
+/* Given a user provided state, set ourselves up to match it.
+   This will always reset the card if needed. */
+static void lmc_t1_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 {
-  if (ctl == NULL)
-    {
-      sc->lmc_media->set_circuit_type (sc, sc->ictl.circuit_type);
-      lmc_set_protocol (sc, NULL);
-
-      return;
-    }
-  /*
-   * check for change in circuit type         */
-  if (ctl->circuit_type == LMC_CTL_CIRCUIT_TYPE_T1
-      && sc->ictl.circuit_type ==
-      LMC_CTL_CIRCUIT_TYPE_E1) sc->lmc_media->set_circuit_type (sc,
-								LMC_CTL_CIRCUIT_TYPE_E1);
-  else if (ctl->circuit_type == LMC_CTL_CIRCUIT_TYPE_E1
-	   && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1)
-    sc->lmc_media->set_circuit_type (sc, LMC_CTL_CIRCUIT_TYPE_T1);
-  lmc_set_protocol (sc, ctl);
+	if (ctl == NULL) {
+		sc->lmc_media->set_circuit_type(sc, sc->ictl.circuit_type);
+		lmc_set_protocol(sc, NULL);
+
+		return;
+	}
+	/* check for change in circuit type */
+	if (ctl->circuit_type == LMC_CTL_CIRCUIT_TYPE_T1
+	    && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_E1)
+		sc->lmc_media->set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_E1);
+	else if (ctl->circuit_type == LMC_CTL_CIRCUIT_TYPE_E1
+		 && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1)
+		sc->lmc_media->set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
+	lmc_set_protocol(sc, ctl);
 }
-/*
- * return hardware link status.
- * 0 == link is down, 1 == link is up.
- */ static int
-lmc_t1_get_link_status (lmc_softc_t * const sc)
+
+/* Return hardware link status. 0 == link is down, 1 == link is up. */
+static int lmc_t1_get_link_status(lmc_softc_t * const sc)
 {
-    u16 link_status;
-    int ret = 1;
-
-  /* LMC5245 (DS3) & LMC1200 (DS1) LED definitions
-   * led0 yellow = far-end adapter is in Red alarm condition
-   * led1 blue   = received an Alarm Indication signal
-   *               (upstream failure)
-   * led2 Green  = power to adapter, Gate Array loaded & driver
-   *               attached
-   * led3 red    = Loss of Signal (LOS) or out of frame (OOF)
-   *               conditions detected on T3 receive signal
-   */
-    lmc_trace(sc->lmc_device, "lmc_t1_get_link_status in");
-    lmc_led_on(sc, LMC_DS3_LED2);
-
-    lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM1_STATUS);
-    link_status = lmc_mii_readreg (sc, 0, 18);
-
-
-    if (link_status & T1F_RAIS) {			/* turn on blue LED */
-        ret = 0;
-        if(sc->last_led_err[1] != 1){
-            printk(KERN_WARNING "%s: Receive AIS/Blue Alarm. Far end in RED alarm\n", sc->name);
-        }
-        lmc_led_on(sc, LMC_DS3_LED1);
-        sc->last_led_err[1] = 1;
-    }
-    else {
-        if(sc->last_led_err[1] != 0){
-            printk(KERN_WARNING "%s: End AIS/Blue Alarm\n", sc->name);
-        }
-        lmc_led_off (sc, LMC_DS3_LED1);
-        sc->last_led_err[1] = 0;
-    }
-
-    /*
-     * Yellow Alarm is nasty evil stuff, looks at data patterns
-     * inside the channel and confuses it with HDLC framing
-     * ignore all yellow alarms.
-     *
-     * Do listen to MultiFrame Yellow alarm which while implemented
-     * different ways isn't in the channel and hence somewhat
-     * more reliable
-     */
-
-    if (link_status & T1F_RMYEL) {
-        ret = 0;
-        if(sc->last_led_err[0] != 1){
-            printk(KERN_WARNING "%s: Receive Yellow AIS Alarm\n", sc->name);
-        }
-        lmc_led_on(sc, LMC_DS3_LED0);
-        sc->last_led_err[0] = 1;
-    }
-    else {
-        if(sc->last_led_err[0] != 0){
-            printk(KERN_WARNING "%s: End of Yellow AIS Alarm\n", sc->name);
-        }
-        lmc_led_off(sc, LMC_DS3_LED0);
-        sc->last_led_err[0] = 0;
-    }
-
-    /*
-     * Loss of signal and los of frame
-     * Use the green bit to identify which one lit the led
-     */
-    if(link_status & T1F_RLOF){
-        ret = 0;
-        if(sc->last_led_err[3] != 1){
-            printk(KERN_WARNING "%s: Local Red Alarm: Loss of Framing\n", sc->name);
-        }
-        lmc_led_on(sc, LMC_DS3_LED3);
-        sc->last_led_err[3] = 1;
-
-    }
-    else {
-        if(sc->last_led_err[3] != 0){
-            printk(KERN_WARNING "%s: End Red Alarm (LOF)\n", sc->name);
-        }
-        if( ! (link_status & T1F_RLOS))
-            lmc_led_off(sc, LMC_DS3_LED3);
-        sc->last_led_err[3] = 0;
-    }
-    
-    if(link_status & T1F_RLOS){
-        ret = 0;
-        if(sc->last_led_err[2] != 1){
-            printk(KERN_WARNING "%s: Local Red Alarm: Loss of Signal\n", sc->name);
-        }
-        lmc_led_on(sc, LMC_DS3_LED3);
-        sc->last_led_err[2] = 1;
-
-    }
-    else {
-        if(sc->last_led_err[2] != 0){
-            printk(KERN_WARNING "%s: End Red Alarm (LOS)\n", sc->name);
-        }
-        if( ! (link_status & T1F_RLOF))
-            lmc_led_off(sc, LMC_DS3_LED3);
-        sc->last_led_err[2] = 0;
-    }
-
-    sc->lmc_xinfo.t1_alarm1_status = link_status;
-
-    lmc_mii_writereg (sc, 0, 17, T1FRAMER_ALARM2_STATUS);
-    sc->lmc_xinfo.t1_alarm2_status = lmc_mii_readreg (sc, 0, 18);
-
-    
-    lmc_trace(sc->lmc_device, "lmc_t1_get_link_status out");
-
-    return ret;
+	u16 link_status;
+	int ret = 1;
+
+	/* LMC5245 (DS3) & LMC1200 (DS1) LED definitions
+	   - led0 yellow = far-end adapter is in Red alarm condition
+	   - led1 blue  = received an Alarm Indication signal (upstream failure)
+	   - led2 green  = power to adapter, Gate Array loaded & driver attached
+	   - led3 red    = Loss of Signal (LOS) or out of frame (OOF)
+			   conditions detected on T3 receive signal */
+	lmc_trace(sc->lmc_device, "lmc_t1_get_link_status in");
+	lmc_led_on(sc, LMC_DS3_LED2);
+
+	lmc_mii_writereg(sc, 0, 17, T1FRAMER_ALARM1_STATUS);
+	link_status = lmc_mii_readreg(sc, 0, 18);
+
+	if (link_status & T1F_RAIS) { /* turn on blue LED */
+		ret = 0;
+		if (sc->last_led_err[1] != 1) {
+			printk(KERN_WARNING
+			       "%s: Receive AIS/Blue Alarm. Far end in RED alarm\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED1);
+		sc->last_led_err[1] = 1;
+	} else {
+		if (sc->last_led_err[1] != 0) {
+			printk(KERN_WARNING "%s: End AIS/Blue Alarm\n",
+			       sc->name);
+		}
+		lmc_led_off(sc, LMC_DS3_LED1);
+		sc->last_led_err[1] = 0;
+	}
+
+	/* Yellow Alarm is nasty evil stuff, looks at data patterns inside the
+	   channel and confuses it with HDLC framing ignore all yellow alarms.
+	   Do listen to MultiFrame Yellow alarm which while implemented
+	   different ways isn't in the channel and hence somewhat more
+	   reliable */
+
+	if (link_status & T1F_RMYEL) {
+		ret = 0;
+		if (sc->last_led_err[0] != 1) {
+			printk(KERN_WARNING "%s: Receive Yellow AIS Alarm\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED0);
+		sc->last_led_err[0] = 1;
+	} else {
+		if (sc->last_led_err[0] != 0) {
+			printk(KERN_WARNING "%s: End of Yellow AIS Alarm\n",
+			       sc->name);
+		}
+		lmc_led_off(sc, LMC_DS3_LED0);
+		sc->last_led_err[0] = 0;
+	}
+
+	/* Loss of signal and los of frame. Use the green bit to identify which
+	   one lit the led */
+	if (link_status & T1F_RLOF) {
+		ret = 0;
+		if (sc->last_led_err[3] != 1) {
+			printk(KERN_WARNING
+			       "%s: Local Red Alarm: Loss of Framing\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED3);
+		sc->last_led_err[3] = 1;
+
+	} else {
+		if (sc->last_led_err[3] != 0) {
+			printk(KERN_WARNING "%s: End Red Alarm (LOF)\n",
+			       sc->name);
+		}
+		if (!(link_status & T1F_RLOS))
+			lmc_led_off(sc, LMC_DS3_LED3);
+		sc->last_led_err[3] = 0;
+	}
+
+	if (link_status & T1F_RLOS) {
+		ret = 0;
+		if (sc->last_led_err[2] != 1) {
+			printk(KERN_WARNING
+			       "%s: Local Red Alarm: Loss of Signal\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED3);
+		sc->last_led_err[2] = 1;
+
+	} else {
+		if (sc->last_led_err[2] != 0) {
+			printk(KERN_WARNING "%s: End Red Alarm (LOS)\n",
+			       sc->name);
+		}
+		if (!(link_status & T1F_RLOF))
+			lmc_led_off(sc, LMC_DS3_LED3);
+		sc->last_led_err[2] = 0;
+	}
+
+	sc->lmc_xinfo.t1_alarm1_status = link_status;
+
+	lmc_mii_writereg(sc, 0, 17, T1FRAMER_ALARM2_STATUS);
+	sc->lmc_xinfo.t1_alarm2_status = lmc_mii_readreg(sc, 0, 18);
+
+	lmc_trace(sc->lmc_device, "lmc_t1_get_link_status out");
+	return ret;
 }
 
-/*
- * 1 == T1 Circuit Type , 0 == E1 Circuit Type
- */
-static void
-lmc_t1_set_circuit_type (lmc_softc_t * const sc, int ie)
+/* 1 == T1 Circuit Type , 0 == E1 Circuit Type */
+static void lmc_t1_set_circuit_type(lmc_softc_t * const sc, int ie)
 {
-  if (ie == LMC_CTL_CIRCUIT_TYPE_T1) {
-      sc->lmc_miireg16 |= LMC_MII16_T1_Z;
-      sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1;
-      printk(KERN_INFO "%s: In T1 Mode\n", sc->name);
-  }
-  else {
-      sc->lmc_miireg16 &= ~LMC_MII16_T1_Z;
-      sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1;
-      printk(KERN_INFO "%s: In E1 Mode\n", sc->name);
-  }
-
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
-  
+	if (ie == LMC_CTL_CIRCUIT_TYPE_T1) {
+		sc->lmc_miireg16 |= LMC_MII16_T1_Z;
+		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1;
+		printk(KERN_INFO "%s: In T1 Mode\n", sc->name);
+	} else {
+		sc->lmc_miireg16 &= ~LMC_MII16_T1_Z;
+		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1;
+		printk(KERN_INFO "%s: In E1 Mode\n", sc->name);
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-/*
- * 0 == 16bit, 1 == 32bit */
-static void
-lmc_t1_set_crc_length (lmc_softc_t * const sc, int state)
+/* 0 == 16bit, 1 == 32bit */
+static void lmc_t1_set_crc_length(lmc_softc_t * const sc, int state)
 {
-  if (state == LMC_CTL_CRC_LENGTH_32)
-    {
-      /* 32 bit */
-      sc->lmc_miireg16 |= LMC_MII16_T1_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-      sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
-
-    }
-  else
-    {
-      /* 16 bit */ sc->lmc_miireg16 &= ~LMC_MII16_T1_CRC;
-      sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-      sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
-
-    }
-
-  lmc_mii_writereg (sc, 0, 16, sc->lmc_miireg16);
+	if (state == LMC_CTL_CRC_LENGTH_32) {
+		/* 32 bit */
+		sc->lmc_miireg16 |= LMC_MII16_T1_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
+		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
+
+	} else {
+		/* 16 bit */ sc->lmc_miireg16 &= ~LMC_MII16_T1_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
+		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
+
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-/*
- * 1 == internal, 0 == external
- */
-static void
-lmc_t1_set_clock (lmc_softc_t * const sc, int ie)
+/* 1 == internal, 0 == external */
+static void lmc_t1_set_clock(lmc_softc_t * const sc, int ie)
 {
-  int old;
-  old = ie;
-  if (ie == LMC_CTL_CLOCK_SOURCE_EXT)
-    {
-      sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
-      LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-      sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
-      if(old != ie)
-        printk (LMC_PRINTF_FMT ": clock external\n", LMC_PRINTF_ARGS);
-    }
-  else
-    {
-      sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
-      LMC_CSR_WRITE (sc, csr_gp, sc->lmc_gpio);
-      sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
-      if(old != ie)
-        printk (LMC_PRINTF_FMT ": clock internal\n", LMC_PRINTF_ARGS);
-    }
+	int old;
+	old = ie;
+	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
+		sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
+		if (old != ie)
+			printk(LMC_PRINTF_FMT ": clock external\n",
+			       LMC_PRINTF_ARGS);
+	} else {
+		sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
+		if (old != ie)
+			printk(LMC_PRINTF_FMT ": clock internal\n",
+			       LMC_PRINTF_ARGS);
+	}
 }
 
-static void
-lmc_t1_watchdog (lmc_softc_t * const sc)
+static void lmc_t1_watchdog(lmc_softc_t * const sc)
 {
 }
 
-static void
-lmc_set_protocol (lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_set_protocol(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 {
 	if (!ctl)
 		sc->ictl.keepalive_onoff = LMC_CTL_ON;
diff --git a/drivers/net/wan/lmc/lmc_proto.c b/drivers/net/wan/lmc/lmc_proto.c
index f600075..ac1fef5 100644
--- a/drivers/net/wan/lmc/lmc_proto.c
+++ b/drivers/net/wan/lmc/lmc_proto.c
@@ -1,23 +1,23 @@
- /*
-  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
-  * All rights reserved.  www.lanmedia.com
-  *
-  * This code is written by:
-  * Andrew Stanley-Jones (asj@cban.com)
-  * Rob Braun (bbraun@vix.com),
-  * Michael Graff (explorer@vix.com) and
-  * Matt Thomas (matt@3am-software.com).
-  *
-  * With Help By:
-  * David Boggs
-  * Ron Crane
-  * Allan Cox
-  *
-  * This software may be used and distributed according to the terms
-  * of the GNU General Public License version 2, incorporated herein by reference.
-  *
-  * Driver for the LanMedia LMC5200, LMC5245, LMC1000, LMC1200 cards.
-  */
+/*
+ * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
+ * All rights reserved.  www.lanmedia.com
+ *
+ * This code is written by:
+ * Andrew Stanley-Jones (asj@cban.com)
+ * Rob Braun (bbraun@vix.com),
+ * Michael Graff (explorer@vix.com) and
+ * Matt Thomas (matt@3am-software.com).
+ *
+ * With Help By:
+ * David Boggs
+ * Ron Crane
+ * Allan Cox
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License version 2, incorporated herein by reference.
+ *
+ * Driver for the LanMedia LMC5200, LMC5245, LMC1000, LMC1200 cards.
+ */
 
 #include <linux/kernel.h>
 #include <linux/string.h>
@@ -35,8 +35,8 @@
 #include <linux/workqueue.h>
 #include <linux/proc_fs.h>
 #include <linux/bitops.h>
-#include <asm/processor.h>             /* Processor type for cache alignment. */
-#include <asm/io.h>
+#include <linux/io.h>
+#include <asm/processor.h>   /* Processor type for cache alignment. */
 #include <asm/dma.h>
 #include <linux/smp.h>
 
@@ -46,20 +46,17 @@
 #include "lmc_ioctl.h"
 #include "lmc_proto.h"
 
-// attach
-void lmc_proto_attach(lmc_softc_t *sc) /*FOLD00*/
+void lmc_proto_attach(lmc_softc_t *sc)
 {
-    lmc_trace(sc->lmc_device, "lmc_proto_attach in");
-    if (sc->if_type == LMC_NET) {
-            struct net_device *dev = sc->lmc_device;
-            /*
-	     * They set a few basics because they don't use HDLC
-             */
-            dev->flags |= IFF_POINTOPOINT;
-            dev->hard_header_len = 0;
-            dev->addr_len = 0;
-        }
-    lmc_trace(sc->lmc_device, "lmc_proto_attach out");
+	lmc_trace(sc->lmc_device, "lmc_proto_attach in");
+	if (sc->if_type == LMC_NET) {
+		struct net_device *dev = sc->lmc_device;
+		/* They set a few basics because they don't use HDLC */
+		dev->flags |= IFF_POINTOPOINT;
+		dev->hard_header_len = 0;
+		dev->addr_len = 0;
+	}
+	lmc_trace(sc->lmc_device, "lmc_proto_attach out");
 }
 
 int lmc_proto_ioctl(lmc_softc_t *sc, struct ifreq *ifr, int cmd)
@@ -97,39 +94,41 @@ void lmc_proto_close(lmc_softc_t *sc)
 	lmc_trace(sc->lmc_device, "lmc_proto_close out");
 }
 
-__be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb) /*FOLD00*/
+__be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb)
 {
-    lmc_trace(sc->lmc_device, "lmc_proto_type in");
-    switch(sc->if_type){
-    case LMC_PPP:
-	    return hdlc_type_trans(skb, sc->lmc_device);
-	    break;
-    case LMC_NET:
-        return htons(ETH_P_802_2);
-        break;
-    case LMC_RAW: /* Packet type for skbuff kind of useless */
-        return htons(ETH_P_802_2);
-        break;
-    default:
-        printk(KERN_WARNING "%s: No protocol set for this interface, assuming 802.2 (which is wrong!!)\n", sc->name);
-        return htons(ETH_P_802_2);
-        break;
-    }
-    lmc_trace(sc->lmc_device, "lmc_proto_tye out");
+	lmc_trace(sc->lmc_device, "lmc_proto_type in");
+	switch (sc->if_type) {
+	case LMC_PPP:
+		return hdlc_type_trans(skb, sc->lmc_device);
+		break;
+	case LMC_NET:
+		return htons(ETH_P_802_2);
+		break;
+	case LMC_RAW: /* Packet type for skbuff kind of useless */
+		return htons(ETH_P_802_2);
+		break;
+	default:
+		printk(KERN_WARNING
+		       "%s: No protocol set for this interface, assuming 802.2 (which is wrong!!)\n",
+		       sc->name);
+		return htons(ETH_P_802_2);
+		break;
+	}
+	lmc_trace(sc->lmc_device, "lmc_proto_tye out");
 
 }
 
-void lmc_proto_netif(lmc_softc_t *sc, struct sk_buff *skb) /*FOLD00*/
+void lmc_proto_netif(lmc_softc_t *sc, struct sk_buff *skb)
 {
-    lmc_trace(sc->lmc_device, "lmc_proto_netif in");
-    switch(sc->if_type){
-    case LMC_PPP:
-    case LMC_NET:
-    default:
-        netif_rx(skb);
-        break;
-    case LMC_RAW:
-        break;
-    }
-    lmc_trace(sc->lmc_device, "lmc_proto_netif out");
+	lmc_trace(sc->lmc_device, "lmc_proto_netif in");
+	switch (sc->if_type) {
+	case LMC_PPP:
+	case LMC_NET:
+	default:
+		netif_rx(skb);
+		break;
+	case LMC_RAW:
+		break;
+	}
+	lmc_trace(sc->lmc_device, "lmc_proto_netif out");
 }
diff --git a/drivers/net/wan/lmc/lmc_var.h b/drivers/net/wan/lmc/lmc_var.h
index 65d0197..9b14979 100644
--- a/drivers/net/wan/lmc/lmc_var.h
+++ b/drivers/net/wan/lmc/lmc_var.h
@@ -1,197 +1,184 @@
 #ifndef _LMC_VAR_H_
 #define _LMC_VAR_H_
 
- /*
-  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
-  * All rights reserved.  www.lanmedia.com
-  *
-  * This code is written by:
-  * Andrew Stanley-Jones (asj@cban.com)
-  * Rob Braun (bbraun@vix.com),
-  * Michael Graff (explorer@vix.com) and
-  * Matt Thomas (matt@3am-software.com).
-  *
-  * This software may be used and distributed according to the terms
-  * of the GNU General Public License version 2, incorporated herein by reference.
-  */
+/*
+ * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
+ * All rights reserved.  www.lanmedia.com
+ *
+ * This code is written by:
+ * Andrew Stanley-Jones (asj@cban.com)
+ * Rob Braun (bbraun@vix.com),
+ * Michael Graff (explorer@vix.com) and
+ * Matt Thomas (matt@3am-software.com).
+ *
+ * This software may be used and distributed according to the terms of
+ * the GNU General Public License version 2, incorporated herein by reference.
+ */
 
 #include <linux/timer.h>
 
-/*
- * basic definitions used in lmc include files
- */
+/* basic definitions used in lmc include files */
 
-typedef struct lmc___softc lmc_softc_t;
-typedef struct lmc___media lmc_media_t;
-typedef struct lmc___ctl lmc_ctl_t;
+typedef struct lmc___softc	lmc_softc_t;
+typedef struct lmc___media	lmc_media_t;
+typedef struct lmc___ctl	lmc_ctl_t;
 
-#define lmc_csrptr_t    unsigned long
+#define lmc_csrptr_t		unsigned long
 
-#define LMC_REG_RANGE 0x80
+#define LMC_REG_RANGE		0x80
 
-#define LMC_PRINTF_FMT  "%s"
-#define LMC_PRINTF_ARGS	(sc->lmc_device->name)
+#define LMC_PRINTF_FMT		"%s"
+#define LMC_PRINTF_ARGS		(sc->lmc_device->name)
 
-#define TX_TIMEOUT (2*HZ)
+#define TX_TIMEOUT		(2*HZ)
 
-#define LMC_TXDESCS            32
-#define LMC_RXDESCS            32
+#define LMC_TXDESCS		32
+#define LMC_RXDESCS		32
 
-#define LMC_LINK_UP            1
-#define LMC_LINK_DOWN          0
+#define LMC_LINK_UP		1
+#define LMC_LINK_DOWN		0
 
 /* These macros for generic read and write to and from the dec chip */
-#define LMC_CSR_READ(sc, csr) \
-	inl((sc)->lmc_csrs.csr)
-#define LMC_CSR_WRITE(sc, reg, val) \
-	outl((val), (sc)->lmc_csrs.reg)
-
-//#ifdef _LINUX_DELAY_H
-//	#define SLOW_DOWN_IO udelay(2);
-//	#undef __SLOW_DOWN_IO
-//	#define __SLOW_DOWN_IO udelay(2);
-//#endif
+#define LMC_CSR_READ(sc, csr)		inl((sc)->lmc_csrs.csr)
+#define LMC_CSR_WRITE(sc, reg, val)	outl((val), (sc)->lmc_csrs.reg)
 
-#define DELAY(n) SLOW_DOWN_IO
+#define DELAY(n)		SLOW_DOWN_IO
 
-#define lmc_delay() inl(sc->lmc_csrs.csr_9)
+#define lmc_delay()		inl(sc->lmc_csrs.csr_9)
 
 /* This macro sync's up with the mii so that reads and writes can take place */
-#define LMC_MII_SYNC(sc) do {int n=32; while( n >= 0 ) { \
-                LMC_CSR_WRITE((sc), csr_9, 0x20000); \
-		lmc_delay(); \
-		LMC_CSR_WRITE((sc), csr_9, 0x30000); \
-                lmc_delay(); \
-		n--; }} while(0)
+#define LMC_MII_SYNC(sc)					\
+	do {							\
+		int n = 32;					\
+		while (n >= 0) {				\
+			LMC_CSR_WRITE((sc), csr_9, 0x20000);	\
+			lmc_delay();				\
+			LMC_CSR_WRITE((sc), csr_9, 0x30000);	\
+			lmc_delay();				\
+			n--;					\
+		}						\
+	} while (0)
 
 struct lmc_regfile_t {
-    lmc_csrptr_t csr_busmode;                  /* CSR0 */
-    lmc_csrptr_t csr_txpoll;                   /* CSR1 */
-    lmc_csrptr_t csr_rxpoll;                   /* CSR2 */
-    lmc_csrptr_t csr_rxlist;                   /* CSR3 */
-    lmc_csrptr_t csr_txlist;                   /* CSR4 */
-    lmc_csrptr_t csr_status;                   /* CSR5 */
-    lmc_csrptr_t csr_command;                  /* CSR6 */
-    lmc_csrptr_t csr_intr;                     /* CSR7 */
-    lmc_csrptr_t csr_missed_frames;            /* CSR8 */
-    lmc_csrptr_t csr_9;                        /* CSR9 */
-    lmc_csrptr_t csr_10;                       /* CSR10 */
-    lmc_csrptr_t csr_11;                       /* CSR11 */
-    lmc_csrptr_t csr_12;                       /* CSR12 */
-    lmc_csrptr_t csr_13;                       /* CSR13 */
-    lmc_csrptr_t csr_14;                       /* CSR14 */
-    lmc_csrptr_t csr_15;                       /* CSR15 */
+	lmc_csrptr_t csr_busmode;	/* CSR0 */
+	lmc_csrptr_t csr_txpoll;	/* CSR1 */
+	lmc_csrptr_t csr_rxpoll;	/* CSR2 */
+	lmc_csrptr_t csr_rxlist;	/* CSR3 */
+	lmc_csrptr_t csr_txlist;	/* CSR4 */
+	lmc_csrptr_t csr_status;	/* CSR5 */
+	lmc_csrptr_t csr_command;	/* CSR6 */
+	lmc_csrptr_t csr_intr;		/* CSR7 */
+	lmc_csrptr_t csr_missed_frames;	/* CSR8 */
+	lmc_csrptr_t csr_9;		/* CSR9 */
+	lmc_csrptr_t csr_10;		/* CSR10 */
+	lmc_csrptr_t csr_11;		/* CSR11 */
+	lmc_csrptr_t csr_12;		/* CSR12 */
+	lmc_csrptr_t csr_13;		/* CSR13 */
+	lmc_csrptr_t csr_14;		/* CSR14 */
+	lmc_csrptr_t csr_15;		/* CSR15 */
 };
 
-#define csr_enetrom             csr_9   /* 21040 */
-#define csr_reserved            csr_10  /* 21040 */
-#define csr_full_duplex         csr_11  /* 21040 */
-#define csr_bootrom             csr_10  /* 21041/21140A/?? */
-#define csr_gp                  csr_12  /* 21140* */
-#define csr_watchdog            csr_15  /* 21140* */
-#define csr_gp_timer            csr_11  /* 21041/21140* */
-#define csr_srom_mii            csr_9   /* 21041/21140* */
-#define csr_sia_status          csr_12  /* 2104x */
-#define csr_sia_connectivity    csr_13  /* 2104x */
-#define csr_sia_tx_rx           csr_14  /* 2104x */
-#define csr_sia_general         csr_15  /* 2104x */
-
-/* tulip length/control transmit descriptor definitions
- *  used to define bits in the second tulip_desc_t field (length)
- *  for the transmit descriptor -baz */
-
-#define LMC_TDES_FIRST_BUFFER_SIZE       ((u32)(0x000007FF))
-#define LMC_TDES_SECOND_BUFFER_SIZE      ((u32)(0x003FF800))
-#define LMC_TDES_HASH_FILTERING          ((u32)(0x00400000))
-#define LMC_TDES_DISABLE_PADDING         ((u32)(0x00800000))
-#define LMC_TDES_SECOND_ADDR_CHAINED     ((u32)(0x01000000))
-#define LMC_TDES_END_OF_RING             ((u32)(0x02000000))
-#define LMC_TDES_ADD_CRC_DISABLE         ((u32)(0x04000000))
-#define LMC_TDES_SETUP_PACKET            ((u32)(0x08000000))
-#define LMC_TDES_INVERSE_FILTERING       ((u32)(0x10000000))
-#define LMC_TDES_FIRST_SEGMENT           ((u32)(0x20000000))
-#define LMC_TDES_LAST_SEGMENT            ((u32)(0x40000000))
+#define csr_enetrom		csr_9	/* 21040 */
+#define csr_reserved		csr_10	/* 21040 */
+#define csr_full_duplex		csr_11	/* 21040 */
+#define csr_bootrom		csr_10	/* 21041/21140A/?? */
+#define csr_gp			csr_12	/* 21140* */
+#define csr_watchdog		csr_15	/* 21140* */
+#define csr_gp_timer		csr_11	/* 21041/21140* */
+#define csr_srom_mii		csr_9	/* 21041/21140* */
+#define csr_sia_status		csr_12	/* 2104x */
+#define csr_sia_connectivity	csr_13	/* 2104x */
+#define csr_sia_tx_rx		csr_14	/* 2104x */
+#define csr_sia_general		csr_15	/* 2104x */
+
+/* tulip length/control transmit descriptor definitions used to define bits
+   in the second tulip_desc_t field (length) for the transmit descriptor */
+
+#define LMC_TDES_FIRST_BUFFER_SIZE	((u32)(0x000007FF))
+#define LMC_TDES_SECOND_BUFFER_SIZE	((u32)(0x003FF800))
+#define LMC_TDES_HASH_FILTERING		((u32)(0x00400000))
+#define LMC_TDES_DISABLE_PADDING	((u32)(0x00800000))
+#define LMC_TDES_SECOND_ADDR_CHAINED	((u32)(0x01000000))
+#define LMC_TDES_END_OF_RING		((u32)(0x02000000))
+#define LMC_TDES_ADD_CRC_DISABLE	((u32)(0x04000000))
+#define LMC_TDES_SETUP_PACKET		((u32)(0x08000000))
+#define LMC_TDES_INVERSE_FILTERING	((u32)(0x10000000))
+#define LMC_TDES_FIRST_SEGMENT		((u32)(0x20000000))
+#define LMC_TDES_LAST_SEGMENT		((u32)(0x40000000))
 #define LMC_TDES_INTERRUPT_ON_COMPLETION ((u32)(0x80000000))
 
-#define TDES_SECOND_BUFFER_SIZE_BIT_NUMBER  11
-#define TDES_COLLISION_COUNT_BIT_NUMBER     3
+#define TDES_SECOND_BUFFER_SIZE_BIT_NUMBER	11
+#define TDES_COLLISION_COUNT_BIT_NUMBER		3
 
 /* Constants for the RCV descriptor RDES */
 
-#define LMC_RDES_OVERFLOW             ((u32)(0x00000001))
-#define LMC_RDES_CRC_ERROR            ((u32)(0x00000002))
-#define LMC_RDES_DRIBBLING_BIT        ((u32)(0x00000004))
-#define LMC_RDES_REPORT_ON_MII_ERR    ((u32)(0x00000008))
-#define LMC_RDES_RCV_WATCHDOG_TIMEOUT ((u32)(0x00000010))
-#define LMC_RDES_FRAME_TYPE           ((u32)(0x00000020))
-#define LMC_RDES_COLLISION_SEEN       ((u32)(0x00000040))
-#define LMC_RDES_FRAME_TOO_LONG       ((u32)(0x00000080))
-#define LMC_RDES_LAST_DESCRIPTOR      ((u32)(0x00000100))
-#define LMC_RDES_FIRST_DESCRIPTOR     ((u32)(0x00000200))
-#define LMC_RDES_MULTICAST_FRAME      ((u32)(0x00000400))
-#define LMC_RDES_RUNT_FRAME           ((u32)(0x00000800))
-#define LMC_RDES_DATA_TYPE            ((u32)(0x00003000))
-#define LMC_RDES_LENGTH_ERROR         ((u32)(0x00004000))
-#define LMC_RDES_ERROR_SUMMARY        ((u32)(0x00008000))
-#define LMC_RDES_FRAME_LENGTH         ((u32)(0x3FFF0000))
-#define LMC_RDES_OWN_BIT              ((u32)(0x80000000))
-
-#define RDES_FRAME_LENGTH_BIT_NUMBER       16
-
-#define LMC_RDES_ERROR_MASK ( (u32)( \
-	  LMC_RDES_OVERFLOW \
-	| LMC_RDES_DRIBBLING_BIT \
-	| LMC_RDES_REPORT_ON_MII_ERR \
-        | LMC_RDES_COLLISION_SEEN ) )
-
-
-/*
- * Ioctl info
- */
+#define LMC_RDES_OVERFLOW		((u32)(0x00000001))
+#define LMC_RDES_CRC_ERROR		((u32)(0x00000002))
+#define LMC_RDES_DRIBBLING_BIT		((u32)(0x00000004))
+#define LMC_RDES_REPORT_ON_MII_ERR	((u32)(0x00000008))
+#define LMC_RDES_RCV_WATCHDOG_TIMEOUT	((u32)(0x00000010))
+#define LMC_RDES_FRAME_TYPE		((u32)(0x00000020))
+#define LMC_RDES_COLLISION_SEEN		((u32)(0x00000040))
+#define LMC_RDES_FRAME_TOO_LONG		((u32)(0x00000080))
+#define LMC_RDES_LAST_DESCRIPTOR	((u32)(0x00000100))
+#define LMC_RDES_FIRST_DESCRIPTOR	((u32)(0x00000200))
+#define LMC_RDES_MULTICAST_FRAME	((u32)(0x00000400))
+#define LMC_RDES_RUNT_FRAME		((u32)(0x00000800))
+#define LMC_RDES_DATA_TYPE		((u32)(0x00003000))
+#define LMC_RDES_LENGTH_ERROR		((u32)(0x00004000))
+#define LMC_RDES_ERROR_SUMMARY		((u32)(0x00008000))
+#define LMC_RDES_FRAME_LENGTH		((u32)(0x3FFF0000))
+#define LMC_RDES_OWN_BIT		((u32)(0x80000000))
+
+#define RDES_FRAME_LENGTH_BIT_NUMBER	16
+
+#define LMC_RDES_ERROR_MASK ((u32)(LMC_RDES_OVERFLOW |		 \
+				   LMC_RDES_DRIBBLING_BIT |	 \
+				   LMC_RDES_REPORT_ON_MII_ERR |	 \
+				   LMC_RDES_COLLISION_SEEN))
+
+/* Ioctl info */
 
 typedef struct {
-	u32	n;
-	u32	m;
-	u32	v;
-	u32	x;
-	u32	r;
-	u32	f;
-	u32	exact;
+	u32 n;
+	u32 m;
+	u32 v;
+	u32 x;
+	u32 r;
+	u32 f;
+	u32 exact;
 } lmc_av9110_t;
 
-/*
- * Common structure passed to the ioctl code.
- */
+/* Common structure passed to the ioctl code. */
 struct lmc___ctl {
-	u32	cardtype;
-	u32	clock_source;		/* HSSI, T1 */
-	u32	clock_rate;		/* T1 */
-	u32	crc_length;
-	u32	cable_length;		/* DS3 */
-	u32	scrambler_onoff;	/* DS3 */
-	u32	cable_type;		/* T1 */
-	u32	keepalive_onoff;	/* protocol */
-	u32	ticks;			/* ticks/sec */
+	u32 cardtype;
+	u32 clock_source;		/* HSSI, T1 */
+	u32 clock_rate;			/* T1 */
+	u32 crc_length;
+	u32 cable_length;		/* DS3 */
+	u32 scrambler_onoff;		/* DS3 */
+	u32 cable_type;			/* T1 */
+	u32 keepalive_onoff;		/* protocol */
+	u32 ticks;			/* ticks/sec */
 	union {
-		lmc_av9110_t	ssi;
+		lmc_av9110_t ssi;
 	} cardspec;
-	u32       circuit_type;   /* T1 or E1 */
+	u32	circuit_type;		/* T1 or E1 */
 };
 
 
 /*
- * Carefull, look at the data sheet, there's more to this
- * structure than meets the eye.  It should probably be:
- *
- * struct tulip_desc_t {
- *         u8  own:1;
- *         u32 status:31;
- *         u32 control:10;
- *         u32 buffer1;
- *         u32 buffer2;
- * };
- * You could also expand status control to provide more bit information
- */
+  Carefull, look at the data sheet, there's more to this structure than meets
+  the eye.  It should probably be:
+
+  struct tulip_desc_t {
+	u8 own:1;
+	u32 status:31;
+	u32 control:10;
+	u32 buffer1;
+	u32 buffer2;
+  };
+  You could also expand status control to provide more bit information */
 
 struct tulip_desc_t {
 	s32 status;
@@ -200,271 +187,254 @@ struct tulip_desc_t {
 	u32 buffer2;
 };
 
-/*
- * media independent methods to check on media status, link, light LEDs,
- * etc.
- */
+/* media independent methods to check on media status, link, light LEDs, etc. */
 struct lmc___media {
-	void	(* init)(lmc_softc_t * const);
-	void	(* defaults)(lmc_softc_t * const);
-	void	(* set_status)(lmc_softc_t * const, lmc_ctl_t *);
-	void	(* set_clock_source)(lmc_softc_t * const, int);
-	void	(* set_speed)(lmc_softc_t * const, lmc_ctl_t *);
-	void	(* set_cable_length)(lmc_softc_t * const, int);
-	void	(* set_scrambler)(lmc_softc_t * const, int);
-	int	(* get_link_status)(lmc_softc_t * const);
-	void	(* set_link_status)(lmc_softc_t * const, int);
-	void	(* set_crc_length)(lmc_softc_t * const, int);
-        void    (* set_circuit_type)(lmc_softc_t * const, int);
-        void	(* watchdog)(lmc_softc_t * const);
+	void (* init)(lmc_softc_t * const);
+	void (* defaults)(lmc_softc_t * const);
+	void (* set_status)(lmc_softc_t * const, lmc_ctl_t *);
+	void (* set_clock_source)(lmc_softc_t * const, int);
+	void (* set_speed)(lmc_softc_t * const, lmc_ctl_t *);
+	void (* set_cable_length)(lmc_softc_t * const, int);
+	void (* set_scrambler)(lmc_softc_t * const, int);
+	int (* get_link_status)(lmc_softc_t * const);
+	void (* set_link_status)(lmc_softc_t * const, int);
+	void (* set_crc_length)(lmc_softc_t * const, int);
+	void (* set_circuit_type)(lmc_softc_t * const, int);
+	void (* watchdog)(lmc_softc_t * const);
 };
 
-
-#define STATCHECK     0xBEEFCAFE
-
-struct lmc_extra_statistics
-{
-	u32       version_size;
-	u32       lmc_cardtype;
-
-	u32       tx_ProcTimeout;
-	u32       tx_IntTimeout;
-	u32       tx_NoCompleteCnt;
-	u32       tx_MaxXmtsB4Int;
-	u32       tx_TimeoutCnt;
-	u32       tx_OutOfSyncPtr;
-	u32       tx_tbusy0;
-	u32       tx_tbusy1;
-	u32       tx_tbusy_calls;
-	u32       resetCount;
-	u32       lmc_txfull;
-	u32       tbusy;
-	u32       dirtyTx;
-	u32       lmc_next_tx;
-	u32       otherTypeCnt;
-	u32       lastType;
-	u32       lastTypeOK;
-	u32       txLoopCnt;
-	u32       usedXmtDescripCnt;
-	u32       txIndexCnt;
-	u32       rxIntLoopCnt;
-
-	u32       rx_SmallPktCnt;
-	u32       rx_BadPktSurgeCnt;
-	u32       rx_BuffAllocErr;
-	u32       tx_lossOfClockCnt;
+#define STATCHECK 0xBEEFCAFE
+
+struct lmc_extra_statistics {
+	u32 version_size;
+	u32 lmc_cardtype;
+
+	u32 tx_ProcTimeout;
+	u32 tx_IntTimeout;
+	u32 tx_NoCompleteCnt;
+	u32 tx_MaxXmtsB4Int;
+	u32 tx_TimeoutCnt;
+	u32 tx_OutOfSyncPtr;
+	u32 tx_tbusy0;
+	u32 tx_tbusy1;
+	u32 tx_tbusy_calls;
+	u32 resetCount;
+	u32 lmc_txfull;
+	u32 tbusy;
+	u32 dirtyTx;
+	u32 lmc_next_tx;
+	u32 otherTypeCnt;
+	u32 lastType;
+	u32 lastTypeOK;
+	u32 txLoopCnt;
+	u32 usedXmtDescripCnt;
+	u32 txIndexCnt;
+	u32 rxIntLoopCnt;
+
+	u32 rx_SmallPktCnt;
+	u32 rx_BadPktSurgeCnt;
+	u32 rx_BuffAllocErr;
+	u32 tx_lossOfClockCnt;
 
 	/* T1 error counters */
-	u32       framingBitErrorCount;
-	u32       lineCodeViolationCount;
+	u32 framingBitErrorCount;
+	u32 lineCodeViolationCount;
 
-	u32       lossOfFrameCount;
-	u32       changeOfFrameAlignmentCount;
-	u32       severelyErroredFrameCount;
+	u32 lossOfFrameCount;
+	u32 changeOfFrameAlignmentCount;
+	u32 severelyErroredFrameCount;
 
-	u32       check;
+	u32 check;
 };
 
 typedef struct lmc_xinfo {
-	u32       Magic0;                         /* BEEFCAFE */
+	u32 Magic0;		/* BEEFCAFE */
 
-	u32       PciCardType;
-	u32       PciSlotNumber;          /* PCI slot number       */
+	u32 PciCardType;
+	u32 PciSlotNumber;	/* PCI slot number	*/
 
-	u16	       DriverMajorVersion;
-	u16	       DriverMinorVersion;
-	u16	       DriverSubVersion;
+	u16 DriverMajorVersion;
+	u16 DriverMinorVersion;
+	u16 DriverSubVersion;
 
-	u16	       XilinxRevisionNumber;
-	u16	       MaxFrameSize;
+	u16 XilinxRevisionNumber;
+	u16 MaxFrameSize;
 
-	u16     	  t1_alarm1_status;
-	u16       	t1_alarm2_status;
+	u16 t1_alarm1_status;
+	u16 t1_alarm2_status;
 
-	int             link_status;
-	u32       mii_reg16;
+	int link_status;
+	u32 mii_reg16;
 
-	u32       Magic1;                         /* DEADBEEF */
+	u32 Magic1;		/* DEADBEEF */
 } LMC_XINFO;
 
 
-/*
- * forward decl
- */
+/* forward decl */
 struct lmc___softc {
-	char                   *name;
-	u8			board_idx;
+	char *name;
+	u8 board_idx;
 	struct lmc_extra_statistics extra_stats;
-	struct net_device      *lmc_device;
-
-	int                     hang, rxdesc, bad_packet, some_counter;
-	u32  	         	txgo;
-	struct lmc_regfile_t	lmc_csrs;
-	volatile u32		lmc_txtick;
-	volatile u32		lmc_rxtick;
-	u32			lmc_flags;
-	u32			lmc_intrmask;	/* our copy of csr_intr */
-	u32			lmc_cmdmode;	/* our copy of csr_cmdmode */
-	u32			lmc_busmode;	/* our copy of csr_busmode */
-	u32			lmc_gpio_io;	/* state of in/out settings */
-	u32			lmc_gpio;	/* state of outputs */
-	struct sk_buff*		lmc_txq[LMC_TXDESCS];
-	struct sk_buff*		lmc_rxq[LMC_RXDESCS];
-	volatile
-	struct tulip_desc_t	lmc_rxring[LMC_RXDESCS];
-	volatile
-	struct tulip_desc_t	lmc_txring[LMC_TXDESCS];
-	unsigned int		lmc_next_rx, lmc_next_tx;
-	volatile
-	unsigned int		lmc_taint_tx, lmc_taint_rx;
-	int			lmc_tx_start, lmc_txfull;
-	int			lmc_txbusy;
-	u16			lmc_miireg16;
-	int			lmc_ok;
-	int			last_link_status;
-	int			lmc_cardtype;
-	u32               	last_frameerr;
-	lmc_media_t	       *lmc_media;
-	struct timer_list	timer;
-	lmc_ctl_t		ictl;
-	u32			TxDescriptControlInit;
-
-	int                     tx_TimeoutInd; /* additional driver state */
-	int                     tx_TimeoutDisplay;
-	unsigned int		lastlmc_taint_tx;
-	int                     lasttx_packets;
-	u32			tx_clockState;
-	u32			lmc_crcSize;
-	LMC_XINFO		lmc_xinfo;
-	char                    lmc_yel, lmc_blue, lmc_red; /* for T1 and DS3 */
-	char                    lmc_timing; /* for HSSI and SSI */
-	int                     got_irq;
-
-	char                    last_led_err[4];
-
-	u32                     last_int;
-	u32                     num_int;
-
-	spinlock_t              lmc_lock;
-	u16			if_type;       /* HDLC/PPP or NET */
-
-	/* Failure cases */
-	u8			failed_ring;
-	u8			failed_recv_alloc;
-
-	/* Structure check */
-	u32                     check;
+	struct net_device *lmc_device;
+
+	int hang, rxdesc, bad_packet, some_counter;
+	u32 txgo;
+	struct lmc_regfile_t lmc_csrs;
+	volatile u32 lmc_txtick;
+	volatile u32 lmc_rxtick;
+	u32 lmc_flags;
+	u32 lmc_intrmask;	/* our copy of csr_intr */
+	u32 lmc_cmdmode;	/* our copy of csr_cmdmode */
+	u32 lmc_busmode;	/* our copy of csr_busmode */
+	u32 lmc_gpio_io;	/* state of in/out settings */
+	u32 lmc_gpio;		/* state of outputs */
+	struct sk_buff *lmc_txq[LMC_TXDESCS];
+	struct sk_buff *lmc_rxq[LMC_RXDESCS];
+	volatile struct tulip_desc_t lmc_rxring[LMC_RXDESCS];
+	volatile struct tulip_desc_t lmc_txring[LMC_TXDESCS];
+	unsigned int lmc_next_rx, lmc_next_tx;
+	volatile unsigned int lmc_taint_tx, lmc_taint_rx;
+	int lmc_tx_start, lmc_txfull;
+	int lmc_txbusy;
+	u16 lmc_miireg16;
+	int lmc_ok;
+	int last_link_status;
+	int lmc_cardtype;
+	u32 last_frameerr;
+	lmc_media_t *lmc_media;
+	struct timer_list timer;
+	lmc_ctl_t ictl;
+	u32 TxDescriptControlInit;
+
+	int tx_TimeoutInd;		/* additional driver state */
+	int tx_TimeoutDisplay;
+	unsigned int lastlmc_taint_tx;
+	int lasttx_packets;
+	u32 tx_clockState;
+	u32 lmc_crcSize;
+	LMC_XINFO lmc_xinfo;
+	char lmc_yel, lmc_blue, lmc_red; /* for T1 and DS3 */
+	char lmc_timing;		/* for HSSI and SSI */
+	int got_irq;
+
+	char last_led_err[4];
+
+	u32 last_int;
+	u32 num_int;
+
+	spinlock_t lmc_lock;
+	u16 if_type;			/* HDLC/PPP or NET */
+
+	u8 failed_ring;			/* Failure cases */
+	u8 failed_recv_alloc;
+
+
+	u32 check;			/* Structure check */
 };
 
-#define LMC_PCI_TIME 1
-#define LMC_EXT_TIME 0
+#define LMC_PCI_TIME		1
+#define LMC_EXT_TIME		0
 
-#define PKT_BUF_SZ              1542  /* was 1536 */
+#define PKT_BUF_SZ		1542
 
 /* CSR5 settings */
-#define TIMER_INT     0x00000800
-#define TP_LINK_FAIL  0x00001000
-#define TP_LINK_PASS  0x00000010
-#define NORMAL_INT    0x00010000
-#define ABNORMAL_INT  0x00008000
-#define RX_JABBER_INT 0x00000200
-#define RX_DIED       0x00000100
-#define RX_NOBUFF     0x00000080
-#define RX_INT        0x00000040
-#define TX_FIFO_UNDER 0x00000020
-#define TX_JABBER     0x00000008
-#define TX_NOBUFF     0x00000004
-#define TX_DIED       0x00000002
-#define TX_INT        0x00000001
+#define TIMER_INT		0x00000800
+#define TP_LINK_FAIL		0x00001000
+#define TP_LINK_PASS		0x00000010
+#define NORMAL_INT		0x00010000
+#define ABNORMAL_INT		0x00008000
+#define RX_JABBER_INT		0x00000200
+#define RX_DIED			0x00000100
+#define RX_NOBUFF		0x00000080
+#define RX_INT			0x00000040
+#define TX_FIFO_UNDER		0x00000020
+#define TX_JABBER		0x00000008
+#define TX_NOBUFF		0x00000004
+#define TX_DIED			0x00000002
+#define TX_INT			0x00000001
 
 /* CSR6 settings */
-#define OPERATION_MODE  0x00000200 /* Full Duplex      */
-#define PROMISC_MODE    0x00000040 /* Promiscuous Mode */
-#define RECIEVE_ALL     0x40000000 /* Recieve All      */
-#define PASS_BAD_FRAMES 0x00000008 /* Pass Bad Frames  */
+#define OPERATION_MODE		0x00000200 /* Full Duplex */
+#define PROMISC_MODE		0x00000040 /* Promiscuous Mode */
+#define RECIEVE_ALL		0x40000000 /* Recieve All */
+#define PASS_BAD_FRAMES		0x00000008 /* Pass Bad Frames */
 
-/* Dec control registers  CSR6 as well */
-#define LMC_DEC_ST 0x00002000
-#define LMC_DEC_SR 0x00000002
+/* Dec control registers. CSR6 as well */
+#define LMC_DEC_ST		0x00002000
+#define LMC_DEC_SR		0x00000002
 
 /* CSR15 settings */
-#define RECV_WATCHDOG_DISABLE 0x00000010
-#define JABBER_DISABLE        0x00000001
+#define RECV_WATCHDOG_DISABLE	0x00000010
+#define JABBER_DISABLE		0x00000001
 
 /* More settings */
-/*
- * aSR6 -- Command (Operation Mode) Register
- */
-#define TULIP_CMD_RECEIVEALL    0x40000000L /* (RW)  Receivel all frames? */
-#define TULIP_CMD_MUSTBEONE     0x02000000L /* (RW)  Must Be One (21140) */
-#define TULIP_CMD_TXTHRSHLDCTL  0x00400000L /* (RW)  Transmit Threshold Mode (21140) */
-#define TULIP_CMD_STOREFWD      0x00200000L /* (RW)  Store and Foward (21140) */
-#define TULIP_CMD_NOHEARTBEAT   0x00080000L /* (RW)  No Heartbeat (21140) */
-#define TULIP_CMD_PORTSELECT    0x00040000L /* (RW)  Post Select (100Mb) (21140) */
-#define TULIP_CMD_FULLDUPLEX    0x00000200L /* (RW)  Full Duplex Mode */
-#define TULIP_CMD_OPERMODE      0x00000C00L /* (RW)  Operating Mode */
-#define TULIP_CMD_PROMISCUOUS   0x00000041L /* (RW)  Promiscuous Mode */
-#define TULIP_CMD_PASSBADPKT    0x00000008L /* (RW)  Pass Bad Frames */
-#define TULIP_CMD_THRESHOLDCTL  0x0000C000L /* (RW)  Threshold Control */
-
-#define TULIP_GP_PINSET         0x00000100L
-#define TULIP_BUSMODE_SWRESET   0x00000001L
+/* aSR6 -- Command (Operation Mode) Register */
+#define TULIP_CMD_RECEIVEALL	0x40000000L /* (RW) Receivel all frames? */
+#define TULIP_CMD_MUSTBEONE	0x02000000L /* (RW) Must Be One (21140) */
+#define TULIP_CMD_TXTHRSHLDCTL	0x00400000L /* (RW) Transmit Threshold Mode (21140) */
+#define TULIP_CMD_STOREFWD	0x00200000L /* (RW) Store and Foward (21140) */
+#define TULIP_CMD_NOHEARTBEAT	0x00080000L /* (RW) No Heartbeat (21140) */
+#define TULIP_CMD_PORTSELECT	0x00040000L /* (RW) Post Select (100Mb) (21140) */
+#define TULIP_CMD_FULLDUPLEX	0x00000200L /* (RW) Full Duplex Mode */
+#define TULIP_CMD_OPERMODE	0x00000C00L /* (RW) Operating Mode */
+#define TULIP_CMD_PROMISCUOUS	0x00000041L /* (RW) Promiscuous Mode */
+#define TULIP_CMD_PASSBADPKT	0x00000008L /* (RW) Pass Bad Frames */
+#define TULIP_CMD_THRESHOLDCTL	0x0000C000L /* (RW) Threshold Control */
+
+#define TULIP_GP_PINSET		0x00000100L
+#define TULIP_BUSMODE_SWRESET	0x00000001L
 #define TULIP_WATCHDOG_TXDISABLE 0x00000001L
 #define TULIP_WATCHDOG_RXDISABLE 0x00000010L
 
-#define TULIP_STS_NORMALINTR    0x00010000L /* (RW)  Normal Interrupt */
-#define TULIP_STS_ABNRMLINTR    0x00008000L /* (RW)  Abnormal Interrupt */
-#define TULIP_STS_ERI           0x00004000L /* (RW)  Early Receive Interrupt */
-#define TULIP_STS_SYSERROR      0x00002000L /* (RW)  System Error */
-#define TULIP_STS_GTE           0x00000800L /* (RW)  General Pupose Timer Exp */
-#define TULIP_STS_ETI           0x00000400L /* (RW)  Early Transmit Interrupt */
-#define TULIP_STS_RXWT          0x00000200L /* (RW)  Receiver Watchdog Timeout */
-#define TULIP_STS_RXSTOPPED     0x00000100L /* (RW)  Receiver Process Stopped */
-#define TULIP_STS_RXNOBUF       0x00000080L /* (RW)  Receive Buf Unavail */
-#define TULIP_STS_RXINTR        0x00000040L /* (RW)  Receive Interrupt */
-#define TULIP_STS_TXUNDERFLOW   0x00000020L /* (RW)  Transmit Underflow */
-#define TULIP_STS_TXJABER       0x00000008L /* (RW)  Jabber timeout */
-#define TULIP_STS_TXNOBUF       0x00000004L
-#define TULIP_STS_TXSTOPPED     0x00000002L /* (RW)  Transmit Process Stopped */
-#define TULIP_STS_TXINTR        0x00000001L /* (RW)  Transmit Interrupt */
-
-#define TULIP_STS_RXS_STOPPED   0x00000000L /*        000 - Stopped */
-
-#define TULIP_STS_RXSTOPPED     0x00000100L             /* (RW)  Receive Process Stopped */
-#define TULIP_STS_RXNOBUF       0x00000080L
-
-#define TULIP_CMD_TXRUN         0x00002000L /* (RW)  Start/Stop Transmitter */
-#define TULIP_CMD_RXRUN         0x00000002L /* (RW)  Start/Stop Receive Filtering */
-#define TULIP_DSTS_TxDEFERRED   0x00000001      /* Initially Deferred */
-#define TULIP_DSTS_OWNER        0x80000000      /* Owner (1 = 21040) */
-#define TULIP_DSTS_RxMIIERR     0x00000008
-#define LMC_DSTS_ERRSUM         (TULIP_DSTS_RxMIIERR)
-
-#define TULIP_DEFAULT_INTR_MASK  (TULIP_STS_NORMALINTR \
-  | TULIP_STS_RXINTR       \
-  | TULIP_STS_TXINTR     \
-  | TULIP_STS_ABNRMLINTR \
-  | TULIP_STS_SYSERROR   \
-  | TULIP_STS_TXSTOPPED  \
-  | TULIP_STS_TXUNDERFLOW\
-  | TULIP_STS_RXSTOPPED )
-
-#define DESC_OWNED_BY_SYSTEM   ((u32)(0x00000000))
-#define DESC_OWNED_BY_DC21X4   ((u32)(0x80000000))
+#define TULIP_STS_NORMALINTR	0x00010000L /* (RW) Normal Interrupt */
+#define TULIP_STS_ABNRMLINTR	0x00008000L /* (RW) Abnormal Interrupt */
+#define TULIP_STS_ERI		0x00004000L /* (RW) Early Receive Interrupt */
+#define TULIP_STS_SYSERROR	0x00002000L /* (RW) System Error */
+#define TULIP_STS_GTE		0x00000800L /* (RW) General Pupose Timer Exp */
+#define TULIP_STS_ETI		0x00000400L /* (RW) Early Transmit Interrupt */
+#define TULIP_STS_RXWT		0x00000200L /* (RW) Receiver Watchdog Timeout */
+#define TULIP_STS_RXSTOPPED	0x00000100L /* (RW) Receiver Process Stopped */
+#define TULIP_STS_RXNOBUF	0x00000080L /* (RW) Receive Buf Unavail */
+#define TULIP_STS_RXINTR	0x00000040L /* (RW) Receive Interrupt */
+#define TULIP_STS_TXUNDERFLOW	0x00000020L /* (RW) Transmit Underflow */
+#define TULIP_STS_TXJABER	0x00000008L /* (RW) Jabber timeout */
+#define TULIP_STS_TXNOBUF	0x00000004L
+#define TULIP_STS_TXSTOPPED	0x00000002L /* (RW) Transmit Process Stopped */
+#define TULIP_STS_TXINTR	0x00000001L /* (RW) Transmit Interrupt */
+
+#define TULIP_STS_RXS_STOPPED	0x00000000L /*	000 - Stopped */
+
+#define TULIP_STS_RXSTOPPED	0x00000100L /* (RW) Receive Process Stopped */
+#define TULIP_STS_RXNOBUF	0x00000080L
+
+#define TULIP_CMD_TXRUN		0x00002000L /* (RW) Start/Stop Transmitter */
+#define TULIP_CMD_RXRUN		0x00000002L /* (RW) Start/Stop Receive Filtering */
+#define TULIP_DSTS_TxDEFERRED	0x00000001	/* Initially Deferred */
+#define TULIP_DSTS_OWNER	0x80000000	/* Owner (1 = 21040) */
+#define TULIP_DSTS_RxMIIERR	0x00000008
+#define LMC_DSTS_ERRSUM		(TULIP_DSTS_RxMIIERR)
+
+#define TULIP_DEFAULT_INTR_MASK	(TULIP_STS_NORMALINTR | TULIP_STS_RXINTR | \
+				 TULIP_STS_TXINTR | TULIP_STS_ABNRMLINTR | \
+				 TULIP_STS_SYSERROR | TULIP_STS_TXSTOPPED | \
+				 TULIP_STS_TXUNDERFLOW | TULIP_STS_RXSTOPPED)
+
+#define DESC_OWNED_BY_SYSTEM	((u32)(0x00000000))
+#define DESC_OWNED_BY_DC21X4	((u32)(0x80000000))
 
 #ifndef TULIP_CMD_RECEIVEALL
-#define TULIP_CMD_RECEIVEALL 0x40000000L
+#define TULIP_CMD_RECEIVEALL	0x40000000L
 #endif
 
 /* Adapter module number */
-#define LMC_ADAP_HSSI           2
-#define LMC_ADAP_DS3            3
-#define LMC_ADAP_SSI            4
-#define LMC_ADAP_T1             5
+#define LMC_ADAP_HSSI		2
+#define LMC_ADAP_DS3		3
+#define LMC_ADAP_SSI		4
+#define LMC_ADAP_T1		5
 
-#define LMC_MTU 1500
+#define LMC_MTU			1500
 
-#define LMC_CRC_LEN_16 2  /* 16-bit CRC */
-#define LMC_CRC_LEN_32 4
+#define LMC_CRC_LEN_16		2	/* 16-bit CRC */
+#define LMC_CRC_LEN_32		4
 
 #endif /* _LMC_VAR_H_ */
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 02/29] LMC: Remove "lmc_" prefix from source file names.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 01/29] LMC: whitespace and cosmetic fixes Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 03/29] LMC: Remove 3 typedefs Krzysztof Halasa
                   ` (26 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/Makefile                 |    4 ++--
 drivers/net/wan/lmc/{lmc_debug.c => debug.c} |    2 +-
 drivers/net/wan/lmc/{lmc_debug.h => debug.h} |    0
 drivers/net/wan/lmc/{lmc_ioctl.h => ioctl.h} |    0
 drivers/net/wan/lmc/lmc.h                    |    2 +-
 drivers/net/wan/lmc/{lmc_main.c => main.c}   |    8 ++++----
 drivers/net/wan/lmc/{lmc_media.c => media.c} |    6 +++---
 drivers/net/wan/lmc/{lmc_proto.c => proto.c} |    8 ++++----
 drivers/net/wan/lmc/{lmc_proto.h => proto.h} |    0
 drivers/net/wan/lmc/{lmc_var.h => var.h}     |    0
 10 files changed, 15 insertions(+), 15 deletions(-)
 rename drivers/net/wan/lmc/{lmc_debug.c => debug.c} (98%)
 rename drivers/net/wan/lmc/{lmc_debug.h => debug.h} (100%)
 rename drivers/net/wan/lmc/{lmc_ioctl.h => ioctl.h} (100%)
 rename drivers/net/wan/lmc/{lmc_main.c => main.c} (99%)
 rename drivers/net/wan/lmc/{lmc_media.c => media.c} (99%)
 rename drivers/net/wan/lmc/{lmc_proto.c => proto.c} (97%)
 rename drivers/net/wan/lmc/{lmc_proto.h => proto.h} (100%)
 rename drivers/net/wan/lmc/{lmc_var.h => var.h} (100%)

diff --git a/drivers/net/wan/lmc/Makefile b/drivers/net/wan/lmc/Makefile
index dabdcfe..2c14b98 100644
--- a/drivers/net/wan/lmc/Makefile
+++ b/drivers/net/wan/lmc/Makefile
@@ -1,11 +1,11 @@
 #
-# Makefile for the Lan Media 21140 based WAN cards
+# Makefile for the Lan Media/SBE 21140-based WAN cards
 # Specifically the 1000,1200,5200,5245
 #
 
 obj-$(CONFIG_LANMEDIA) += lmc.o
 
-lmc-objs := lmc_debug.o lmc_media.o lmc_main.o lmc_proto.o
+lmc-objs := debug.o media.o main.o proto.o
 
 # Like above except every packet gets echoed to KERN_DEBUG
 # in hex
diff --git a/drivers/net/wan/lmc/lmc_debug.c b/drivers/net/wan/lmc/debug.c
similarity index 98%
rename from drivers/net/wan/lmc/lmc_debug.c
rename to drivers/net/wan/lmc/debug.c
index 35a8610..0abae05 100644
--- a/drivers/net/wan/lmc/lmc_debug.c
+++ b/drivers/net/wan/lmc/debug.c
@@ -1,7 +1,7 @@
 #include <linux/types.h>
 #include <linux/netdevice.h>
 #include <linux/interrupt.h>
-#include "lmc_debug.h"
+#include "debug.h"
 
 /*
  * Prints out len, max to 80 octets using printk, 20 per line
diff --git a/drivers/net/wan/lmc/lmc_debug.h b/drivers/net/wan/lmc/debug.h
similarity index 100%
rename from drivers/net/wan/lmc/lmc_debug.h
rename to drivers/net/wan/lmc/debug.h
diff --git a/drivers/net/wan/lmc/lmc_ioctl.h b/drivers/net/wan/lmc/ioctl.h
similarity index 100%
rename from drivers/net/wan/lmc/lmc_ioctl.h
rename to drivers/net/wan/lmc/ioctl.h
diff --git a/drivers/net/wan/lmc/lmc.h b/drivers/net/wan/lmc/lmc.h
index 6d3af03..9742650 100644
--- a/drivers/net/wan/lmc/lmc.h
+++ b/drivers/net/wan/lmc/lmc.h
@@ -1,7 +1,7 @@
 #ifndef _LMC_H_
 #define _LMC_H_
 
-#include "lmc_var.h"
+#include "var.h"
 
 int lmc_probe(struct net_device *dev);
 unsigned lmc_mii_readreg(lmc_softc_t * const sc, unsigned
diff --git a/drivers/net/wan/lmc/lmc_main.c b/drivers/net/wan/lmc/main.c
similarity index 99%
rename from drivers/net/wan/lmc/lmc_main.c
rename to drivers/net/wan/lmc/main.c
index 3c7f23a..e22aa0c 100644
--- a/drivers/net/wan/lmc/lmc_main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -69,10 +69,10 @@
 #define DRIVER_VERSION  ((DRIVER_MAJOR_VERSION << 8) + DRIVER_MINOR_VERSION)
 
 #include "lmc.h"
-#include "lmc_var.h"
-#include "lmc_ioctl.h"
-#include "lmc_debug.h"
-#include "lmc_proto.h"
+#include "var.h"
+#include "ioctl.h"
+#include "debug.h"
+#include "proto.h"
 
 static int LMC_PKT_BUF_SZ = 1542;
 
diff --git a/drivers/net/wan/lmc/lmc_media.c b/drivers/net/wan/lmc/media.c
similarity index 99%
rename from drivers/net/wan/lmc/lmc_media.c
rename to drivers/net/wan/lmc/media.c
index a3aa2a0..7a545f8 100644
--- a/drivers/net/wan/lmc/lmc_media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -17,9 +17,9 @@
 #include <asm/processor.h>   /* Processor type for cache alignment. */
 #include <asm/dma.h>
 #include "lmc.h"
-#include "lmc_var.h"
-#include "lmc_ioctl.h"
-#include "lmc_debug.h"
+#include "var.h"
+#include "ioctl.h"
+#include "debug.h"
 
 #define CONFIG_LMC_IGNORE_HARDWARE_HANDSHAKE 1
 
diff --git a/drivers/net/wan/lmc/lmc_proto.c b/drivers/net/wan/lmc/proto.c
similarity index 97%
rename from drivers/net/wan/lmc/lmc_proto.c
rename to drivers/net/wan/lmc/proto.c
index ac1fef5..d6c0cc2 100644
--- a/drivers/net/wan/lmc/lmc_proto.c
+++ b/drivers/net/wan/lmc/proto.c
@@ -41,10 +41,10 @@
 #include <linux/smp.h>
 
 #include "lmc.h"
-#include "lmc_var.h"
-#include "lmc_debug.h"
-#include "lmc_ioctl.h"
-#include "lmc_proto.h"
+#include "var.h"
+#include "debug.h"
+#include "ioctl.h"
+#include "proto.h"
 
 void lmc_proto_attach(lmc_softc_t *sc)
 {
diff --git a/drivers/net/wan/lmc/lmc_proto.h b/drivers/net/wan/lmc/proto.h
similarity index 100%
rename from drivers/net/wan/lmc/lmc_proto.h
rename to drivers/net/wan/lmc/proto.h
diff --git a/drivers/net/wan/lmc/lmc_var.h b/drivers/net/wan/lmc/var.h
similarity index 100%
rename from drivers/net/wan/lmc/lmc_var.h
rename to drivers/net/wan/lmc/var.h
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 03/29] LMC: Remove 3 typedefs.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 01/29] LMC: whitespace and cosmetic fixes Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 02/29] LMC: Remove "lmc_" prefix from source file names Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 04/29] LMC: fix initialization messages Krzysztof Halasa
                   ` (25 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/lmc.h   |   27 +++----
 drivers/net/wan/lmc/main.c  |   63 ++++++++--------
 drivers/net/wan/lmc/media.c |  178 +++++++++++++++++++++---------------------
 drivers/net/wan/lmc/proto.c |   12 ++--
 drivers/net/wan/lmc/proto.h |   16 ++--
 drivers/net/wan/lmc/var.h   |   43 +++++------
 6 files changed, 168 insertions(+), 171 deletions(-)

diff --git a/drivers/net/wan/lmc/lmc.h b/drivers/net/wan/lmc/lmc.h
index 9742650..c3464b6 100644
--- a/drivers/net/wan/lmc/lmc.h
+++ b/drivers/net/wan/lmc/lmc.h
@@ -4,23 +4,22 @@
 #include "var.h"
 
 int lmc_probe(struct net_device *dev);
-unsigned lmc_mii_readreg(lmc_softc_t * const sc, unsigned
-			 devaddr, unsigned regno);
-void lmc_mii_writereg(lmc_softc_t * const sc, unsigned devaddr,
+unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
+			 unsigned regno);
+void lmc_mii_writereg(struct card * const sc, unsigned devaddr,
 		      unsigned regno, unsigned data);
-void lmc_led_on(lmc_softc_t * const, u32);
-void lmc_led_off(lmc_softc_t * const, u32);
-unsigned lmc_mii_readreg(lmc_softc_t * const, unsigned, unsigned);
-void lmc_mii_writereg(lmc_softc_t * const, unsigned, unsigned, unsigned);
-void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits);
-void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits);
-
+void lmc_led_on(struct card * const, u32);
+void lmc_led_off(struct card * const, u32);
+unsigned lmc_mii_readreg(struct card * const, unsigned, unsigned);
+void lmc_mii_writereg(struct card * const, unsigned, unsigned, unsigned);
+void lmc_gpio_mkinput(struct card * const sc, u32 bits);
+void lmc_gpio_mkoutput(struct card * const sc, u32 bits);
 int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
 
-extern lmc_media_t lmc_ds3_media;
-extern lmc_media_t lmc_ssi_media;
-extern lmc_media_t lmc_t1_media;
-extern lmc_media_t lmc_hssi_media;
+extern struct media lmc_ds3_media;
+extern struct media lmc_ssi_media;
+extern struct media lmc_t1_media;
+extern struct media lmc_hssi_media;
 
 #ifdef _DBG_EVENTLOG
 static void lmcEventLog(u32 EventNum, u32 arg2, u32 arg3);
diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index e22aa0c..4fa75ad 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -94,22 +94,22 @@ static int lmc_open(struct net_device *dev);
 static int lmc_close(struct net_device *dev);
 static struct net_device_stats *lmc_get_stats(struct net_device *dev);
 static irqreturn_t lmc_interrupt(int irq, void *dev_instance);
-static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base,
+static void lmc_initcsrs(struct card * const sc, lmc_csrptr_t csr_base,
 			 size_t csr_size);
-static void lmc_softreset(lmc_softc_t * const);
+static void lmc_softreset(struct card * const);
 static void lmc_running_reset(struct net_device *dev);
 static int lmc_ifdown(struct net_device * const);
 static void lmc_watchdog(unsigned long data);
-static void lmc_reset(lmc_softc_t * const sc);
-static void lmc_dec_reset(lmc_softc_t * const sc);
+static void lmc_reset(struct card * const sc);
+static void lmc_dec_reset(struct card * const sc);
 static void lmc_driver_timeout(struct net_device *dev);
 
 /* linux reserves 16 device specific IOCTLs.  We call them
    LMCIOC* to control various bits of our world. */
 int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
-	lmc_ctl_t ctl;
+	struct card *sc = dev_to_sc(dev);
+	struct control ctl;
 	int ret = -EOPNOTSUPP;
 	u16 regVal;
 	unsigned long flags;
@@ -123,7 +123,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		/* Return current driver state.  Since we keep this up
 		   To date internally, just copy this out to the user. */
 	case LMCIOCGINFO:
-		if (copy_to_user(ifr->ifr_data, &sc->ictl, sizeof(lmc_ctl_t)))
+		if (copy_to_user(ifr->ifr_data, &sc->ictl, sizeof(struct control)))
 			ret = -EFAULT;
 		else
 			ret = 0;
@@ -140,7 +140,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			break;
 		}
 
-		if (copy_from_user(&ctl, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+		if (copy_from_user(&ctl, ifr->ifr_data, sizeof(struct control))) {
 			ret = -EFAULT;
 			break;
 		}
@@ -280,7 +280,8 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			break;
 		}
 
-		if (copy_from_user(&ctl, ifr->ifr_data, sizeof(lmc_ctl_t))) {
+		if (copy_from_user(&ctl, ifr->ifr_data,
+				   sizeof(struct control))) {
 			ret = -EFAULT;
 			break;
 		}
@@ -608,7 +609,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 static void lmc_watchdog(unsigned long data)
 {
 	struct net_device *dev = (struct net_device *)data;
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	int link_status;
 	u32 ticks;
 	unsigned long flags;
@@ -773,7 +774,7 @@ static const struct net_device_ops lmc_ops = {
 static int __devinit lmc_init_one(struct pci_dev *pdev,
 				  const struct pci_device_id *ent)
 {
-	lmc_softc_t *sc;
+	struct card *sc;
 	struct net_device *dev;
 	u16 subdevice;
 	u16 AdapModelNum;
@@ -797,7 +798,7 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	/*
 	 * Allocate our own device structure
 	 */
-	sc = kzalloc(sizeof(lmc_softc_t), GFP_KERNEL);
+	sc = kzalloc(sizeof(struct card), GFP_KERNEL);
 	if (!sc) {
 		err = -ENOMEM;
 		goto err_kzalloc;
@@ -952,7 +953,7 @@ static void __devexit lmc_remove_one(struct pci_dev *pdev)
    the addresses */
 static int lmc_open(struct net_device *dev)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	int err;
 
 	lmc_trace(dev, "lmc_open in");
@@ -1050,7 +1051,7 @@ static int lmc_open(struct net_device *dev)
 
 static void lmc_running_reset(struct net_device *dev)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 
 	lmc_trace(dev, "lmc_runnig_reset in");
 
@@ -1085,7 +1086,7 @@ static void lmc_running_reset(struct net_device *dev)
 static int lmc_close(struct net_device *dev)
 {
 	/* not calling release_region() as we should */
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 
 	lmc_trace(dev, "lmc_close in");
 
@@ -1104,7 +1105,7 @@ static int lmc_close(struct net_device *dev)
    When the interface goes down, this is called */
 static int lmc_ifdown(struct net_device *dev)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	u32 csr6;
 	int i;
 
@@ -1167,7 +1168,7 @@ static int lmc_ifdown(struct net_device *dev)
 static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 {
 	struct net_device *dev = (struct net_device *) dev_instance;
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	u32 csr;
 	int i;
 	s32 stat;
@@ -1342,7 +1343,7 @@ lmc_int_fail_out:
 static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 					struct net_device *dev)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	u32 flag;
 	int entry;
 	unsigned long flags;
@@ -1421,7 +1422,7 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 
 static int lmc_rx(struct net_device *dev)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	int i;
 	int rx_work_limit = LMC_RXDESCS;
 	unsigned int next_rx;
@@ -1606,7 +1607,7 @@ skip_out_of_mem:
 
 static struct net_device_stats *lmc_get_stats(struct net_device *dev)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	unsigned long flags;
 
 	lmc_trace(dev, "lmc_get_stats in");
@@ -1642,7 +1643,7 @@ static void __exit exit_lmc(void)
 module_init(init_lmc);
 module_exit(exit_lmc);
 
-unsigned lmc_mii_readreg(lmc_softc_t * const sc, unsigned devaddr,
+unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
 			 unsigned regno)
 {
 	int i;
@@ -1684,7 +1685,7 @@ unsigned lmc_mii_readreg(lmc_softc_t * const sc, unsigned devaddr,
 	return (retval >> 1) & 0xffff;
 }
 
-void lmc_mii_writereg(lmc_softc_t * const sc, unsigned devaddr, unsigned regno,
+void lmc_mii_writereg(struct card * const sc, unsigned devaddr, unsigned regno,
 		      unsigned data)
 {
 	int i = 32;
@@ -1726,7 +1727,7 @@ void lmc_mii_writereg(lmc_softc_t * const sc, unsigned devaddr, unsigned regno,
 	lmc_trace(sc->lmc_device, "lmc_mii_writereg out");
 }
 
-static void lmc_softreset(lmc_softc_t * const sc)
+static void lmc_softreset(struct card * const sc)
 {
 	int i;
 
@@ -1805,7 +1806,7 @@ static void lmc_softreset(lmc_softc_t * const sc)
 	lmc_trace(sc->lmc_device, "lmc_softreset out");
 }
 
-void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits)
+void lmc_gpio_mkinput(struct card * const sc, u32 bits)
 {
 	lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in");
 	sc->lmc_gpio_io &= ~bits;
@@ -1813,7 +1814,7 @@ void lmc_gpio_mkinput(lmc_softc_t * const sc, u32 bits)
 	lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out");
 }
 
-void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits)
+void lmc_gpio_mkoutput(struct card * const sc, u32 bits)
 {
 	lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in");
 	sc->lmc_gpio_io |= bits;
@@ -1821,7 +1822,7 @@ void lmc_gpio_mkoutput(lmc_softc_t * const sc, u32 bits)
 	lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out");
 }
 
-void lmc_led_on(lmc_softc_t * const sc, u32 led)
+void lmc_led_on(struct card * const sc, u32 led)
 {
 	lmc_trace(sc->lmc_device, "lmc_led_on in");
 	if ((~sc->lmc_miireg16) & led) { /* Already on! */
@@ -1834,7 +1835,7 @@ void lmc_led_on(lmc_softc_t * const sc, u32 led)
 	lmc_trace(sc->lmc_device, "lmc_led_on out");
 }
 
-void lmc_led_off(lmc_softc_t * const sc, u32 led)
+void lmc_led_off(struct card * const sc, u32 led)
 {
 	lmc_trace(sc->lmc_device, "lmc_led_off in");
 	if (sc->lmc_miireg16 & led) { /* Already set don't do anything */
@@ -1847,7 +1848,7 @@ void lmc_led_off(lmc_softc_t * const sc, u32 led)
 	lmc_trace(sc->lmc_device, "lmc_led_off out");
 }
 
-static void lmc_reset(lmc_softc_t * const sc)
+static void lmc_reset(struct card * const sc)
 {
 	lmc_trace(sc->lmc_device, "lmc_reset in");
 	sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
@@ -1877,7 +1878,7 @@ static void lmc_reset(lmc_softc_t * const sc)
 	lmc_trace(sc->lmc_device, "lmc_reset out");
 }
 
-static void lmc_dec_reset(lmc_softc_t * const sc)
+static void lmc_dec_reset(struct card * const sc)
 {
 	u32 val;
 	lmc_trace(sc->lmc_device, "lmc_dec_reset in");
@@ -1926,7 +1927,7 @@ static void lmc_dec_reset(lmc_softc_t * const sc)
 	lmc_trace(sc->lmc_device, "lmc_dec_reset out");
 }
 
-static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base,
+static void lmc_initcsrs(struct card * const sc, lmc_csrptr_t csr_base,
 			 size_t csr_size)
 {
 	lmc_trace(sc->lmc_device, "lmc_initcsrs in");
@@ -1951,7 +1952,7 @@ static void lmc_initcsrs(lmc_softc_t * const sc, lmc_csrptr_t csr_base,
 
 static void lmc_driver_timeout(struct net_device *dev)
 {
-	lmc_softc_t *sc = dev_to_sc(dev);
+	struct card *sc = dev_to_sc(dev);
 	u32 csr6;
 	unsigned long flags;
 
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 7a545f8..8e236b0 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -38,53 +38,53 @@
  */
 
 /* protocol independent method. */
-static void lmc_set_protocol(lmc_softc_t * const, lmc_ctl_t *);
+static void lmc_set_protocol(struct card * const, struct control *);
 
 /* media independent methods to check on media status, link, light LEDs, etc. */
-static void lmc_ds3_init(lmc_softc_t * const);
-static void lmc_ds3_default(lmc_softc_t * const);
-static void lmc_ds3_set_status(lmc_softc_t * const, lmc_ctl_t *);
-static void lmc_ds3_set_100ft(lmc_softc_t * const, int);
-static int lmc_ds3_get_link_status(lmc_softc_t * const);
-static void lmc_ds3_set_crc_length(lmc_softc_t * const, int);
-static void lmc_ds3_set_scram(lmc_softc_t * const, int);
-static void lmc_ds3_watchdog(lmc_softc_t * const);
-
-static void lmc_hssi_init(lmc_softc_t * const);
-static void lmc_hssi_default(lmc_softc_t * const);
-static void lmc_hssi_set_status(lmc_softc_t * const, lmc_ctl_t *);
-static void lmc_hssi_set_clock(lmc_softc_t * const, int);
-static int lmc_hssi_get_link_status(lmc_softc_t * const);
-static void lmc_hssi_set_link_status(lmc_softc_t * const, int);
-static void lmc_hssi_set_crc_length(lmc_softc_t * const, int);
-static void lmc_hssi_watchdog(lmc_softc_t * const);
-
-static void lmc_ssi_init(lmc_softc_t * const);
-static void lmc_ssi_default(lmc_softc_t * const);
-static void lmc_ssi_set_status(lmc_softc_t * const, lmc_ctl_t *);
-static void lmc_ssi_set_clock(lmc_softc_t * const, int);
-static void lmc_ssi_set_speed(lmc_softc_t * const, lmc_ctl_t *);
-static int lmc_ssi_get_link_status(lmc_softc_t * const);
-static void lmc_ssi_set_link_status(lmc_softc_t * const, int);
-static void lmc_ssi_set_crc_length(lmc_softc_t * const, int);
-static void lmc_ssi_watchdog(lmc_softc_t * const);
-
-static void lmc_t1_init(lmc_softc_t * const);
-static void lmc_t1_default(lmc_softc_t * const);
-static void lmc_t1_set_status(lmc_softc_t * const, lmc_ctl_t *);
-static int lmc_t1_get_link_status(lmc_softc_t * const);
-static void lmc_t1_set_circuit_type(lmc_softc_t * const, int);
-static void lmc_t1_set_crc_length(lmc_softc_t * const, int);
-static void lmc_t1_set_clock(lmc_softc_t * const, int);
-static void lmc_t1_watchdog(lmc_softc_t * const);
-
-static void lmc_dummy_set_1(lmc_softc_t * const, int);
-static void lmc_dummy_set2_1(lmc_softc_t * const, lmc_ctl_t *);
-
-static inline void write_av9110_bit(lmc_softc_t *, int);
-static void write_av9110(lmc_softc_t *, u32, u32, u32, u32, u32);
-
-lmc_media_t lmc_ds3_media = {
+static void lmc_ds3_init(struct card * const);
+static void lmc_ds3_default(struct card * const);
+static void lmc_ds3_set_status(struct card * const, struct control *);
+static void lmc_ds3_set_100ft(struct card * const, int);
+static int lmc_ds3_get_link_status(struct card * const);
+static void lmc_ds3_set_crc_length(struct card * const, int);
+static void lmc_ds3_set_scram(struct card * const, int);
+static void lmc_ds3_watchdog(struct card * const);
+
+static void lmc_hssi_init(struct card * const);
+static void lmc_hssi_default(struct card * const);
+static void lmc_hssi_set_status(struct card * const, struct control *);
+static void lmc_hssi_set_clock(struct card * const, int);
+static int lmc_hssi_get_link_status(struct card * const);
+static void lmc_hssi_set_link_status(struct card * const, int);
+static void lmc_hssi_set_crc_length(struct card * const, int);
+static void lmc_hssi_watchdog(struct card * const);
+
+static void lmc_ssi_init(struct card * const);
+static void lmc_ssi_default(struct card * const);
+static void lmc_ssi_set_status(struct card * const, struct control *);
+static void lmc_ssi_set_clock(struct card * const, int);
+static void lmc_ssi_set_speed(struct card * const, struct control *);
+static int lmc_ssi_get_link_status(struct card * const);
+static void lmc_ssi_set_link_status(struct card * const, int);
+static void lmc_ssi_set_crc_length(struct card * const, int);
+static void lmc_ssi_watchdog(struct card * const);
+
+static void lmc_t1_init(struct card * const);
+static void lmc_t1_default(struct card * const);
+static void lmc_t1_set_status(struct card * const, struct control *);
+static int lmc_t1_get_link_status(struct card * const);
+static void lmc_t1_set_circuit_type(struct card * const, int);
+static void lmc_t1_set_crc_length(struct card * const, int);
+static void lmc_t1_set_clock(struct card * const, int);
+static void lmc_t1_watchdog(struct card * const);
+
+static void lmc_dummy_set_1(struct card * const, int);
+static void lmc_dummy_set2_1(struct card * const, struct control *);
+
+static inline void write_av9110_bit(struct card *, int);
+static void write_av9110(struct card *, u32, u32, u32, u32, u32);
+
+struct media lmc_ds3_media = {
 	lmc_ds3_init,		/* special media init stuff */
 	lmc_ds3_default,	/* reset to default state */
 	lmc_ds3_set_status,	/* reset status to state provided */
@@ -99,7 +99,7 @@ lmc_media_t lmc_ds3_media = {
 	lmc_ds3_watchdog
 };
 
-lmc_media_t lmc_hssi_media = {
+struct media lmc_hssi_media = {
 	lmc_hssi_init,		/* special media init stuff */
 	lmc_hssi_default,	/* reset to default state */
 	lmc_hssi_set_status,	/* reset status to state provided */
@@ -114,7 +114,7 @@ lmc_media_t lmc_hssi_media = {
 	lmc_hssi_watchdog
 };
 
-lmc_media_t lmc_ssi_media = {
+struct media lmc_ssi_media = {
 	lmc_ssi_init,		/* special media init stuff */
 	lmc_ssi_default,	/* reset to default state */
 	lmc_ssi_set_status,	/* reset status to state provided */
@@ -129,7 +129,7 @@ lmc_media_t lmc_ssi_media = {
 	lmc_ssi_watchdog
 };
 
-lmc_media_t lmc_t1_media = {
+struct media lmc_t1_media = {
 	lmc_t1_init,		/* special media init stuff */
 	lmc_t1_default,		/* reset to default state */
 	lmc_t1_set_status,	/* reset status to state provided */
@@ -144,23 +144,23 @@ lmc_media_t lmc_t1_media = {
 	lmc_t1_watchdog
 };
 
-static void lmc_dummy_set_1(lmc_softc_t * const sc, int a)
+static void lmc_dummy_set_1(struct card * const sc, int a)
 {
 }
 
-static void lmc_dummy_set2_1(lmc_softc_t * const sc, lmc_ctl_t * a)
+static void lmc_dummy_set2_1(struct card * const sc, struct control * a)
 {
 }
 
 /* HSSI methods */
 
-static void lmc_hssi_init(lmc_softc_t * const sc)
+static void lmc_hssi_init(struct card * const sc)
 {
 	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200;
 	lmc_gpio_mkoutput(sc, LMC_GEP_HSSI_CLOCK);
 }
 
-static void lmc_hssi_default(lmc_softc_t * const sc)
+static void lmc_hssi_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
@@ -171,7 +171,7 @@ static void lmc_hssi_default(lmc_softc_t * const sc)
 
 /* Given a user provided state, set ourselves up to match it.
    This will always reset the card if needed. */
-static void lmc_hssi_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_hssi_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
 		sc->lmc_media->set_clock_source(sc, sc->ictl.clock_source);
@@ -193,7 +193,7 @@ static void lmc_hssi_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 }
 
 /* 1 == internal, 0 == external */
-static void lmc_hssi_set_clock(lmc_softc_t * const sc, int ie)
+static void lmc_hssi_set_clock(struct card * const sc, int ie)
 {
 	int old;
 	old = sc->ictl.clock_source;
@@ -215,14 +215,14 @@ static void lmc_hssi_set_clock(lmc_softc_t * const sc, int ie)
 }
 
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
-static int lmc_hssi_get_link_status(lmc_softc_t * const sc)
+static int lmc_hssi_get_link_status(struct card * const sc)
 {
 	/* We're using the same code as SSI since they're practically
 	   the same */
 	return lmc_ssi_get_link_status(sc);
 }
 
-static void lmc_hssi_set_link_status(lmc_softc_t * const sc, int state)
+static void lmc_hssi_set_link_status(struct card * const sc, int state)
 {
 	if (state == LMC_LINK_UP)
 		sc->lmc_miireg16 |= LMC_MII16_HSSI_TA;
@@ -233,7 +233,7 @@ static void lmc_hssi_set_link_status(lmc_softc_t * const sc, int state)
 }
 
 /* 0 == 16bit, 1 == 32bit */
-static void lmc_hssi_set_crc_length(lmc_softc_t * const sc, int state)
+static void lmc_hssi_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
@@ -248,7 +248,7 @@ static void lmc_hssi_set_crc_length(lmc_softc_t * const sc, int state)
 	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void lmc_hssi_watchdog(lmc_softc_t * const sc)
+static void lmc_hssi_watchdog(struct card * const sc)
 {
 	/* HSSI is blank */
 }
@@ -256,7 +256,7 @@ static void lmc_hssi_watchdog(lmc_softc_t * const sc)
 /* DS3 methods */
 
 /* Set cable length */
-static void lmc_ds3_set_100ft(lmc_softc_t * const sc, int ie)
+static void lmc_ds3_set_100ft(struct card * const sc, int ie)
 {
 	if (ie == LMC_CTL_CABLE_LENGTH_GT_100FT) {
 		sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO;
@@ -268,7 +268,7 @@ static void lmc_ds3_set_100ft(lmc_softc_t * const sc, int ie)
 	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void lmc_ds3_default(lmc_softc_t * const sc)
+static void lmc_ds3_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
@@ -280,7 +280,7 @@ static void lmc_ds3_default(lmc_softc_t * const sc)
 
 /* Given a user provided state, set ourselves up to match it.
    This will always reset the card if needed. */
-static void lmc_ds3_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_ds3_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
 		sc->lmc_media->set_cable_length(sc, sc->ictl.cable_length);
@@ -304,7 +304,7 @@ static void lmc_ds3_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 	lmc_set_protocol(sc, ctl);
 }
 
-static void lmc_ds3_init(lmc_softc_t * const sc)
+static void lmc_ds3_init(struct card * const sc)
 {
 	int i;
 
@@ -334,7 +334,7 @@ static void lmc_ds3_init(lmc_softc_t * const sc)
 }
 
 /* 1 == DS3 payload scrambled, 0 == not scrambled */
-static void lmc_ds3_set_scram(lmc_softc_t * const sc, int ie)
+static void lmc_ds3_set_scram(struct card * const sc, int ie)
 {
 	if (ie == LMC_CTL_ON) {
 		sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM;
@@ -347,7 +347,7 @@ static void lmc_ds3_set_scram(lmc_softc_t * const sc, int ie)
 }
 
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
-static int lmc_ds3_get_link_status(lmc_softc_t * const sc)
+static int lmc_ds3_get_link_status(struct card * const sc)
 {
 	u16 link_status, link_status_11;
 	int ret = 1;
@@ -436,7 +436,7 @@ static int lmc_ds3_get_link_status(lmc_softc_t * const sc)
 }
 
 /* 0 == 16bit, 1 == 32bit */
-static void lmc_ds3_set_crc_length(lmc_softc_t * const sc, int state)
+static void lmc_ds3_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
@@ -451,14 +451,14 @@ static void lmc_ds3_set_crc_length(lmc_softc_t * const sc, int state)
 	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void lmc_ds3_watchdog(lmc_softc_t * const sc)
+static void lmc_ds3_watchdog(struct card * const sc)
 {
 }
 
 
 /* SSI methods */
 
-static void lmc_ssi_init(lmc_softc_t * const sc)
+static void lmc_ssi_init(struct card * const sc)
 {
 	u16 mii17;
 	int cable;
@@ -473,7 +473,7 @@ static void lmc_ssi_init(lmc_softc_t * const sc)
 	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
 }
 
-static void lmc_ssi_default(lmc_softc_t * const sc)
+static void lmc_ssi_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
@@ -488,7 +488,7 @@ static void lmc_ssi_default(lmc_softc_t * const sc)
 
 /* Given a user provided state, set ourselves up to match it.
    This will always reset the card if needed. */
-static void lmc_ssi_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
 		sc->lmc_media->set_clock_source(sc, sc->ictl.clock_source);
@@ -515,7 +515,7 @@ static void lmc_ssi_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 }
 
 /* 1 == internal, 0 == external */
-static void lmc_ssi_set_clock(lmc_softc_t * const sc, int ie)
+static void lmc_ssi_set_clock(struct card * const sc, int ie)
 {
 	int old;
 	old = ie;
@@ -536,9 +536,9 @@ static void lmc_ssi_set_clock(lmc_softc_t * const sc, int ie)
 	}
 }
 
-static void lmc_ssi_set_speed(lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_ssi_set_speed(struct card * const sc, struct control *ctl)
 {
-	lmc_ctl_t *ictl = &sc->ictl;
+	struct control *ictl = &sc->ictl;
 	lmc_av9110_t *av;
 
 	/* original settings for clock rate of 100 Khz (8,25,0,0,2) were
@@ -570,7 +570,7 @@ static void lmc_ssi_set_speed(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 }
 
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
-static int lmc_ssi_get_link_status(lmc_softc_t * const sc)
+static int lmc_ssi_get_link_status(struct card * const sc)
 {
 	u16 link_status;
 	u32 ticks;
@@ -649,7 +649,7 @@ static int lmc_ssi_get_link_status(lmc_softc_t * const sc)
 	return ret;
 }
 
-static void lmc_ssi_set_link_status(lmc_softc_t * const sc, int state)
+static void lmc_ssi_set_link_status(struct card * const sc, int state)
 {
 	if (state == LMC_LINK_UP) {
 		sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
@@ -666,7 +666,7 @@ static void lmc_ssi_set_link_status(lmc_softc_t * const sc, int state)
 }
 
 /* 0 == 16bit, 1 == 32bit */
-static void lmc_ssi_set_crc_length(lmc_softc_t * const sc, int state)
+static void lmc_ssi_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
@@ -685,7 +685,7 @@ static void lmc_ssi_set_crc_length(lmc_softc_t * const sc, int state)
 }
 
 /* These are bits to program the ssi frequency generator */
-static inline void write_av9110_bit(lmc_softc_t *sc, int c)
+static inline void write_av9110_bit(struct card *sc, int c)
 {
 	/* set the data bit as we need it. */
 	sc->lmc_gpio &= ~(LMC_GEP_CLK);
@@ -704,7 +704,7 @@ static inline void write_av9110_bit(lmc_softc_t *sc, int c)
 	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
 }
 
-static void write_av9110(lmc_softc_t *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
+static void write_av9110(struct card *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
 {
 	int i;
 
@@ -743,7 +743,7 @@ static void write_av9110(lmc_softc_t *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
 			      LMC_GEP_SSI_GENERATOR));
 }
 
-static void lmc_ssi_watchdog(lmc_softc_t * const sc)
+static void lmc_ssi_watchdog(struct card * const sc)
 {
 	u16 mii17 = lmc_mii_readreg(sc, 0, 17);
 	if (((mii17 >> 3) & 7) == 7)
@@ -756,14 +756,14 @@ static void lmc_ssi_watchdog(lmc_softc_t * const sc)
 
 /* The framer regs are multiplexed through MII regs 17 & 18 write the register
    address to MII reg 17 and the data to MII reg 18. */
-static void lmc_t1_write(lmc_softc_t * const sc, int a, int d)
+static void lmc_t1_write(struct card * const sc, int a, int d)
 {
 	lmc_mii_writereg(sc, 0, 17, a);
 	lmc_mii_writereg(sc, 0, 18, d);
 }
 
 /* Save a warning
-static int lmc_t1_read(lmc_softc_t * const sc, int a)
+static int lmc_t1_read(struct card * const sc, int a)
 {
 	lmc_mii_writereg(sc, 0, 17, a);
 	return lmc_mii_readreg(sc, 0, 18);
@@ -771,7 +771,7 @@ static int lmc_t1_read(lmc_softc_t * const sc, int a)
 */
 
 
-static void lmc_t1_init(lmc_softc_t * const sc)
+static void lmc_t1_init(struct card * const sc)
 {
 	u16 mii16;
 	int i;
@@ -830,7 +830,7 @@ static void lmc_t1_init(lmc_softc_t * const sc)
 	sc->lmc_miireg16 = mii16;
 }
 
-static void lmc_t1_default(lmc_softc_t * const sc)
+static void lmc_t1_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
@@ -841,7 +841,7 @@ static void lmc_t1_default(lmc_softc_t * const sc)
 }
 /* Given a user provided state, set ourselves up to match it.
    This will always reset the card if needed. */
-static void lmc_t1_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_t1_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
 		sc->lmc_media->set_circuit_type(sc, sc->ictl.circuit_type);
@@ -860,7 +860,7 @@ static void lmc_t1_set_status(lmc_softc_t * const sc, lmc_ctl_t * ctl)
 }
 
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
-static int lmc_t1_get_link_status(lmc_softc_t * const sc)
+static int lmc_t1_get_link_status(struct card * const sc)
 {
 	u16 link_status;
 	int ret = 1;
@@ -970,7 +970,7 @@ static int lmc_t1_get_link_status(lmc_softc_t * const sc)
 }
 
 /* 1 == T1 Circuit Type , 0 == E1 Circuit Type */
-static void lmc_t1_set_circuit_type(lmc_softc_t * const sc, int ie)
+static void lmc_t1_set_circuit_type(struct card * const sc, int ie)
 {
 	if (ie == LMC_CTL_CIRCUIT_TYPE_T1) {
 		sc->lmc_miireg16 |= LMC_MII16_T1_Z;
@@ -986,7 +986,7 @@ static void lmc_t1_set_circuit_type(lmc_softc_t * const sc, int ie)
 }
 
 /* 0 == 16bit, 1 == 32bit */
-static void lmc_t1_set_crc_length(lmc_softc_t * const sc, int state)
+static void lmc_t1_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
@@ -1005,7 +1005,7 @@ static void lmc_t1_set_crc_length(lmc_softc_t * const sc, int state)
 }
 
 /* 1 == internal, 0 == external */
-static void lmc_t1_set_clock(lmc_softc_t * const sc, int ie)
+static void lmc_t1_set_clock(struct card * const sc, int ie)
 {
 	int old;
 	old = ie;
@@ -1026,11 +1026,11 @@ static void lmc_t1_set_clock(lmc_softc_t * const sc, int ie)
 	}
 }
 
-static void lmc_t1_watchdog(lmc_softc_t * const sc)
+static void lmc_t1_watchdog(struct card * const sc)
 {
 }
 
-static void lmc_set_protocol(lmc_softc_t * const sc, lmc_ctl_t * ctl)
+static void lmc_set_protocol(struct card * const sc, struct control *ctl)
 {
 	if (!ctl)
 		sc->ictl.keepalive_onoff = LMC_CTL_ON;
diff --git a/drivers/net/wan/lmc/proto.c b/drivers/net/wan/lmc/proto.c
index d6c0cc2..547c8d8 100644
--- a/drivers/net/wan/lmc/proto.c
+++ b/drivers/net/wan/lmc/proto.c
@@ -46,7 +46,7 @@
 #include "ioctl.h"
 #include "proto.h"
 
-void lmc_proto_attach(lmc_softc_t *sc)
+void lmc_proto_attach(struct card *sc)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_attach in");
 	if (sc->if_type == LMC_NET) {
@@ -59,7 +59,7 @@ void lmc_proto_attach(lmc_softc_t *sc)
 	lmc_trace(sc->lmc_device, "lmc_proto_attach out");
 }
 
-int lmc_proto_ioctl(lmc_softc_t *sc, struct ifreq *ifr, int cmd)
+int lmc_proto_ioctl(struct card *sc, struct ifreq *ifr, int cmd)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_ioctl");
 	if (sc->if_type == LMC_PPP)
@@ -67,7 +67,7 @@ int lmc_proto_ioctl(lmc_softc_t *sc, struct ifreq *ifr, int cmd)
 	return -EOPNOTSUPP;
 }
 
-int lmc_proto_open(lmc_softc_t *sc)
+int lmc_proto_open(struct card *sc)
 {
 	int ret = 0;
 
@@ -84,7 +84,7 @@ int lmc_proto_open(lmc_softc_t *sc)
 	return ret;
 }
 
-void lmc_proto_close(lmc_softc_t *sc)
+void lmc_proto_close(struct card *sc)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_close in");
 
@@ -94,7 +94,7 @@ void lmc_proto_close(lmc_softc_t *sc)
 	lmc_trace(sc->lmc_device, "lmc_proto_close out");
 }
 
-__be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb)
+__be16 lmc_proto_type(struct card *sc, struct sk_buff *skb)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_type in");
 	switch (sc->if_type) {
@@ -118,7 +118,7 @@ __be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb)
 
 }
 
-void lmc_proto_netif(lmc_softc_t *sc, struct sk_buff *skb)
+void lmc_proto_netif(struct card *sc, struct sk_buff *skb)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_netif in");
 	switch (sc->if_type) {
diff --git a/drivers/net/wan/lmc/proto.h b/drivers/net/wan/lmc/proto.h
index 662148c..23094ed 100644
--- a/drivers/net/wan/lmc/proto.h
+++ b/drivers/net/wan/lmc/proto.h
@@ -3,16 +3,16 @@
 
 #include <linux/hdlc.h>
 
-void lmc_proto_attach(lmc_softc_t *sc);
-int lmc_proto_ioctl(lmc_softc_t *sc, struct ifreq *ifr, int cmd);
-int lmc_proto_open(lmc_softc_t *sc);
-void lmc_proto_close(lmc_softc_t *sc);
-__be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb);
-void lmc_proto_netif(lmc_softc_t *sc, struct sk_buff *skb);
+void lmc_proto_attach(struct card *sc);
+int lmc_proto_ioctl(struct card *sc, struct ifreq *ifr, int cmd);
+int lmc_proto_open(struct card *sc);
+void lmc_proto_close(struct card *sc);
+__be16 lmc_proto_type(struct card *sc, struct sk_buff *skb);
+void lmc_proto_netif(struct card *sc, struct sk_buff *skb);
 
-static inline lmc_softc_t* dev_to_sc(struct net_device *dev)
+static inline struct card* dev_to_sc(struct net_device *dev)
 {
-	return (lmc_softc_t *)dev_to_hdlc(dev)->priv;
+	return (struct card *)dev_to_hdlc(dev)->priv;
 }
 
 #endif
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 9b14979..e9aad37 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -19,10 +19,6 @@
 
 /* basic definitions used in lmc include files */
 
-typedef struct lmc___softc	lmc_softc_t;
-typedef struct lmc___media	lmc_media_t;
-typedef struct lmc___ctl	lmc_ctl_t;
-
 #define lmc_csrptr_t		unsigned long
 
 #define LMC_REG_RANGE		0x80
@@ -137,6 +133,8 @@ struct lmc_regfile_t {
 				   LMC_RDES_REPORT_ON_MII_ERR |	 \
 				   LMC_RDES_COLLISION_SEEN))
 
+struct card;
+
 /* Ioctl info */
 
 typedef struct {
@@ -150,7 +148,7 @@ typedef struct {
 } lmc_av9110_t;
 
 /* Common structure passed to the ioctl code. */
-struct lmc___ctl {
+struct control {
 	u32 cardtype;
 	u32 clock_source;		/* HSSI, T1 */
 	u32 clock_rate;			/* T1 */
@@ -163,7 +161,7 @@ struct lmc___ctl {
 	union {
 		lmc_av9110_t ssi;
 	} cardspec;
-	u32	circuit_type;		/* T1 or E1 */
+	u32 circuit_type;		/* T1 or E1 */
 };
 
 
@@ -188,19 +186,19 @@ struct tulip_desc_t {
 };
 
 /* media independent methods to check on media status, link, light LEDs, etc. */
-struct lmc___media {
-	void (* init)(lmc_softc_t * const);
-	void (* defaults)(lmc_softc_t * const);
-	void (* set_status)(lmc_softc_t * const, lmc_ctl_t *);
-	void (* set_clock_source)(lmc_softc_t * const, int);
-	void (* set_speed)(lmc_softc_t * const, lmc_ctl_t *);
-	void (* set_cable_length)(lmc_softc_t * const, int);
-	void (* set_scrambler)(lmc_softc_t * const, int);
-	int (* get_link_status)(lmc_softc_t * const);
-	void (* set_link_status)(lmc_softc_t * const, int);
-	void (* set_crc_length)(lmc_softc_t * const, int);
-	void (* set_circuit_type)(lmc_softc_t * const, int);
-	void (* watchdog)(lmc_softc_t * const);
+struct media {
+	void (* init)(struct card * const);
+	void (* defaults)(struct card * const);
+	void (* set_status)(struct card * const, struct control *);
+	void (* set_clock_source)(struct card * const, int);
+	void (* set_speed)(struct card * const, struct control *);
+	void (* set_cable_length)(struct card * const, int);
+	void (* set_scrambler)(struct card * const, int);
+	int (* get_link_status)(struct card * const);
+	void (* set_link_status)(struct card * const, int);
+	void (* set_crc_length)(struct card * const, int);
+	void (* set_circuit_type)(struct card * const, int);
+	void (* watchdog)(struct card * const);
 };
 
 #define STATCHECK 0xBEEFCAFE
@@ -271,7 +269,7 @@ typedef struct lmc_xinfo {
 
 
 /* forward decl */
-struct lmc___softc {
+struct card {
 	char *name;
 	u8 board_idx;
 	struct lmc_extra_statistics extra_stats;
@@ -301,9 +299,9 @@ struct lmc___softc {
 	int last_link_status;
 	int lmc_cardtype;
 	u32 last_frameerr;
-	lmc_media_t *lmc_media;
+	struct media *lmc_media;
 	struct timer_list timer;
-	lmc_ctl_t ictl;
+	struct control ictl;
 	u32 TxDescriptControlInit;
 
 	int tx_TimeoutInd;		/* additional driver state */
@@ -328,7 +326,6 @@ struct lmc___softc {
 	u8 failed_ring;			/* Failure cases */
 	u8 failed_recv_alloc;
 
-
 	u32 check;			/* Structure check */
 };
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 04/29] LMC: fix initialization messages.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (2 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 03/29] LMC: Remove 3 typedefs Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 05/29] LMC: Remove non-LMC_PPP modes, everything is already handled by generic HDLC Krzysztof Halasa
                   ` (24 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c |   15 ++++++---------
 1 files changed, 6 insertions(+), 9 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 4fa75ad..63297a5 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -837,12 +837,9 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	spin_lock_init(&sc->lmc_lock);
 	pci_set_master(pdev);
 
-	printk(KERN_INFO "%s: detected at %lx, irq %d\n", dev->name,
-	       dev->base_addr, dev->irq);
-
 	err = register_hdlc_device(dev);
 	if (err) {
-		printk(KERN_ERR "%s: register_netdev failed.\n", dev->name);
+		dev_err(&pdev->dev, "lmc: register_hdlc_device() failed.\n");
 		free_netdev(dev);
 		goto err_hdlcdev;
 	}
@@ -860,27 +857,27 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 
 	switch (subdevice) {
 	case PCI_DEVICE_ID_LMC_HSSI:
-		printk(KERN_INFO "%s: LMC HSSI\n", dev->name);
+		dev_info(&pdev->dev, "%s = LMC HSSI\n", dev->name);
 		sc->lmc_cardtype = LMC_CARDTYPE_HSSI;
 		sc->lmc_media = &lmc_hssi_media;
 		break;
 	case PCI_DEVICE_ID_LMC_DS3:
-		printk(KERN_INFO "%s: LMC DS3\n", dev->name);
+		dev_info(&pdev->dev, "%s = LMC DS3\n", dev->name);
 		sc->lmc_cardtype = LMC_CARDTYPE_DS3;
 		sc->lmc_media = &lmc_ds3_media;
 		break;
 	case PCI_DEVICE_ID_LMC_SSI:
-		printk(KERN_INFO "%s: LMC SSI\n", dev->name);
+		dev_info(&pdev->dev, "%s = LMC SSI\n", dev->name);
 		sc->lmc_cardtype = LMC_CARDTYPE_SSI;
 		sc->lmc_media = &lmc_ssi_media;
 		break;
 	case PCI_DEVICE_ID_LMC_T1:
-		printk(KERN_INFO "%s: LMC T1\n", dev->name);
+		dev_info(&pdev->dev, "%s = LMC T1\n", dev->name);
 		sc->lmc_cardtype = LMC_CARDTYPE_T1;
 		sc->lmc_media = &lmc_t1_media;
 		break;
 	default:
-		printk(KERN_WARNING "%s: LMC UNKNOWN CARD!\n", dev->name);
+		dev_warn(&pdev->dev, "%s = LMC UNKNOWN CARD!\n", dev->name);
 		break;
 	}
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 05/29] LMC: Remove non-LMC_PPP modes, everything is already handled by generic HDLC.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (3 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 04/29] LMC: fix initialization messages Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 06/29] LMC: Remove stub files proto.[ch] Krzysztof Halasa
                   ` (23 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |   31 ------------------------
 drivers/net/wan/lmc/proto.c |   55 ++++++------------------------------------
 drivers/net/wan/lmc/var.h   |    1 -
 3 files changed, 8 insertions(+), 79 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 63297a5..a6de32f 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -161,36 +161,6 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		ret = 0;
 		break;
 
-	case LMCIOCIFTYPE:
-	{
-		u16 old_type = sc->if_type;
-		u16 new_type;
-
-		if (!capable(CAP_NET_ADMIN)) {
-			ret = -EPERM;
-			break;
-		}
-
-		if (copy_from_user(&new_type, ifr->ifr_data, sizeof(u16))) {
-			ret = -EFAULT;
-			break;
-		}
-
-		if (new_type == old_type) {
-			ret = 0 ;
-			break;				/* no change */
-		}
-
-		spin_lock_irqsave(&sc->lmc_lock, flags);
-		lmc_proto_close(sc);
-
-		sc->if_type = new_type;
-		lmc_proto_attach(sc);
-		ret = lmc_proto_open(sc);
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
-		break;
-	}
-
 	case LMCIOCGETXINFO:
 		spin_lock_irqsave(&sc->lmc_lock, flags);
 		sc->lmc_xinfo.Magic0 = 0xBEEFCAFE;
@@ -819,7 +789,6 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	dev->tx_queue_len = 100;
 	sc->lmc_device = dev;
 	sc->name = dev->name;
-	sc->if_type = LMC_PPP;
 	sc->check = 0xBEAFCAFE;
 	dev->base_addr = pci_resource_start(pdev, 0);
 	dev->irq = pdev->irq;
diff --git a/drivers/net/wan/lmc/proto.c b/drivers/net/wan/lmc/proto.c
index 547c8d8..ffd952a 100644
--- a/drivers/net/wan/lmc/proto.c
+++ b/drivers/net/wan/lmc/proto.c
@@ -49,22 +49,13 @@
 void lmc_proto_attach(struct card *sc)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_attach in");
-	if (sc->if_type == LMC_NET) {
-		struct net_device *dev = sc->lmc_device;
-		/* They set a few basics because they don't use HDLC */
-		dev->flags |= IFF_POINTOPOINT;
-		dev->hard_header_len = 0;
-		dev->addr_len = 0;
-	}
 	lmc_trace(sc->lmc_device, "lmc_proto_attach out");
 }
 
 int lmc_proto_ioctl(struct card *sc, struct ifreq *ifr, int cmd)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_ioctl");
-	if (sc->if_type == LMC_PPP)
-		return hdlc_ioctl(sc->lmc_device, ifr, cmd);
-	return -EOPNOTSUPP;
+	return hdlc_ioctl(sc->lmc_device, ifr, cmd);
 }
 
 int lmc_proto_open(struct card *sc)
@@ -73,12 +64,10 @@ int lmc_proto_open(struct card *sc)
 
 	lmc_trace(sc->lmc_device, "lmc_proto_open in");
 
-	if (sc->if_type == LMC_PPP) {
-		ret = hdlc_open(sc->lmc_device);
-		if (ret < 0)
-			printk(KERN_WARNING "%s: HDLC open failed: %d\n",
-			       sc->name, ret);
-	}
+	ret = hdlc_open(sc->lmc_device);
+	if (ret < 0)
+		printk(KERN_WARNING "%s: HDLC open failed: %d\n",
+		       sc->name, ret);
 
 	lmc_trace(sc->lmc_device, "lmc_proto_open out");
 	return ret;
@@ -87,48 +76,20 @@ int lmc_proto_open(struct card *sc)
 void lmc_proto_close(struct card *sc)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_close in");
-
-	if (sc->if_type == LMC_PPP)
-		hdlc_close(sc->lmc_device);
-
+	hdlc_close(sc->lmc_device);
 	lmc_trace(sc->lmc_device, "lmc_proto_close out");
 }
 
 __be16 lmc_proto_type(struct card *sc, struct sk_buff *skb)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_type in");
-	switch (sc->if_type) {
-	case LMC_PPP:
-		return hdlc_type_trans(skb, sc->lmc_device);
-		break;
-	case LMC_NET:
-		return htons(ETH_P_802_2);
-		break;
-	case LMC_RAW: /* Packet type for skbuff kind of useless */
-		return htons(ETH_P_802_2);
-		break;
-	default:
-		printk(KERN_WARNING
-		       "%s: No protocol set for this interface, assuming 802.2 (which is wrong!!)\n",
-		       sc->name);
-		return htons(ETH_P_802_2);
-		break;
-	}
+	return hdlc_type_trans(skb, sc->lmc_device);
 	lmc_trace(sc->lmc_device, "lmc_proto_tye out");
-
 }
 
 void lmc_proto_netif(struct card *sc, struct sk_buff *skb)
 {
 	lmc_trace(sc->lmc_device, "lmc_proto_netif in");
-	switch (sc->if_type) {
-	case LMC_PPP:
-	case LMC_NET:
-	default:
-		netif_rx(skb);
-		break;
-	case LMC_RAW:
-		break;
-	}
+	netif_rx(skb);
 	lmc_trace(sc->lmc_device, "lmc_proto_netif out");
 }
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index e9aad37..b889bf6 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -321,7 +321,6 @@ struct card {
 	u32 num_int;
 
 	spinlock_t lmc_lock;
-	u16 if_type;			/* HDLC/PPP or NET */
 
 	u8 failed_ring;			/* Failure cases */
 	u8 failed_recv_alloc;
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 06/29] LMC: Remove stub files proto.[ch].
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (4 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 05/29] LMC: Remove non-LMC_PPP modes, everything is already handled by generic HDLC Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 07/29] LMC: Convert media structs to named initializers Krzysztof Halasa
                   ` (22 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/Makefile |    2 +-
 drivers/net/wan/lmc/main.c   |   29 ++++++-------
 drivers/net/wan/lmc/proto.c  |   95 ------------------------------------------
 drivers/net/wan/lmc/proto.h  |   18 --------
 4 files changed, 14 insertions(+), 130 deletions(-)
 delete mode 100644 drivers/net/wan/lmc/proto.c
 delete mode 100644 drivers/net/wan/lmc/proto.h

diff --git a/drivers/net/wan/lmc/Makefile b/drivers/net/wan/lmc/Makefile
index 2c14b98..2f461a7 100644
--- a/drivers/net/wan/lmc/Makefile
+++ b/drivers/net/wan/lmc/Makefile
@@ -5,7 +5,7 @@
 
 obj-$(CONFIG_LANMEDIA) += lmc.o
 
-lmc-objs := debug.o media.o main.o proto.o
+lmc-objs := debug.o media.o main.o
 
 # Like above except every packet gets echoed to KERN_DEBUG
 # in hex
diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index a6de32f..13bb6f6 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -72,7 +72,6 @@
 #include "var.h"
 #include "ioctl.h"
 #include "debug.h"
-#include "proto.h"
 
 static int LMC_PKT_BUF_SZ = 1542;
 
@@ -104,6 +103,12 @@ static void lmc_reset(struct card * const sc);
 static void lmc_dec_reset(struct card * const sc);
 static void lmc_driver_timeout(struct net_device *dev);
 
+static inline struct card* dev_to_sc(struct net_device *dev)
+{
+	return (struct card *)dev_to_hdlc(dev)->priv;
+}
+
+
 /* linux reserves 16 device specific IOCTLs.  We call them
    LMCIOC* to control various bits of our world. */
 int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
@@ -566,7 +571,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 	break;
 	default:
 		/* If we don't know what to do, give the protocol a shot. */
-		ret = lmc_proto_ioctl(sc, ifr, cmd);
+		ret = hdlc_ioctl(sc->lmc_device, ifr, cmd);
 		break;
 	}
 
@@ -795,12 +800,6 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	pci_set_drvdata(pdev, dev);
 	SET_NETDEV_DEV(dev, &pdev->dev);
 
-	/*
-	 * This will get the protocol layer ready and do any 1 time init's
-	 * Must have a valid sc and dev structure
-	 */
-	lmc_proto_attach(sc);
-
 	/* Init the spin lock so can call it latter */
 
 	spin_lock_init(&sc->lmc_lock);
@@ -973,9 +972,7 @@ static int lmc_open(struct net_device *dev)
 	sc->lmc_media->set_crc_length(sc, sc->ictl.crc_length);
 	/* Acknowledge the Terminal Active and light LEDs */
 
-	/* dev->flags |= IFF_UP; */
-
-	if ((err = lmc_proto_open(sc)) != 0)
+	if ((err = hdlc_open(sc->lmc_device)) != 0)
 		return err;
 
 	netif_start_queue(dev);
@@ -1059,7 +1056,7 @@ static int lmc_close(struct net_device *dev)
 	sc->lmc_ok = 0;
 	sc->lmc_media->set_link_status(sc, 0);
 	del_timer(&sc->timer);
-	lmc_proto_close(sc);
+	hdlc_close(sc->lmc_device);
 	lmc_ifdown(dev);
 
 	lmc_trace(dev, "lmc_close out");
@@ -1489,11 +1486,11 @@ give_it_anyways:
 			sc->lmc_rxring[i].buffer1 = 0x0;
 
 			skb_put(skb, len);
-			skb->protocol = lmc_proto_type(sc, skb);
+			skb->protocol = hdlc_type_trans(skb, sc->lmc_device);
 			skb_reset_mac_header(skb);
 			/* skb_reset_network_header(skb); */
 			skb->dev = dev;
-			lmc_proto_netif(sc, skb);
+			netif_rx(skb);
 
 			/* This skb will be destroyed by the upper layers,
 			   make a new one */
@@ -1520,11 +1517,11 @@ give_it_anyways:
 			if (!nsb)
 				goto give_it_anyways;
 			skb_copy_from_linear_data(skb, skb_put(nsb, len), len);
-			nsb->protocol = lmc_proto_type(sc, nsb);
+			nsb->protocol = hdlc_type_trans(nsb, sc->lmc_device);
 			skb_reset_mac_header(nsb);
 			/* skb_reset_network_header(nsb); */
 			nsb->dev = dev;
-			lmc_proto_netif(sc, nsb);
+			netif_rx(nsb);
 		}
 
 skip_packet:
diff --git a/drivers/net/wan/lmc/proto.c b/drivers/net/wan/lmc/proto.c
deleted file mode 100644
index ffd952a..0000000
--- a/drivers/net/wan/lmc/proto.c
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
- * All rights reserved.  www.lanmedia.com
- *
- * This code is written by:
- * Andrew Stanley-Jones (asj@cban.com)
- * Rob Braun (bbraun@vix.com),
- * Michael Graff (explorer@vix.com) and
- * Matt Thomas (matt@3am-software.com).
- *
- * With Help By:
- * David Boggs
- * Ron Crane
- * Allan Cox
- *
- * This software may be used and distributed according to the terms of
- * the GNU General Public License version 2, incorporated herein by reference.
- *
- * Driver for the LanMedia LMC5200, LMC5245, LMC1000, LMC1200 cards.
- */
-
-#include <linux/kernel.h>
-#include <linux/string.h>
-#include <linux/timer.h>
-#include <linux/ptrace.h>
-#include <linux/errno.h>
-#include <linux/ioport.h>
-#include <linux/interrupt.h>
-#include <linux/in.h>
-#include <linux/if_arp.h>
-#include <linux/netdevice.h>
-#include <linux/etherdevice.h>
-#include <linux/skbuff.h>
-#include <linux/inet.h>
-#include <linux/workqueue.h>
-#include <linux/proc_fs.h>
-#include <linux/bitops.h>
-#include <linux/io.h>
-#include <asm/processor.h>   /* Processor type for cache alignment. */
-#include <asm/dma.h>
-#include <linux/smp.h>
-
-#include "lmc.h"
-#include "var.h"
-#include "debug.h"
-#include "ioctl.h"
-#include "proto.h"
-
-void lmc_proto_attach(struct card *sc)
-{
-	lmc_trace(sc->lmc_device, "lmc_proto_attach in");
-	lmc_trace(sc->lmc_device, "lmc_proto_attach out");
-}
-
-int lmc_proto_ioctl(struct card *sc, struct ifreq *ifr, int cmd)
-{
-	lmc_trace(sc->lmc_device, "lmc_proto_ioctl");
-	return hdlc_ioctl(sc->lmc_device, ifr, cmd);
-}
-
-int lmc_proto_open(struct card *sc)
-{
-	int ret = 0;
-
-	lmc_trace(sc->lmc_device, "lmc_proto_open in");
-
-	ret = hdlc_open(sc->lmc_device);
-	if (ret < 0)
-		printk(KERN_WARNING "%s: HDLC open failed: %d\n",
-		       sc->name, ret);
-
-	lmc_trace(sc->lmc_device, "lmc_proto_open out");
-	return ret;
-}
-
-void lmc_proto_close(struct card *sc)
-{
-	lmc_trace(sc->lmc_device, "lmc_proto_close in");
-	hdlc_close(sc->lmc_device);
-	lmc_trace(sc->lmc_device, "lmc_proto_close out");
-}
-
-__be16 lmc_proto_type(struct card *sc, struct sk_buff *skb)
-{
-	lmc_trace(sc->lmc_device, "lmc_proto_type in");
-	return hdlc_type_trans(skb, sc->lmc_device);
-	lmc_trace(sc->lmc_device, "lmc_proto_tye out");
-}
-
-void lmc_proto_netif(struct card *sc, struct sk_buff *skb)
-{
-	lmc_trace(sc->lmc_device, "lmc_proto_netif in");
-	netif_rx(skb);
-	lmc_trace(sc->lmc_device, "lmc_proto_netif out");
-}
diff --git a/drivers/net/wan/lmc/proto.h b/drivers/net/wan/lmc/proto.h
deleted file mode 100644
index 23094ed..0000000
--- a/drivers/net/wan/lmc/proto.h
+++ /dev/null
@@ -1,18 +0,0 @@
-#ifndef _LMC_PROTO_H_
-#define _LMC_PROTO_H_
-
-#include <linux/hdlc.h>
-
-void lmc_proto_attach(struct card *sc);
-int lmc_proto_ioctl(struct card *sc, struct ifreq *ifr, int cmd);
-int lmc_proto_open(struct card *sc);
-void lmc_proto_close(struct card *sc);
-__be16 lmc_proto_type(struct card *sc, struct sk_buff *skb);
-void lmc_proto_netif(struct card *sc, struct sk_buff *skb);
-
-static inline struct card* dev_to_sc(struct net_device *dev)
-{
-	return (struct card *)dev_to_hdlc(dev)->priv;
-}
-
-#endif
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 07/29] LMC: Convert media structs to named initializers.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (5 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 06/29] LMC: Remove stub files proto.[ch] Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 08/29] LMC: Remove "dummy" media functions Krzysztof Halasa
                   ` (21 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/media.c |   96 +++++++++++++++++++++---------------------
 1 files changed, 48 insertions(+), 48 deletions(-)

diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 8e236b0..36b685f 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -85,63 +85,63 @@ static inline void write_av9110_bit(struct card *, int);
 static void write_av9110(struct card *, u32, u32, u32, u32, u32);
 
 struct media lmc_ds3_media = {
-	lmc_ds3_init,		/* special media init stuff */
-	lmc_ds3_default,	/* reset to default state */
-	lmc_ds3_set_status,	/* reset status to state provided */
-	lmc_dummy_set_1,	/* set clock source */
-	lmc_dummy_set2_1,	/* set line speed */
-	lmc_ds3_set_100ft,	/* set cable length */
-	lmc_ds3_set_scram,	/* set scrambler */
-	lmc_ds3_get_link_status, /* get link status */
-	lmc_dummy_set_1,	/* set link status */
-	lmc_ds3_set_crc_length,	/* set CRC length */
-	lmc_dummy_set_1,	/* set T1 or E1 circuit type */
-	lmc_ds3_watchdog
+	.init = lmc_ds3_init,
+	.defaults = lmc_ds3_default,
+	.set_status = lmc_ds3_set_status,
+	.set_clock_source = lmc_dummy_set_1,
+	.set_speed = lmc_dummy_set2_1,
+	.set_cable_length = lmc_ds3_set_100ft,
+	.set_scrambler = lmc_ds3_set_scram,
+	.get_link_status = lmc_ds3_get_link_status,
+	.set_link_status = lmc_dummy_set_1,
+	.set_crc_length = lmc_ds3_set_crc_length,
+	.set_circuit_type = lmc_dummy_set_1,
+	.watchdog = lmc_ds3_watchdog,
 };
 
 struct media lmc_hssi_media = {
-	lmc_hssi_init,		/* special media init stuff */
-	lmc_hssi_default,	/* reset to default state */
-	lmc_hssi_set_status,	/* reset status to state provided */
-	lmc_hssi_set_clock,	/* set clock source */
-	lmc_dummy_set2_1,	/* set line speed */
-	lmc_dummy_set_1,	/* set cable length */
-	lmc_dummy_set_1,	/* set scrambler */
-	lmc_hssi_get_link_status, /* get link status */
-	lmc_hssi_set_link_status, /* set link status */
-	lmc_hssi_set_crc_length, /* set CRC length */
-	lmc_dummy_set_1,	/* set T1 or E1 circuit type */
-	lmc_hssi_watchdog
+	.init = lmc_hssi_init,
+	.defaults = lmc_hssi_default,
+	.set_status = lmc_hssi_set_status,
+	.set_clock_source = lmc_hssi_set_clock,
+	.set_speed = lmc_dummy_set2_1,
+	.set_cable_length = lmc_dummy_set_1,
+	.set_scrambler = lmc_dummy_set_1,
+	.get_link_status = lmc_hssi_get_link_status,
+	.set_link_status = lmc_hssi_set_link_status,
+	.set_crc_length = lmc_hssi_set_crc_length,
+	.set_circuit_type = lmc_dummy_set_1,
+	.watchdog = lmc_hssi_watchdog,
 };
 
 struct media lmc_ssi_media = {
-	lmc_ssi_init,		/* special media init stuff */
-	lmc_ssi_default,	/* reset to default state */
-	lmc_ssi_set_status,	/* reset status to state provided */
-	lmc_ssi_set_clock,	/* set clock source */
-	lmc_ssi_set_speed,	/* set line speed */
-	lmc_dummy_set_1,	/* set cable length */
-	lmc_dummy_set_1,	/* set scrambler */
-	lmc_ssi_get_link_status, /* get link status */
-	lmc_ssi_set_link_status, /* set link status */
-	lmc_ssi_set_crc_length,	/* set CRC length */
-	lmc_dummy_set_1,	/* set T1 or E1 circuit type */
-	lmc_ssi_watchdog
+	.init = lmc_ssi_init,
+	.defaults = lmc_ssi_default,
+	.set_status = lmc_ssi_set_status,
+	.set_clock_source = lmc_ssi_set_clock,
+	.set_speed = lmc_ssi_set_speed,
+	.set_cable_length = lmc_dummy_set_1,
+	.set_scrambler = lmc_dummy_set_1,
+	.get_link_status = lmc_ssi_get_link_status,
+	.set_link_status = lmc_ssi_set_link_status,
+	.set_crc_length = lmc_ssi_set_crc_length,
+	.set_circuit_type = lmc_dummy_set_1,
+	.watchdog = lmc_ssi_watchdog,
 };
 
 struct media lmc_t1_media = {
-	lmc_t1_init,		/* special media init stuff */
-	lmc_t1_default,		/* reset to default state */
-	lmc_t1_set_status,	/* reset status to state provided */
-	lmc_t1_set_clock,	/* set clock source */
-	lmc_dummy_set2_1,	/* set line speed */
-	lmc_dummy_set_1,	/* set cable length */
-	lmc_dummy_set_1,	/* set scrambler */
-	lmc_t1_get_link_status,	/* get link status */
-	lmc_dummy_set_1,	/* set link status */
-	lmc_t1_set_crc_length,	/* set CRC length */
-	lmc_t1_set_circuit_type, /* set T1 or E1 circuit type */
-	lmc_t1_watchdog
+	.init = lmc_t1_init,
+	.defaults = lmc_t1_default,
+	.set_status = lmc_t1_set_status,
+	.set_clock_source = lmc_t1_set_clock,
+	.set_speed = lmc_dummy_set2_1,
+	.set_cable_length = lmc_dummy_set_1,
+	.set_scrambler = lmc_dummy_set_1,
+	.get_link_status = lmc_t1_get_link_status,
+	.set_link_status = lmc_dummy_set_1,
+	.set_crc_length = lmc_t1_set_crc_length,
+	.set_circuit_type = lmc_t1_set_circuit_type,
+	.watchdog = lmc_t1_watchdog,
 };
 
 static void lmc_dummy_set_1(struct card * const sc, int a)
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 08/29] LMC: Remove "dummy" media functions.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (6 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 07/29] LMC: Convert media structs to named initializers Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 09/29] LMC: shuffle protocol routines to avoid a need for prototypes Krzysztof Halasa
                   ` (20 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |   18 ++++++---
 drivers/net/wan/lmc/media.c |   80 +++++++++++++-----------------------------
 2 files changed, 37 insertions(+), 61 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 13bb6f6..6b7c09a 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -261,7 +261,8 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			break;
 		}
 		spin_lock_irqsave(&sc->lmc_lock, flags);
-		sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
+		if (sc->lmc_media->set_circuit_type)
+			sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
 		sc->ictl.circuit_type = ctl.circuit_type;
 		spin_unlock_irqrestore(&sc->lmc_lock, flags);
 		ret = 0;
@@ -356,7 +357,8 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			lmc_gpio_mkinput(sc, 0xff);
 
 			/* Reset the frammer hardware */
-			sc->lmc_media->set_link_status(sc, 1);
+			if (sc->lmc_media->set_link_status)
+				sc->lmc_media->set_link_status(sc, 1);
 			sc->lmc_media->set_status(sc, NULL);
 			/* lmc_softreset(sc); */
 
@@ -856,7 +858,8 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 
 	sc->lmc_media->defaults(sc);
 
-	sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
+	if (sc->lmc_media->set_link_status)
+		sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
 
 	/* verify that the PCI Sub System ID matches the Adapter Model number
 	   from the MII register */
@@ -951,7 +954,8 @@ static int lmc_open(struct net_device *dev)
 
 	/* Assert Terminal Active */
 	sc->lmc_miireg16 |= LMC_MII16_LED_ALL;
-	sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
+	if (sc->lmc_media->set_link_status)
+		sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
 
 	/*
 	 * reset to last state.
@@ -1026,7 +1030,8 @@ static void lmc_running_reset(struct net_device *dev)
 	lmc_reset(sc);
 	lmc_softreset(sc);
 	/* sc->lmc_miireg16 |= LMC_MII16_LED_ALL; */
-	sc->lmc_media->set_link_status(sc, 1);
+	if (sc->lmc_media->set_link_status)
+		sc->lmc_media->set_link_status(sc, 1);
 	sc->lmc_media->set_status(sc, NULL);
 
 	netif_wake_queue(dev);
@@ -1054,7 +1059,8 @@ static int lmc_close(struct net_device *dev)
 	lmc_trace(dev, "lmc_close in");
 
 	sc->lmc_ok = 0;
-	sc->lmc_media->set_link_status(sc, 0);
+	if (sc->lmc_media->set_link_status)
+		sc->lmc_media->set_link_status(sc, 0);
 	del_timer(&sc->timer);
 	hdlc_close(sc->lmc_device);
 	lmc_ifdown(dev);
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 36b685f..baf6e43 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -78,9 +78,6 @@ static void lmc_t1_set_crc_length(struct card * const, int);
 static void lmc_t1_set_clock(struct card * const, int);
 static void lmc_t1_watchdog(struct card * const);
 
-static void lmc_dummy_set_1(struct card * const, int);
-static void lmc_dummy_set2_1(struct card * const, struct control *);
-
 static inline void write_av9110_bit(struct card *, int);
 static void write_av9110(struct card *, u32, u32, u32, u32, u32);
 
@@ -88,14 +85,10 @@ struct media lmc_ds3_media = {
 	.init = lmc_ds3_init,
 	.defaults = lmc_ds3_default,
 	.set_status = lmc_ds3_set_status,
-	.set_clock_source = lmc_dummy_set_1,
-	.set_speed = lmc_dummy_set2_1,
 	.set_cable_length = lmc_ds3_set_100ft,
 	.set_scrambler = lmc_ds3_set_scram,
 	.get_link_status = lmc_ds3_get_link_status,
-	.set_link_status = lmc_dummy_set_1,
 	.set_crc_length = lmc_ds3_set_crc_length,
-	.set_circuit_type = lmc_dummy_set_1,
 	.watchdog = lmc_ds3_watchdog,
 };
 
@@ -104,13 +97,9 @@ struct media lmc_hssi_media = {
 	.defaults = lmc_hssi_default,
 	.set_status = lmc_hssi_set_status,
 	.set_clock_source = lmc_hssi_set_clock,
-	.set_speed = lmc_dummy_set2_1,
-	.set_cable_length = lmc_dummy_set_1,
-	.set_scrambler = lmc_dummy_set_1,
 	.get_link_status = lmc_hssi_get_link_status,
 	.set_link_status = lmc_hssi_set_link_status,
 	.set_crc_length = lmc_hssi_set_crc_length,
-	.set_circuit_type = lmc_dummy_set_1,
 	.watchdog = lmc_hssi_watchdog,
 };
 
@@ -120,12 +109,9 @@ struct media lmc_ssi_media = {
 	.set_status = lmc_ssi_set_status,
 	.set_clock_source = lmc_ssi_set_clock,
 	.set_speed = lmc_ssi_set_speed,
-	.set_cable_length = lmc_dummy_set_1,
-	.set_scrambler = lmc_dummy_set_1,
 	.get_link_status = lmc_ssi_get_link_status,
 	.set_link_status = lmc_ssi_set_link_status,
 	.set_crc_length = lmc_ssi_set_crc_length,
-	.set_circuit_type = lmc_dummy_set_1,
 	.watchdog = lmc_ssi_watchdog,
 };
 
@@ -134,24 +120,12 @@ struct media lmc_t1_media = {
 	.defaults = lmc_t1_default,
 	.set_status = lmc_t1_set_status,
 	.set_clock_source = lmc_t1_set_clock,
-	.set_speed = lmc_dummy_set2_1,
-	.set_cable_length = lmc_dummy_set_1,
-	.set_scrambler = lmc_dummy_set_1,
 	.get_link_status = lmc_t1_get_link_status,
-	.set_link_status = lmc_dummy_set_1,
 	.set_crc_length = lmc_t1_set_crc_length,
 	.set_circuit_type = lmc_t1_set_circuit_type,
 	.watchdog = lmc_t1_watchdog,
 };
 
-static void lmc_dummy_set_1(struct card * const sc, int a)
-{
-}
-
-static void lmc_dummy_set2_1(struct card * const sc, struct control * a)
-{
-}
-
 /* HSSI methods */
 
 static void lmc_hssi_init(struct card * const sc)
@@ -163,10 +137,9 @@ static void lmc_hssi_init(struct card * const sc)
 static void lmc_hssi_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
-
-	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
-	sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
-	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	lmc_hssi_set_link_status(sc, LMC_LINK_DOWN);
+	lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	lmc_hssi_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 }
 
 /* Given a user provided state, set ourselves up to match it.
@@ -174,7 +147,7 @@ static void lmc_hssi_default(struct card * const sc)
 static void lmc_hssi_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
-		sc->lmc_media->set_clock_source(sc, sc->ictl.clock_source);
+		lmc_hssi_set_clock(sc, sc->ictl.clock_source);
 		lmc_set_protocol(sc, NULL);
 
 		return;
@@ -182,11 +155,11 @@ static void lmc_hssi_set_status(struct card * const sc, struct control *ctl)
 
 	/* check for change in clock source */
 	if (ctl->clock_source && !sc->ictl.clock_source) {
-		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_INT);
+		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
 		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
 	} else if (!ctl->clock_source && sc->ictl.clock_source) {
 		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
-		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
 	}
 
 	lmc_set_protocol(sc, ctl);
@@ -272,10 +245,9 @@ static void lmc_ds3_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
-	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
-	sc->lmc_media->set_cable_length(sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
-	sc->lmc_media->set_scrambler(sc, LMC_CTL_OFF);
-	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	lmc_ds3_set_100ft(sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
+	lmc_ds3_set_scram(sc, LMC_CTL_OFF);
+	lmc_ds3_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 }
 
 /* Given a user provided state, set ourselves up to match it.
@@ -283,8 +255,8 @@ static void lmc_ds3_default(struct card * const sc)
 static void lmc_ds3_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
-		sc->lmc_media->set_cable_length(sc, sc->ictl.cable_length);
-		sc->lmc_media->set_scrambler(sc, sc->ictl.scrambler_onoff);
+		lmc_ds3_set_100ft(sc, sc->ictl.cable_length);
+		lmc_ds3_set_scram(sc, sc->ictl.scrambler_onoff);
 		lmc_set_protocol(sc, NULL);
 		return;
 	}
@@ -480,10 +452,10 @@ static void lmc_ssi_default(struct card * const sc)
 	/* make TXCLOCK always be an output */
 	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
 
-	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
-	sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
-	sc->lmc_media->set_speed(sc, NULL);
-	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	lmc_ssi_set_link_status(sc, LMC_LINK_DOWN);
+	lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	lmc_ssi_set_speed(sc, NULL);
+	lmc_ssi_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 }
 
 /* Given a user provided state, set ourselves up to match it.
@@ -491,8 +463,8 @@ static void lmc_ssi_default(struct card * const sc)
 static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
-		sc->lmc_media->set_clock_source(sc, sc->ictl.clock_source);
-		sc->lmc_media->set_speed(sc, &sc->ictl);
+		lmc_ssi_set_clock(sc, sc->ictl.clock_source);
+		lmc_ssi_set_speed(sc, &sc->ictl);
 		lmc_set_protocol(sc, NULL);
 		return;
 	}
@@ -500,16 +472,16 @@ static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
 	/* check for change in clock source */
 	if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_INT
 	    && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) {
-		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_INT);
+		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
 		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
 	} else if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_EXT
 		 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) {
-		sc->lmc_media->set_clock_source(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
 		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
 	}
 
 	if (ctl->clock_rate != sc->ictl.clock_rate)
-		sc->lmc_media->set_speed(sc, ctl);
+		lmc_ssi_set_speed(sc, ctl);
 
 	lmc_set_protocol(sc, ctl);
 }
@@ -833,9 +805,8 @@ static void lmc_t1_init(struct card * const sc)
 static void lmc_t1_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
-	sc->lmc_media->set_link_status(sc, LMC_LINK_DOWN);
-	sc->lmc_media->set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
-	sc->lmc_media->set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
+	lmc_t1_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 	/* Right now we can only clock from out internal source */
 	sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 }
@@ -844,18 +815,17 @@ static void lmc_t1_default(struct card * const sc)
 static void lmc_t1_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
-		sc->lmc_media->set_circuit_type(sc, sc->ictl.circuit_type);
+		lmc_t1_set_circuit_type(sc, sc->ictl.circuit_type);
 		lmc_set_protocol(sc, NULL);
-
 		return;
 	}
 	/* check for change in circuit type */
 	if (ctl->circuit_type == LMC_CTL_CIRCUIT_TYPE_T1
 	    && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_E1)
-		sc->lmc_media->set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_E1);
+		lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_E1);
 	else if (ctl->circuit_type == LMC_CTL_CIRCUIT_TYPE_E1
 		 && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1)
-		sc->lmc_media->set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
+		lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
 	lmc_set_protocol(sc, ctl);
 }
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 09/29] LMC: shuffle protocol routines to avoid a need for prototypes.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (7 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 08/29] LMC: Remove "dummy" media functions Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 10/29] LMC: Remove empty media functions Krzysztof Halasa
                   ` (19 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/media.c |  940 +++++++++++++++++++++----------------------
 1 files changed, 450 insertions(+), 490 deletions(-)

diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index baf6e43..9701d30 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -37,134 +37,318 @@
  * the GNU General Public License version 2, incorporated herein by reference.
  */
 
-/* protocol independent method. */
-static void lmc_set_protocol(struct card * const, struct control *);
-
-/* media independent methods to check on media status, link, light LEDs, etc. */
-static void lmc_ds3_init(struct card * const);
-static void lmc_ds3_default(struct card * const);
-static void lmc_ds3_set_status(struct card * const, struct control *);
-static void lmc_ds3_set_100ft(struct card * const, int);
-static int lmc_ds3_get_link_status(struct card * const);
-static void lmc_ds3_set_crc_length(struct card * const, int);
-static void lmc_ds3_set_scram(struct card * const, int);
-static void lmc_ds3_watchdog(struct card * const);
-
-static void lmc_hssi_init(struct card * const);
-static void lmc_hssi_default(struct card * const);
-static void lmc_hssi_set_status(struct card * const, struct control *);
-static void lmc_hssi_set_clock(struct card * const, int);
-static int lmc_hssi_get_link_status(struct card * const);
-static void lmc_hssi_set_link_status(struct card * const, int);
-static void lmc_hssi_set_crc_length(struct card * const, int);
-static void lmc_hssi_watchdog(struct card * const);
-
-static void lmc_ssi_init(struct card * const);
-static void lmc_ssi_default(struct card * const);
-static void lmc_ssi_set_status(struct card * const, struct control *);
-static void lmc_ssi_set_clock(struct card * const, int);
-static void lmc_ssi_set_speed(struct card * const, struct control *);
-static int lmc_ssi_get_link_status(struct card * const);
-static void lmc_ssi_set_link_status(struct card * const, int);
-static void lmc_ssi_set_crc_length(struct card * const, int);
-static void lmc_ssi_watchdog(struct card * const);
-
-static void lmc_t1_init(struct card * const);
-static void lmc_t1_default(struct card * const);
-static void lmc_t1_set_status(struct card * const, struct control *);
-static int lmc_t1_get_link_status(struct card * const);
-static void lmc_t1_set_circuit_type(struct card * const, int);
-static void lmc_t1_set_crc_length(struct card * const, int);
-static void lmc_t1_set_clock(struct card * const, int);
-static void lmc_t1_watchdog(struct card * const);
-
-static inline void write_av9110_bit(struct card *, int);
-static void write_av9110(struct card *, u32, u32, u32, u32, u32);
+static void lmc_set_protocol(struct card * const sc, struct control *ctl)
+{
+	if (!ctl)
+		sc->ictl.keepalive_onoff = LMC_CTL_ON;
+}
 
-struct media lmc_ds3_media = {
-	.init = lmc_ds3_init,
-	.defaults = lmc_ds3_default,
-	.set_status = lmc_ds3_set_status,
-	.set_cable_length = lmc_ds3_set_100ft,
-	.set_scrambler = lmc_ds3_set_scram,
-	.get_link_status = lmc_ds3_get_link_status,
-	.set_crc_length = lmc_ds3_set_crc_length,
-	.watchdog = lmc_ds3_watchdog,
-};
 
-struct media lmc_hssi_media = {
-	.init = lmc_hssi_init,
-	.defaults = lmc_hssi_default,
-	.set_status = lmc_hssi_set_status,
-	.set_clock_source = lmc_hssi_set_clock,
-	.get_link_status = lmc_hssi_get_link_status,
-	.set_link_status = lmc_hssi_set_link_status,
-	.set_crc_length = lmc_hssi_set_crc_length,
-	.watchdog = lmc_hssi_watchdog,
-};
+/* SSI methods */
 
-struct media lmc_ssi_media = {
-	.init = lmc_ssi_init,
-	.defaults = lmc_ssi_default,
-	.set_status = lmc_ssi_set_status,
-	.set_clock_source = lmc_ssi_set_clock,
-	.set_speed = lmc_ssi_set_speed,
-	.get_link_status = lmc_ssi_get_link_status,
-	.set_link_status = lmc_ssi_set_link_status,
-	.set_crc_length = lmc_ssi_set_crc_length,
-	.watchdog = lmc_ssi_watchdog,
-};
+/* These are bits to program the ssi frequency generator */
+static inline void write_av9110_bit(struct card *sc, int c)
+{
+	/* set the data bit as we need it. */
+	sc->lmc_gpio &= ~(LMC_GEP_CLK);
+	if (c & 0x01)
+		sc->lmc_gpio |= LMC_GEP_DATA;
+	else
+		sc->lmc_gpio &= ~(LMC_GEP_DATA);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
 
-struct media lmc_t1_media = {
-	.init = lmc_t1_init,
-	.defaults = lmc_t1_default,
-	.set_status = lmc_t1_set_status,
-	.set_clock_source = lmc_t1_set_clock,
-	.get_link_status = lmc_t1_get_link_status,
-	.set_crc_length = lmc_t1_set_crc_length,
-	.set_circuit_type = lmc_t1_set_circuit_type,
-	.watchdog = lmc_t1_watchdog,
-};
+	/* set the clock to high */
+	sc->lmc_gpio |= LMC_GEP_CLK;
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
 
-/* HSSI methods */
+	/* set the clock to low again. */
+	sc->lmc_gpio &= ~(LMC_GEP_CLK);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+}
 
-static void lmc_hssi_init(struct card * const sc)
+static void write_av9110(struct card *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
 {
-	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200;
-	lmc_gpio_mkoutput(sc, LMC_GEP_HSSI_CLOCK);
+	int i;
+
+#if 0
+	printk(LMC_PRINTF_FMT ": speed %u, %d %d %d %d %d\n",
+	       LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r);
+#endif
+
+	sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR;
+	sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+	/* Set the TXCLOCK, GENERATOR, SERIAL, and SERIALCLK as outputs. */
+	lmc_gpio_mkoutput(sc, (LMC_GEP_DATA | LMC_GEP_CLK
+				| LMC_GEP_SSI_GENERATOR));
+
+	sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR);
+	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+
+	/* a shifting we will go... */
+	for (i = 0; i < 7; i++)
+		write_av9110_bit(sc, n >> i);
+	for (i = 0; i < 7; i++)
+		write_av9110_bit(sc, m >> i);
+	for (i = 0; i < 1; i++)
+		write_av9110_bit(sc, v >> i);
+	for (i = 0; i < 2; i++)
+		write_av9110_bit(sc, x >> i);
+	for (i = 0; i < 2; i++)
+		write_av9110_bit(sc, r >> i);
+	for (i = 0; i < 5; i++)
+		write_av9110_bit(sc, 0x17 >> i);
+
+	/* stop driving serial-related signals */
+	lmc_gpio_mkinput(sc, (LMC_GEP_DATA | LMC_GEP_CLK |
+			      LMC_GEP_SSI_GENERATOR));
 }
 
-static void lmc_hssi_default(struct card * const sc)
+static void lmc_ssi_init(struct card * const sc)
 {
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
-	lmc_hssi_set_link_status(sc, LMC_LINK_DOWN);
-	lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
-	lmc_hssi_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	u16 mii17;
+	int cable;
+
+	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1000;
+
+	mii17 = lmc_mii_readreg(sc, 0, 17);
+
+	cable = (mii17 & LMC_MII17_SSI_CABLE_MASK) >> LMC_MII17_SSI_CABLE_SHIFT;
+	sc->ictl.cable_type = cable;
+
+	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
+}
+
+/* 1 == internal, 0 == external */
+static void lmc_ssi_set_clock(struct card * const sc, int ie)
+{
+	int old;
+	old = ie;
+	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
+		sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
+		if (ie != old)
+			printk(LMC_PRINTF_FMT ": clock external\n",
+			       LMC_PRINTF_ARGS);
+	} else {
+		sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
+		if (ie != old)
+			printk(LMC_PRINTF_FMT ": clock internal\n",
+			       LMC_PRINTF_ARGS);
+	}
+}
+
+static void lmc_ssi_set_speed(struct card * const sc, struct control *ctl)
+{
+	struct control *ictl = &sc->ictl;
+	lmc_av9110_t *av;
+
+	/* original settings for clock rate of 100 Khz (8,25,0,0,2) were
+	   incorrect. They should have been 80,125,1,3,3. There are 17 param
+	   combinations to produce this freq. For 1.5 Mhz use 120,100,1,1,2
+	   (226 param. combinations) */
+	if (ctl == NULL) {
+		av = &ictl->cardspec.ssi;
+		ictl->clock_rate = 1500000;
+		av->f = ictl->clock_rate;
+		av->n = 120;
+		av->m = 100;
+		av->v = 1;
+		av->x = 1;
+		av->r = 2;
+		write_av9110(sc, av->n, av->m, av->v, av->x, av->r);
+		return;
+	}
+
+	av = &ctl->cardspec.ssi;
+
+	if (av->f == 0)
+		return;
+
+	ictl->clock_rate = av->f;	/* really, this is the rate we are */
+	ictl->cardspec.ssi = *av;
+
+	write_av9110(sc, av->n, av->m, av->v, av->x, av->r);
 }
 
 /* Given a user provided state, set ourselves up to match it.
    This will always reset the card if needed. */
-static void lmc_hssi_set_status(struct card * const sc, struct control *ctl)
+static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
-		lmc_hssi_set_clock(sc, sc->ictl.clock_source);
+		lmc_ssi_set_clock(sc, sc->ictl.clock_source);
+		lmc_ssi_set_speed(sc, &sc->ictl);
 		lmc_set_protocol(sc, NULL);
-
 		return;
 	}
 
 	/* check for change in clock source */
-	if (ctl->clock_source && !sc->ictl.clock_source) {
-		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
+	if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_INT
+	    && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) {
+		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
 		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
-	} else if (!ctl->clock_source && sc->ictl.clock_source) {
+	} else if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_EXT
+		 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) {
+		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
 		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
-		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
 	}
 
+	if (ctl->clock_rate != sc->ictl.clock_rate)
+		lmc_ssi_set_speed(sc, ctl);
+
 	lmc_set_protocol(sc, ctl);
 }
 
+/* Return hardware link status. 0 == link is down, 1 == link is up. */
+static int lmc_ssi_get_link_status(struct card * const sc)
+{
+	u16 link_status;
+	u32 ticks;
+	int ret = 1;
+	int hw_hdsk = 1;
+
+	/* missing CTS?  Hmm.  If we require CTS on, we may never get the
+	   link to come up, so omit it in this test.
+
+	   Also, it seems that with a loopback cable, DCD isn't asserted,
+	   so just check for things like this:
+	   - DSR _must_ be asserted.
+	   - One of DCD or CTS must be asserted. */
+
+	/* LMC 1000 (SSI) LED definitions
+	   - led0 green = power to adapter, Gate Array loaded & driver attached
+	   - led1 green = DSR and DTR and RTS and CTS are set
+	   - led2 green = Cable detected
+	   - led3 red   = No timing is available from the cable or the on-board
+			  frequency generator. */
+
+	link_status = lmc_mii_readreg(sc, 0, 16);
+
+	/* Is the transmit clock still available */
+	ticks = LMC_CSR_READ(sc, csr_gp_timer);
+	ticks = 0x0000ffff - (ticks & 0x0000ffff);
+
+	lmc_led_on(sc, LMC_MII16_LED0);
+
+	/* transmit clock determination */
+	if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT)
+		lmc_led_off(sc, LMC_MII16_LED3);
+	else if (ticks == 0) {	/* no clock found ? */
+		ret = 0;
+		if (sc->last_led_err[3] != 1) {
+			sc->extra_stats.tx_lossOfClockCnt++;
+			printk(KERN_WARNING "%s: Lost Clock, Link Down\n",
+			       sc->name);
+		}
+		sc->last_led_err[3] = 1;
+		lmc_led_on(sc, LMC_MII16_LED3);	/* turn ON red LED */
+	} else {
+		if (sc->last_led_err[3] == 1)
+			printk(KERN_WARNING "%s: Clock Returned\n", sc->name);
+		sc->last_led_err[3] = 0;
+		lmc_led_off(sc, LMC_MII16_LED3); /* turn OFF red LED */
+	}
+
+	if ((link_status & LMC_MII16_SSI_DSR) == 0) { /* Also HSSI CA */
+		ret = 0;
+		hw_hdsk = 0;
+	}
+
+#ifdef CONFIG_LMC_IGNORE_HARDWARE_HANDSHAKE
+	if ((link_status & (LMC_MII16_SSI_CTS | LMC_MII16_SSI_DCD)) == 0) {
+		ret = 0;
+		hw_hdsk = 0;
+	}
+#endif
+
+	if (hw_hdsk == 0) {
+		if (sc->last_led_err[1] != 1)
+			printk(KERN_WARNING "%s: DSR not asserted\n", sc->name);
+		sc->last_led_err[1] = 1;
+		lmc_led_off(sc, LMC_MII16_LED1);
+	} else {
+		if (sc->last_led_err[1] != 0)
+			printk(KERN_WARNING "%s: DSR now asserted\n", sc->name);
+		sc->last_led_err[1] = 0;
+		lmc_led_on(sc, LMC_MII16_LED1);
+	}
+
+	if (ret == 1)
+		lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */
+
+	return ret;
+}
+
+static void lmc_ssi_set_link_status(struct card * const sc, int state)
+{
+	if (state == LMC_LINK_UP) {
+		sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
+		printk(LMC_PRINTF_FMT ": asserting DTR and RTS\n",
+		       LMC_PRINTF_ARGS);
+	} else {
+		sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
+		printk(LMC_PRINTF_FMT ": deasserting DTR and RTS\n",
+		       LMC_PRINTF_ARGS);
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+
+}
+
+/* 0 == 16bit, 1 == 32bit */
+static void lmc_ssi_set_crc_length(struct card * const sc, int state)
+{
+	if (state == LMC_CTL_CRC_LENGTH_32) {
+		/* 32 bit */
+		sc->lmc_miireg16 |= LMC_MII16_SSI_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
+		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
+
+	} else {
+		/* 16 bit */
+		sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC;
+		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
+		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+}
+
+static void lmc_ssi_default(struct card * const sc)
+{
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+
+	/* make TXCLOCK always be an output */
+	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
+
+	lmc_ssi_set_link_status(sc, LMC_LINK_DOWN);
+	lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	lmc_ssi_set_speed(sc, NULL);
+	lmc_ssi_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+}
+
+static void lmc_ssi_watchdog(struct card * const sc)
+{
+	u16 mii17 = lmc_mii_readreg(sc, 0, 17);
+	if (((mii17 >> 3) & 7) == 7)
+		lmc_led_off(sc, LMC_MII16_LED2);
+	else
+		lmc_led_on(sc, LMC_MII16_LED2);
+}
+
+
+/* HSSI methods */
+
+static void lmc_hssi_init(struct card * const sc)
+{
+	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC5200;
+	lmc_gpio_mkoutput(sc, LMC_GEP_HSSI_CLOCK);
+}
+
 /* 1 == internal, 0 == external */
 static void lmc_hssi_set_clock(struct card * const sc, int ie)
 {
@@ -187,8 +371,31 @@ static void lmc_hssi_set_clock(struct card * const sc, int ie)
 	}
 }
 
+/* Given a user provided state, set ourselves up to match it.
+   This will always reset the card if needed. */
+static void lmc_hssi_set_status(struct card * const sc, struct control *ctl)
+{
+	if (ctl == NULL) {
+		lmc_hssi_set_clock(sc, sc->ictl.clock_source);
+		lmc_set_protocol(sc, NULL);
+
+		return;
+	}
+
+	/* check for change in clock source */
+	if (ctl->clock_source && !sc->ictl.clock_source) {
+		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
+		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
+	} else if (!ctl->clock_source && sc->ictl.clock_source) {
+		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
+		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	}
+
+	lmc_set_protocol(sc, ctl);
+}
+
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
-static int lmc_hssi_get_link_status(struct card * const sc)
+static inline int lmc_hssi_get_link_status(struct card * const sc)
 {
 	/* We're using the same code as SSI since they're practically
 	   the same */
@@ -226,6 +433,15 @@ static void lmc_hssi_watchdog(struct card * const sc)
 	/* HSSI is blank */
 }
 
+static void lmc_hssi_default(struct card * const sc)
+{
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	lmc_hssi_set_link_status(sc, LMC_LINK_DOWN);
+	lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
+	lmc_hssi_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+}
+
+
 /* DS3 methods */
 
 /* Set cable length */
@@ -241,13 +457,17 @@ static void lmc_ds3_set_100ft(struct card * const sc, int ie)
 	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void lmc_ds3_default(struct card * const sc)
+/* 1 == DS3 payload scrambled, 0 == not scrambled */
+static void lmc_ds3_set_scram(struct card * const sc, int ie)
 {
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
-
-	lmc_ds3_set_100ft(sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
-	lmc_ds3_set_scram(sc, LMC_CTL_OFF);
-	lmc_ds3_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	if (ie == LMC_CTL_ON) {
+		sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM;
+		sc->ictl.scrambler_onoff = LMC_CTL_ON;
+	} else {
+		sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM;
+		sc->ictl.scrambler_onoff = LMC_CTL_OFF;
+	}
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
 /* Given a user provided state, set ourselves up to match it.
@@ -305,19 +525,6 @@ static void lmc_ds3_init(struct card * const sc)
 	}
 }
 
-/* 1 == DS3 payload scrambled, 0 == not scrambled */
-static void lmc_ds3_set_scram(struct card * const sc, int ie)
-{
-	if (ie == LMC_CTL_ON) {
-		sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM;
-		sc->ictl.scrambler_onoff = LMC_CTL_ON;
-	} else {
-		sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM;
-		sc->ictl.scrambler_onoff = LMC_CTL_OFF;
-	}
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-}
-
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
 static int lmc_ds3_get_link_status(struct card * const sc)
 {
@@ -339,390 +546,103 @@ static int lmc_ds3_get_link_status(struct card * const sc)
 	lmc_led_on(sc, LMC_DS3_LED2);
 
 	if ((link_status & LMC_FRAMER_REG0_DLOS) ||
-	    (link_status & LMC_FRAMER_REG0_OOFS)) {
-		ret = 0;
-		if (sc->last_led_err[3] != 1) {
-			u16 r1;
-
-			 /* Turn on Xbit error as our cisco does */
-			lmc_mii_writereg(sc, 0, 17, 01);
-			r1 = lmc_mii_readreg(sc, 0, 18);
-			r1 &= 0xfe;
-			lmc_mii_writereg(sc, 0, 18, r1);
-			printk(KERN_WARNING
-			       "%s: Red Alarm - Loss of Signal or Loss of Framing\n",
-			       sc->name);
-		}
-		lmc_led_on(sc, LMC_DS3_LED3);	/* turn on red LED */
-		sc->last_led_err[3] = 1;
-	} else {
-		lmc_led_off(sc, LMC_DS3_LED3);	/* turn on red LED */
-		if (sc->last_led_err[3] == 1) {
-			u16 r1;
-			/* Turn off Xbit error */
-			lmc_mii_writereg(sc, 0, 17, 01);
-			r1 = lmc_mii_readreg(sc, 0, 18);
-			r1 |= 0x01;
-			lmc_mii_writereg(sc, 0, 18, r1);
-		}
-		sc->last_led_err[3] = 0;
-	}
-
-	lmc_mii_writereg(sc, 0, 17, 0x10);
-	link_status_11 = lmc_mii_readreg(sc, 0, 18);
-	if ((link_status & LMC_FRAMER_REG0_AIS) ||
-	   (link_status_11 & LMC_FRAMER_REG10_XBIT)) {
-		ret = 0;
-		if (sc->last_led_err[0] != 1) {
-			printk(KERN_WARNING
-			       "%s: AIS Alarm or XBit Error\n", sc->name);
-			printk(KERN_WARNING
-			       "%s: Remote end has loss of signal or framing\n",
-			       sc->name);
-		}
-		lmc_led_on(sc, LMC_DS3_LED0);
-		sc->last_led_err[0] = 1;
-	} else {
-		lmc_led_off(sc, LMC_DS3_LED0);
-		sc->last_led_err[0] = 0;
-	}
-
-	lmc_mii_writereg(sc, 0, 17, 9);
-	link_status = lmc_mii_readreg(sc, 0, 18);
-
-	if (link_status & LMC_FRAMER_REG9_RBLUE) {
-		ret = 0;
-		if (sc->last_led_err[1] != 1) {
-			printk(KERN_WARNING
-			       "%s: Blue Alarm - Receiving all 1's\n",
-			       sc->name);
-		}
-		lmc_led_on(sc, LMC_DS3_LED1);
-		sc->last_led_err[1] = 1;
-	} else {
-		lmc_led_off(sc, LMC_DS3_LED1);
-		sc->last_led_err[1] = 0;
-	}
-
-	return ret;
-}
-
-/* 0 == 16bit, 1 == 32bit */
-static void lmc_ds3_set_crc_length(struct card * const sc, int state)
-{
-	if (state == LMC_CTL_CRC_LENGTH_32) {
-		/* 32 bit */
-		sc->lmc_miireg16 |= LMC_MII16_DS3_CRC;
-		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-	} else {
-		/* 16 bit */
-		sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC;
-		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-	}
-
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-}
-
-static void lmc_ds3_watchdog(struct card * const sc)
-{
-}
-
-
-/* SSI methods */
-
-static void lmc_ssi_init(struct card * const sc)
-{
-	u16 mii17;
-	int cable;
-
-	sc->ictl.cardtype = LMC_CTL_CARDTYPE_LMC1000;
-
-	mii17 = lmc_mii_readreg(sc, 0, 17);
-
-	cable = (mii17 & LMC_MII17_SSI_CABLE_MASK) >> LMC_MII17_SSI_CABLE_SHIFT;
-	sc->ictl.cable_type = cable;
-
-	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
-}
-
-static void lmc_ssi_default(struct card * const sc)
-{
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
-
-	/* make TXCLOCK always be an output */
-	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
-
-	lmc_ssi_set_link_status(sc, LMC_LINK_DOWN);
-	lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
-	lmc_ssi_set_speed(sc, NULL);
-	lmc_ssi_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
-}
-
-/* Given a user provided state, set ourselves up to match it.
-   This will always reset the card if needed. */
-static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
-{
-	if (ctl == NULL) {
-		lmc_ssi_set_clock(sc, sc->ictl.clock_source);
-		lmc_ssi_set_speed(sc, &sc->ictl);
-		lmc_set_protocol(sc, NULL);
-		return;
-	}
-
-	/* check for change in clock source */
-	if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_INT
-	    && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) {
-		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
-		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
-	} else if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_EXT
-		 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) {
-		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
-		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
-	}
-
-	if (ctl->clock_rate != sc->ictl.clock_rate)
-		lmc_ssi_set_speed(sc, ctl);
-
-	lmc_set_protocol(sc, ctl);
-}
-
-/* 1 == internal, 0 == external */
-static void lmc_ssi_set_clock(struct card * const sc, int ie)
-{
-	int old;
-	old = ie;
-	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
-		sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
-		if (ie != old)
-			printk(LMC_PRINTF_FMT ": clock external\n",
-			       LMC_PRINTF_ARGS);
-	} else {
-		sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
-		if (ie != old)
-			printk(LMC_PRINTF_FMT ": clock internal\n",
-			       LMC_PRINTF_ARGS);
-	}
-}
-
-static void lmc_ssi_set_speed(struct card * const sc, struct control *ctl)
-{
-	struct control *ictl = &sc->ictl;
-	lmc_av9110_t *av;
-
-	/* original settings for clock rate of 100 Khz (8,25,0,0,2) were
-	   incorrect. They should have been 80,125,1,3,3. There are 17 param
-	   combinations to produce this freq. For 1.5 Mhz use 120,100,1,1,2
-	   (226 param. combinations) */
-	if (ctl == NULL) {
-		av = &ictl->cardspec.ssi;
-		ictl->clock_rate = 1500000;
-		av->f = ictl->clock_rate;
-		av->n = 120;
-		av->m = 100;
-		av->v = 1;
-		av->x = 1;
-		av->r = 2;
-		write_av9110(sc, av->n, av->m, av->v, av->x, av->r);
-		return;
-	}
-
-	av = &ctl->cardspec.ssi;
-
-	if (av->f == 0)
-		return;
-
-	ictl->clock_rate = av->f;	/* really, this is the rate we are */
-	ictl->cardspec.ssi = *av;
-
-	write_av9110(sc, av->n, av->m, av->v, av->x, av->r);
-}
-
-/* Return hardware link status. 0 == link is down, 1 == link is up. */
-static int lmc_ssi_get_link_status(struct card * const sc)
-{
-	u16 link_status;
-	u32 ticks;
-	int ret = 1;
-	int hw_hdsk = 1;
-
-	/* missing CTS?  Hmm.  If we require CTS on, we may never get the
-	   link to come up, so omit it in this test.
-
-	   Also, it seems that with a loopback cable, DCD isn't asserted,
-	   so just check for things like this:
-	   - DSR _must_ be asserted.
-	   - One of DCD or CTS must be asserted. */
-
-	/* LMC 1000 (SSI) LED definitions
-	   - led0 green = power to adapter, Gate Array loaded & driver attached
-	   - led1 green = DSR and DTR and RTS and CTS are set
-	   - led2 green = Cable detected
-	   - led3 red   = No timing is available from the cable or the on-board
-			  frequency generator. */
-
-	link_status = lmc_mii_readreg(sc, 0, 16);
-
-	/* Is the transmit clock still available */
-	ticks = LMC_CSR_READ(sc, csr_gp_timer);
-	ticks = 0x0000ffff - (ticks & 0x0000ffff);
-
-	lmc_led_on(sc, LMC_MII16_LED0);
-
-	/* transmit clock determination */
-	if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT)
-		lmc_led_off(sc, LMC_MII16_LED3);
-	else if (ticks == 0) {	/* no clock found ? */
+	    (link_status & LMC_FRAMER_REG0_OOFS)) {
 		ret = 0;
 		if (sc->last_led_err[3] != 1) {
-			sc->extra_stats.tx_lossOfClockCnt++;
-			printk(KERN_WARNING "%s: Lost Clock, Link Down\n",
+			u16 r1;
+
+			 /* Turn on Xbit error as our cisco does */
+			lmc_mii_writereg(sc, 0, 17, 01);
+			r1 = lmc_mii_readreg(sc, 0, 18);
+			r1 &= 0xfe;
+			lmc_mii_writereg(sc, 0, 18, r1);
+			printk(KERN_WARNING
+			       "%s: Red Alarm - Loss of Signal or Loss of Framing\n",
 			       sc->name);
 		}
+		lmc_led_on(sc, LMC_DS3_LED3);	/* turn on red LED */
 		sc->last_led_err[3] = 1;
-		lmc_led_on(sc, LMC_MII16_LED3);	/* turn ON red LED */
 	} else {
-		if (sc->last_led_err[3] == 1)
-			printk(KERN_WARNING "%s: Clock Returned\n", sc->name);
+		lmc_led_off(sc, LMC_DS3_LED3);	/* turn on red LED */
+		if (sc->last_led_err[3] == 1) {
+			u16 r1;
+			/* Turn off Xbit error */
+			lmc_mii_writereg(sc, 0, 17, 01);
+			r1 = lmc_mii_readreg(sc, 0, 18);
+			r1 |= 0x01;
+			lmc_mii_writereg(sc, 0, 18, r1);
+		}
 		sc->last_led_err[3] = 0;
-		lmc_led_off(sc, LMC_MII16_LED3); /* turn OFF red LED */
 	}
 
-	if ((link_status & LMC_MII16_SSI_DSR) == 0) { /* Also HSSI CA */
+	lmc_mii_writereg(sc, 0, 17, 0x10);
+	link_status_11 = lmc_mii_readreg(sc, 0, 18);
+	if ((link_status & LMC_FRAMER_REG0_AIS) ||
+	   (link_status_11 & LMC_FRAMER_REG10_XBIT)) {
 		ret = 0;
-		hw_hdsk = 0;
+		if (sc->last_led_err[0] != 1) {
+			printk(KERN_WARNING
+			       "%s: AIS Alarm or XBit Error\n", sc->name);
+			printk(KERN_WARNING
+			       "%s: Remote end has loss of signal or framing\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED0);
+		sc->last_led_err[0] = 1;
+	} else {
+		lmc_led_off(sc, LMC_DS3_LED0);
+		sc->last_led_err[0] = 0;
 	}
 
-#ifdef CONFIG_LMC_IGNORE_HARDWARE_HANDSHAKE
-	if ((link_status & (LMC_MII16_SSI_CTS | LMC_MII16_SSI_DCD)) == 0) {
-		ret = 0;
-		hw_hdsk = 0;
-	}
-#endif
+	lmc_mii_writereg(sc, 0, 17, 9);
+	link_status = lmc_mii_readreg(sc, 0, 18);
 
-	if (hw_hdsk == 0) {
-		if (sc->last_led_err[1] != 1)
-			printk(KERN_WARNING "%s: DSR not asserted\n", sc->name);
+	if (link_status & LMC_FRAMER_REG9_RBLUE) {
+		ret = 0;
+		if (sc->last_led_err[1] != 1) {
+			printk(KERN_WARNING
+			       "%s: Blue Alarm - Receiving all 1's\n",
+			       sc->name);
+		}
+		lmc_led_on(sc, LMC_DS3_LED1);
 		sc->last_led_err[1] = 1;
-		lmc_led_off(sc, LMC_MII16_LED1);
 	} else {
-		if (sc->last_led_err[1] != 0)
-			printk(KERN_WARNING "%s: DSR now asserted\n", sc->name);
+		lmc_led_off(sc, LMC_DS3_LED1);
 		sc->last_led_err[1] = 0;
-		lmc_led_on(sc, LMC_MII16_LED1);
 	}
 
-	if (ret == 1)
-		lmc_led_on(sc, LMC_MII16_LED2); /* Over all good status? */
-
 	return ret;
 }
 
-static void lmc_ssi_set_link_status(struct card * const sc, int state)
-{
-	if (state == LMC_LINK_UP) {
-		sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
-		printk(LMC_PRINTF_FMT ": asserting DTR and RTS\n",
-		       LMC_PRINTF_ARGS);
-	} else {
-		sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
-		printk(LMC_PRINTF_FMT ": deasserting DTR and RTS\n",
-		       LMC_PRINTF_ARGS);
-	}
-
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-
-}
-
 /* 0 == 16bit, 1 == 32bit */
-static void lmc_ssi_set_crc_length(struct card * const sc, int state)
+static void lmc_ds3_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
-		sc->lmc_miireg16 |= LMC_MII16_SSI_CRC;
+		sc->lmc_miireg16 |= LMC_MII16_DS3_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
-
 	} else {
 		/* 16 bit */
-		sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC;
+		sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
 	}
 
 	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-/* These are bits to program the ssi frequency generator */
-static inline void write_av9110_bit(struct card *sc, int c)
+static void lmc_ds3_watchdog(struct card * const sc)
 {
-	/* set the data bit as we need it. */
-	sc->lmc_gpio &= ~(LMC_GEP_CLK);
-	if (c & 0x01)
-		sc->lmc_gpio |= LMC_GEP_DATA;
-	else
-		sc->lmc_gpio &= ~(LMC_GEP_DATA);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-	/* set the clock to high */
-	sc->lmc_gpio |= LMC_GEP_CLK;
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-	/* set the clock to low again. */
-	sc->lmc_gpio &= ~(LMC_GEP_CLK);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
 }
 
-static void write_av9110(struct card *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
+static void lmc_ds3_default(struct card * const sc)
 {
-	int i;
-
-#if 0
-	printk(LMC_PRINTF_FMT ": speed %u, %d %d %d %d %d\n",
-	       LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r);
-#endif
-
-	sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR;
-	sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-	/* Set the TXCLOCK, GENERATOR, SERIAL, and SERIALCLK as outputs. */
-	lmc_gpio_mkoutput(sc, (LMC_GEP_DATA | LMC_GEP_CLK
-				| LMC_GEP_SSI_GENERATOR));
-
-	sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
-
-	/* a shifting we will go... */
-	for (i = 0; i < 7; i++)
-		write_av9110_bit(sc, n >> i);
-	for (i = 0; i < 7; i++)
-		write_av9110_bit(sc, m >> i);
-	for (i = 0; i < 1; i++)
-		write_av9110_bit(sc, v >> i);
-	for (i = 0; i < 2; i++)
-		write_av9110_bit(sc, x >> i);
-	for (i = 0; i < 2; i++)
-		write_av9110_bit(sc, r >> i);
-	for (i = 0; i < 5; i++)
-		write_av9110_bit(sc, 0x17 >> i);
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
 
-	/* stop driving serial-related signals */
-	lmc_gpio_mkinput(sc, (LMC_GEP_DATA | LMC_GEP_CLK |
-			      LMC_GEP_SSI_GENERATOR));
+	lmc_ds3_set_100ft(sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
+	lmc_ds3_set_scram(sc, LMC_CTL_OFF);
+	lmc_ds3_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 }
 
-static void lmc_ssi_watchdog(struct card * const sc)
-{
-	u16 mii17 = lmc_mii_readreg(sc, 0, 17);
-	if (((mii17 >> 3) & 7) == 7)
-		lmc_led_off(sc, LMC_MII16_LED2);
-	else
-		lmc_led_on(sc, LMC_MII16_LED2);
-}
 
 /* T1 methods */
 
@@ -742,6 +662,21 @@ static int lmc_t1_read(struct card * const sc, int a)
 }
 */
 
+/* 1 == T1 Circuit Type , 0 == E1 Circuit Type */
+static void lmc_t1_set_circuit_type(struct card * const sc, int ie)
+{
+	if (ie == LMC_CTL_CIRCUIT_TYPE_T1) {
+		sc->lmc_miireg16 |= LMC_MII16_T1_Z;
+		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1;
+		printk(KERN_INFO "%s: In T1 Mode\n", sc->name);
+	} else {
+		sc->lmc_miireg16 &= ~LMC_MII16_T1_Z;
+		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1;
+		printk(KERN_INFO "%s: In E1 Mode\n", sc->name);
+	}
+
+	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+}
 
 static void lmc_t1_init(struct card * const sc)
 {
@@ -802,14 +737,6 @@ static void lmc_t1_init(struct card * const sc)
 	sc->lmc_miireg16 = mii16;
 }
 
-static void lmc_t1_default(struct card * const sc)
-{
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
-	lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
-	lmc_t1_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
-	/* Right now we can only clock from out internal source */
-	sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
-}
 /* Given a user provided state, set ourselves up to match it.
    This will always reset the card if needed. */
 static void lmc_t1_set_status(struct card * const sc, struct control *ctl)
@@ -939,22 +866,6 @@ static int lmc_t1_get_link_status(struct card * const sc)
 	return ret;
 }
 
-/* 1 == T1 Circuit Type , 0 == E1 Circuit Type */
-static void lmc_t1_set_circuit_type(struct card * const sc, int ie)
-{
-	if (ie == LMC_CTL_CIRCUIT_TYPE_T1) {
-		sc->lmc_miireg16 |= LMC_MII16_T1_Z;
-		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1;
-		printk(KERN_INFO "%s: In T1 Mode\n", sc->name);
-	} else {
-		sc->lmc_miireg16 &= ~LMC_MII16_T1_Z;
-		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1;
-		printk(KERN_INFO "%s: In E1 Mode\n", sc->name);
-	}
-
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-}
-
 /* 0 == 16bit, 1 == 32bit */
 static void lmc_t1_set_crc_length(struct card * const sc, int state)
 {
@@ -1000,8 +911,57 @@ static void lmc_t1_watchdog(struct card * const sc)
 {
 }
 
-static void lmc_set_protocol(struct card * const sc, struct control *ctl)
+static void lmc_t1_default(struct card * const sc)
 {
-	if (!ctl)
-		sc->ictl.keepalive_onoff = LMC_CTL_ON;
+	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
+	lmc_t1_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
+	/* Right now we can only clock from out internal source */
+	sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 }
+
+
+struct media lmc_ssi_media = {
+	.init = lmc_ssi_init,
+	.defaults = lmc_ssi_default,
+	.set_status = lmc_ssi_set_status,
+	.set_clock_source = lmc_ssi_set_clock,
+	.set_speed = lmc_ssi_set_speed,
+	.get_link_status = lmc_ssi_get_link_status,
+	.set_link_status = lmc_ssi_set_link_status,
+	.set_crc_length = lmc_ssi_set_crc_length,
+	.watchdog = lmc_ssi_watchdog,
+};
+
+struct media lmc_hssi_media = {
+	.init = lmc_hssi_init,
+	.defaults = lmc_hssi_default,
+	.set_status = lmc_hssi_set_status,
+	.set_clock_source = lmc_hssi_set_clock,
+	.get_link_status = lmc_hssi_get_link_status,
+	.set_link_status = lmc_hssi_set_link_status,
+	.set_crc_length = lmc_hssi_set_crc_length,
+	.watchdog = lmc_hssi_watchdog,
+};
+
+struct media lmc_ds3_media = {
+	.init = lmc_ds3_init,
+	.defaults = lmc_ds3_default,
+	.set_status = lmc_ds3_set_status,
+	.set_cable_length = lmc_ds3_set_100ft,
+	.set_scrambler = lmc_ds3_set_scram,
+	.get_link_status = lmc_ds3_get_link_status,
+	.set_crc_length = lmc_ds3_set_crc_length,
+	.watchdog = lmc_ds3_watchdog,
+};
+
+struct media lmc_t1_media = {
+	.init = lmc_t1_init,
+	.defaults = lmc_t1_default,
+	.set_status = lmc_t1_set_status,
+	.set_clock_source = lmc_t1_set_clock,
+	.get_link_status = lmc_t1_get_link_status,
+	.set_crc_length = lmc_t1_set_crc_length,
+	.set_circuit_type = lmc_t1_set_circuit_type,
+	.watchdog = lmc_t1_watchdog,
+};
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 10/29] LMC: Remove empty media functions.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (8 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 09/29] LMC: shuffle protocol routines to avoid a need for prototypes Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 11/29] LMC: Get rid of lmcConsoleLog() Krzysztof Halasa
                   ` (18 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |    3 ++-
 drivers/net/wan/lmc/media.c |   16 ----------------
 2 files changed, 2 insertions(+), 17 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 6b7c09a..1fbd802 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -692,7 +692,8 @@ static void lmc_watchdog(unsigned long data)
 	}
 
 	/* Call media specific watchdog functions */
-	sc->lmc_media->watchdog(sc);
+	if (sc->lmc_media->watchdog)
+		sc->lmc_media->watchdog(sc);
 
 	/* Poke the transmitter to make sure it never stops, even if we run
 	   out of mem */
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 9701d30..2411214 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -428,11 +428,6 @@ static void lmc_hssi_set_crc_length(struct card * const sc, int state)
 	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void lmc_hssi_watchdog(struct card * const sc)
-{
-	/* HSSI is blank */
-}
-
 static void lmc_hssi_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
@@ -630,10 +625,6 @@ static void lmc_ds3_set_crc_length(struct card * const sc, int state)
 	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
 }
 
-static void lmc_ds3_watchdog(struct card * const sc)
-{
-}
-
 static void lmc_ds3_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
@@ -907,10 +898,6 @@ static void lmc_t1_set_clock(struct card * const sc, int ie)
 	}
 }
 
-static void lmc_t1_watchdog(struct card * const sc)
-{
-}
-
 static void lmc_t1_default(struct card * const sc)
 {
 	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
@@ -941,7 +928,6 @@ struct media lmc_hssi_media = {
 	.get_link_status = lmc_hssi_get_link_status,
 	.set_link_status = lmc_hssi_set_link_status,
 	.set_crc_length = lmc_hssi_set_crc_length,
-	.watchdog = lmc_hssi_watchdog,
 };
 
 struct media lmc_ds3_media = {
@@ -952,7 +938,6 @@ struct media lmc_ds3_media = {
 	.set_scrambler = lmc_ds3_set_scram,
 	.get_link_status = lmc_ds3_get_link_status,
 	.set_crc_length = lmc_ds3_set_crc_length,
-	.watchdog = lmc_ds3_watchdog,
 };
 
 struct media lmc_t1_media = {
@@ -963,5 +948,4 @@ struct media lmc_t1_media = {
 	.get_link_status = lmc_t1_get_link_status,
 	.set_crc_length = lmc_t1_set_crc_length,
 	.set_circuit_type = lmc_t1_set_circuit_type,
-	.watchdog = lmc_t1_watchdog,
 };
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 11/29] LMC: Get rid of lmcConsoleLog().
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (9 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 10/29] LMC: Remove empty media functions Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 12/29] LMC: Get rid of the event logger Krzysztof Halasa
                   ` (17 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/debug.c |   34 ----------------------------------
 drivers/net/wan/lmc/debug.h |   13 -------------
 drivers/net/wan/lmc/main.c  |   17 ++++++++++++++---
 3 files changed, 14 insertions(+), 50 deletions(-)

diff --git a/drivers/net/wan/lmc/debug.c b/drivers/net/wan/lmc/debug.c
index 0abae05..e01b6e2 100644
--- a/drivers/net/wan/lmc/debug.c
+++ b/drivers/net/wan/lmc/debug.c
@@ -7,40 +7,6 @@
  * Prints out len, max to 80 octets using printk, 20 per line
  */
 
-#if defined(DEBUG) && defined(LMC_PACKET_LOG)
-void lmcConsoleLog(char *type, unsigned char *ucData, int iLen)
-{
-	int iNewLine = 1;
-	char str[80], *pstr;
-
-	sprintf(str, KERN_DEBUG "lmc: %s: ", type);
-	pstr = str+strlen(str);
-
-	if (iLen > 240) {
-		printk(KERN_DEBUG "lmc: Printing 240 chars... out of: %d\n",
-		       iLen);
-		iLen = 240;
-	} else
-		printk(KERN_DEBUG "lmc: Printing %d chars\n", iLen);
-
-	while (iLen > 0) {
-		sprintf(pstr, "%02x ", *ucData);
-		pstr += 3;
-		ucData++;
-		if (!(iNewLine % 20)) {
-			sprintf(pstr, "\n");
-			printk(str);
-			sprintf(str, KERN_DEBUG "lmc: %s: ", type);
-			pstr = str + strlen(str);
-		}
-		iNewLine++;
-		iLen--;
-	}
-	sprintf(pstr, "\n");
-	printk(str);
-}
-#endif
-
 #ifdef DEBUG
 u32 lmcEventLogIndex;
 u32 lmcEventLogBuf[LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS];
diff --git a/drivers/net/wan/lmc/debug.h b/drivers/net/wan/lmc/debug.h
index 289f7d9..6bee4ee 100644
--- a/drivers/net/wan/lmc/debug.h
+++ b/drivers/net/wan/lmc/debug.h
@@ -1,18 +1,6 @@
 #ifndef _LMC_DEBUG_H_
 #define _LMC_DEBUG_H_
 
-#ifdef DEBUG
-#ifdef LMC_PACKET_LOG
-#define LMC_CONSOLE_LOG(x, y, z) lmcConsoleLog((x), (y), (z))
-#else
-#define LMC_CONSOLE_LOG(x, y, z)
-#endif
-#else
-#define LMC_CONSOLE_LOG(x, y, z)
-#endif
-
-
-
 /* Debug --- Event log definitions --- */
 /* EVENTLOGSIZE*EVENTLOGARGS needs to be a power of 2 */
 #define LMC_EVENTLOGSIZE 1024	/* number of events in eventlog */
@@ -45,7 +33,6 @@ extern u32 lmcEventLogBuf[LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS];
 #define LMC_EVENT_LOG(x, y, z)
 #endif /* end ifdef _DBG_EVENTLOG */
 
-void lmcConsoleLog(char *type, unsigned char *ucData, int iLen);
 void lmcEventLog(u32 EventNum, u32 arg2, u32 arg3);
 void lmc_trace(struct net_device *dev, char *msg);
 
diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 1fbd802..a19d63a 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -62,6 +62,8 @@
 #include <asm/processor.h>   /* Processor type for cache alignment. */
 #include <asm/dma.h>
 
+#undef DEBUG_PKT
+
 #define DRIVER_MAJOR_VERSION     1
 #define DRIVER_MINOR_VERSION    34
 #define DRIVER_SUB_VERSION       0
@@ -1329,7 +1331,10 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 	sc->lmc_txq[entry] = skb;
 	sc->lmc_txring[entry].buffer1 = virt_to_bus(skb->data);
 
-	LMC_CONSOLE_LOG("xmit", skb->data, skb->len);
+#ifdef DEBUG_PKT
+	printk(KERN_DEBUG "%s TX(%i):", dev->name, skb->len);
+	debug_frame(skb);
+#endif
 
 #ifndef GCOM
 	/* If the queue is less than half full, don't interrupt */
@@ -1479,8 +1484,6 @@ static int lmc_rx(struct net_device *dev)
 		sc->lmc_device->stats.rx_packets++;
 		sc->lmc_device->stats.rx_bytes += len;
 
-		LMC_CONSOLE_LOG("recv", skb->data, len);
-
 		/* I'm not sure of the sanity of this. Packets could be arriving
 		   at a constant 44.210mbits/sec and we're going to copy them
 		   into a new buffer?? */
@@ -1493,6 +1496,10 @@ give_it_anyways:
 			sc->lmc_rxring[i].buffer1 = 0x0;
 
 			skb_put(skb, len);
+#ifdef DEBUG_PKT
+			printk(KERN_DEBUG "%s RX(%i):", dev->name, len);
+			debug_frame(skb);
+#endif
 			skb->protocol = hdlc_type_trans(skb, sc->lmc_device);
 			skb_reset_mac_header(skb);
 			/* skb_reset_network_header(skb); */
@@ -1524,6 +1531,10 @@ give_it_anyways:
 			if (!nsb)
 				goto give_it_anyways;
 			skb_copy_from_linear_data(skb, skb_put(nsb, len), len);
+#ifdef DEBUG_PKT
+			printk(KERN_DEBUG "%s RX(%i):", dev->name, len);
+			debug_frame(nsb);
+#endif
 			nsb->protocol = hdlc_type_trans(nsb, sc->lmc_device);
 			skb_reset_mac_header(nsb);
 			/* skb_reset_network_header(nsb); */
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 12/29] LMC: Get rid of the event logger.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (10 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 11/29] LMC: Get rid of lmcConsoleLog() Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 13/29] LMC: Get rid of debug.[ch] Krzysztof Halasa
                   ` (16 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Nobody will use this stuff anyway. It's much simpler to debug this with
printk() and friends.

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/debug.c |   18 ----------
 drivers/net/wan/lmc/debug.h |   33 ------------------
 drivers/net/wan/lmc/ioctl.h |    2 +-
 drivers/net/wan/lmc/lmc.h   |    4 --
 drivers/net/wan/lmc/main.c  |   79 ++++--------------------------------------
 5 files changed, 9 insertions(+), 127 deletions(-)

diff --git a/drivers/net/wan/lmc/debug.c b/drivers/net/wan/lmc/debug.c
index e01b6e2..7c05cfe 100644
--- a/drivers/net/wan/lmc/debug.c
+++ b/drivers/net/wan/lmc/debug.c
@@ -3,24 +3,6 @@
 #include <linux/interrupt.h>
 #include "debug.h"
 
-/*
- * Prints out len, max to 80 octets using printk, 20 per line
- */
-
-#ifdef DEBUG
-u32 lmcEventLogIndex;
-u32 lmcEventLogBuf[LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS];
-
-void lmcEventLog(u32 EventNum, u32 arg2, u32 arg3)
-{
-	lmcEventLogBuf[lmcEventLogIndex++] = EventNum;
-	lmcEventLogBuf[lmcEventLogIndex++] = arg2;
-	lmcEventLogBuf[lmcEventLogIndex++] = arg3;
-	lmcEventLogBuf[lmcEventLogIndex++] = jiffies;
-	lmcEventLogIndex &= (LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS) - 1;
-}
-#endif  /* DEBUG */
-
 void lmc_trace(struct net_device *dev, char *msg)
 {
 #ifdef LMC_TRACE
diff --git a/drivers/net/wan/lmc/debug.h b/drivers/net/wan/lmc/debug.h
index 6bee4ee..f026077 100644
--- a/drivers/net/wan/lmc/debug.h
+++ b/drivers/net/wan/lmc/debug.h
@@ -1,39 +1,6 @@
 #ifndef _LMC_DEBUG_H_
 #define _LMC_DEBUG_H_
 
-/* Debug --- Event log definitions --- */
-/* EVENTLOGSIZE*EVENTLOGARGS needs to be a power of 2 */
-#define LMC_EVENTLOGSIZE 1024	/* number of events in eventlog */
-#define LMC_EVENTLOGARGS 4		/* number of args for each event */
-
-/* event indicators */
-#define LMC_EVENT_XMT           1
-#define LMC_EVENT_XMTEND        2
-#define LMC_EVENT_XMTINT        3
-#define LMC_EVENT_RCVINT        4
-#define LMC_EVENT_RCVEND        5
-#define LMC_EVENT_INT           6
-#define LMC_EVENT_XMTINTTMO     7
-#define LMC_EVENT_XMTPRCTMO     8
-#define LMC_EVENT_INTEND        9
-#define LMC_EVENT_RESET1       10
-#define LMC_EVENT_RESET2       11
-#define LMC_EVENT_FORCEDRESET  12
-#define LMC_EVENT_WATCHDOG     13
-#define LMC_EVENT_BADPKTSURGE  14
-#define LMC_EVENT_TBUSY0       15
-#define LMC_EVENT_TBUSY1       16
-
-
-#ifdef DEBUG
-extern u32 lmcEventLogIndex;
-extern u32 lmcEventLogBuf[LMC_EVENTLOGSIZE * LMC_EVENTLOGARGS];
-#define LMC_EVENT_LOG(x, y, z) lmcEventLog((x), (y), (z))
-#else
-#define LMC_EVENT_LOG(x, y, z)
-#endif /* end ifdef _DBG_EVENTLOG */
-
-void lmcEventLog(u32 EventNum, u32 arg2, u32 arg3);
 void lmc_trace(struct net_device *dev, char *msg);
 
 #endif
diff --git a/drivers/net/wan/lmc/ioctl.h b/drivers/net/wan/lmc/ioctl.h
index 45b97e0..1b7820f 100644
--- a/drivers/net/wan/lmc/ioctl.h
+++ b/drivers/net/wan/lmc/ioctl.h
@@ -18,7 +18,7 @@
 #define LMCIOCSINFO         (SIOCDEVPRIVATE + 4) /* set state to user values */
 #define LMCIOCGETLMCSTATS   (SIOCDEVPRIVATE + 5)
 #define LMCIOCCLEARLMCSTATS (SIOCDEVPRIVATE + 6)
-#define LMCIOCDUMPEVENTLOG  (SIOCDEVPRIVATE + 7)
+#define LMCIOCDUMPEVENTLOG  (SIOCDEVPRIVATE + 7) /* now unused */
 #define LMCIOCGETXINFO      (SIOCDEVPRIVATE + 8)
 #define LMCIOCSETCIRCUIT    (SIOCDEVPRIVATE + 9)
 #define LMCIOCUNUSEDATM     (SIOCDEVPRIVATE + 10)
diff --git a/drivers/net/wan/lmc/lmc.h b/drivers/net/wan/lmc/lmc.h
index c3464b6..4ab8fe8 100644
--- a/drivers/net/wan/lmc/lmc.h
+++ b/drivers/net/wan/lmc/lmc.h
@@ -21,8 +21,4 @@ extern struct media lmc_ssi_media;
 extern struct media lmc_t1_media;
 extern struct media lmc_hssi_media;
 
-#ifdef _DBG_EVENTLOG
-static void lmcEventLog(u32 EventNum, u32 arg2, u32 arg3);
-#endif
-
 #endif
diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index a19d63a..dc7e435 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -278,34 +278,16 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 		spin_lock_irqsave(&sc->lmc_lock, flags);
 		/* Reset driver and bring back to current state */
-		printk(KERN_DEBUG " REG16 before reset +%04x\n",
-		       lmc_mii_readreg(sc, 0, 16));
+		pr_debug("%s: REG16 before reset +%04x\n", dev->name,
+			 lmc_mii_readreg(sc, 0, 16));
 		lmc_running_reset(dev);
-		printk(KERN_DEBUG " REG16 after reset +%04x\n",
-		       lmc_mii_readreg(sc, 0, 16));
+		pr_debug("%s: REG16 after reset +%04x\n", dev->name,
+			 lmc_mii_readreg(sc, 0, 16));
 
-		LMC_EVENT_LOG(LMC_EVENT_FORCEDRESET,
-			      LMC_CSR_READ(sc, csr_status),
-			      lmc_mii_readreg(sc, 0, 16));
 		spin_unlock_irqrestore(&sc->lmc_lock, flags);
 		ret = 0;
 		break;
 
-#ifdef DEBUG
-	case LMCIOCDUMPEVENTLOG:
-		if (copy_to_user(ifr->ifr_data, &lmcEventLogIndex,
-				 sizeof(u32))) {
-			ret = -EFAULT;
-			break;
-		}
-		if (copy_to_user(ifr->ifr_data + sizeof(u32), lmcEventLogBuf,
-				 sizeof(lmcEventLogBuf)))
-			ret = -EFAULT;
-		else
-			ret = 0;
-
-		break;
-#endif /* end ifdef _DBG_EVENTLOG */
 	case LMCIOCT1CONTROL:
 		if (sc->lmc_cardtype != LMC_CARDTYPE_T1) {
 			ret = -EOPNOTSUPP;
@@ -616,9 +598,6 @@ static void lmc_watchdog(unsigned long data)
 	if (sc->lmc_ok == 0)
 		goto kick_timer;
 
-	LMC_EVENT_LOG(LMC_EVENT_WATCHDOG, LMC_CSR_READ(sc, csr_status),
-		      lmc_mii_readreg(sc, 0, 16));
-
 	/* --- begin time out check -----------------------------------
 	 * check for a transmit interrupt timeout
 	 * Has the packet xmt vs xmt serviced threshold been exceeded */
@@ -632,29 +611,16 @@ static void lmc_watchdog(unsigned long data)
 		   sc->lmc_device->stats.tx_packets > sc->lasttx_packets &&
 		   sc->tx_TimeoutInd) {
 
-		LMC_EVENT_LOG(LMC_EVENT_XMTINTTMO,
-			      LMC_CSR_READ(sc, csr_status), 0);
-
 		sc->tx_TimeoutDisplay = 1;
 		sc->extra_stats.tx_TimeoutCnt++;
 
 		/* DEC chip is stuck, hit it with a RESET!!!! */
 		lmc_running_reset(dev);
 
-
 		/* look at receive & transmit process state to make sure
-		   they are running */
-		LMC_EVENT_LOG(LMC_EVENT_RESET1,
-			      LMC_CSR_READ(sc, csr_status), 0);
-
-		/* look at: DSR - 02  for Reg 16
-		 *          CTS - 08
-		 *          DCD - 10
-		 *          RI  - 20
-		 * for Reg 17
-		 */
-		LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
-			      lmc_mii_readreg(sc, 0, 17));
+		   they are running
+		   Reg 16: DSR = 2
+		   Reg 17: CTS = 8, DCD = 10, RI = 20 */
 
 		/* reset the transmit timeout detection flag */
 		sc->tx_TimeoutInd = 0;
@@ -934,10 +900,6 @@ static int lmc_open(struct net_device *dev)
 	lmc_dec_reset(sc);
 	lmc_reset(sc);
 
-	LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0);
-	LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
-		      lmc_mii_readreg(sc, 0, 17));
-
 	if (sc->lmc_ok) {
 		lmc_trace(dev, "lmc_open lmc_ok out");
 		return 0;
@@ -1204,8 +1166,6 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 			while ((badtx < sc->lmc_next_tx)) {
 				stat = sc->lmc_txring[i].status;
 
-				LMC_EVENT_LOG(LMC_EVENT_XMTINT, stat,
-					      sc->lmc_txring[i].length);
 				/* If bit 31 is 1 the tulip owns it break out
 				   of the loop */
 				if (stat & 0x80000000)
@@ -1249,7 +1209,6 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 				       dev->name);
 				badtx += LMC_TXDESCS;
 			}
-			LMC_EVENT_LOG(LMC_EVENT_TBUSY0, n_compl, 0);
 			sc->lmc_txfull = 0;
 			netif_wake_queue(dev);
 			sc->extra_stats.tx_tbusy0++;
@@ -1289,12 +1248,6 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 			}
 			lmc_dec_reset(sc);
 			lmc_reset(sc);
-			LMC_EVENT_LOG(LMC_EVENT_RESET1,
-				      LMC_CSR_READ(sc, csr_status), 0);
-			LMC_EVENT_LOG(LMC_EVENT_RESET2,
-				      lmc_mii_readreg(sc, 0, 16),
-				      lmc_mii_readreg(sc, 0, 17));
-
 		}
 
 		if (max_work-- <= 0)
@@ -1304,7 +1257,6 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 		   interrupts */
 		csr = LMC_CSR_READ(sc, csr_status);
 	} /* end interrupt loop */
-	LMC_EVENT_LOG(LMC_EVENT_INT, firstcsr, csr);
 
 lmc_int_fail_out:
 	spin_unlock(&sc->lmc_lock);
@@ -1364,7 +1316,6 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 		sc->lmc_txfull = 1;
 		netif_stop_queue(dev);
 		sc->extra_stats.tx_tbusy1++;
-		LMC_EVENT_LOG(LMC_EVENT_TBUSY1, entry, 0);
 	}
 #endif
 
@@ -1382,7 +1333,6 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 	sc->lmc_next_tx++;
 
 	/* give ownership to the chip */
-	LMC_EVENT_LOG(LMC_EVENT_XMT, flag, entry);
 	sc->lmc_txring[entry].status = 0x80000000;
 
 	/* send now! */
@@ -1522,7 +1472,6 @@ give_it_anyways:
 				   and stop in which care we'll try to allocate
 				   the buffer again (once a second). */
 				sc->extra_stats.rx_BuffAllocErr++;
-				LMC_EVENT_LOG(LMC_EVENT_RCVINT, stat, len);
 				sc->failed_recv_alloc = 1;
 				goto skip_out_of_mem;
 			}
@@ -1543,7 +1492,6 @@ give_it_anyways:
 		}
 
 skip_packet:
-		LMC_EVENT_LOG(LMC_EVENT_RCVINT, stat, len);
 		sc->lmc_rxring[i].status = DESC_OWNED_BY_DC21X4;
 
 		sc->lmc_next_rx++;
@@ -1557,11 +1505,8 @@ skip_packet:
 	/* detect condition for LMC1000 where DSU cable attaches and fills
 	   descriptors with bogus packets */
 
-	if (localLengthErrCnt > LMC_RXDESCS - 3) {
+	if (localLengthErrCnt > LMC_RXDESCS - 3)
 		sc->extra_stats.rx_BadPktSurgeCnt++;
-		LMC_EVENT_LOG(LMC_EVENT_BADPKTSURGE, localLengthErrCnt,
-			      sc->extra_stats.rx_BadPktSurgeCnt);
-	}
 #endif
 
 	/* save max count of receive descriptors serviced */
@@ -1575,7 +1520,6 @@ skip_packet:
 			    != DESC_OWNED_BY_DC21X4)
 				rxIntLoopCnt++;
 		}
-		LMC_EVENT_LOG(LMC_EVENT_RCVEND, rxIntLoopCnt, 0);
 	}
 #endif
 
@@ -1950,15 +1894,8 @@ static void lmc_driver_timeout(struct net_device *dev)
 	/* Chip seems to have locked up. Reset it. This whips out all our
 	   decriptor table and starts from scartch. */
 
-	LMC_EVENT_LOG(LMC_EVENT_XMTPRCTMO, LMC_CSR_READ(sc, csr_status),
-		      sc->extra_stats.tx_ProcTimeout);
-
 	lmc_running_reset(dev);
 
-	LMC_EVENT_LOG(LMC_EVENT_RESET1, LMC_CSR_READ(sc, csr_status), 0);
-	LMC_EVENT_LOG(LMC_EVENT_RESET2, lmc_mii_readreg(sc, 0, 16),
-		      lmc_mii_readreg(sc, 0, 17));
-
 	/* restart the tx processes */
 	csr6 = LMC_CSR_READ(sc, csr_command);
 	LMC_CSR_WRITE(sc, csr_command, csr6 | 0x0002);
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 13/29] LMC: Get rid of debug.[ch].
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (11 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 12/29] LMC: Get rid of the event logger Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 14/29] LMC: Remove now empty header file lmc.h Krzysztof Halasa
                   ` (15 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/Makefile |    2 +-
 drivers/net/wan/lmc/debug.c  |   23 -----------------------
 drivers/net/wan/lmc/debug.h  |    6 ------
 drivers/net/wan/lmc/lmc.h    |   18 ------------------
 drivers/net/wan/lmc/main.c   |    1 -
 drivers/net/wan/lmc/media.c  |    1 -
 drivers/net/wan/lmc/var.h    |   38 ++++++++++++++++++++++++++++++++++++++
 7 files changed, 39 insertions(+), 50 deletions(-)
 delete mode 100644 drivers/net/wan/lmc/debug.c
 delete mode 100644 drivers/net/wan/lmc/debug.h

diff --git a/drivers/net/wan/lmc/Makefile b/drivers/net/wan/lmc/Makefile
index 2f461a7..6c21b7c 100644
--- a/drivers/net/wan/lmc/Makefile
+++ b/drivers/net/wan/lmc/Makefile
@@ -5,7 +5,7 @@
 
 obj-$(CONFIG_LANMEDIA) += lmc.o
 
-lmc-objs := debug.o media.o main.o
+lmc-objs := media.o main.o
 
 # Like above except every packet gets echoed to KERN_DEBUG
 # in hex
diff --git a/drivers/net/wan/lmc/debug.c b/drivers/net/wan/lmc/debug.c
deleted file mode 100644
index 7c05cfe..0000000
--- a/drivers/net/wan/lmc/debug.c
+++ /dev/null
@@ -1,23 +0,0 @@
-#include <linux/types.h>
-#include <linux/netdevice.h>
-#include <linux/interrupt.h>
-#include "debug.h"
-
-void lmc_trace(struct net_device *dev, char *msg)
-{
-#ifdef LMC_TRACE
-	unsigned long j = jiffies + 3; /* Wait for 50 ms */
-
-	if (in_interrupt()) {
-		printk(KERN_DEBUG "%s: * %s\n", dev->name, msg);
-#if 0
-		while (time_before(jiffies, j + 10))
-			;
-#endif
-	} else {
-		printk(KERN_DEBUG "%s: %s\n", dev->name, msg);
-		while (time_before(jiffies, j))
-			schedule();
-	}
-#endif
-}
diff --git a/drivers/net/wan/lmc/debug.h b/drivers/net/wan/lmc/debug.h
deleted file mode 100644
index f026077..0000000
--- a/drivers/net/wan/lmc/debug.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _LMC_DEBUG_H_
-#define _LMC_DEBUG_H_
-
-void lmc_trace(struct net_device *dev, char *msg);
-
-#endif
diff --git a/drivers/net/wan/lmc/lmc.h b/drivers/net/wan/lmc/lmc.h
index 4ab8fe8..5f467d1 100644
--- a/drivers/net/wan/lmc/lmc.h
+++ b/drivers/net/wan/lmc/lmc.h
@@ -3,22 +3,4 @@
 
 #include "var.h"
 
-int lmc_probe(struct net_device *dev);
-unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
-			 unsigned regno);
-void lmc_mii_writereg(struct card * const sc, unsigned devaddr,
-		      unsigned regno, unsigned data);
-void lmc_led_on(struct card * const, u32);
-void lmc_led_off(struct card * const, u32);
-unsigned lmc_mii_readreg(struct card * const, unsigned, unsigned);
-void lmc_mii_writereg(struct card * const, unsigned, unsigned, unsigned);
-void lmc_gpio_mkinput(struct card * const sc, u32 bits);
-void lmc_gpio_mkoutput(struct card * const sc, u32 bits);
-int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
-
-extern struct media lmc_ds3_media;
-extern struct media lmc_ssi_media;
-extern struct media lmc_t1_media;
-extern struct media lmc_hssi_media;
-
 #endif
diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index dc7e435..c80131f 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -73,7 +73,6 @@
 #include "lmc.h"
 #include "var.h"
 #include "ioctl.h"
-#include "debug.h"
 
 static int LMC_PKT_BUF_SZ = 1542;
 
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 2411214..9b1c394 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -19,7 +19,6 @@
 #include "lmc.h"
 #include "var.h"
 #include "ioctl.h"
-#include "debug.h"
 
 #define CONFIG_LMC_IGNORE_HARDWARE_HANDSHAKE 1
 
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index b889bf6..d694731 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -433,4 +433,42 @@ struct card {
 #define LMC_CRC_LEN_16		2	/* 16-bit CRC */
 #define LMC_CRC_LEN_32		4
 
+extern struct media lmc_ds3_media;
+extern struct media lmc_ssi_media;
+extern struct media lmc_t1_media;
+extern struct media lmc_hssi_media;
+
+static inline void lmc_trace(struct net_device *dev, char *msg)
+{
+#ifdef LMC_TRACE
+	unsigned long j = jiffies + 3; /* Wait for 50 ms */
+
+	if (in_interrupt()) {
+		printk(KERN_DEBUG "%s: * %s\n", dev->name, msg);
+#if 0
+		while (time_before(jiffies, j + 10))
+			;
+#endif
+	} else {
+		printk(KERN_DEBUG "%s: %s\n", dev->name, msg);
+		while (time_before(jiffies, j))
+			schedule();
+	}
+#endif
+}
+
+
+int lmc_probe(struct net_device *dev);
+unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
+			 unsigned regno);
+void lmc_mii_writereg(struct card * const sc, unsigned devaddr,
+		      unsigned regno, unsigned data);
+void lmc_led_on(struct card * const, u32);
+void lmc_led_off(struct card * const, u32);
+unsigned lmc_mii_readreg(struct card * const, unsigned, unsigned);
+void lmc_mii_writereg(struct card * const, unsigned, unsigned, unsigned);
+void lmc_gpio_mkinput(struct card * const sc, u32 bits);
+void lmc_gpio_mkoutput(struct card * const sc, u32 bits);
+int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
+
 #endif /* _LMC_VAR_H_ */
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 14/29] LMC: Remove now empty header file lmc.h.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (12 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 13/29] LMC: Get rid of debug.[ch] Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 15/29] LMC: lanmedia.com is not functional anymore Krzysztof Halasa
                   ` (14 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/lmc.h   |    6 ------
 drivers/net/wan/lmc/main.c  |    1 -
 drivers/net/wan/lmc/media.c |    1 -
 3 files changed, 0 insertions(+), 8 deletions(-)
 delete mode 100644 drivers/net/wan/lmc/lmc.h

diff --git a/drivers/net/wan/lmc/lmc.h b/drivers/net/wan/lmc/lmc.h
deleted file mode 100644
index 5f467d1..0000000
--- a/drivers/net/wan/lmc/lmc.h
+++ /dev/null
@@ -1,6 +0,0 @@
-#ifndef _LMC_H_
-#define _LMC_H_
-
-#include "var.h"
-
-#endif
diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index c80131f..eb5b2ea 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -70,7 +70,6 @@
 
 #define DRIVER_VERSION  ((DRIVER_MAJOR_VERSION << 8) + DRIVER_MINOR_VERSION)
 
-#include "lmc.h"
 #include "var.h"
 #include "ioctl.h"
 
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 9b1c394..411138f 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -16,7 +16,6 @@
 #include <linux/uaccess.h>
 #include <asm/processor.h>   /* Processor type for cache alignment. */
 #include <asm/dma.h>
-#include "lmc.h"
 #include "var.h"
 #include "ioctl.h"
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 15/29] LMC: lanmedia.com is not functional anymore.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (13 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 14/29] LMC: Remove now empty header file lmc.h Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 16/29] LMC: Remove unused macros Krzysztof Halasa
                   ` (13 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/ioctl.h |    2 +-
 drivers/net/wan/lmc/main.c  |    3 +--
 drivers/net/wan/lmc/media.c |    2 +-
 drivers/net/wan/lmc/var.h   |    2 +-
 4 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/drivers/net/wan/lmc/ioctl.h b/drivers/net/wan/lmc/ioctl.h
index 1b7820f..4914ede 100644
--- a/drivers/net/wan/lmc/ioctl.h
+++ b/drivers/net/wan/lmc/ioctl.h
@@ -2,7 +2,7 @@
 #define _LMC_IOCTL_H_
 /*
  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
- * All rights reserved.  www.lanmedia.com
+ * All rights reserved.
  *
  * This code is written by:
  * Andrew Stanley-Jones (asj@cban.com)
diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index eb5b2ea..64bd6d5 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -1,6 +1,6 @@
 /*
  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
- * All rights reserved.  www.lanmedia.com
+ * All rights reserved.
  * Generic HDLC port Copyright (C) 2008 Krzysztof Halasa <khc@pm.waw.pl>
  *
  * This code is written by:
@@ -20,7 +20,6 @@
  * Driver for the LanMedia LMC5200, LMC5245, LMC1000, LMC1200 cards.
  *
  * To control link specific options lmcctl is required.
- * It can be obtained from ftp.lanmedia.com.
  *
  * Linux driver notes:
  * Linux uses the device struct lmc_private to pass private information
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 411138f..5851d19 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -23,7 +23,7 @@
 
 /*
  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
- * All rights reserved.  www.lanmedia.com
+ * All rights reserved.
  *
  * This code is written by:
  * Andrew Stanley-Jones (asj@cban.com)
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index d694731..09b901c 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -3,7 +3,7 @@
 
 /*
  * Copyright (c) 1997-2000 LAN Media Corporation (LMC)
- * All rights reserved.  www.lanmedia.com
+ * All rights reserved.
  *
  * This code is written by:
  * Andrew Stanley-Jones (asj@cban.com)
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 16/29] LMC: Remove unused macros.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (14 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 15/29] LMC: lanmedia.com is not functional anymore Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 17/29] LMC: don't wait in lmc_trace() Krzysztof Halasa
                   ` (12 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/var.h |    7 -------
 1 files changed, 0 insertions(+), 7 deletions(-)

diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 09b901c..f5b233c 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -21,8 +21,6 @@
 
 #define lmc_csrptr_t		unsigned long
 
-#define LMC_REG_RANGE		0x80
-
 #define LMC_PRINTF_FMT		"%s"
 #define LMC_PRINTF_ARGS		(sc->lmc_device->name)
 
@@ -38,8 +36,6 @@
 #define LMC_CSR_READ(sc, csr)		inl((sc)->lmc_csrs.csr)
 #define LMC_CSR_WRITE(sc, reg, val)	outl((val), (sc)->lmc_csrs.reg)
 
-#define DELAY(n)		SLOW_DOWN_IO
-
 #define lmc_delay()		inl(sc->lmc_csrs.csr_9)
 
 /* This macro sync's up with the mii so that reads and writes can take place */
@@ -328,9 +324,6 @@ struct card {
 	u32 check;			/* Structure check */
 };
 
-#define LMC_PCI_TIME		1
-#define LMC_EXT_TIME		0
-
 #define PKT_BUF_SZ		1542
 
 /* CSR5 settings */
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 17/29] LMC: don't wait in lmc_trace().
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (15 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 16/29] LMC: Remove unused macros Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 18/29] LMC: strip "lmc_" prefix from field names in struct card Krzysztof Halasa
                   ` (11 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/var.h |   13 ++-----------
 1 files changed, 2 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index f5b233c..38f61cb 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -434,19 +434,10 @@ extern struct media lmc_hssi_media;
 static inline void lmc_trace(struct net_device *dev, char *msg)
 {
 #ifdef LMC_TRACE
-	unsigned long j = jiffies + 3; /* Wait for 50 ms */
-
-	if (in_interrupt()) {
+	if (in_interrupt())
 		printk(KERN_DEBUG "%s: * %s\n", dev->name, msg);
-#if 0
-		while (time_before(jiffies, j + 10))
-			;
-#endif
-	} else {
+	else
 		printk(KERN_DEBUG "%s: %s\n", dev->name, msg);
-		while (time_before(jiffies, j))
-			schedule();
-	}
 #endif
 }
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 18/29] LMC: strip "lmc_" prefix from field names in struct card.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (16 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 17/29] LMC: don't wait in lmc_trace() Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 19/29] LMC: Remove sc->check. We don't do such checks in drivers Krzysztof Halasa
                   ` (10 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |  629 +++++++++++++++++++++----------------------
 drivers/net/wan/lmc/media.c |  144 +++++-----
 drivers/net/wan/lmc/var.h   |   70 +++---
 3 files changed, 421 insertions(+), 422 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 64bd6d5..6698aa9 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -149,11 +149,11 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			break;
 		}
 
-		spin_lock_irqsave(&sc->lmc_lock, flags);
-		sc->lmc_media->set_status(sc, &ctl);
+		spin_lock_irqsave(&sc->lock, flags);
+		sc->media->set_status(sc, &ctl);
 
 		if (ctl.crc_length != sc->ictl.crc_length) {
-			sc->lmc_media->set_crc_length(sc, ctl.crc_length);
+			sc->media->set_crc_length(sc, ctl.crc_length);
 			if (sc->ictl.crc_length == LMC_CTL_CRC_LENGTH_16)
 				sc->TxDescriptControlInit |=
 					LMC_TDES_ADD_CRC_DISABLE;
@@ -161,29 +161,29 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 				sc->TxDescriptControlInit &=
 					~LMC_TDES_ADD_CRC_DISABLE;
 		}
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		spin_unlock_irqrestore(&sc->lock, flags);
 		ret = 0;
 		break;
 
 	case LMCIOCGETXINFO:
-		spin_lock_irqsave(&sc->lmc_lock, flags);
-		sc->lmc_xinfo.Magic0 = 0xBEEFCAFE;
-
-		sc->lmc_xinfo.PciCardType = sc->lmc_cardtype;
-		sc->lmc_xinfo.PciSlotNumber = 0;
-		sc->lmc_xinfo.DriverMajorVersion = DRIVER_MAJOR_VERSION;
-		sc->lmc_xinfo.DriverMinorVersion = DRIVER_MINOR_VERSION;
-		sc->lmc_xinfo.DriverSubVersion = DRIVER_SUB_VERSION;
-		sc->lmc_xinfo.XilinxRevisionNumber =
+		spin_lock_irqsave(&sc->lock, flags);
+		sc->xinfo.Magic0 = 0xBEEFCAFE;
+
+		sc->xinfo.PciCardType = sc->cardtype;
+		sc->xinfo.PciSlotNumber = 0;
+		sc->xinfo.DriverMajorVersion = DRIVER_MAJOR_VERSION;
+		sc->xinfo.DriverMinorVersion = DRIVER_MINOR_VERSION;
+		sc->xinfo.DriverSubVersion = DRIVER_SUB_VERSION;
+		sc->xinfo.XilinxRevisionNumber =
 			lmc_mii_readreg(sc, 0, 3) & 0xf;
-		sc->lmc_xinfo.MaxFrameSize = LMC_PKT_BUF_SZ;
-		sc->lmc_xinfo.link_status = sc->lmc_media->get_link_status(sc);
-		sc->lmc_xinfo.mii_reg16 = lmc_mii_readreg(sc, 0, 16);
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		sc->xinfo.MaxFrameSize = LMC_PKT_BUF_SZ;
+		sc->xinfo.link_status = sc->media->get_link_status(sc);
+		sc->xinfo.mii_reg16 = lmc_mii_readreg(sc, 0, 16);
+		spin_unlock_irqrestore(&sc->lock, flags);
 
-		sc->lmc_xinfo.Magic1 = 0xDEADBEEF;
+		sc->xinfo.Magic1 = 0xDEADBEEF;
 
-		if (copy_to_user(ifr->ifr_data, &sc->lmc_xinfo,
+		if (copy_to_user(ifr->ifr_data, &sc->xinfo,
 				 sizeof(struct lmc_xinfo)))
 			ret = -EFAULT;
 		else
@@ -191,8 +191,8 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		break;
 
 	case LMCIOCGETLMCSTATS:
-		spin_lock_irqsave(&sc->lmc_lock, flags);
-		if (sc->lmc_cardtype == LMC_CARDTYPE_T1) {
+		spin_lock_irqsave(&sc->lock, flags);
+		if (sc->cardtype == LMC_CARDTYPE_T1) {
 			lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_LSB);
 			sc->extra_stats.framingBitErrorCount +=
 				lmc_mii_readreg(sc, 0, 18) & 0xff;
@@ -215,10 +215,10 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			sc->extra_stats.severelyErroredFrameCount +=
 				regVal & T1FRAMER_SEF_MASK;
 		}
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
-		if (copy_to_user(ifr->ifr_data, &sc->lmc_device->stats,
-				 sizeof(sc->lmc_device->stats)) ||
-		    copy_to_user(ifr->ifr_data + sizeof(sc->lmc_device->stats),
+		spin_unlock_irqrestore(&sc->lock, flags);
+		if (copy_to_user(ifr->ifr_data, &sc->netdev->stats,
+				 sizeof(sc->netdev->stats)) ||
+		    copy_to_user(ifr->ifr_data + sizeof(sc->netdev->stats),
 				 &sc->extra_stats, sizeof(sc->extra_stats)))
 			ret = -EFAULT;
 		else
@@ -231,15 +231,14 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			break;
 		}
 
-		spin_lock_irqsave(&sc->lmc_lock, flags);
-		memset(&sc->lmc_device->stats, 0,
-		       sizeof(sc->lmc_device->stats));
+		spin_lock_irqsave(&sc->lock, flags);
+		memset(&sc->netdev->stats, 0, sizeof(sc->netdev->stats));
 		memset(&sc->extra_stats, 0, sizeof(sc->extra_stats));
 		sc->extra_stats.check = STATCHECK;
 		sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
-			sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
-		sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+			sizeof(sc->netdev->stats) + sizeof(sc->extra_stats);
+		sc->extra_stats.cardtype = sc->cardtype;
+		spin_unlock_irqrestore(&sc->lock, flags);
 		ret = 0;
 		break;
 
@@ -259,11 +258,11 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			ret = -EFAULT;
 			break;
 		}
-		spin_lock_irqsave(&sc->lmc_lock, flags);
-		if (sc->lmc_media->set_circuit_type)
-			sc->lmc_media->set_circuit_type(sc, ctl.circuit_type);
+		spin_lock_irqsave(&sc->lock, flags);
+		if (sc->media->set_circuit_type)
+			sc->media->set_circuit_type(sc, ctl.circuit_type);
 		sc->ictl.circuit_type = ctl.circuit_type;
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		spin_unlock_irqrestore(&sc->lock, flags);
 		ret = 0;
 		break;
 
@@ -273,7 +272,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			break;
 		}
 
-		spin_lock_irqsave(&sc->lmc_lock, flags);
+		spin_lock_irqsave(&sc->lock, flags);
 		/* Reset driver and bring back to current state */
 		pr_debug("%s: REG16 before reset +%04x\n", dev->name,
 			 lmc_mii_readreg(sc, 0, 16));
@@ -281,12 +280,12 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		pr_debug("%s: REG16 after reset +%04x\n", dev->name,
 			 lmc_mii_readreg(sc, 0, 16));
 
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		spin_unlock_irqrestore(&sc->lock, flags);
 		ret = 0;
 		break;
 
 	case LMCIOCT1CONTROL:
-		if (sc->lmc_cardtype != LMC_CARDTYPE_T1) {
+		if (sc->cardtype != LMC_CARDTYPE_T1) {
 			ret = -EOPNOTSUPP;
 			break;
 		}
@@ -312,7 +311,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		case lmc_xilinx_reset:
 		{
 			u16 mii;
-			spin_lock_irqsave(&sc->lmc_lock, flags);
+			spin_lock_irqsave(&sc->lock, flags);
 			mii = lmc_mii_readreg(sc, 0, 16);
 
 			/* Make all of them 0 and make */
@@ -325,22 +324,22 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			   the transmitter clock to be internal, but we expect
 			   to reset that later anyway. */
 
-			sc->lmc_gpio &= ~LMC_GEP_RESET;
-			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+			sc->gpio &= ~LMC_GEP_RESET;
+			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 			/* hold for more than 10 microseconds */
 			udelay(50);
 
-			sc->lmc_gpio |= LMC_GEP_RESET;
-			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+			sc->gpio |= LMC_GEP_RESET;
+			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 			/* stop driving Xilinx-related signals */
 			lmc_gpio_mkinput(sc, 0xff);
 
 			/* Reset the frammer hardware */
-			if (sc->lmc_media->set_link_status)
-				sc->lmc_media->set_link_status(sc, 1);
-			sc->lmc_media->set_status(sc, NULL);
+			if (sc->media->set_link_status)
+				sc->media->set_link_status(sc, 1);
+			sc->media->set_status(sc, NULL);
 			/* lmc_softreset(sc); */
 
 			{
@@ -360,7 +359,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 					lmc_led_off(sc, LMC_DS3_LED2);
 				}
 			}
-			spin_unlock_irqrestore(&sc->lmc_lock, flags);
+			spin_unlock_irqrestore(&sc->lock, flags);
 			ret = 0x0;
 		}
 		break;
@@ -369,7 +368,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		{
 			u16 mii;
 			int timeout = 500000;
-			spin_lock_irqsave(&sc->lmc_lock, flags);
+			spin_lock_irqsave(&sc->lock, flags);
 			mii = lmc_mii_readreg(sc, 0, 16);
 
 			/* Make all of them 0 and make input */
@@ -382,14 +381,14 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			   the transmitter clock to be internal, but we expect
 			   to reset that later anyway. */
 
-			sc->lmc_gpio &= ~(LMC_GEP_RESET | LMC_GEP_DP);
-			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+			sc->gpio &= ~(LMC_GEP_RESET | LMC_GEP_DP);
+			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 			/* hold for more than 10 microseconds */
 			udelay(50);
 
-			sc->lmc_gpio |= LMC_GEP_DP | LMC_GEP_RESET;
-			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+			sc->gpio |= LMC_GEP_DP | LMC_GEP_RESET;
+			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 			/* busy wait for the chip to reset */
 			while ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
@@ -398,7 +397,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 			/* stop driving Xilinx-related signals */
 			lmc_gpio_mkinput(sc, 0xff);
-			spin_unlock_irqrestore(&sc->lmc_lock, flags);
+			spin_unlock_irqrestore(&sc->lock, flags);
 			ret = 0x0;
 			break;
 		}
@@ -433,7 +432,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			       "%s: Starting load of data Len: %d at 0x%p == 0x%p\n",
 			       dev->name, xc.len, xc.data, data);
 
-			spin_lock_irqsave(&sc->lmc_lock, flags);
+			spin_lock_irqsave(&sc->lock, flags);
 			lmc_gpio_mkinput(sc, 0xff);
 
 			/* Clear the Xilinx and start programming from
@@ -443,11 +442,11 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			   Reset: 0 (active)
 			   DP:    0 (active)
 			   Mode:  1 */
-			sc->lmc_gpio = 0x00;
-			sc->lmc_gpio &= ~LMC_GEP_DP;
-			sc->lmc_gpio &= ~LMC_GEP_RESET;
-			sc->lmc_gpio |=  LMC_GEP_MODE;
-			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+			sc->gpio = 0x00;
+			sc->gpio &= ~LMC_GEP_DP;
+			sc->gpio &= ~LMC_GEP_RESET;
+			sc->gpio |=  LMC_GEP_MODE;
+			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 			lmc_gpio_mkoutput(sc, LMC_GEP_MODE | LMC_GEP_DP |
 					  LMC_GEP_RESET);
@@ -470,11 +469,11 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			/*
 			 * Set LOAD, DATA, Clock to 1
 			 */
-			sc->lmc_gpio = 0x00;
-			sc->lmc_gpio |= LMC_GEP_MODE;
-			sc->lmc_gpio |= LMC_GEP_DATA;
-			sc->lmc_gpio |= LMC_GEP_CLK;
-			LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+			sc->gpio = 0x00;
+			sc->gpio |= LMC_GEP_MODE;
+			sc->gpio |= LMC_GEP_DATA;
+			sc->gpio |= LMC_GEP_CLK;
+			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 			lmc_gpio_mkoutput(sc, LMC_GEP_DATA | LMC_GEP_CLK |
 					  LMC_GEP_MODE);
@@ -492,29 +491,29 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 				switch (data[pos]) {
 				case 0:
 					/* Data is 0 */
-					sc->lmc_gpio &= ~LMC_GEP_DATA;
+					sc->gpio &= ~LMC_GEP_DATA;
 					break;
 				case 1:
 					/* Data is 1 */
-					sc->lmc_gpio |= LMC_GEP_DATA;
+					sc->gpio |= LMC_GEP_DATA;
 					break;
 				default:
 					printk(KERN_WARNING
 					       "%s Bad data in xilinx programming data at %d, got %d wanted 0 or 1\n",
 					       dev->name, pos, data[pos]);
 					/* Assume it's 1 */
-					sc->lmc_gpio |= LMC_GEP_DATA;
+					sc->gpio |= LMC_GEP_DATA;
 				}
 				/* Clock to zero */
-				sc->lmc_gpio &= ~LMC_GEP_CLK;
-				sc->lmc_gpio |= LMC_GEP_MODE;
-				LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+				sc->gpio &= ~LMC_GEP_CLK;
+				sc->gpio |= LMC_GEP_MODE;
+				LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 				udelay(1);
 
 				/* Put the clack back to one */
-				sc->lmc_gpio |= LMC_GEP_CLK;
-				sc->lmc_gpio |= LMC_GEP_MODE;
-				LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+				sc->gpio |= LMC_GEP_CLK;
+				sc->gpio |= LMC_GEP_MODE;
+				LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 				udelay(1);
 			}
 			if ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0) {
@@ -532,12 +531,12 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 			lmc_gpio_mkinput(sc, 0xff);
 
-			sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
-			lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+			sc->miireg16 |= LMC_MII16_FIFO_RESET;
+			lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 
-			sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET;
-			lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-			spin_unlock_irqrestore(&sc->lmc_lock, flags);
+			sc->miireg16 &= ~LMC_MII16_FIFO_RESET;
+			lmc_mii_writereg(sc, 0, 16, sc->miireg16);
+			spin_unlock_irqrestore(&sc->lock, flags);
 
 			kfree(data);
 			ret = 0;
@@ -549,12 +548,12 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		}
 
 		netif_wake_queue(dev);
-		sc->lmc_txfull = 0;
+		sc->txfull = 0;
 	}
 	break;
 	default:
 		/* If we don't know what to do, give the protocol a shot. */
-		ret = hdlc_ioctl(sc->lmc_device, ifr, cmd);
+		ret = hdlc_ioctl(sc->netdev, ifr, cmd);
 		break;
 	}
 
@@ -574,12 +573,12 @@ static void lmc_watchdog(unsigned long data)
 
 	lmc_trace(dev, "lmc_watchdog in");
 
-	spin_lock_irqsave(&sc->lmc_lock, flags);
+	spin_lock_irqsave(&sc->lock, flags);
 
 	if (sc->check != 0xBEAFCAFE) {
 		printk(KERN_ERR
 		       "LMC: Corrupt net_device struct, breaking out\n");
-		spin_unlock_irqrestore(&sc->lmc_lock, flags);
+		spin_unlock_irqrestore(&sc->lock, flags);
 		return;
 	}
 
@@ -589,23 +588,23 @@ static void lmc_watchdog(unsigned long data)
 	 */
 
 	LMC_CSR_WRITE(sc, csr_15, 0x00000011);
-	sc->lmc_cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN;
-	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
+	sc->cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN;
+	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
 
-	if (sc->lmc_ok == 0)
+	if (sc->ok == 0)
 		goto kick_timer;
 
 	/* --- begin time out check -----------------------------------
 	 * check for a transmit interrupt timeout
 	 * Has the packet xmt vs xmt serviced threshold been exceeded */
-	if (sc->lmc_taint_tx == sc->lastlmc_taint_tx &&
-	    sc->lmc_device->stats.tx_packets > sc->lasttx_packets &&
+	if (sc->taint_tx == sc->last_taint_tx &&
+	    sc->netdev->stats.tx_packets > sc->lasttx_packets &&
 	    sc->tx_TimeoutInd == 0) {
 
 		/* wait for the watchdog to come around again */
 		sc->tx_TimeoutInd = 1;
-	} else if (sc->lmc_taint_tx == sc->lastlmc_taint_tx &&
-		   sc->lmc_device->stats.tx_packets > sc->lasttx_packets &&
+	} else if (sc->taint_tx == sc->last_taint_tx &&
+		   sc->netdev->stats.tx_packets > sc->lasttx_packets &&
 		   sc->tx_TimeoutInd) {
 
 		sc->tx_TimeoutDisplay = 1;
@@ -621,17 +620,17 @@ static void lmc_watchdog(unsigned long data)
 
 		/* reset the transmit timeout detection flag */
 		sc->tx_TimeoutInd = 0;
-		sc->lastlmc_taint_tx = sc->lmc_taint_tx;
-		sc->lasttx_packets = sc->lmc_device->stats.tx_packets;
+		sc->last_taint_tx = sc->taint_tx;
+		sc->lasttx_packets = sc->netdev->stats.tx_packets;
 	} else {
 		sc->tx_TimeoutInd = 0;
-		sc->lastlmc_taint_tx = sc->lmc_taint_tx;
-		sc->lasttx_packets = sc->lmc_device->stats.tx_packets;
+		sc->last_taint_tx = sc->taint_tx;
+		sc->lasttx_packets = sc->netdev->stats.tx_packets;
 	}
 
 	/* --- end time out check ----------------------------------- */
 
-	link_status = sc->lmc_media->get_link_status(sc);
+	link_status = sc->media->get_link_status(sc);
 
 	/* Hardware level link lost, but the interface is marked as up.
 	   Mark it as down. */
@@ -657,8 +656,8 @@ static void lmc_watchdog(unsigned long data)
 	}
 
 	/* Call media specific watchdog functions */
-	if (sc->lmc_media->watchdog)
-		sc->lmc_media->watchdog(sc);
+	if (sc->media->watchdog)
+		sc->media->watchdog(sc);
 
 	/* Poke the transmitter to make sure it never stops, even if we run
 	   out of mem */
@@ -691,7 +690,7 @@ kick_timer:
 	sc->timer.expires = jiffies + HZ;
 	add_timer(&sc->timer);
 
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	spin_unlock_irqrestore(&sc->lock, flags);
 
 	lmc_trace(dev, "lmc_watchdog out");
 }
@@ -760,7 +759,7 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	dev->netdev_ops = &lmc_ops;
 	dev->watchdog_timeo = HZ; /* 1 second */
 	dev->tx_queue_len = 100;
-	sc->lmc_device = dev;
+	sc->netdev = dev;
 	sc->name = dev->name;
 	sc->check = 0xBEAFCAFE;
 	dev->base_addr = pci_resource_start(pdev, 0);
@@ -770,7 +769,7 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 
 	/* Init the spin lock so can call it latter */
 
-	spin_lock_init(&sc->lmc_lock);
+	spin_lock_init(&sc->lock);
 	pci_set_master(pdev);
 
 	err = register_hdlc_device(dev);
@@ -780,8 +779,8 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 		goto err_hdlcdev;
 	}
 
-	sc->lmc_cardtype = LMC_CARDTYPE_UNKNOWN;
-	sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
+	sc->cardtype = LMC_CARDTYPE_UNKNOWN;
+	sc->timing = LMC_CTL_CLOCK_SOURCE_EXT;
 
 	/*
 	 * Check either the subvendor or the subdevice, some systems reverse
@@ -794,23 +793,23 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	switch (subdevice) {
 	case PCI_DEVICE_ID_LMC_HSSI:
 		dev_info(&pdev->dev, "%s = LMC HSSI\n", dev->name);
-		sc->lmc_cardtype = LMC_CARDTYPE_HSSI;
-		sc->lmc_media = &lmc_hssi_media;
+		sc->cardtype = LMC_CARDTYPE_HSSI;
+		sc->media = &lmc_hssi_media;
 		break;
 	case PCI_DEVICE_ID_LMC_DS3:
 		dev_info(&pdev->dev, "%s = LMC DS3\n", dev->name);
-		sc->lmc_cardtype = LMC_CARDTYPE_DS3;
-		sc->lmc_media = &lmc_ds3_media;
+		sc->cardtype = LMC_CARDTYPE_DS3;
+		sc->media = &lmc_ds3_media;
 		break;
 	case PCI_DEVICE_ID_LMC_SSI:
 		dev_info(&pdev->dev, "%s = LMC SSI\n", dev->name);
-		sc->lmc_cardtype = LMC_CARDTYPE_SSI;
-		sc->lmc_media = &lmc_ssi_media;
+		sc->cardtype = LMC_CARDTYPE_SSI;
+		sc->media = &lmc_ssi_media;
 		break;
 	case PCI_DEVICE_ID_LMC_T1:
 		dev_info(&pdev->dev, "%s = LMC T1\n", dev->name);
-		sc->lmc_cardtype = LMC_CARDTYPE_T1;
-		sc->lmc_media = &lmc_t1_media;
+		sc->cardtype = LMC_CARDTYPE_T1;
+		sc->media = &lmc_t1_media;
 		break;
 	default:
 		dev_warn(&pdev->dev, "%s = LMC UNKNOWN CARD!\n", dev->name);
@@ -820,12 +819,12 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	lmc_initcsrs(sc, dev->base_addr, 8);
 
 	lmc_gpio_mkinput(sc, 0xff);
-	sc->lmc_gpio = 0;		/* drive no signals yet */
+	sc->gpio = 0;		/* drive no signals yet */
 
-	sc->lmc_media->defaults(sc);
+	sc->media->defaults(sc);
 
-	if (sc->lmc_media->set_link_status)
-		sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
+	if (sc->media->set_link_status)
+		sc->media->set_link_status(sc, LMC_LINK_UP);
 
 	/* verify that the PCI Sub System ID matches the Adapter Model number
 	   from the MII register */
@@ -849,10 +848,10 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	sc->board_idx = cards_found++;
 	sc->extra_stats.check = STATCHECK;
 	sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
-		sizeof(sc->lmc_device->stats) + sizeof(sc->extra_stats);
-	sc->extra_stats.lmc_cardtype = sc->lmc_cardtype;
+		sizeof(sc->netdev->stats) + sizeof(sc->extra_stats);
+	sc->extra_stats.cardtype = sc->cardtype;
 
-	sc->lmc_ok = 0;
+	sc->ok = 0;
 	sc->last_link_status = 0;
 
 	lmc_trace(dev, "lmc_init_one out");
@@ -897,7 +896,7 @@ static int lmc_open(struct net_device *dev)
 	lmc_dec_reset(sc);
 	lmc_reset(sc);
 
-	if (sc->lmc_ok) {
+	if (sc->ok) {
 		lmc_trace(dev, "lmc_open lmc_ok out");
 		return 0;
 	}
@@ -915,14 +914,14 @@ static int lmc_open(struct net_device *dev)
 	sc->got_irq = 1;
 
 	/* Assert Terminal Active */
-	sc->lmc_miireg16 |= LMC_MII16_LED_ALL;
-	if (sc->lmc_media->set_link_status)
-		sc->lmc_media->set_link_status(sc, LMC_LINK_UP);
+	sc->miireg16 |= LMC_MII16_LED_ALL;
+	if (sc->media->set_link_status)
+		sc->media->set_link_status(sc, LMC_LINK_UP);
 
 	/*
 	 * reset to last state.
 	 */
-	sc->lmc_media->set_status(sc, NULL);
+	sc->media->set_status(sc, NULL);
 
 	/* setup default bits to be used in tulip_desc_t transmit descriptor */
 	sc->TxDescriptControlInit = (LMC_TDES_INTERRUPT_ON_COMPLETION |
@@ -935,30 +934,30 @@ static int lmc_open(struct net_device *dev)
 		/* disable 32 bit CRC generated by ASIC */
 		sc->TxDescriptControlInit |= LMC_TDES_ADD_CRC_DISABLE;
 
-	sc->lmc_media->set_crc_length(sc, sc->ictl.crc_length);
+	sc->media->set_crc_length(sc, sc->ictl.crc_length);
 	/* Acknowledge the Terminal Active and light LEDs */
 
-	if ((err = hdlc_open(sc->lmc_device)) != 0)
+	if ((err = hdlc_open(sc->netdev)) != 0)
 		return err;
 
 	netif_start_queue(dev);
 	sc->extra_stats.tx_tbusy0++;
 
 	/* select what interrupts we want to get */
-	sc->lmc_intrmask = 0;
+	sc->intrmask = 0;
 	/* Should be using the default interrupt mask defined in the .h file. */
-	sc->lmc_intrmask |= (TULIP_STS_NORMALINTR | TULIP_STS_RXINTR |
+	sc->intrmask |= (TULIP_STS_NORMALINTR | TULIP_STS_RXINTR |
 			     TULIP_STS_TXINTR | TULIP_STS_ABNRMLINTR |
 			     TULIP_STS_SYSERROR | TULIP_STS_TXSTOPPED |
 			     TULIP_STS_TXUNDERFLOW | TULIP_STS_RXSTOPPED |
 			     TULIP_STS_RXNOBUF);
-	LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask);
+	LMC_CSR_WRITE(sc, csr_intr, sc->intrmask);
 
-	sc->lmc_cmdmode |= TULIP_CMD_TXRUN;
-	sc->lmc_cmdmode |= TULIP_CMD_RXRUN;
-	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
+	sc->cmdmode |= TULIP_CMD_TXRUN;
+	sc->cmdmode |= TULIP_CMD_RXRUN;
+	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
 
-	sc->lmc_ok = 1; /* Run watchdog */
+	sc->ok = 1; /* Run watchdog */
 
 	/* Set the if up now */
 	sc->last_link_status = 1;
@@ -991,21 +990,21 @@ static void lmc_running_reset(struct net_device *dev)
 	lmc_dec_reset(sc);
 	lmc_reset(sc);
 	lmc_softreset(sc);
-	/* sc->lmc_miireg16 |= LMC_MII16_LED_ALL; */
-	if (sc->lmc_media->set_link_status)
-		sc->lmc_media->set_link_status(sc, 1);
-	sc->lmc_media->set_status(sc, NULL);
+	/* sc->miireg16 |= LMC_MII16_LED_ALL; */
+	if (sc->media->set_link_status)
+		sc->media->set_link_status(sc, 1);
+	sc->media->set_status(sc, NULL);
 
 	netif_wake_queue(dev);
 
-	sc->lmc_txfull = 0;
+	sc->txfull = 0;
 	sc->extra_stats.tx_tbusy0++;
 
-	sc->lmc_intrmask = TULIP_DEFAULT_INTR_MASK;
-	LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask);
+	sc->intrmask = TULIP_DEFAULT_INTR_MASK;
+	LMC_CSR_WRITE(sc, csr_intr, sc->intrmask);
 
-	sc->lmc_cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN);
-	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
+	sc->cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN);
+	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
 
 	lmc_trace(dev, "lmc_runnin_reset_out");
 }
@@ -1020,11 +1019,11 @@ static int lmc_close(struct net_device *dev)
 
 	lmc_trace(dev, "lmc_close in");
 
-	sc->lmc_ok = 0;
-	if (sc->lmc_media->set_link_status)
-		sc->lmc_media->set_link_status(sc, 0);
+	sc->ok = 0;
+	if (sc->media->set_link_status)
+		sc->media->set_link_status(sc, 0);
 	del_timer(&sc->timer);
-	hdlc_close(sc->lmc_device);
+	hdlc_close(sc->netdev);
 	lmc_ifdown(dev);
 
 	lmc_trace(dev, "lmc_close out");
@@ -1057,7 +1056,7 @@ static int lmc_ifdown(struct net_device *dev)
 	csr6 &= ~LMC_DEC_SR;		/* Turn off the Receive bit */
 	LMC_CSR_WRITE(sc, csr_command, csr6);
 
-	sc->lmc_device->stats.rx_missed_errors +=
+	sc->netdev->stats.rx_missed_errors +=
 		LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
 
 	/* release the interrupt */
@@ -1068,20 +1067,20 @@ static int lmc_ifdown(struct net_device *dev)
 
 	/* free skbuffs in the Rx queue */
 	for (i = 0; i < LMC_RXDESCS; i++) {
-		struct sk_buff *skb = sc->lmc_rxq[i];
-		sc->lmc_rxq[i] = NULL;
-		sc->lmc_rxring[i].status = 0;
-		sc->lmc_rxring[i].length = 0;
-		sc->lmc_rxring[i].buffer1 = 0xDEADBEEF;
+		struct sk_buff *skb = sc->rxq[i];
+		sc->rxq[i] = NULL;
+		sc->rxring[i].status = 0;
+		sc->rxring[i].length = 0;
+		sc->rxring[i].buffer1 = 0xDEADBEEF;
 		if (skb != NULL)
 			dev_kfree_skb(skb);
-		sc->lmc_rxq[i] = NULL;
+		sc->rxq[i] = NULL;
 	}
 
 	for (i = 0; i < LMC_TXDESCS; i++) {
-		if (sc->lmc_txq[i] != NULL)
-			dev_kfree_skb(sc->lmc_txq[i]);
-		sc->lmc_txq[i] = NULL;
+		if (sc->txq[i] != NULL)
+			dev_kfree_skb(sc->txq[i]);
+		sc->txq[i] = NULL;
 	}
 
 	lmc_led_off(sc, LMC_MII16_LED_ALL);
@@ -1110,19 +1109,19 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 
 	lmc_trace(dev, "lmc_interrupt in");
 
-	spin_lock(&sc->lmc_lock);
+	spin_lock(&sc->lock);
 
 	/* Read the csr to find what interrupts we have (if any) */
 	csr = LMC_CSR_READ(sc, csr_status);
 
 	/* Make sure this is our interrupt */
-	if (!(csr & sc->lmc_intrmask))
+	if (!(csr & sc->intrmask))
 		goto lmc_int_fail_out;
 
 	firstcsr = csr;
 
 	/* always go through this loop at least once */
-	while (csr & sc->lmc_intrmask) {
+	while (csr & sc->intrmask) {
 		handled = 1;
 
 		/* Clear interrupt bits, we handle all case below */
@@ -1157,11 +1156,11 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 			/* reset the transmit timeout detection flag */
 			sc->extra_stats.tx_NoCompleteCnt = 0;
 
-			badtx = sc->lmc_taint_tx;
+			badtx = sc->taint_tx;
 			i = badtx % LMC_TXDESCS;
 
-			while ((badtx < sc->lmc_next_tx)) {
-				stat = sc->lmc_txring[i].status;
+			while ((badtx < sc->next_tx)) {
+				stat = sc->txring[i].status;
 
 				/* If bit 31 is 1 the tulip owns it break out
 				   of the loop */
@@ -1172,49 +1171,49 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 				n_compl++;
 				/* If we have no skbuff or have cleared it
 				   already. Continue to the next buffer */
-				if (sc->lmc_txq[i] == NULL)
+				if (sc->txq[i] == NULL)
 					continue;
 
 				/* Check the total error summary to look for
 				   any errors */
 				if (stat & 0x8000) {
-					sc->lmc_device->stats.tx_errors++;
+					sc->netdev->stats.tx_errors++;
 					if (stat & 0x4104)
-						sc->lmc_device->stats.tx_aborted_errors++;
+						sc->netdev->stats.tx_aborted_errors++;
 					if (stat & 0x0C00)
-						sc->lmc_device->stats.tx_carrier_errors++;
+						sc->netdev->stats.tx_carrier_errors++;
 					if (stat & 0x0200)
-						sc->lmc_device->stats.tx_window_errors++;
+						sc->netdev->stats.tx_window_errors++;
 					if (stat & 0x0002)
-						sc->lmc_device->stats.tx_fifo_errors++;
+						sc->netdev->stats.tx_fifo_errors++;
 				} else {
-					sc->lmc_device->stats.tx_bytes +=
-						sc->lmc_txring[i].length & 0x7ff;
+					sc->netdev->stats.tx_bytes +=
+						sc->txring[i].length & 0x7ff;
 
-					sc->lmc_device->stats.tx_packets++;
+					sc->netdev->stats.tx_packets++;
 				}
 
-				dev_kfree_skb_irq(sc->lmc_txq[i]);
-				sc->lmc_txq[i] = NULL;
+				dev_kfree_skb_irq(sc->txq[i]);
+				sc->txq[i] = NULL;
 
 				badtx++;
 				i = badtx % LMC_TXDESCS;
 			}
 
-			if (sc->lmc_next_tx - badtx > LMC_TXDESCS) {
+			if (sc->next_tx - badtx > LMC_TXDESCS) {
 				printk(KERN_WARNING "%s: out of sync pointer\n",
 				       dev->name);
 				badtx += LMC_TXDESCS;
 			}
-			sc->lmc_txfull = 0;
+			sc->txfull = 0;
 			netif_wake_queue(dev);
 			sc->extra_stats.tx_tbusy0++;
 #ifdef DEBUG
 			sc->extra_stats.dirtyTx = badtx;
-			sc->extra_stats.lmc_next_tx = sc->lmc_next_tx;
-			sc->extra_stats.lmc_txfull = sc->lmc_txfull;
+			sc->extra_stats.lmc_next_tx = sc->next_tx;
+			sc->extra_stats.lmc_txfull = sc->txfull;
 #endif
-			sc->lmc_taint_tx = badtx;
+			sc->taint_tx = badtx;
 		} /* end handle transmit interrupt */
 
 		if (csr & TULIP_STS_SYSERROR) {
@@ -1256,7 +1255,7 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 	} /* end interrupt loop */
 
 lmc_int_fail_out:
-	spin_unlock(&sc->lmc_lock);
+	spin_unlock(&sc->lock);
 	lmc_trace(dev, "lmc_interrupt out");
 	return IRQ_RETVAL(handled);
 }
@@ -1271,14 +1270,14 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 
 	lmc_trace(dev, "lmc_start_xmit in");
 
-	spin_lock_irqsave(&sc->lmc_lock, flags);
+	spin_lock_irqsave(&sc->lock, flags);
 
 	/* normal path, tbusy known to be zero */
 
-	entry = sc->lmc_next_tx % LMC_TXDESCS;
+	entry = sc->next_tx % LMC_TXDESCS;
 
-	sc->lmc_txq[entry] = skb;
-	sc->lmc_txring[entry].buffer1 = virt_to_bus(skb->data);
+	sc->txq[entry] = skb;
+	sc->txring[entry].buffer1 = virt_to_bus(skb->data);
 
 #ifdef DEBUG_PKT
 	printk(KERN_DEBUG "%s TX(%i):", dev->name, skb->len);
@@ -1287,30 +1286,30 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 
 #ifndef GCOM
 	/* If the queue is less than half full, don't interrupt */
-	if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS / 2) {
+	if (sc->next_tx - sc->taint_tx < LMC_TXDESCS / 2) {
 		/* Do not interrupt on completion of this packet */
 		flag = 0x60000000;
 		netif_wake_queue(dev);
-	} else if (sc->lmc_next_tx - sc->lmc_taint_tx == LMC_TXDESCS / 2) {
+	} else if (sc->next_tx - sc->taint_tx == LMC_TXDESCS / 2) {
 		/* This generates an interrupt on completion of this packet */
 		flag = 0xe0000000;
 		netif_wake_queue(dev);
-	} else if (sc->lmc_next_tx - sc->lmc_taint_tx < LMC_TXDESCS - 1) {
+	} else if (sc->next_tx - sc->taint_tx < LMC_TXDESCS - 1) {
 		/* Do not interrupt on completion of this packet */
 		flag = 0x60000000;
 		netif_wake_queue(dev);
 	} else {
 		/* This generates an interrupt on completion of this packet */
 		flag = 0xe0000000;
-		sc->lmc_txfull = 1;
+		sc->txfull = 1;
 		netif_stop_queue(dev);
 	}
 #else
 	flag = LMC_TDES_INTERRUPT_ON_COMPLETION;
 
-	if (sc->lmc_next_tx - sc->lmc_taint_tx >= LMC_TXDESCS - 1) {
+	if (sc->next_tx - sc->taint_tx >= LMC_TXDESCS - 1) {
 		/* ring full, go busy */
-		sc->lmc_txfull = 1;
+		sc->txfull = 1;
 		netif_stop_queue(dev);
 		sc->extra_stats.tx_tbusy1++;
 	}
@@ -1320,22 +1319,22 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 		flag |= LMC_TDES_END_OF_RING;	/* flag as such for Tulip */
 
 	/* don't pad small packets either */
-	flag = sc->lmc_txring[entry].length = (skb->len) | flag |
+	flag = sc->txring[entry].length = (skb->len) | flag |
 		sc->TxDescriptControlInit;
 
 	/* set the transmit timeout flag to be checked in the watchdog timer
 	   handler. */
 
 	sc->extra_stats.tx_NoCompleteCnt++;
-	sc->lmc_next_tx++;
+	sc->next_tx++;
 
 	/* give ownership to the chip */
-	sc->lmc_txring[entry].status = 0x80000000;
+	sc->txring[entry].status = 0x80000000;
 
 	/* send now! */
 	LMC_CSR_WRITE(sc, csr_txpoll, 0);
 
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	spin_unlock_irqrestore(&sc->lock, flags);
 
 	lmc_trace(dev, "lmc_start_xmit_out");
 	return NETDEV_TX_OK;
@@ -1360,10 +1359,10 @@ static int lmc_rx(struct net_device *dev)
 
 	rxIntLoopCnt = 0;		/* debug */
 
-	i = sc->lmc_next_rx % LMC_RXDESCS;
-	next_rx = sc->lmc_next_rx;
+	i = sc->next_rx % LMC_RXDESCS;
+	next_rx = sc->next_rx;
 
-	while (((stat = sc->lmc_rxring[i].status) & LMC_RDES_OWN_BIT) !=
+	while (((stat = sc->rxring[i].status) & LMC_RDES_OWN_BIT) !=
 	       DESC_OWNED_BY_DC21X4) {
 		rxIntLoopCnt++;		/* debug */
 		len = ((stat & LMC_RDES_FRAME_LENGTH) >>
@@ -1372,32 +1371,32 @@ static int lmc_rx(struct net_device *dev)
 			/* Check first segment and last segment */
 			if ((stat & 0x0000ffff) != 0x7fff) {
 				/* Oversized frame */
-				sc->lmc_device->stats.rx_length_errors++;
+				sc->netdev->stats.rx_length_errors++;
 				goto skip_packet;
 			}
 		}
 
 		if (stat & 0x00000008) { /* Catch a dribbling bit error */
-			sc->lmc_device->stats.rx_errors++;
-			sc->lmc_device->stats.rx_frame_errors++;
+			sc->netdev->stats.rx_errors++;
+			sc->netdev->stats.rx_frame_errors++;
 			goto skip_packet;
 		}
 
 
 		if (stat & 0x00000004) { /* Catch a CRC error by the Xilinx */
-			sc->lmc_device->stats.rx_errors++;
-			sc->lmc_device->stats.rx_crc_errors++;
+			sc->netdev->stats.rx_errors++;
+			sc->netdev->stats.rx_crc_errors++;
 			goto skip_packet;
 		}
 
 		if (len > LMC_PKT_BUF_SZ) {
-			sc->lmc_device->stats.rx_length_errors++;
+			sc->netdev->stats.rx_length_errors++;
 			localLengthErrCnt++;
 			goto skip_packet;
 		}
 
-		if (len < sc->lmc_crcSize + 2) {
-			sc->lmc_device->stats.rx_length_errors++;
+		if (len < sc->crcSize + 2) {
+			sc->netdev->stats.rx_length_errors++;
 			sc->extra_stats.rx_SmallPktCnt++;
 			localLengthErrCnt++;
 			goto skip_packet;
@@ -1409,9 +1408,9 @@ static int lmc_rx(struct net_device *dev)
 			       dev->name);
 		}
 
-		len -= sc->lmc_crcSize;
+		len -= sc->crcSize;
 
-		skb = sc->lmc_rxq[i];
+		skb = sc->rxq[i];
 
 		/* We ran out of memory at some point just allocate an skb buff
 		   and continue. */
@@ -1419,17 +1418,17 @@ static int lmc_rx(struct net_device *dev)
 		if (!skb) {
 			nsb = dev_alloc_skb(LMC_PKT_BUF_SZ + 2);
 			if (nsb) {
-				sc->lmc_rxq[i] = nsb;
+				sc->rxq[i] = nsb;
 				nsb->dev = dev;
-				sc->lmc_rxring[i].buffer1 =
+				sc->rxring[i].buffer1 =
 					virt_to_bus(skb_tail_pointer(nsb));
 			}
 			sc->failed_recv_alloc = 1;
 			goto skip_packet;
 		}
 
-		sc->lmc_device->stats.rx_packets++;
-		sc->lmc_device->stats.rx_bytes += len;
+		sc->netdev->stats.rx_packets++;
+		sc->netdev->stats.rx_bytes += len;
 
 		/* I'm not sure of the sanity of this. Packets could be arriving
 		   at a constant 44.210mbits/sec and we're going to copy them
@@ -1439,15 +1438,15 @@ static int lmc_rx(struct net_device *dev)
 			/* If it's a large packet don't copy it just hand it
 			   up */
 give_it_anyways:
-			sc->lmc_rxq[i] = NULL;
-			sc->lmc_rxring[i].buffer1 = 0x0;
+			sc->rxq[i] = NULL;
+			sc->rxring[i].buffer1 = 0x0;
 
 			skb_put(skb, len);
 #ifdef DEBUG_PKT
 			printk(KERN_DEBUG "%s RX(%i):", dev->name, len);
 			debug_frame(skb);
 #endif
-			skb->protocol = hdlc_type_trans(skb, sc->lmc_device);
+			skb->protocol = hdlc_type_trans(skb, sc->netdev);
 			skb_reset_mac_header(skb);
 			/* skb_reset_network_header(skb); */
 			skb->dev = dev;
@@ -1457,9 +1456,9 @@ give_it_anyways:
 			   make a new one */
 			nsb = dev_alloc_skb(LMC_PKT_BUF_SZ + 2);
 			if (nsb) {
-				sc->lmc_rxq[i] = nsb;
+				sc->rxq[i] = nsb;
 				nsb->dev = dev;
-				sc->lmc_rxring[i].buffer1 =
+				sc->rxring[i].buffer1 =
 					virt_to_bus(skb_tail_pointer(nsb));
 				/* Transferred to 21140 below */
 			} else {
@@ -1481,7 +1480,7 @@ give_it_anyways:
 			printk(KERN_DEBUG "%s RX(%i):", dev->name, len);
 			debug_frame(nsb);
 #endif
-			nsb->protocol = hdlc_type_trans(nsb, sc->lmc_device);
+			nsb->protocol = hdlc_type_trans(nsb, sc->netdev);
 			skb_reset_mac_header(nsb);
 			/* skb_reset_network_header(nsb); */
 			nsb->dev = dev;
@@ -1489,10 +1488,10 @@ give_it_anyways:
 		}
 
 skip_packet:
-		sc->lmc_rxring[i].status = DESC_OWNED_BY_DC21X4;
+		sc->rxring[i].status = DESC_OWNED_BY_DC21X4;
 
-		sc->lmc_next_rx++;
-		i = sc->lmc_next_rx % LMC_RXDESCS;
+		sc->next_rx++;
+		i = sc->next_rx % LMC_RXDESCS;
 		rx_work_limit--;
 		if (rx_work_limit < 0)
 			break;
@@ -1513,7 +1512,7 @@ skip_packet:
 #ifdef DEBUG
 	if (rxIntLoopCnt == 0) {
 		for (i = 0; i < LMC_RXDESCS; i++) {
-			if ((sc->lmc_rxring[i].status & LMC_RDES_OWN_BIT)
+			if ((sc->rxring[i].status & LMC_RDES_OWN_BIT)
 			    != DESC_OWNED_BY_DC21X4)
 				rxIntLoopCnt++;
 		}
@@ -1534,15 +1533,15 @@ static struct net_device_stats *lmc_get_stats(struct net_device *dev)
 
 	lmc_trace(dev, "lmc_get_stats in");
 
-	spin_lock_irqsave(&sc->lmc_lock, flags);
+	spin_lock_irqsave(&sc->lock, flags);
 
-	sc->lmc_device->stats.rx_missed_errors +=
+	sc->netdev->stats.rx_missed_errors +=
 		LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
 
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	spin_unlock_irqrestore(&sc->lock, flags);
 
 	lmc_trace(dev, "lmc_get_stats out");
-	return &sc->lmc_device->stats;
+	return &sc->netdev->stats;
 }
 
 static struct pci_driver lmc_driver = {
@@ -1572,11 +1571,11 @@ unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
 	int command = (0xf6 << 10) | (devaddr << 5) | regno;
 	int retval = 0;
 
-	lmc_trace(sc->lmc_device, "lmc_mii_readreg in");
+	lmc_trace(sc->netdev, "lmc_mii_readreg in");
 
 	LMC_MII_SYNC(sc);
 
-	lmc_trace(sc->lmc_device, "lmc_mii_readreg: done sync");
+	lmc_trace(sc->netdev, "lmc_mii_readreg: done sync");
 
 	for (i = 15; i >= 0; i--) {
 		int dataval = (command & (1 << i)) ? 0x20000 : 0;
@@ -1589,7 +1588,7 @@ unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
 		/* __SLOW_DOWN_IO; */
 	}
 
-	lmc_trace(sc->lmc_device, "lmc_mii_readreg: done1");
+	lmc_trace(sc->netdev, "lmc_mii_readreg: done1");
 
 	for (i = 19; i > 0; i--) {
 		LMC_CSR_WRITE(sc, csr_9, 0x40000);
@@ -1602,7 +1601,7 @@ unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
 		/* __SLOW_DOWN_IO; */
 	}
 
-	lmc_trace(sc->lmc_device, "lmc_mii_readreg out");
+	lmc_trace(sc->netdev, "lmc_mii_readreg out");
 
 	return (retval >> 1) & 0xffff;
 }
@@ -1613,7 +1612,7 @@ void lmc_mii_writereg(struct card * const sc, unsigned devaddr, unsigned regno,
 	int i = 32;
 	int command = (0x5002 << 16) | (devaddr << 23) | (regno << 18) | data;
 
-	lmc_trace(sc->lmc_device, "lmc_mii_writereg in");
+	lmc_trace(sc->netdev, "lmc_mii_writereg in");
 
 	LMC_MII_SYNC(sc);
 
@@ -1646,21 +1645,21 @@ void lmc_mii_writereg(struct card * const sc, unsigned devaddr, unsigned regno,
 		i--;
 	}
 
-	lmc_trace(sc->lmc_device, "lmc_mii_writereg out");
+	lmc_trace(sc->netdev, "lmc_mii_writereg out");
 }
 
 static void lmc_softreset(struct card * const sc)
 {
 	int i;
 
-	lmc_trace(sc->lmc_device, "lmc_softreset in");
+	lmc_trace(sc->netdev, "lmc_softreset in");
 
 	/* Initialize the receive rings and buffers. */
-	sc->lmc_txfull = 0;
-	sc->lmc_next_rx = 0;
-	sc->lmc_next_tx = 0;
-	sc->lmc_taint_rx = 0;
-	sc->lmc_taint_tx = 0;
+	sc->txfull = 0;
+	sc->next_rx = 0;
+	sc->next_tx = 0;
+	sc->taint_rx = 0;
+	sc->taint_tx = 0;
 
 	/* Setup each one of the receiver buffers allocate an skbuff for
 	   each one, setup the descriptor table and point each buffer at
@@ -1669,7 +1668,7 @@ static void lmc_softreset(struct card * const sc)
 	for (i = 0; i < LMC_RXDESCS; i++) {
 		struct sk_buff *skb;
 
-		if (sc->lmc_rxq[i] == NULL) {
+		if (sc->rxq[i] == NULL) {
 			skb = dev_alloc_skb(LMC_PKT_BUF_SZ + 2);
 			if (skb == NULL) {
 				printk(KERN_WARNING
@@ -1678,114 +1677,114 @@ static void lmc_softreset(struct card * const sc)
 				sc->failed_ring = 1;
 				break;
 			} else
-				sc->lmc_rxq[i] = skb;
+				sc->rxq[i] = skb;
 		} else
-			skb = sc->lmc_rxq[i];
+			skb = sc->rxq[i];
 
-		skb->dev = sc->lmc_device;
+		skb->dev = sc->netdev;
 
 		/* owned by 21140 */
-		sc->lmc_rxring[i].status = 0x80000000;
+		sc->rxring[i].status = 0x80000000;
 
 		/* used to be PKT_BUF_SZ now uses skb since we lose some
 		   to head room */
-		sc->lmc_rxring[i].length = skb_tailroom(skb);
+		sc->rxring[i].length = skb_tailroom(skb);
 
 		/* use to be tail which is dumb since you're thinking why write
 		   to the end of the packet but since there's nothing there
 		   tail == data */
-		sc->lmc_rxring[i].buffer1 = virt_to_bus(skb->data);
+		sc->rxring[i].buffer1 = virt_to_bus(skb->data);
 
 		/* This is fair since the structure is static and we have
 		   the next address */
-		sc->lmc_rxring[i].buffer2 = virt_to_bus(&sc->lmc_rxring[i + 1]);
+		sc->rxring[i].buffer2 = virt_to_bus(&sc->rxring[i + 1]);
 	}
 
 	/* Sets end of ring */
 	if (i != 0) {
 		/* Set end of buffers flag */
-		sc->lmc_rxring[i - 1].length |= 0x02000000;
+		sc->rxring[i - 1].length |= 0x02000000;
 		/* Point back to the start */
-		sc->lmc_rxring[i - 1].buffer2 = virt_to_bus(&sc->lmc_rxring[0]);
+		sc->rxring[i - 1].buffer2 = virt_to_bus(&sc->rxring[0]);
 	}
 	/* write base address */
-	LMC_CSR_WRITE(sc, csr_rxlist, virt_to_bus(sc->lmc_rxring));
+	LMC_CSR_WRITE(sc, csr_rxlist, virt_to_bus(sc->rxring));
 
 	/* Initialize the transmit rings and buffers */
 	for (i = 0; i < LMC_TXDESCS; i++) {
-		if (sc->lmc_txq[i] != NULL) {		/* have buffer */
-			dev_kfree_skb(sc->lmc_txq[i]);	/* free it */
+		if (sc->txq[i] != NULL) {		/* have buffer */
+			dev_kfree_skb(sc->txq[i]);	/* free it */
 			/* We just dropped a packet */
-			sc->lmc_device->stats.tx_dropped++;
+			sc->netdev->stats.tx_dropped++;
 		}
-		sc->lmc_txq[i] = NULL;
-		sc->lmc_txring[i].status = 0x00000000;
-		sc->lmc_txring[i].buffer2 = virt_to_bus(&sc->lmc_txring[i + 1]);
+		sc->txq[i] = NULL;
+		sc->txring[i].status = 0x00000000;
+		sc->txring[i].buffer2 = virt_to_bus(&sc->txring[i + 1]);
 	}
-	sc->lmc_txring[i - 1].buffer2 = virt_to_bus(&sc->lmc_txring[0]);
-	LMC_CSR_WRITE(sc, csr_txlist, virt_to_bus(sc->lmc_txring));
+	sc->txring[i - 1].buffer2 = virt_to_bus(&sc->txring[0]);
+	LMC_CSR_WRITE(sc, csr_txlist, virt_to_bus(sc->txring));
 
-	lmc_trace(sc->lmc_device, "lmc_softreset out");
+	lmc_trace(sc->netdev, "lmc_softreset out");
 }
 
 void lmc_gpio_mkinput(struct card * const sc, u32 bits)
 {
-	lmc_trace(sc->lmc_device, "lmc_gpio_mkinput in");
-	sc->lmc_gpio_io &= ~bits;
-	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
-	lmc_trace(sc->lmc_device, "lmc_gpio_mkinput out");
+	lmc_trace(sc->netdev, "lmc_gpio_mkinput in");
+	sc->gpio_io &= ~bits;
+	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->gpio_io));
+	lmc_trace(sc->netdev, "lmc_gpio_mkinput out");
 }
 
 void lmc_gpio_mkoutput(struct card * const sc, u32 bits)
 {
-	lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput in");
-	sc->lmc_gpio_io |= bits;
-	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->lmc_gpio_io));
-	lmc_trace(sc->lmc_device, "lmc_gpio_mkoutput out");
+	lmc_trace(sc->netdev, "lmc_gpio_mkoutput in");
+	sc->gpio_io |= bits;
+	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->gpio_io));
+	lmc_trace(sc->netdev, "lmc_gpio_mkoutput out");
 }
 
 void lmc_led_on(struct card * const sc, u32 led)
 {
-	lmc_trace(sc->lmc_device, "lmc_led_on in");
-	if ((~sc->lmc_miireg16) & led) { /* Already on! */
-		lmc_trace(sc->lmc_device, "lmc_led_on aon out");
+	lmc_trace(sc->netdev, "lmc_led_on in");
+	if ((~sc->miireg16) & led) { /* Already on! */
+		lmc_trace(sc->netdev, "lmc_led_on aon out");
 		return;
 	}
 
-	sc->lmc_miireg16 &= ~led;
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-	lmc_trace(sc->lmc_device, "lmc_led_on out");
+	sc->miireg16 &= ~led;
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
+	lmc_trace(sc->netdev, "lmc_led_on out");
 }
 
 void lmc_led_off(struct card * const sc, u32 led)
 {
-	lmc_trace(sc->lmc_device, "lmc_led_off in");
-	if (sc->lmc_miireg16 & led) { /* Already set don't do anything */
-		lmc_trace(sc->lmc_device, "lmc_led_off aoff out");
+	lmc_trace(sc->netdev, "lmc_led_off in");
+	if (sc->miireg16 & led) { /* Already set don't do anything */
+		lmc_trace(sc->netdev, "lmc_led_off aoff out");
 		return;
 	}
 
-	sc->lmc_miireg16 |= led;
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
-	lmc_trace(sc->lmc_device, "lmc_led_off out");
+	sc->miireg16 |= led;
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
+	lmc_trace(sc->netdev, "lmc_led_off out");
 }
 
 static void lmc_reset(struct card * const sc)
 {
-	lmc_trace(sc->lmc_device, "lmc_reset in");
-	sc->lmc_miireg16 |= LMC_MII16_FIFO_RESET;
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_trace(sc->netdev, "lmc_reset in");
+	sc->miireg16 |= LMC_MII16_FIFO_RESET;
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 
-	sc->lmc_miireg16 &= ~LMC_MII16_FIFO_RESET;
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	sc->miireg16 &= ~LMC_MII16_FIFO_RESET;
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 
 	/* make some of the GPIO pins be outputs */
 	lmc_gpio_mkoutput(sc, LMC_GEP_RESET);
 
 	/* RESET low to force state reset.  This also forces the transmitter
 	   clock to be internal, but we expect to reset that later anyway. */
-	sc->lmc_gpio &= ~(LMC_GEP_RESET);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+	sc->gpio &= ~(LMC_GEP_RESET);
+	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 	/* hold for more than 10 microseconds */
 	udelay(50);
@@ -1794,20 +1793,20 @@ static void lmc_reset(struct card * const sc)
 	lmc_gpio_mkinput(sc, LMC_GEP_RESET);
 
 	/* Call media specific init routine */
-	sc->lmc_media->init(sc);
+	sc->media->init(sc);
 
 	sc->extra_stats.resetCount++;
-	lmc_trace(sc->lmc_device, "lmc_reset out");
+	lmc_trace(sc->netdev, "lmc_reset out");
 }
 
 static void lmc_dec_reset(struct card * const sc)
 {
 	u32 val;
-	lmc_trace(sc->lmc_device, "lmc_dec_reset in");
+	lmc_trace(sc->netdev, "lmc_dec_reset in");
 
 	/* disable all interrupts */
-	sc->lmc_intrmask = 0;
-	LMC_CSR_WRITE(sc, csr_intr, sc->lmc_intrmask);
+	sc->intrmask = 0;
+	LMC_CSR_WRITE(sc, csr_intr, sc->intrmask);
 
 	/* Reset the chip with a software reset command. Wait 10 microseconds
 	   (actually 50 PCI cycles but at 33MHz that comes to two microseconds
@@ -1815,12 +1814,12 @@ static void lmc_dec_reset(struct card * const sc)
 	LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET);
 	udelay(25);
 #ifdef __sparc__
-	sc->lmc_busmode = LMC_CSR_READ(sc, csr_busmode);
-	sc->lmc_busmode = 0x00100000;
-	sc->lmc_busmode &= ~TULIP_BUSMODE_SWRESET;
-	LMC_CSR_WRITE(sc, csr_busmode, sc->lmc_busmode);
+	sc->busmode = LMC_CSR_READ(sc, csr_busmode);
+	sc->busmode = 0x00100000;
+	sc->busmode &= ~TULIP_BUSMODE_SWRESET;
+	LMC_CSR_WRITE(sc, csr_busmode, sc->busmode);
 #endif
-	sc->lmc_cmdmode = LMC_CSR_READ(sc, csr_command);
+	sc->cmdmode = LMC_CSR_READ(sc, csr_command);
 
 	/*
 	 * We want:
@@ -1832,44 +1831,44 @@ static void lmc_dec_reset(struct card * const sc)
 	 *   if using 16-bit CRC, turn off CRC (trans desc, crc disable)
 	 */
 
-	sc->lmc_cmdmode |= (TULIP_CMD_PROMISCUOUS | TULIP_CMD_FULLDUPLEX |
+	sc->cmdmode |= (TULIP_CMD_PROMISCUOUS | TULIP_CMD_FULLDUPLEX |
 			    TULIP_CMD_PASSBADPKT | TULIP_CMD_NOHEARTBEAT |
 			    TULIP_CMD_PORTSELECT | TULIP_CMD_RECEIVEALL |
 			    TULIP_CMD_MUSTBEONE);
-	sc->lmc_cmdmode &= ~(TULIP_CMD_OPERMODE | TULIP_CMD_THRESHOLDCTL |
+	sc->cmdmode &= ~(TULIP_CMD_OPERMODE | TULIP_CMD_THRESHOLDCTL |
 			     TULIP_CMD_STOREFWD | TULIP_CMD_TXTHRSHLDCTL);
 
-	LMC_CSR_WRITE(sc, csr_command, sc->lmc_cmdmode);
+	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
 
 	/* disable receiver watchdog and transmit jabber */
 	val = LMC_CSR_READ(sc, csr_sia_general);
 	val |= (TULIP_WATCHDOG_TXDISABLE | TULIP_WATCHDOG_RXDISABLE);
 	LMC_CSR_WRITE(sc, csr_sia_general, val);
 
-	lmc_trace(sc->lmc_device, "lmc_dec_reset out");
+	lmc_trace(sc->netdev, "lmc_dec_reset out");
 }
 
 static void lmc_initcsrs(struct card * const sc, lmc_csrptr_t csr_base,
 			 size_t csr_size)
 {
-	lmc_trace(sc->lmc_device, "lmc_initcsrs in");
-	sc->lmc_csrs.csr_busmode	= csr_base +  0 * csr_size;
-	sc->lmc_csrs.csr_txpoll		= csr_base +  1 * csr_size;
-	sc->lmc_csrs.csr_rxpoll		= csr_base +  2 * csr_size;
-	sc->lmc_csrs.csr_rxlist		= csr_base +  3 * csr_size;
-	sc->lmc_csrs.csr_txlist		= csr_base +  4 * csr_size;
-	sc->lmc_csrs.csr_status		= csr_base +  5 * csr_size;
-	sc->lmc_csrs.csr_command	= csr_base +  6 * csr_size;
-	sc->lmc_csrs.csr_intr		= csr_base +  7 * csr_size;
-	sc->lmc_csrs.csr_missed_frames	= csr_base +  8 * csr_size;
-	sc->lmc_csrs.csr_9		= csr_base +  9 * csr_size;
-	sc->lmc_csrs.csr_10		= csr_base + 10 * csr_size;
-	sc->lmc_csrs.csr_11		= csr_base + 11 * csr_size;
-	sc->lmc_csrs.csr_12		= csr_base + 12 * csr_size;
-	sc->lmc_csrs.csr_13		= csr_base + 13 * csr_size;
-	sc->lmc_csrs.csr_14		= csr_base + 14 * csr_size;
-	sc->lmc_csrs.csr_15		= csr_base + 15 * csr_size;
-	lmc_trace(sc->lmc_device, "lmc_initcsrs out");
+	lmc_trace(sc->netdev, "lmc_initcsrs in");
+	sc->csrs.csr_busmode	= csr_base +  0 * csr_size;
+	sc->csrs.csr_txpoll		= csr_base +  1 * csr_size;
+	sc->csrs.csr_rxpoll		= csr_base +  2 * csr_size;
+	sc->csrs.csr_rxlist		= csr_base +  3 * csr_size;
+	sc->csrs.csr_txlist		= csr_base +  4 * csr_size;
+	sc->csrs.csr_status		= csr_base +  5 * csr_size;
+	sc->csrs.csr_command	= csr_base +  6 * csr_size;
+	sc->csrs.csr_intr		= csr_base +  7 * csr_size;
+	sc->csrs.csr_missed_frames	= csr_base +  8 * csr_size;
+	sc->csrs.csr_9		= csr_base +  9 * csr_size;
+	sc->csrs.csr_10		= csr_base + 10 * csr_size;
+	sc->csrs.csr_11		= csr_base + 11 * csr_size;
+	sc->csrs.csr_12		= csr_base + 12 * csr_size;
+	sc->csrs.csr_13		= csr_base + 13 * csr_size;
+	sc->csrs.csr_14		= csr_base + 14 * csr_size;
+	sc->csrs.csr_15		= csr_base + 15 * csr_size;
+	lmc_trace(sc->netdev, "lmc_initcsrs out");
 }
 
 static void lmc_driver_timeout(struct net_device *dev)
@@ -1880,7 +1879,7 @@ static void lmc_driver_timeout(struct net_device *dev)
 
 	lmc_trace(dev, "lmc_driver_timeout in");
 
-	spin_lock_irqsave(&sc->lmc_lock, flags);
+	spin_lock_irqsave(&sc->lock, flags);
 
 	printk(KERN_DEBUG "%s: Xmitter busy|\n", dev->name);
 
@@ -1901,11 +1900,11 @@ static void lmc_driver_timeout(struct net_device *dev)
 	/* immediate transmit */
 	LMC_CSR_WRITE(sc, csr_txpoll, 0);
 
-	sc->lmc_device->stats.tx_errors++;
+	sc->netdev->stats.tx_errors++;
 	sc->extra_stats.tx_ProcTimeout++;
 	dev->trans_start = jiffies; /* prevent tx timeout */
 
 bug_out:
-	spin_unlock_irqrestore(&sc->lmc_lock, flags);
+	spin_unlock_irqrestore(&sc->lock, flags);
 	lmc_trace(dev, "lmc_driver_timout out");
 }
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index 5851d19..fde275a 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -48,20 +48,20 @@ static void lmc_set_protocol(struct card * const sc, struct control *ctl)
 static inline void write_av9110_bit(struct card *sc, int c)
 {
 	/* set the data bit as we need it. */
-	sc->lmc_gpio &= ~(LMC_GEP_CLK);
+	sc->gpio &= ~(LMC_GEP_CLK);
 	if (c & 0x01)
-		sc->lmc_gpio |= LMC_GEP_DATA;
+		sc->gpio |= LMC_GEP_DATA;
 	else
-		sc->lmc_gpio &= ~(LMC_GEP_DATA);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->gpio &= ~(LMC_GEP_DATA);
+	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 	/* set the clock to high */
-	sc->lmc_gpio |= LMC_GEP_CLK;
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+	sc->gpio |= LMC_GEP_CLK;
+	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 	/* set the clock to low again. */
-	sc->lmc_gpio &= ~(LMC_GEP_CLK);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+	sc->gpio &= ~(LMC_GEP_CLK);
+	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 }
 
 static void write_av9110(struct card *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
@@ -73,16 +73,16 @@ static void write_av9110(struct card *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
 	       LMC_PRINTF_ARGS, sc->ictl.clock_rate, n, m, v, x, r);
 #endif
 
-	sc->lmc_gpio |= LMC_GEP_SSI_GENERATOR;
-	sc->lmc_gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+	sc->gpio |= LMC_GEP_SSI_GENERATOR;
+	sc->gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK);
+	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 	/* Set the TXCLOCK, GENERATOR, SERIAL, and SERIALCLK as outputs. */
 	lmc_gpio_mkoutput(sc, (LMC_GEP_DATA | LMC_GEP_CLK
 				| LMC_GEP_SSI_GENERATOR));
 
-	sc->lmc_gpio &= ~(LMC_GEP_SSI_GENERATOR);
-	LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+	sc->gpio &= ~(LMC_GEP_SSI_GENERATOR);
+	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 
 	/* a shifting we will go... */
 	for (i = 0; i < 7; i++)
@@ -124,15 +124,15 @@ static void lmc_ssi_set_clock(struct card * const sc, int ie)
 	int old;
 	old = ie;
 	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
-		sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->gpio &= ~(LMC_GEP_SSI_TXCLOCK);
+		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
 		if (ie != old)
 			printk(LMC_PRINTF_FMT ": clock external\n",
 			       LMC_PRINTF_ARGS);
 	} else {
-		sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->gpio |= LMC_GEP_SSI_TXCLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 		if (ie != old)
 			printk(LMC_PRINTF_FMT ": clock internal\n",
@@ -188,11 +188,11 @@ static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
 	if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_INT
 	    && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_EXT) {
 		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
-		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
+		sc->timing = LMC_CTL_CLOCK_SOURCE_INT;
 	} else if (ctl->clock_source == LMC_CTL_CLOCK_SOURCE_EXT
 		 && sc->ictl.clock_source == LMC_CTL_CLOCK_SOURCE_INT) {
 		lmc_ssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
-		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
+		sc->timing = LMC_CTL_CLOCK_SOURCE_EXT;
 	}
 
 	if (ctl->clock_rate != sc->ictl.clock_rate)
@@ -233,7 +233,7 @@ static int lmc_ssi_get_link_status(struct card * const sc)
 	lmc_led_on(sc, LMC_MII16_LED0);
 
 	/* transmit clock determination */
-	if (sc->lmc_timing == LMC_CTL_CLOCK_SOURCE_INT)
+	if (sc->timing == LMC_CTL_CLOCK_SOURCE_INT)
 		lmc_led_off(sc, LMC_MII16_LED3);
 	else if (ticks == 0) {	/* no clock found ? */
 		ret = 0;
@@ -284,16 +284,16 @@ static int lmc_ssi_get_link_status(struct card * const sc)
 static void lmc_ssi_set_link_status(struct card * const sc, int state)
 {
 	if (state == LMC_LINK_UP) {
-		sc->lmc_miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
+		sc->miireg16 |= (LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
 		printk(LMC_PRINTF_FMT ": asserting DTR and RTS\n",
 		       LMC_PRINTF_ARGS);
 	} else {
-		sc->lmc_miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
+		sc->miireg16 &= ~(LMC_MII16_SSI_DTR | LMC_MII16_SSI_RTS);
 		printk(LMC_PRINTF_FMT ": deasserting DTR and RTS\n",
 		       LMC_PRINTF_ARGS);
 	}
 
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 
 }
 
@@ -302,23 +302,23 @@ static void lmc_ssi_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
-		sc->lmc_miireg16 |= LMC_MII16_SSI_CRC;
+		sc->miireg16 |= LMC_MII16_SSI_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
+		sc->crcSize = LMC_CTL_CRC_BYTESIZE_4;
 
 	} else {
 		/* 16 bit */
-		sc->lmc_miireg16 &= ~LMC_MII16_SSI_CRC;
+		sc->miireg16 &= ~LMC_MII16_SSI_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
+		sc->crcSize = LMC_CTL_CRC_BYTESIZE_2;
 	}
 
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 static void lmc_ssi_default(struct card * const sc)
 {
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->miireg16 = LMC_MII16_LED_ALL;
 
 	/* make TXCLOCK always be an output */
 	lmc_gpio_mkoutput(sc, LMC_GEP_SSI_TXCLOCK);
@@ -353,15 +353,15 @@ static void lmc_hssi_set_clock(struct card * const sc, int ie)
 	int old;
 	old = sc->ictl.clock_source;
 	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
-		sc->lmc_gpio |= LMC_GEP_HSSI_CLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->gpio |= LMC_GEP_HSSI_CLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock external\n",
 			       LMC_PRINTF_ARGS);
 	} else {
-		sc->lmc_gpio &= ~(LMC_GEP_HSSI_CLOCK);
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->gpio &= ~LMC_GEP_HSSI_CLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock internal\n",
@@ -383,9 +383,9 @@ static void lmc_hssi_set_status(struct card * const sc, struct control *ctl)
 	/* check for change in clock source */
 	if (ctl->clock_source && !sc->ictl.clock_source) {
 		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
-		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_INT;
+		sc->timing = LMC_CTL_CLOCK_SOURCE_INT;
 	} else if (!ctl->clock_source && sc->ictl.clock_source) {
-		sc->lmc_timing = LMC_CTL_CLOCK_SOURCE_EXT;
+		sc->timing = LMC_CTL_CLOCK_SOURCE_EXT;
 		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
 	}
 
@@ -403,11 +403,11 @@ static inline int lmc_hssi_get_link_status(struct card * const sc)
 static void lmc_hssi_set_link_status(struct card * const sc, int state)
 {
 	if (state == LMC_LINK_UP)
-		sc->lmc_miireg16 |= LMC_MII16_HSSI_TA;
+		sc->miireg16 |= LMC_MII16_HSSI_TA;
 	else
-		sc->lmc_miireg16 &= ~LMC_MII16_HSSI_TA;
+		sc->miireg16 &= ~LMC_MII16_HSSI_TA;
 
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 /* 0 == 16bit, 1 == 32bit */
@@ -415,20 +415,20 @@ static void lmc_hssi_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
-		sc->lmc_miireg16 |= LMC_MII16_HSSI_CRC;
+		sc->miireg16 |= LMC_MII16_HSSI_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
 	} else {
 		/* 16 bit */
-		sc->lmc_miireg16 &= ~LMC_MII16_HSSI_CRC;
+		sc->miireg16 &= ~LMC_MII16_HSSI_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
 	}
 
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 static void lmc_hssi_default(struct card * const sc)
 {
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->miireg16 = LMC_MII16_LED_ALL;
 	lmc_hssi_set_link_status(sc, LMC_LINK_DOWN);
 	lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
 	lmc_hssi_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
@@ -441,26 +441,26 @@ static void lmc_hssi_default(struct card * const sc)
 static void lmc_ds3_set_100ft(struct card * const sc, int ie)
 {
 	if (ie == LMC_CTL_CABLE_LENGTH_GT_100FT) {
-		sc->lmc_miireg16 &= ~LMC_MII16_DS3_ZERO;
+		sc->miireg16 &= ~LMC_MII16_DS3_ZERO;
 		sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_GT_100FT;
 	} else if (ie == LMC_CTL_CABLE_LENGTH_LT_100FT) {
-		sc->lmc_miireg16 |= LMC_MII16_DS3_ZERO;
+		sc->miireg16 |= LMC_MII16_DS3_ZERO;
 		sc->ictl.cable_length = LMC_CTL_CABLE_LENGTH_LT_100FT;
 	}
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 /* 1 == DS3 payload scrambled, 0 == not scrambled */
 static void lmc_ds3_set_scram(struct card * const sc, int ie)
 {
 	if (ie == LMC_CTL_ON) {
-		sc->lmc_miireg16 |= LMC_MII16_DS3_SCRAM;
+		sc->miireg16 |= LMC_MII16_DS3_SCRAM;
 		sc->ictl.scrambler_onoff = LMC_CTL_ON;
 	} else {
-		sc->lmc_miireg16 &= ~LMC_MII16_DS3_SCRAM;
+		sc->miireg16 &= ~LMC_MII16_DS3_SCRAM;
 		sc->ictl.scrambler_onoff = LMC_CTL_OFF;
 	}
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 /* Given a user provided state, set ourselves up to match it.
@@ -612,20 +612,20 @@ static void lmc_ds3_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
-		sc->lmc_miireg16 |= LMC_MII16_DS3_CRC;
+		sc->miireg16 |= LMC_MII16_DS3_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
 	} else {
 		/* 16 bit */
-		sc->lmc_miireg16 &= ~LMC_MII16_DS3_CRC;
+		sc->miireg16 &= ~LMC_MII16_DS3_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
 	}
 
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 static void lmc_ds3_default(struct card * const sc)
 {
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->miireg16 = LMC_MII16_LED_ALL;
 
 	lmc_ds3_set_100ft(sc, LMC_CTL_CABLE_LENGTH_LT_100FT);
 	lmc_ds3_set_scram(sc, LMC_CTL_OFF);
@@ -655,16 +655,16 @@ static int lmc_t1_read(struct card * const sc, int a)
 static void lmc_t1_set_circuit_type(struct card * const sc, int ie)
 {
 	if (ie == LMC_CTL_CIRCUIT_TYPE_T1) {
-		sc->lmc_miireg16 |= LMC_MII16_T1_Z;
+		sc->miireg16 |= LMC_MII16_T1_Z;
 		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1;
 		printk(KERN_INFO "%s: In T1 Mode\n", sc->name);
 	} else {
-		sc->lmc_miireg16 &= ~LMC_MII16_T1_Z;
+		sc->miireg16 &= ~LMC_MII16_T1_Z;
 		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1;
 		printk(KERN_INFO "%s: In E1 Mode\n", sc->name);
 	}
 
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 static void lmc_t1_init(struct card * const sc)
@@ -681,9 +681,9 @@ static void lmc_t1_init(struct card * const sc)
 	lmc_mii_writereg(sc, 0, 16, mii16);
 
 	/* set T1 or E1 line.  Uses sc->lmcmii16 reg in function so update it */
-	sc->lmc_miireg16 = mii16;
+	sc->miireg16 = mii16;
 	lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
-	mii16 = sc->lmc_miireg16;
+	mii16 = sc->miireg16;
 
 	lmc_t1_write(sc, 0x01, 0x1B); /* CR0     - primary control */
 	lmc_t1_write(sc, 0x02, 0x42); /* JAT_CR  - jitter atten config */
@@ -723,7 +723,7 @@ static void lmc_t1_init(struct card * const sc)
 
 	mii16 |= LMC_MII16_T1_XOE;
 	lmc_mii_writereg(sc, 0, 16, mii16);
-	sc->lmc_miireg16 = mii16;
+	sc->miireg16 = mii16;
 }
 
 /* Given a user provided state, set ourselves up to match it.
@@ -757,7 +757,7 @@ static int lmc_t1_get_link_status(struct card * const sc)
 	   - led2 green  = power to adapter, Gate Array loaded & driver attached
 	   - led3 red    = Loss of Signal (LOS) or out of frame (OOF)
 			   conditions detected on T3 receive signal */
-	lmc_trace(sc->lmc_device, "lmc_t1_get_link_status in");
+	lmc_trace(sc->netdev, "lmc_t1_get_link_status in");
 	lmc_led_on(sc, LMC_DS3_LED2);
 
 	lmc_mii_writereg(sc, 0, 17, T1FRAMER_ALARM1_STATUS);
@@ -846,12 +846,12 @@ static int lmc_t1_get_link_status(struct card * const sc)
 		sc->last_led_err[2] = 0;
 	}
 
-	sc->lmc_xinfo.t1_alarm1_status = link_status;
+	sc->xinfo.t1_alarm1_status = link_status;
 
 	lmc_mii_writereg(sc, 0, 17, T1FRAMER_ALARM2_STATUS);
-	sc->lmc_xinfo.t1_alarm2_status = lmc_mii_readreg(sc, 0, 18);
+	sc->xinfo.t1_alarm2_status = lmc_mii_readreg(sc, 0, 18);
 
-	lmc_trace(sc->lmc_device, "lmc_t1_get_link_status out");
+	lmc_trace(sc->netdev, "lmc_t1_get_link_status out");
 	return ret;
 }
 
@@ -860,18 +860,18 @@ static void lmc_t1_set_crc_length(struct card * const sc, int state)
 {
 	if (state == LMC_CTL_CRC_LENGTH_32) {
 		/* 32 bit */
-		sc->lmc_miireg16 |= LMC_MII16_T1_CRC;
+		sc->miireg16 |= LMC_MII16_T1_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_32;
-		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_4;
+		sc->crcSize = LMC_CTL_CRC_BYTESIZE_4;
 
 	} else {
-		/* 16 bit */ sc->lmc_miireg16 &= ~LMC_MII16_T1_CRC;
+		/* 16 bit */ sc->miireg16 &= ~LMC_MII16_T1_CRC;
 		sc->ictl.crc_length = LMC_CTL_CRC_LENGTH_16;
-		sc->lmc_crcSize = LMC_CTL_CRC_BYTESIZE_2;
+		sc->crcSize = LMC_CTL_CRC_BYTESIZE_2;
 
 	}
 
-	lmc_mii_writereg(sc, 0, 16, sc->lmc_miireg16);
+	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
 }
 
 /* 1 == internal, 0 == external */
@@ -880,15 +880,15 @@ static void lmc_t1_set_clock(struct card * const sc, int ie)
 	int old;
 	old = ie;
 	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
-		sc->lmc_gpio &= ~(LMC_GEP_SSI_TXCLOCK);
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->gpio &= ~(LMC_GEP_SSI_TXCLOCK);
+		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock external\n",
 			       LMC_PRINTF_ARGS);
 	} else {
-		sc->lmc_gpio |= LMC_GEP_SSI_TXCLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->lmc_gpio);
+		sc->gpio |= LMC_GEP_SSI_TXCLOCK;
+		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock internal\n",
@@ -898,7 +898,7 @@ static void lmc_t1_set_clock(struct card * const sc, int ie)
 
 static void lmc_t1_default(struct card * const sc)
 {
-	sc->lmc_miireg16 = LMC_MII16_LED_ALL;
+	sc->miireg16 = LMC_MII16_LED_ALL;
 	lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
 	lmc_t1_set_crc_length(sc, LMC_CTL_CRC_LENGTH_16);
 	/* Right now we can only clock from out internal source */
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 38f61cb..a3e9aee 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -22,7 +22,7 @@
 #define lmc_csrptr_t		unsigned long
 
 #define LMC_PRINTF_FMT		"%s"
-#define LMC_PRINTF_ARGS		(sc->lmc_device->name)
+#define LMC_PRINTF_ARGS		(sc->netdev->name)
 
 #define TX_TIMEOUT		(2*HZ)
 
@@ -33,10 +33,10 @@
 #define LMC_LINK_DOWN		0
 
 /* These macros for generic read and write to and from the dec chip */
-#define LMC_CSR_READ(sc, csr)		inl((sc)->lmc_csrs.csr)
-#define LMC_CSR_WRITE(sc, reg, val)	outl((val), (sc)->lmc_csrs.reg)
+#define LMC_CSR_READ(sc, csr)		inl((sc)->csrs.csr)
+#define LMC_CSR_WRITE(sc, reg, val)	outl((val), (sc)->csrs.reg)
 
-#define lmc_delay()		inl(sc->lmc_csrs.csr_9)
+#define lmc_delay()		inl(sc->csrs.csr_9)
 
 /* This macro sync's up with the mii so that reads and writes can take place */
 #define LMC_MII_SYNC(sc)					\
@@ -201,7 +201,7 @@ struct media {
 
 struct lmc_extra_statistics {
 	u32 version_size;
-	u32 lmc_cardtype;
+	u32 cardtype;
 
 	u32 tx_ProcTimeout;
 	u32 tx_IntTimeout;
@@ -213,10 +213,10 @@ struct lmc_extra_statistics {
 	u32 tx_tbusy1;
 	u32 tx_tbusy_calls;
 	u32 resetCount;
-	u32 lmc_txfull;
+	u32 txfull;
 	u32 tbusy;
 	u32 dirtyTx;
-	u32 lmc_next_tx;
+	u32 next_tx;
 	u32 otherTypeCnt;
 	u32 lastType;
 	u32 lastTypeOK;
@@ -269,46 +269,46 @@ struct card {
 	char *name;
 	u8 board_idx;
 	struct lmc_extra_statistics extra_stats;
-	struct net_device *lmc_device;
+	struct net_device *netdev;
 
 	int hang, rxdesc, bad_packet, some_counter;
 	u32 txgo;
-	struct lmc_regfile_t lmc_csrs;
-	volatile u32 lmc_txtick;
-	volatile u32 lmc_rxtick;
-	u32 lmc_flags;
-	u32 lmc_intrmask;	/* our copy of csr_intr */
-	u32 lmc_cmdmode;	/* our copy of csr_cmdmode */
-	u32 lmc_busmode;	/* our copy of csr_busmode */
-	u32 lmc_gpio_io;	/* state of in/out settings */
-	u32 lmc_gpio;		/* state of outputs */
-	struct sk_buff *lmc_txq[LMC_TXDESCS];
-	struct sk_buff *lmc_rxq[LMC_RXDESCS];
-	volatile struct tulip_desc_t lmc_rxring[LMC_RXDESCS];
-	volatile struct tulip_desc_t lmc_txring[LMC_TXDESCS];
-	unsigned int lmc_next_rx, lmc_next_tx;
-	volatile unsigned int lmc_taint_tx, lmc_taint_rx;
-	int lmc_tx_start, lmc_txfull;
-	int lmc_txbusy;
-	u16 lmc_miireg16;
-	int lmc_ok;
+	struct lmc_regfile_t csrs;
+	volatile u32 txtick;
+	volatile u32 rxtick;
+	u32 flags;
+	u32 intrmask;		/* our copy of csr_intr */
+	u32 cmdmode;		/* our copy of csr_cmdmode */
+	u32 busmode;		/* our copy of csr_busmode */
+	u32 gpio_io;		/* state of in/out settings */
+	u32 gpio;		/* state of outputs */
+	struct sk_buff *txq[LMC_TXDESCS];
+	struct sk_buff *rxq[LMC_RXDESCS];
+	volatile struct tulip_desc_t rxring[LMC_RXDESCS];
+	volatile struct tulip_desc_t txring[LMC_TXDESCS];
+	unsigned int next_rx, next_tx;
+	volatile unsigned int taint_tx, taint_rx;
+	int tx_start, txfull;
+	int txbusy;
+	u16 miireg16;
+	int ok;
 	int last_link_status;
-	int lmc_cardtype;
+	int cardtype;
 	u32 last_frameerr;
-	struct media *lmc_media;
+	struct media *media;
 	struct timer_list timer;
 	struct control ictl;
 	u32 TxDescriptControlInit;
 
 	int tx_TimeoutInd;		/* additional driver state */
 	int tx_TimeoutDisplay;
-	unsigned int lastlmc_taint_tx;
+	unsigned int last_taint_tx;
 	int lasttx_packets;
 	u32 tx_clockState;
-	u32 lmc_crcSize;
-	LMC_XINFO lmc_xinfo;
-	char lmc_yel, lmc_blue, lmc_red; /* for T1 and DS3 */
-	char lmc_timing;		/* for HSSI and SSI */
+	u32 crcSize;
+	LMC_XINFO xinfo;
+	char yel, blue, red; /* for T1 and DS3 */
+	char timing;		/* for HSSI and SSI */
 	int got_irq;
 
 	char last_led_err[4];
@@ -316,7 +316,7 @@ struct card {
 	u32 last_int;
 	u32 num_int;
 
-	spinlock_t lmc_lock;
+	spinlock_t lock;
 
 	u8 failed_ring;			/* Failure cases */
 	u8 failed_recv_alloc;
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 19/29] LMC: Remove sc->check. We don't do such checks in drivers.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (17 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 18/29] LMC: strip "lmc_" prefix from field names in struct card Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 20/29] LMC: Remove unused sc->board_idx Krzysztof Halasa
                   ` (9 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c |    9 ---------
 drivers/net/wan/lmc/var.h  |    2 --
 2 files changed, 0 insertions(+), 11 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 6698aa9..56631d4 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -575,14 +575,6 @@ static void lmc_watchdog(unsigned long data)
 
 	spin_lock_irqsave(&sc->lock, flags);
 
-	if (sc->check != 0xBEAFCAFE) {
-		printk(KERN_ERR
-		       "LMC: Corrupt net_device struct, breaking out\n");
-		spin_unlock_irqrestore(&sc->lock, flags);
-		return;
-	}
-
-
 	/* Make sure the tx jabber and rx watchdog are off,
 	 * and the transmit and receive processes are running.
 	 */
@@ -761,7 +753,6 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	dev->tx_queue_len = 100;
 	sc->netdev = dev;
 	sc->name = dev->name;
-	sc->check = 0xBEAFCAFE;
 	dev->base_addr = pci_resource_start(pdev, 0);
 	dev->irq = pdev->irq;
 	pci_set_drvdata(pdev, dev);
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index a3e9aee..10cb70d 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -320,8 +320,6 @@ struct card {
 
 	u8 failed_ring;			/* Failure cases */
 	u8 failed_recv_alloc;
-
-	u32 check;			/* Structure check */
 };
 
 #define PKT_BUF_SZ		1542
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 20/29] LMC: Remove unused sc->board_idx.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (18 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 19/29] LMC: Remove sc->check. We don't do such checks in drivers Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 21/29] LMC: I'm sure Linux doesn't swap PCI subsystem device and vendor IDs Krzysztof Halasa
                   ` (8 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c |    1 -
 drivers/net/wan/lmc/var.h  |    1 -
 2 files changed, 0 insertions(+), 2 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 56631d4..2229e0a 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -836,7 +836,6 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	/* reset clock */
 	LMC_CSR_WRITE(sc, csr_gp_timer, 0xFFFFFFFFUL);
 
-	sc->board_idx = cards_found++;
 	sc->extra_stats.check = STATCHECK;
 	sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
 		sizeof(sc->netdev->stats) + sizeof(sc->extra_stats);
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 10cb70d..729ab9f 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -267,7 +267,6 @@ typedef struct lmc_xinfo {
 /* forward decl */
 struct card {
 	char *name;
-	u8 board_idx;
 	struct lmc_extra_statistics extra_stats;
 	struct net_device *netdev;
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 21/29] LMC: I'm sure Linux doesn't swap PCI subsystem device and vendor IDs.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (19 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 20/29] LMC: Remove unused sc->board_idx Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 22/29] LMC: Move model logic to media structs Krzysztof Halasa
                   ` (7 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c |   10 ----------
 1 files changed, 0 insertions(+), 10 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 2229e0a..bd7def0 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -77,8 +77,6 @@ static int LMC_PKT_BUF_SZ = 1542;
 static DEFINE_PCI_DEVICE_TABLE(lmc_pci_tbl) = {
 	{ PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST,
 	  PCI_VENDOR_ID_LMC, PCI_ANY_ID },
-	{ PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST,
-	  PCI_ANY_ID, PCI_VENDOR_ID_LMC },
 	{ 0 }
 };
 
@@ -773,14 +771,6 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	sc->cardtype = LMC_CARDTYPE_UNKNOWN;
 	sc->timing = LMC_CTL_CLOCK_SOURCE_EXT;
 
-	/*
-	 * Check either the subvendor or the subdevice, some systems reverse
-	 * the setting in the bois, seems to be version and arch dependent?
-	 * Fix the error, exchange the two values
-	 */
-	if ((subdevice = pdev->subsystem_device) == PCI_VENDOR_ID_LMC)
-		subdevice = pdev->subsystem_vendor;
-
 	switch (subdevice) {
 	case PCI_DEVICE_ID_LMC_HSSI:
 		dev_info(&pdev->dev, "%s = LMC HSSI\n", dev->name);
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 22/29] LMC: Move model logic to media structs.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (20 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 21/29] LMC: I'm sure Linux doesn't swap PCI subsystem device and vendor IDs Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 23/29] LMC: lmc_set_protocol() is effectively a NOP, remove it Krzysztof Halasa
                   ` (6 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

There are 4 different card models driven by lmc driver. Move the model-specific
code out of the switch()/if statements and into the model-specific media
structs.

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |   75 +++++++++++++-----------------------------
 drivers/net/wan/lmc/media.c |   20 +++++++++--
 drivers/net/wan/lmc/var.h   |    3 +-
 3 files changed, 41 insertions(+), 57 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index bd7def0..1231d7c 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -75,8 +75,14 @@
 static int LMC_PKT_BUF_SZ = 1542;
 
 static DEFINE_PCI_DEVICE_TABLE(lmc_pci_tbl) = {
-	{ PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST,
-	  PCI_VENDOR_ID_LMC, PCI_ANY_ID },
+	{PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST, PCI_VENDOR_ID_LMC,
+	 PCI_DEVICE_ID_LMC_SSI, .driver_data = (long)&lmc_ssi_media},
+	{PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST, PCI_VENDOR_ID_LMC,
+	 PCI_DEVICE_ID_LMC_HSSI, .driver_data = (long)&lmc_hssi_media},
+	{PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST, PCI_VENDOR_ID_LMC,
+	 PCI_DEVICE_ID_LMC_DS3, .driver_data = (long)&lmc_ds3_media},
+	{PCI_VENDOR_ID_DEC, PCI_DEVICE_ID_DEC_TULIP_FAST, PCI_VENDOR_ID_LMC,
+	 PCI_DEVICE_ID_LMC_T1, .driver_data = (long)&lmc_t1_media},
 	{ 0 }
 };
 
@@ -167,7 +173,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		spin_lock_irqsave(&sc->lock, flags);
 		sc->xinfo.Magic0 = 0xBEEFCAFE;
 
-		sc->xinfo.PciCardType = sc->cardtype;
+		sc->xinfo.PciCardType = sc->media->cardtype;
 		sc->xinfo.PciSlotNumber = 0;
 		sc->xinfo.DriverMajorVersion = DRIVER_MAJOR_VERSION;
 		sc->xinfo.DriverMinorVersion = DRIVER_MINOR_VERSION;
@@ -190,7 +196,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 
 	case LMCIOCGETLMCSTATS:
 		spin_lock_irqsave(&sc->lock, flags);
-		if (sc->cardtype == LMC_CARDTYPE_T1) {
+		if (sc->media->cardtype == LMC_CARDTYPE_T1) {
 			lmc_mii_writereg(sc, 0, 17, T1FRAMER_FERR_LSB);
 			sc->extra_stats.framingBitErrorCount +=
 				lmc_mii_readreg(sc, 0, 18) & 0xff;
@@ -235,7 +241,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		sc->extra_stats.check = STATCHECK;
 		sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
 			sizeof(sc->netdev->stats) + sizeof(sc->extra_stats);
-		sc->extra_stats.cardtype = sc->cardtype;
+		sc->extra_stats.cardtype = sc->media->cardtype;
 		spin_unlock_irqrestore(&sc->lock, flags);
 		ret = 0;
 		break;
@@ -283,7 +289,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 		break;
 
 	case LMCIOCT1CONTROL:
-		if (sc->cardtype != LMC_CARDTYPE_T1) {
+		if (sc->media->cardtype != LMC_CARDTYPE_T1) {
 			ret = -EOPNOTSUPP;
 			break;
 		}
@@ -708,10 +714,8 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 {
 	struct card *sc;
 	struct net_device *dev;
-	u16 subdevice;
-	u16 AdapModelNum;
+	u16 model;
 	int err;
-	static int cards_found;
 
 	/* lmc_trace(dev, "lmc_init_one in"); */
 
@@ -768,34 +772,10 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 		goto err_hdlcdev;
 	}
 
-	sc->cardtype = LMC_CARDTYPE_UNKNOWN;
 	sc->timing = LMC_CTL_CLOCK_SOURCE_EXT;
+	sc->media = (struct media*)ent->driver_data;
 
-	switch (subdevice) {
-	case PCI_DEVICE_ID_LMC_HSSI:
-		dev_info(&pdev->dev, "%s = LMC HSSI\n", dev->name);
-		sc->cardtype = LMC_CARDTYPE_HSSI;
-		sc->media = &lmc_hssi_media;
-		break;
-	case PCI_DEVICE_ID_LMC_DS3:
-		dev_info(&pdev->dev, "%s = LMC DS3\n", dev->name);
-		sc->cardtype = LMC_CARDTYPE_DS3;
-		sc->media = &lmc_ds3_media;
-		break;
-	case PCI_DEVICE_ID_LMC_SSI:
-		dev_info(&pdev->dev, "%s = LMC SSI\n", dev->name);
-		sc->cardtype = LMC_CARDTYPE_SSI;
-		sc->media = &lmc_ssi_media;
-		break;
-	case PCI_DEVICE_ID_LMC_T1:
-		dev_info(&pdev->dev, "%s = LMC T1\n", dev->name);
-		sc->cardtype = LMC_CARDTYPE_T1;
-		sc->media = &lmc_t1_media;
-		break;
-	default:
-		dev_warn(&pdev->dev, "%s = LMC UNKNOWN CARD!\n", dev->name);
-		break;
-	}
+	dev_info(&pdev->dev, "%s = LMC %s\n", dev->name, sc->media->name);
 
 	lmc_initcsrs(sc, dev->base_addr, 8);
 
@@ -809,27 +789,18 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 
 	/* verify that the PCI Sub System ID matches the Adapter Model number
 	   from the MII register */
-	AdapModelNum = (lmc_mii_readreg(sc, 0, 3) & 0x3f0) >> 4;
-
-	if ((AdapModelNum != LMC_ADAP_T1 || /* detect LMC1200 */
-	     subdevice != PCI_DEVICE_ID_LMC_T1) &&
-	    (AdapModelNum != LMC_ADAP_SSI || /* detect LMC1000 */
-	     subdevice != PCI_DEVICE_ID_LMC_SSI) &&
-	    (AdapModelNum != LMC_ADAP_DS3 || /* detect LMC5245 */
-	     subdevice != PCI_DEVICE_ID_LMC_DS3) &&
-	    (AdapModelNum != LMC_ADAP_HSSI || /* detect LMC5200 */
-	     subdevice != PCI_DEVICE_ID_LMC_HSSI))
-		printk(KERN_WARNING "%s: Model number (%d) miscompare for PCI"
-		       " Subsystem ID = 0x%04x\n",
-		       dev->name, AdapModelNum, subdevice);
-
-	/* reset clock */
-	LMC_CSR_WRITE(sc, csr_gp_timer, 0xFFFFFFFFUL);
+	model = (lmc_mii_readreg(sc, 0, 3) & 0x3F0) >> 4;
+
+	if (model != sc->media->mii_type)
+		dev_warn(&pdev->dev, "%s: Invalid model number (%d)",
+			 dev->name, model);
+
+	LMC_CSR_WRITE(sc, csr_gp_timer, 0xFFFFFFFFUL); /* reset clock */
 
 	sc->extra_stats.check = STATCHECK;
 	sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
 		sizeof(sc->netdev->stats) + sizeof(sc->extra_stats);
-	sc->extra_stats.cardtype = sc->cardtype;
+	sc->extra_stats.cardtype = sc->media->cardtype;
 
 	sc->ok = 0;
 	sc->last_link_status = 0;
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index fde275a..ecf0f2a 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -906,7 +906,10 @@ static void lmc_t1_default(struct card * const sc)
 }
 
 
-struct media lmc_ssi_media = {
+struct media lmc_ssi_media = { /* LMC1000 */
+	.name = "SSI",
+	.cardtype = LMC_CARDTYPE_SSI,
+	.mii_type = LMC_ADAP_SSI,
 	.init = lmc_ssi_init,
 	.defaults = lmc_ssi_default,
 	.set_status = lmc_ssi_set_status,
@@ -918,7 +921,10 @@ struct media lmc_ssi_media = {
 	.watchdog = lmc_ssi_watchdog,
 };
 
-struct media lmc_hssi_media = {
+struct media lmc_hssi_media = { /* LMC5200 */
+	.name = "HSSI",
+	.cardtype = LMC_CARDTYPE_HSSI,
+	.mii_type = LMC_ADAP_HSSI,
 	.init = lmc_hssi_init,
 	.defaults = lmc_hssi_default,
 	.set_status = lmc_hssi_set_status,
@@ -928,7 +934,10 @@ struct media lmc_hssi_media = {
 	.set_crc_length = lmc_hssi_set_crc_length,
 };
 
-struct media lmc_ds3_media = {
+struct media lmc_ds3_media = { /* LMC5245 */
+	.name = "DS3",
+	.cardtype = LMC_CARDTYPE_DS3,
+	.mii_type = LMC_ADAP_DS3,
 	.init = lmc_ds3_init,
 	.defaults = lmc_ds3_default,
 	.set_status = lmc_ds3_set_status,
@@ -938,7 +947,10 @@ struct media lmc_ds3_media = {
 	.set_crc_length = lmc_ds3_set_crc_length,
 };
 
-struct media lmc_t1_media = {
+struct media lmc_t1_media = { /* LMC1200 */
+	.name = "T1",
+	.cardtype = LMC_CARDTYPE_T1,
+	.mii_type = LMC_ADAP_T1,
 	.init = lmc_t1_init,
 	.defaults = lmc_t1_default,
 	.set_status = lmc_t1_set_status,
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 729ab9f..971f5d6 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -195,6 +195,8 @@ struct media {
 	void (* set_crc_length)(struct card * const, int);
 	void (* set_circuit_type)(struct card * const, int);
 	void (* watchdog)(struct card * const);
+	char * const name;
+	int cardtype, mii_type;
 };
 
 #define STATCHECK 0xBEEFCAFE
@@ -292,7 +294,6 @@ struct card {
 	u16 miireg16;
 	int ok;
 	int last_link_status;
-	int cardtype;
 	u32 last_frameerr;
 	struct media *media;
 	struct timer_list timer;
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 23/29] LMC: lmc_set_protocol() is effectively a NOP, remove it.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (21 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 22/29] LMC: Move model logic to media structs Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 24/29] LMC: Remove unused variables Krzysztof Halasa
                   ` (5 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |    2 +-
 drivers/net/wan/lmc/media.c |   27 +++------------------------
 drivers/net/wan/lmc/var.h   |    2 +-
 3 files changed, 5 insertions(+), 26 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 1231d7c..133cc77 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -962,7 +962,7 @@ static void lmc_running_reset(struct net_device *dev)
 
 
 /* This is what is called when you ifconfig down a device. This disables
-   the timer for the watchdog and keepalives, and disables the irq for dev. */
+   the watchdog timer and the irq for dev. */
 static int lmc_close(struct net_device *dev)
 {
 	/* not calling release_region() as we should */
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index ecf0f2a..ea5c2bc 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -35,13 +35,6 @@
  * the GNU General Public License version 2, incorporated herein by reference.
  */
 
-static void lmc_set_protocol(struct card * const sc, struct control *ctl)
-{
-	if (!ctl)
-		sc->ictl.keepalive_onoff = LMC_CTL_ON;
-}
-
-
 /* SSI methods */
 
 /* These are bits to program the ssi frequency generator */
@@ -180,7 +173,6 @@ static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
 	if (ctl == NULL) {
 		lmc_ssi_set_clock(sc, sc->ictl.clock_source);
 		lmc_ssi_set_speed(sc, &sc->ictl);
-		lmc_set_protocol(sc, NULL);
 		return;
 	}
 
@@ -197,8 +189,6 @@ static void lmc_ssi_set_status(struct card * const sc, struct control *ctl)
 
 	if (ctl->clock_rate != sc->ictl.clock_rate)
 		lmc_ssi_set_speed(sc, ctl);
-
-	lmc_set_protocol(sc, ctl);
 }
 
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
@@ -375,21 +365,15 @@ static void lmc_hssi_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
 		lmc_hssi_set_clock(sc, sc->ictl.clock_source);
-		lmc_set_protocol(sc, NULL);
-
 		return;
 	}
 
 	/* check for change in clock source */
-	if (ctl->clock_source && !sc->ictl.clock_source) {
-		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_INT);
+	if (ctl->clock_source && !sc->ictl.clock_source)
 		sc->timing = LMC_CTL_CLOCK_SOURCE_INT;
-	} else if (!ctl->clock_source && sc->ictl.clock_source) {
+	else if (!ctl->clock_source && sc->ictl.clock_source)
 		sc->timing = LMC_CTL_CLOCK_SOURCE_EXT;
-		lmc_hssi_set_clock(sc, LMC_CTL_CLOCK_SOURCE_EXT);
-	}
-
-	lmc_set_protocol(sc, ctl);
+	lmc_hssi_set_clock(sc, sc->timing);
 }
 
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
@@ -470,7 +454,6 @@ static void lmc_ds3_set_status(struct card * const sc, struct control *ctl)
 	if (ctl == NULL) {
 		lmc_ds3_set_100ft(sc, sc->ictl.cable_length);
 		lmc_ds3_set_scram(sc, sc->ictl.scrambler_onoff);
-		lmc_set_protocol(sc, NULL);
 		return;
 	}
 
@@ -485,8 +468,6 @@ static void lmc_ds3_set_status(struct card * const sc, struct control *ctl)
 		lmc_ds3_set_scram(sc, LMC_CTL_ON);
 	else if (!ctl->scrambler_onoff && sc->ictl.scrambler_onoff)
 		lmc_ds3_set_scram(sc, LMC_CTL_OFF);
-
-	lmc_set_protocol(sc, ctl);
 }
 
 static void lmc_ds3_init(struct card * const sc)
@@ -732,7 +713,6 @@ static void lmc_t1_set_status(struct card * const sc, struct control *ctl)
 {
 	if (ctl == NULL) {
 		lmc_t1_set_circuit_type(sc, sc->ictl.circuit_type);
-		lmc_set_protocol(sc, NULL);
 		return;
 	}
 	/* check for change in circuit type */
@@ -742,7 +722,6 @@ static void lmc_t1_set_status(struct card * const sc, struct control *ctl)
 	else if (ctl->circuit_type == LMC_CTL_CIRCUIT_TYPE_E1
 		 && sc->ictl.circuit_type == LMC_CTL_CIRCUIT_TYPE_T1)
 		lmc_t1_set_circuit_type(sc, LMC_CTL_CIRCUIT_TYPE_T1);
-	lmc_set_protocol(sc, ctl);
 }
 
 /* Return hardware link status. 0 == link is down, 1 == link is up. */
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 971f5d6..93c21fe 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -152,7 +152,7 @@ struct control {
 	u32 cable_length;		/* DS3 */
 	u32 scrambler_onoff;		/* DS3 */
 	u32 cable_type;			/* T1 */
-	u32 keepalive_onoff;		/* protocol */
+	u32 keepalive_onoff;		/* unused */
 	u32 ticks;			/* ticks/sec */
 	union {
 		lmc_av9110_t ssi;
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 24/29] LMC: Remove unused variables.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (22 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 23/29] LMC: lmc_set_protocol() is effectively a NOP, remove it Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 25/29] LMC: Remove unneeded prototypes Krzysztof Halasa
                   ` (4 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/var.h |   15 +--------------
 1 files changed, 1 insertions(+), 14 deletions(-)

diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 93c21fe..206f77a 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -272,15 +272,9 @@ struct card {
 	struct lmc_extra_statistics extra_stats;
 	struct net_device *netdev;
 
-	int hang, rxdesc, bad_packet, some_counter;
-	u32 txgo;
 	struct lmc_regfile_t csrs;
-	volatile u32 txtick;
-	volatile u32 rxtick;
-	u32 flags;
 	u32 intrmask;		/* our copy of csr_intr */
 	u32 cmdmode;		/* our copy of csr_cmdmode */
-	u32 busmode;		/* our copy of csr_busmode */
 	u32 gpio_io;		/* state of in/out settings */
 	u32 gpio;		/* state of outputs */
 	struct sk_buff *txq[LMC_TXDESCS];
@@ -289,12 +283,10 @@ struct card {
 	volatile struct tulip_desc_t txring[LMC_TXDESCS];
 	unsigned int next_rx, next_tx;
 	volatile unsigned int taint_tx, taint_rx;
-	int tx_start, txfull;
-	int txbusy;
+	int txfull;
 	u16 miireg16;
 	int ok;
 	int last_link_status;
-	u32 last_frameerr;
 	struct media *media;
 	struct timer_list timer;
 	struct control ictl;
@@ -304,18 +296,13 @@ struct card {
 	int tx_TimeoutDisplay;
 	unsigned int last_taint_tx;
 	int lasttx_packets;
-	u32 tx_clockState;
 	u32 crcSize;
 	LMC_XINFO xinfo;
-	char yel, blue, red; /* for T1 and DS3 */
 	char timing;		/* for HSSI and SSI */
 	int got_irq;
 
 	char last_led_err[4];
 
-	u32 last_int;
-	u32 num_int;
-
 	spinlock_t lock;
 
 	u8 failed_ring;			/* Failure cases */
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 25/29] LMC: Remove unneeded prototypes.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (23 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 24/29] LMC: Remove unused variables Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 26/29] LMC: Remove redundant macro Krzysztof Halasa
                   ` (3 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/var.h |    6 ------
 1 files changed, 0 insertions(+), 6 deletions(-)

diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 206f77a..1f360de 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -427,17 +427,11 @@ static inline void lmc_trace(struct net_device *dev, char *msg)
 }
 
 
-int lmc_probe(struct net_device *dev);
-unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
-			 unsigned regno);
-void lmc_mii_writereg(struct card * const sc, unsigned devaddr,
-		      unsigned regno, unsigned data);
 void lmc_led_on(struct card * const, u32);
 void lmc_led_off(struct card * const, u32);
 unsigned lmc_mii_readreg(struct card * const, unsigned, unsigned);
 void lmc_mii_writereg(struct card * const, unsigned, unsigned, unsigned);
 void lmc_gpio_mkinput(struct card * const sc, u32 bits);
 void lmc_gpio_mkoutput(struct card * const sc, u32 bits);
-int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
 
 #endif /* _LMC_VAR_H_ */
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 26/29] LMC: Remove redundant macro.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (24 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 25/29] LMC: Remove unneeded prototypes Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 27/29] LMC: Remove redundant card->name Krzysztof Halasa
                   ` (2 subsequent siblings)
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/var.h |    4 ----
 1 files changed, 0 insertions(+), 4 deletions(-)

diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 1f360de..54e9b0b 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -396,10 +396,6 @@ struct card {
 #define DESC_OWNED_BY_SYSTEM	((u32)(0x00000000))
 #define DESC_OWNED_BY_DC21X4	((u32)(0x80000000))
 
-#ifndef TULIP_CMD_RECEIVEALL
-#define TULIP_CMD_RECEIVEALL	0x40000000L
-#endif
-
 /* Adapter module number */
 #define LMC_ADAP_HSSI		2
 #define LMC_ADAP_DS3		3
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 27/29] LMC: Remove redundant card->name.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (25 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 26/29] LMC: Remove redundant macro Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 28/29] LMC: Simplify and fix CSR names and logic Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 29/29] LMC: Report proper card type before the first dev->open() Krzysztof Halasa
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |    3 +--
 drivers/net/wan/lmc/media.c |   40 ++++++++++++++++++++++------------------
 drivers/net/wan/lmc/var.h   |    1 -
 3 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 133cc77..13383a5 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -754,7 +754,6 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	dev->watchdog_timeo = HZ; /* 1 second */
 	dev->tx_queue_len = 100;
 	sc->netdev = dev;
-	sc->name = dev->name;
 	dev->base_addr = pci_resource_start(pdev, 0);
 	dev->irq = pdev->irq;
 	pci_set_drvdata(pdev, dev);
@@ -1624,7 +1623,7 @@ static void lmc_softreset(struct card * const sc)
 			if (skb == NULL) {
 				printk(KERN_WARNING
 				       "%s: Failed to allocate receiver ring, will try again\n",
-				       sc->name);
+				       sc->netdev->name);
 				sc->failed_ring = 1;
 				break;
 			} else
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index ea5c2bc..b9fadb4 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -230,13 +230,14 @@ static int lmc_ssi_get_link_status(struct card * const sc)
 		if (sc->last_led_err[3] != 1) {
 			sc->extra_stats.tx_lossOfClockCnt++;
 			printk(KERN_WARNING "%s: Lost Clock, Link Down\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		sc->last_led_err[3] = 1;
 		lmc_led_on(sc, LMC_MII16_LED3);	/* turn ON red LED */
 	} else {
 		if (sc->last_led_err[3] == 1)
-			printk(KERN_WARNING "%s: Clock Returned\n", sc->name);
+			printk(KERN_WARNING "%s: Clock Returned\n",
+			       sc->netdev->name);
 		sc->last_led_err[3] = 0;
 		lmc_led_off(sc, LMC_MII16_LED3); /* turn OFF red LED */
 	}
@@ -255,12 +256,14 @@ static int lmc_ssi_get_link_status(struct card * const sc)
 
 	if (hw_hdsk == 0) {
 		if (sc->last_led_err[1] != 1)
-			printk(KERN_WARNING "%s: DSR not asserted\n", sc->name);
+			printk(KERN_WARNING "%s: DSR not asserted\n",
+			       sc->netdev->name);
 		sc->last_led_err[1] = 1;
 		lmc_led_off(sc, LMC_MII16_LED1);
 	} else {
 		if (sc->last_led_err[1] != 0)
-			printk(KERN_WARNING "%s: DSR now asserted\n", sc->name);
+			printk(KERN_WARNING "%s: DSR now asserted\n",
+			       sc->netdev->name);
 		sc->last_led_err[1] = 0;
 		lmc_led_on(sc, LMC_MII16_LED1);
 	}
@@ -532,7 +535,7 @@ static int lmc_ds3_get_link_status(struct card * const sc)
 			lmc_mii_writereg(sc, 0, 18, r1);
 			printk(KERN_WARNING
 			       "%s: Red Alarm - Loss of Signal or Loss of Framing\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_on(sc, LMC_DS3_LED3);	/* turn on red LED */
 		sc->last_led_err[3] = 1;
@@ -556,10 +559,11 @@ static int lmc_ds3_get_link_status(struct card * const sc)
 		ret = 0;
 		if (sc->last_led_err[0] != 1) {
 			printk(KERN_WARNING
-			       "%s: AIS Alarm or XBit Error\n", sc->name);
+			       "%s: AIS Alarm or XBit Error\n",
+			       sc->netdev->name);
 			printk(KERN_WARNING
 			       "%s: Remote end has loss of signal or framing\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_on(sc, LMC_DS3_LED0);
 		sc->last_led_err[0] = 1;
@@ -576,7 +580,7 @@ static int lmc_ds3_get_link_status(struct card * const sc)
 		if (sc->last_led_err[1] != 1) {
 			printk(KERN_WARNING
 			       "%s: Blue Alarm - Receiving all 1's\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_on(sc, LMC_DS3_LED1);
 		sc->last_led_err[1] = 1;
@@ -638,11 +642,11 @@ static void lmc_t1_set_circuit_type(struct card * const sc, int ie)
 	if (ie == LMC_CTL_CIRCUIT_TYPE_T1) {
 		sc->miireg16 |= LMC_MII16_T1_Z;
 		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_T1;
-		printk(KERN_INFO "%s: In T1 Mode\n", sc->name);
+		printk(KERN_INFO "%s: In T1 Mode\n", sc->netdev->name);
 	} else {
 		sc->miireg16 &= ~LMC_MII16_T1_Z;
 		sc->ictl.circuit_type = LMC_CTL_CIRCUIT_TYPE_E1;
-		printk(KERN_INFO "%s: In E1 Mode\n", sc->name);
+		printk(KERN_INFO "%s: In E1 Mode\n", sc->netdev->name);
 	}
 
 	lmc_mii_writereg(sc, 0, 16, sc->miireg16);
@@ -747,14 +751,14 @@ static int lmc_t1_get_link_status(struct card * const sc)
 		if (sc->last_led_err[1] != 1) {
 			printk(KERN_WARNING
 			       "%s: Receive AIS/Blue Alarm. Far end in RED alarm\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_on(sc, LMC_DS3_LED1);
 		sc->last_led_err[1] = 1;
 	} else {
 		if (sc->last_led_err[1] != 0) {
 			printk(KERN_WARNING "%s: End AIS/Blue Alarm\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_off(sc, LMC_DS3_LED1);
 		sc->last_led_err[1] = 0;
@@ -770,14 +774,14 @@ static int lmc_t1_get_link_status(struct card * const sc)
 		ret = 0;
 		if (sc->last_led_err[0] != 1) {
 			printk(KERN_WARNING "%s: Receive Yellow AIS Alarm\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_on(sc, LMC_DS3_LED0);
 		sc->last_led_err[0] = 1;
 	} else {
 		if (sc->last_led_err[0] != 0) {
 			printk(KERN_WARNING "%s: End of Yellow AIS Alarm\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_off(sc, LMC_DS3_LED0);
 		sc->last_led_err[0] = 0;
@@ -790,7 +794,7 @@ static int lmc_t1_get_link_status(struct card * const sc)
 		if (sc->last_led_err[3] != 1) {
 			printk(KERN_WARNING
 			       "%s: Local Red Alarm: Loss of Framing\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_on(sc, LMC_DS3_LED3);
 		sc->last_led_err[3] = 1;
@@ -798,7 +802,7 @@ static int lmc_t1_get_link_status(struct card * const sc)
 	} else {
 		if (sc->last_led_err[3] != 0) {
 			printk(KERN_WARNING "%s: End Red Alarm (LOF)\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		if (!(link_status & T1F_RLOS))
 			lmc_led_off(sc, LMC_DS3_LED3);
@@ -810,7 +814,7 @@ static int lmc_t1_get_link_status(struct card * const sc)
 		if (sc->last_led_err[2] != 1) {
 			printk(KERN_WARNING
 			       "%s: Local Red Alarm: Loss of Signal\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		lmc_led_on(sc, LMC_DS3_LED3);
 		sc->last_led_err[2] = 1;
@@ -818,7 +822,7 @@ static int lmc_t1_get_link_status(struct card * const sc)
 	} else {
 		if (sc->last_led_err[2] != 0) {
 			printk(KERN_WARNING "%s: End Red Alarm (LOS)\n",
-			       sc->name);
+			       sc->netdev->name);
 		}
 		if (!(link_status & T1F_RLOF))
 			lmc_led_off(sc, LMC_DS3_LED3);
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index 54e9b0b..f62f9a1 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -268,7 +268,6 @@ typedef struct lmc_xinfo {
 
 /* forward decl */
 struct card {
-	char *name;
 	struct lmc_extra_statistics extra_stats;
 	struct net_device *netdev;
 
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 28/29] LMC: Simplify and fix CSR names and logic.
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (26 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 27/29] LMC: Remove redundant card->name Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  2010-07-31 15:05 ` [PATCH 29/29] LMC: Report proper card type before the first dev->open() Krzysztof Halasa
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c  |  155 ++++++++++++++++++-------------------------
 drivers/net/wan/lmc/media.c |   24 ++++----
 drivers/net/wan/lmc/var.h   |   93 ++++++++++++--------------
 3 files changed, 118 insertions(+), 154 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 13383a5..6635afc 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -26,8 +26,7 @@
  * arround.
  *
  * The initialization portion of this driver (the lmc_reset() and the
- * lmc_dec_reset() functions, as well as the led controls and the
- * lmc_initcsrs() functions.
+ * lmc_dec_reset() functions, as well as the led controls.
  *
  * The watchdog function runs every second and checks to see if
  * we still have link, and that the timing source is what we expected
@@ -96,8 +95,6 @@ static int lmc_open(struct net_device *dev);
 static int lmc_close(struct net_device *dev);
 static struct net_device_stats *lmc_get_stats(struct net_device *dev);
 static irqreturn_t lmc_interrupt(int irq, void *dev_instance);
-static void lmc_initcsrs(struct card * const sc, lmc_csrptr_t csr_base,
-			 size_t csr_size);
 static void lmc_softreset(struct card * const);
 static void lmc_running_reset(struct net_device *dev);
 static int lmc_ifdown(struct net_device * const);
@@ -329,13 +326,13 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			   to reset that later anyway. */
 
 			sc->gpio &= ~LMC_GEP_RESET;
-			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+			csr_write(sc, CSR_GPIO, sc->gpio);
 
 			/* hold for more than 10 microseconds */
 			udelay(50);
 
 			sc->gpio |= LMC_GEP_RESET;
-			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+			csr_write(sc, CSR_GPIO, sc->gpio);
 
 			/* stop driving Xilinx-related signals */
 			lmc_gpio_mkinput(sc, 0xff);
@@ -386,16 +383,16 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			   to reset that later anyway. */
 
 			sc->gpio &= ~(LMC_GEP_RESET | LMC_GEP_DP);
-			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+			csr_write(sc, CSR_GPIO, sc->gpio);
 
 			/* hold for more than 10 microseconds */
 			udelay(50);
 
 			sc->gpio |= LMC_GEP_DP | LMC_GEP_RESET;
-			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+			csr_write(sc, CSR_GPIO, sc->gpio);
 
 			/* busy wait for the chip to reset */
-			while ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
+			while ((csr_read(sc, CSR_GPIO) & LMC_GEP_INIT) == 0 &&
 			       (timeout-- > 0))
 				cpu_relax();
 
@@ -450,7 +447,7 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			sc->gpio &= ~LMC_GEP_DP;
 			sc->gpio &= ~LMC_GEP_RESET;
 			sc->gpio |=  LMC_GEP_MODE;
-			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+			csr_write(sc, CSR_GPIO, sc->gpio);
 
 			lmc_gpio_mkoutput(sc, LMC_GEP_MODE | LMC_GEP_DP |
 					  LMC_GEP_RESET);
@@ -477,13 +474,13 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 			sc->gpio |= LMC_GEP_MODE;
 			sc->gpio |= LMC_GEP_DATA;
 			sc->gpio |= LMC_GEP_CLK;
-			LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+			csr_write(sc, CSR_GPIO, sc->gpio);
 
 			lmc_gpio_mkoutput(sc, LMC_GEP_DATA | LMC_GEP_CLK |
 					  LMC_GEP_MODE);
 
 			/* busy wait for the chip to reset */
-			while ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0 &&
+			while ((csr_read(sc, CSR_GPIO) & LMC_GEP_INIT) == 0 &&
 			       (timeout-- > 0))
 				cpu_relax();
 
@@ -511,24 +508,25 @@ int lmc_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
 				/* Clock to zero */
 				sc->gpio &= ~LMC_GEP_CLK;
 				sc->gpio |= LMC_GEP_MODE;
-				LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+				csr_write(sc, CSR_GPIO, sc->gpio);
 				udelay(1);
 
 				/* Put the clack back to one */
 				sc->gpio |= LMC_GEP_CLK;
 				sc->gpio |= LMC_GEP_MODE;
-				LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+				csr_write(sc, CSR_GPIO, sc->gpio);
 				udelay(1);
 			}
-			if ((LMC_CSR_READ(sc, csr_gp) & LMC_GEP_INIT) == 0) {
+
+			if ((csr_read(sc, CSR_GPIO) & LMC_GEP_INIT) == 0)
 				printk(KERN_WARNING
 				       "%s: Reprogramming FAILED. Needs to be reprogrammed. (corrupted data)\n",
 				       dev->name);
-			} else if ((LMC_CSR_READ(sc, csr_gp) &
-				    LMC_GEP_DP) == 0){
-				printk(KERN_WARNING "%s: Reprogramming FAILED. Needs to be reprogrammed. (done)\n",
+			else if ((csr_read(sc, CSR_GPIO) & LMC_GEP_DP) == 0)
+				printk(KERN_WARNING
+				       "%s: Reprogramming FAILED. Needs to be reprogrammed. (done)\n",
 				       dev->name);
-			} else
+			else
 				printk(KERN_DEBUG
 				       "%s: Done reprogramming Xilinx, %d bits, good luck!\n",
 				       dev->name, pos);
@@ -583,9 +581,9 @@ static void lmc_watchdog(unsigned long data)
 	 * and the transmit and receive processes are running.
 	 */
 
-	LMC_CSR_WRITE(sc, csr_15, 0x00000011);
+	csr_write(sc, CSR_WATCHDOG, 0x00000011);
 	sc->cmdmode |= TULIP_CMD_TXRUN | TULIP_CMD_RXRUN;
-	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
+	csr_write(sc, CSR_COMMAND, sc->cmdmode);
 
 	if (sc->ok == 0)
 		goto kick_timer;
@@ -657,7 +655,7 @@ static void lmc_watchdog(unsigned long data)
 
 	/* Poke the transmitter to make sure it never stops, even if we run
 	   out of mem */
-	LMC_CSR_WRITE(sc, csr_rxpoll, 0);
+	csr_write(sc, CSR_RXPOLL, 0);
 
 	/* Check for code that failed and try and fix it as appropriate */
 	if (sc->failed_ring == 1) {
@@ -678,8 +676,8 @@ static void lmc_watchdog(unsigned long data)
 
 	/* remember the timer value */
 kick_timer:
-	ticks = LMC_CSR_READ(sc, csr_gp_timer);
-	LMC_CSR_WRITE(sc, csr_gp_timer, 0xffffffffUL);
+	ticks = csr_read(sc, CSR_GP_TIMER);
+	csr_write(sc, CSR_GP_TIMER, 0xffffffffUL);
 	sc->ictl.ticks = 0x0000ffff - (ticks & 0x0000ffff);
 
 	/* restart this timer. */
@@ -776,8 +774,6 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 
 	dev_info(&pdev->dev, "%s = LMC %s\n", dev->name, sc->media->name);
 
-	lmc_initcsrs(sc, dev->base_addr, 8);
-
 	lmc_gpio_mkinput(sc, 0xff);
 	sc->gpio = 0;		/* drive no signals yet */
 
@@ -794,7 +790,7 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 		dev_warn(&pdev->dev, "%s: Invalid model number (%d)",
 			 dev->name, model);
 
-	LMC_CSR_WRITE(sc, csr_gp_timer, 0xFFFFFFFFUL); /* reset clock */
+	csr_write(sc, CSR_GP_TIMER, 0xFFFFFFFFUL); /* reset clock */
 
 	sc->extra_stats.check = STATCHECK;
 	sc->extra_stats.version_size = (DRIVER_VERSION << 16) +
@@ -901,11 +897,11 @@ static int lmc_open(struct net_device *dev)
 			     TULIP_STS_SYSERROR | TULIP_STS_TXSTOPPED |
 			     TULIP_STS_TXUNDERFLOW | TULIP_STS_RXSTOPPED |
 			     TULIP_STS_RXNOBUF);
-	LMC_CSR_WRITE(sc, csr_intr, sc->intrmask);
+	csr_write(sc, CSR_INTR, sc->intrmask);
 
 	sc->cmdmode |= TULIP_CMD_TXRUN;
 	sc->cmdmode |= TULIP_CMD_RXRUN;
-	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
+	csr_write(sc, CSR_COMMAND, sc->cmdmode);
 
 	sc->ok = 1; /* Run watchdog */
 
@@ -935,7 +931,7 @@ static void lmc_running_reset(struct net_device *dev)
 
 	/* stop interrupts */
 	/* Clear the interrupt mask */
-	LMC_CSR_WRITE(sc, csr_intr, 0x00000000);
+	csr_write(sc, CSR_INTR, 0x00000000);
 
 	lmc_dec_reset(sc);
 	lmc_reset(sc);
@@ -951,10 +947,10 @@ static void lmc_running_reset(struct net_device *dev)
 	sc->extra_stats.tx_tbusy0++;
 
 	sc->intrmask = TULIP_DEFAULT_INTR_MASK;
-	LMC_CSR_WRITE(sc, csr_intr, sc->intrmask);
+	csr_write(sc, CSR_INTR, sc->intrmask);
 
 	sc->cmdmode |= (TULIP_CMD_TXRUN | TULIP_CMD_RXRUN);
-	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
+	csr_write(sc, CSR_COMMAND, sc->cmdmode);
 
 	lmc_trace(dev, "lmc_runnin_reset_out");
 }
@@ -998,16 +994,16 @@ static int lmc_ifdown(struct net_device *dev)
 
 	/* stop interrupts */
 	/* Clear the interrupt mask */
-	LMC_CSR_WRITE(sc, csr_intr, 0x00000000);
+	csr_write(sc, CSR_INTR, 0x00000000);
 
 	/* Stop Tx and Rx on the chip */
-	csr6 = LMC_CSR_READ(sc, csr_command);
+	csr6 = csr_read(sc, CSR_COMMAND);
 	csr6 &= ~LMC_DEC_ST;		/* Turn off the Transmission bit */
 	csr6 &= ~LMC_DEC_SR;		/* Turn off the Receive bit */
-	LMC_CSR_WRITE(sc, csr_command, csr6);
+	csr_write(sc, CSR_COMMAND, csr6);
 
 	sc->netdev->stats.rx_missed_errors +=
-		LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
+		csr_read(sc, CSR_MISSED_FRAMES) & 0xFFFF;
 
 	/* release the interrupt */
 	if (sc->got_irq == 1) {
@@ -1062,7 +1058,7 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 	spin_lock(&sc->lock);
 
 	/* Read the csr to find what interrupts we have (if any) */
-	csr = LMC_CSR_READ(sc, csr_status);
+	csr = csr_read(sc, CSR_STATUS);
 
 	/* Make sure this is our interrupt */
 	if (!(csr & sc->intrmask))
@@ -1075,7 +1071,7 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 		handled = 1;
 
 		/* Clear interrupt bits, we handle all case below */
-		LMC_CSR_WRITE(sc, csr_status, csr);
+		csr_write(sc, CSR_STATUS, csr);
 
 		/*
 		 * One of
@@ -1201,7 +1197,7 @@ static irqreturn_t lmc_interrupt(int irq, void *dev_instance)
 
 		/* Get current csr status to make sure we've cleared all
 		   interrupts */
-		csr = LMC_CSR_READ(sc, csr_status);
+		csr = csr_read(sc, CSR_STATUS);
 	} /* end interrupt loop */
 
 lmc_int_fail_out:
@@ -1282,7 +1278,7 @@ static netdev_tx_t lmc_start_xmit(struct sk_buff *skb,
 	sc->txring[entry].status = 0x80000000;
 
 	/* send now! */
-	LMC_CSR_WRITE(sc, csr_txpoll, 0);
+	csr_write(sc, CSR_TXPOLL, 0);
 
 	spin_unlock_irqrestore(&sc->lock, flags);
 
@@ -1486,7 +1482,7 @@ static struct net_device_stats *lmc_get_stats(struct net_device *dev)
 	spin_lock_irqsave(&sc->lock, flags);
 
 	sc->netdev->stats.rx_missed_errors +=
-		LMC_CSR_READ(sc, csr_missed_frames) & 0xffff;
+		csr_read(sc, CSR_MISSED_FRAMES) & 0xFFFF;
 
 	spin_unlock_irqrestore(&sc->lock, flags);
 
@@ -1530,10 +1526,10 @@ unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
 	for (i = 15; i >= 0; i--) {
 		int dataval = (command & (1 << i)) ? 0x20000 : 0;
 
-		LMC_CSR_WRITE(sc, csr_9, dataval);
+		csr_write(sc, CSR_SROM_MII, dataval);
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
-		LMC_CSR_WRITE(sc, csr_9, dataval | 0x10000);
+		csr_write(sc, CSR_SROM_MII, dataval | 0x10000);
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
 	}
@@ -1541,12 +1537,12 @@ unsigned lmc_mii_readreg(struct card * const sc, unsigned devaddr,
 	lmc_trace(sc->netdev, "lmc_mii_readreg: done1");
 
 	for (i = 19; i > 0; i--) {
-		LMC_CSR_WRITE(sc, csr_9, 0x40000);
+		csr_write(sc, CSR_SROM_MII, 0x40000);
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
-		retval = (retval << 1) |
-			((LMC_CSR_READ(sc, csr_9) & 0x80000) ? 1 : 0);
-		LMC_CSR_WRITE(sc, csr_9, 0x40000 | 0x10000);
+		retval <<= 1;
+		retval |= !!(csr_read(sc, CSR_SROM_MII) & 0x80000);
+		csr_write(sc, CSR_SROM_MII, 0x40000 | 0x10000);
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
 	}
@@ -1575,10 +1571,10 @@ void lmc_mii_writereg(struct card * const sc, unsigned devaddr, unsigned regno,
 		else
 			datav = 0x00000;
 
-		LMC_CSR_WRITE(sc, csr_9, datav);
+		csr_write(sc, CSR_SROM_MII, datav);
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
-		LMC_CSR_WRITE(sc, csr_9, (datav | 0x10000));
+		csr_write(sc, CSR_SROM_MII, (datav | 0x10000));
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
 		i--;
@@ -1586,10 +1582,10 @@ void lmc_mii_writereg(struct card * const sc, unsigned devaddr, unsigned regno,
 
 	i = 2;
 	while (i > 0) {
-		LMC_CSR_WRITE(sc, csr_9, 0x40000);
+		csr_write(sc, CSR_SROM_MII, 0x40000);
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
-		LMC_CSR_WRITE(sc, csr_9, 0x50000);
+		csr_write(sc, CSR_SROM_MII, 0x50000);
 		lmc_delay();
 		/* __SLOW_DOWN_IO; */
 		i--;
@@ -1658,7 +1654,7 @@ static void lmc_softreset(struct card * const sc)
 		sc->rxring[i - 1].buffer2 = virt_to_bus(&sc->rxring[0]);
 	}
 	/* write base address */
-	LMC_CSR_WRITE(sc, csr_rxlist, virt_to_bus(sc->rxring));
+	csr_write(sc, CSR_RXLIST, virt_to_bus(sc->rxring));
 
 	/* Initialize the transmit rings and buffers */
 	for (i = 0; i < LMC_TXDESCS; i++) {
@@ -1672,7 +1668,7 @@ static void lmc_softreset(struct card * const sc)
 		sc->txring[i].buffer2 = virt_to_bus(&sc->txring[i + 1]);
 	}
 	sc->txring[i - 1].buffer2 = virt_to_bus(&sc->txring[0]);
-	LMC_CSR_WRITE(sc, csr_txlist, virt_to_bus(sc->txring));
+	csr_write(sc, CSR_TXLIST, virt_to_bus(sc->txring));
 
 	lmc_trace(sc->netdev, "lmc_softreset out");
 }
@@ -1681,7 +1677,7 @@ void lmc_gpio_mkinput(struct card * const sc, u32 bits)
 {
 	lmc_trace(sc->netdev, "lmc_gpio_mkinput in");
 	sc->gpio_io &= ~bits;
-	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->gpio_io));
+	csr_write(sc, CSR_GPIO, TULIP_GP_PINSET | (sc->gpio_io));
 	lmc_trace(sc->netdev, "lmc_gpio_mkinput out");
 }
 
@@ -1689,7 +1685,7 @@ void lmc_gpio_mkoutput(struct card * const sc, u32 bits)
 {
 	lmc_trace(sc->netdev, "lmc_gpio_mkoutput in");
 	sc->gpio_io |= bits;
-	LMC_CSR_WRITE(sc, csr_gp, TULIP_GP_PINSET | (sc->gpio_io));
+	csr_write(sc, CSR_GPIO, TULIP_GP_PINSET | (sc->gpio_io));
 	lmc_trace(sc->netdev, "lmc_gpio_mkoutput out");
 }
 
@@ -1734,7 +1730,7 @@ static void lmc_reset(struct card * const sc)
 	/* RESET low to force state reset.  This also forces the transmitter
 	   clock to be internal, but we expect to reset that later anyway. */
 	sc->gpio &= ~(LMC_GEP_RESET);
-	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+	csr_write(sc, CSR_GPIO, sc->gpio);
 
 	/* hold for more than 10 microseconds */
 	udelay(50);
@@ -1756,20 +1752,20 @@ static void lmc_dec_reset(struct card * const sc)
 
 	/* disable all interrupts */
 	sc->intrmask = 0;
-	LMC_CSR_WRITE(sc, csr_intr, sc->intrmask);
+	csr_write(sc, CSR_INTR, sc->intrmask);
 
 	/* Reset the chip with a software reset command. Wait 10 microseconds
 	   (actually 50 PCI cycles but at 33MHz that comes to two microseconds
 	   but wait a bit longer anyways) */
-	LMC_CSR_WRITE(sc, csr_busmode, TULIP_BUSMODE_SWRESET);
+	csr_write(sc, CSR_BUSMODE, TULIP_BUSMODE_SWRESET);
 	udelay(25);
 #ifdef __sparc__
-	sc->busmode = LMC_CSR_READ(sc, csr_busmode);
+	sc->busmode = csr_read(sc, CSR_BUSMODE);
 	sc->busmode = 0x00100000;
 	sc->busmode &= ~TULIP_BUSMODE_SWRESET;
-	LMC_CSR_WRITE(sc, csr_busmode, sc->busmode);
+	csr_write(sc, CSR_BUSMODE, sc->busmode);
 #endif
-	sc->cmdmode = LMC_CSR_READ(sc, csr_command);
+	sc->cmdmode = csr_read(sc, CSR_COMMAND);
 
 	/*
 	 * We want:
@@ -1788,39 +1784,16 @@ static void lmc_dec_reset(struct card * const sc)
 	sc->cmdmode &= ~(TULIP_CMD_OPERMODE | TULIP_CMD_THRESHOLDCTL |
 			     TULIP_CMD_STOREFWD | TULIP_CMD_TXTHRSHLDCTL);
 
-	LMC_CSR_WRITE(sc, csr_command, sc->cmdmode);
+	csr_write(sc, CSR_COMMAND, sc->cmdmode);
 
 	/* disable receiver watchdog and transmit jabber */
-	val = LMC_CSR_READ(sc, csr_sia_general);
+	val = csr_read(sc, CSR_WATCHDOG);
 	val |= (TULIP_WATCHDOG_TXDISABLE | TULIP_WATCHDOG_RXDISABLE);
-	LMC_CSR_WRITE(sc, csr_sia_general, val);
+	csr_write(sc, CSR_WATCHDOG, val);
 
 	lmc_trace(sc->netdev, "lmc_dec_reset out");
 }
 
-static void lmc_initcsrs(struct card * const sc, lmc_csrptr_t csr_base,
-			 size_t csr_size)
-{
-	lmc_trace(sc->netdev, "lmc_initcsrs in");
-	sc->csrs.csr_busmode	= csr_base +  0 * csr_size;
-	sc->csrs.csr_txpoll		= csr_base +  1 * csr_size;
-	sc->csrs.csr_rxpoll		= csr_base +  2 * csr_size;
-	sc->csrs.csr_rxlist		= csr_base +  3 * csr_size;
-	sc->csrs.csr_txlist		= csr_base +  4 * csr_size;
-	sc->csrs.csr_status		= csr_base +  5 * csr_size;
-	sc->csrs.csr_command	= csr_base +  6 * csr_size;
-	sc->csrs.csr_intr		= csr_base +  7 * csr_size;
-	sc->csrs.csr_missed_frames	= csr_base +  8 * csr_size;
-	sc->csrs.csr_9		= csr_base +  9 * csr_size;
-	sc->csrs.csr_10		= csr_base + 10 * csr_size;
-	sc->csrs.csr_11		= csr_base + 11 * csr_size;
-	sc->csrs.csr_12		= csr_base + 12 * csr_size;
-	sc->csrs.csr_13		= csr_base + 13 * csr_size;
-	sc->csrs.csr_14		= csr_base + 14 * csr_size;
-	sc->csrs.csr_15		= csr_base + 15 * csr_size;
-	lmc_trace(sc->netdev, "lmc_initcsrs out");
-}
-
 static void lmc_driver_timeout(struct net_device *dev)
 {
 	struct card *sc = dev_to_sc(dev);
@@ -1843,12 +1816,12 @@ static void lmc_driver_timeout(struct net_device *dev)
 	lmc_running_reset(dev);
 
 	/* restart the tx processes */
-	csr6 = LMC_CSR_READ(sc, csr_command);
-	LMC_CSR_WRITE(sc, csr_command, csr6 | 0x0002);
-	LMC_CSR_WRITE(sc, csr_command, csr6 | 0x2002);
+	csr6 = csr_read(sc, CSR_COMMAND);
+	csr_write(sc, CSR_COMMAND, csr6 | 0x0002);
+	csr_write(sc, CSR_COMMAND, csr6 | 0x2002);
 
 	/* immediate transmit */
-	LMC_CSR_WRITE(sc, csr_txpoll, 0);
+	csr_write(sc, CSR_TXPOLL, 0);
 
 	sc->netdev->stats.tx_errors++;
 	sc->extra_stats.tx_ProcTimeout++;
diff --git a/drivers/net/wan/lmc/media.c b/drivers/net/wan/lmc/media.c
index b9fadb4..cad17be 100644
--- a/drivers/net/wan/lmc/media.c
+++ b/drivers/net/wan/lmc/media.c
@@ -46,15 +46,15 @@ static inline void write_av9110_bit(struct card *sc, int c)
 		sc->gpio |= LMC_GEP_DATA;
 	else
 		sc->gpio &= ~(LMC_GEP_DATA);
-	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+	csr_write(sc, CSR_GPIO, sc->gpio);
 
 	/* set the clock to high */
 	sc->gpio |= LMC_GEP_CLK;
-	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+	csr_write(sc, CSR_GPIO, sc->gpio);
 
 	/* set the clock to low again. */
 	sc->gpio &= ~(LMC_GEP_CLK);
-	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+	csr_write(sc, CSR_GPIO, sc->gpio);
 }
 
 static void write_av9110(struct card *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
@@ -68,14 +68,14 @@ static void write_av9110(struct card *sc, u32 n, u32 m, u32 v, u32 x, u32 r)
 
 	sc->gpio |= LMC_GEP_SSI_GENERATOR;
 	sc->gpio &= ~(LMC_GEP_DATA | LMC_GEP_CLK);
-	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+	csr_write(sc, CSR_GPIO, sc->gpio);
 
 	/* Set the TXCLOCK, GENERATOR, SERIAL, and SERIALCLK as outputs. */
 	lmc_gpio_mkoutput(sc, (LMC_GEP_DATA | LMC_GEP_CLK
 				| LMC_GEP_SSI_GENERATOR));
 
 	sc->gpio &= ~(LMC_GEP_SSI_GENERATOR);
-	LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+	csr_write(sc, CSR_GPIO, sc->gpio);
 
 	/* a shifting we will go... */
 	for (i = 0; i < 7; i++)
@@ -118,14 +118,14 @@ static void lmc_ssi_set_clock(struct card * const sc, int ie)
 	old = ie;
 	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
 		sc->gpio &= ~(LMC_GEP_SSI_TXCLOCK);
-		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+		csr_write(sc, CSR_GPIO, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
 		if (ie != old)
 			printk(LMC_PRINTF_FMT ": clock external\n",
 			       LMC_PRINTF_ARGS);
 	} else {
 		sc->gpio |= LMC_GEP_SSI_TXCLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+		csr_write(sc, CSR_GPIO, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 		if (ie != old)
 			printk(LMC_PRINTF_FMT ": clock internal\n",
@@ -217,7 +217,7 @@ static int lmc_ssi_get_link_status(struct card * const sc)
 	link_status = lmc_mii_readreg(sc, 0, 16);
 
 	/* Is the transmit clock still available */
-	ticks = LMC_CSR_READ(sc, csr_gp_timer);
+	ticks = csr_read(sc, CSR_GP_TIMER);
 	ticks = 0x0000ffff - (ticks & 0x0000ffff);
 
 	lmc_led_on(sc, LMC_MII16_LED0);
@@ -347,14 +347,14 @@ static void lmc_hssi_set_clock(struct card * const sc, int ie)
 	old = sc->ictl.clock_source;
 	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
 		sc->gpio |= LMC_GEP_HSSI_CLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+		csr_write(sc, CSR_GPIO, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock external\n",
 			       LMC_PRINTF_ARGS);
 	} else {
 		sc->gpio &= ~LMC_GEP_HSSI_CLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+		csr_write(sc, CSR_GPIO, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock internal\n",
@@ -864,14 +864,14 @@ static void lmc_t1_set_clock(struct card * const sc, int ie)
 	old = ie;
 	if (ie == LMC_CTL_CLOCK_SOURCE_EXT) {
 		sc->gpio &= ~(LMC_GEP_SSI_TXCLOCK);
-		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+		csr_write(sc, CSR_GPIO, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_EXT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock external\n",
 			       LMC_PRINTF_ARGS);
 	} else {
 		sc->gpio |= LMC_GEP_SSI_TXCLOCK;
-		LMC_CSR_WRITE(sc, csr_gp, sc->gpio);
+		csr_write(sc, CSR_GPIO, sc->gpio);
 		sc->ictl.clock_source = LMC_CTL_CLOCK_SOURCE_INT;
 		if (old != ie)
 			printk(LMC_PRINTF_FMT ": clock internal\n",
diff --git a/drivers/net/wan/lmc/var.h b/drivers/net/wan/lmc/var.h
index f62f9a1..582f00e 100644
--- a/drivers/net/wan/lmc/var.h
+++ b/drivers/net/wan/lmc/var.h
@@ -32,56 +32,36 @@
 #define LMC_LINK_UP		1
 #define LMC_LINK_DOWN		0
 
-/* These macros for generic read and write to and from the dec chip */
-#define LMC_CSR_READ(sc, csr)		inl((sc)->csrs.csr)
-#define LMC_CSR_WRITE(sc, reg, val)	outl((val), (sc)->csrs.reg)
-
-#define lmc_delay()		inl(sc->csrs.csr_9)
-
 /* This macro sync's up with the mii so that reads and writes can take place */
-#define LMC_MII_SYNC(sc)					\
-	do {							\
-		int n = 32;					\
-		while (n >= 0) {				\
-			LMC_CSR_WRITE((sc), csr_9, 0x20000);	\
-			lmc_delay();				\
-			LMC_CSR_WRITE((sc), csr_9, 0x30000);	\
-			lmc_delay();				\
-			n--;					\
-		}						\
+#define LMC_MII_SYNC(sc)						\
+	do {								\
+		int n = 32;						\
+		while (n >= 0) {					\
+			csr_write((sc), CSR_SROM_MII, 0x20000);		\
+			lmc_delay();					\
+			csr_write((sc), CSR_SROM_MII, 0x30000);		\
+			lmc_delay();					\
+			n--;						\
+		}							\
 	} while (0)
 
-struct lmc_regfile_t {
-	lmc_csrptr_t csr_busmode;	/* CSR0 */
-	lmc_csrptr_t csr_txpoll;	/* CSR1 */
-	lmc_csrptr_t csr_rxpoll;	/* CSR2 */
-	lmc_csrptr_t csr_rxlist;	/* CSR3 */
-	lmc_csrptr_t csr_txlist;	/* CSR4 */
-	lmc_csrptr_t csr_status;	/* CSR5 */
-	lmc_csrptr_t csr_command;	/* CSR6 */
-	lmc_csrptr_t csr_intr;		/* CSR7 */
-	lmc_csrptr_t csr_missed_frames;	/* CSR8 */
-	lmc_csrptr_t csr_9;		/* CSR9 */
-	lmc_csrptr_t csr_10;		/* CSR10 */
-	lmc_csrptr_t csr_11;		/* CSR11 */
-	lmc_csrptr_t csr_12;		/* CSR12 */
-	lmc_csrptr_t csr_13;		/* CSR13 */
-	lmc_csrptr_t csr_14;		/* CSR14 */
-	lmc_csrptr_t csr_15;		/* CSR15 */
-};
-
-#define csr_enetrom		csr_9	/* 21040 */
-#define csr_reserved		csr_10	/* 21040 */
-#define csr_full_duplex		csr_11	/* 21040 */
-#define csr_bootrom		csr_10	/* 21041/21140A/?? */
-#define csr_gp			csr_12	/* 21140* */
-#define csr_watchdog		csr_15	/* 21140* */
-#define csr_gp_timer		csr_11	/* 21041/21140* */
-#define csr_srom_mii		csr_9	/* 21041/21140* */
-#define csr_sia_status		csr_12	/* 2104x */
-#define csr_sia_connectivity	csr_13	/* 2104x */
-#define csr_sia_tx_rx		csr_14	/* 2104x */
-#define csr_sia_general		csr_15	/* 2104x */
+/* DC21140 CSRs */
+#define CSR_BUSMODE		0
+#define CSR_TXPOLL		1
+#define CSR_RXPOLL		2
+#define CSR_RXLIST		3
+#define CSR_TXLIST		4
+#define CSR_STATUS		5
+#define CSR_COMMAND		6 /* operation mode */
+#define CSR_INTR		7
+#define CSR_MISSED_FRAMES	8
+#define CSR_SROM_MII		9
+/* #define CSR_RESERVED		10 */
+#define CSR_GP_TIMER		11
+#define CSR_GPIO		12
+/* #define CSR_RESERVED		13 */
+/* #define CSR_RESERVED		14 */
+#define CSR_WATCHDOG		15
 
 /* tulip length/control transmit descriptor definitions used to define bits
    in the second tulip_desc_t field (length) for the transmit descriptor */
@@ -270,10 +250,8 @@ typedef struct lmc_xinfo {
 struct card {
 	struct lmc_extra_statistics extra_stats;
 	struct net_device *netdev;
-
-	struct lmc_regfile_t csrs;
-	u32 intrmask;		/* our copy of csr_intr */
-	u32 cmdmode;		/* our copy of csr_cmdmode */
+	u32 intrmask;		/* our copy of CSR_INTR */
+	u32 cmdmode;		/* our copy of CSR_COMMAND */
 	u32 gpio_io;		/* state of in/out settings */
 	u32 gpio;		/* state of outputs */
 	struct sk_buff *txq[LMC_TXDESCS];
@@ -421,6 +399,19 @@ static inline void lmc_trace(struct net_device *dev, char *msg)
 #endif
 }
 
+/* These macros for generic read and write to and from the dec chip */
+static inline u32 csr_read(struct card *sc, int csr)
+{
+	return inl(sc->netdev->base_addr + 8 * csr);
+}
+
+static inline void csr_write(struct card *sc, int csr, u32 val)
+{
+	outl(val, sc->netdev->base_addr + 8 * csr);
+}
+
+#define lmc_delay()		csr_read(sc, CSR_SROM_MII);
+
 
 void lmc_led_on(struct card * const, u32);
 void lmc_led_off(struct card * const, u32);
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 29/29] LMC: Report proper card type before the first dev->open().
  2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
                   ` (27 preceding siblings ...)
  2010-07-31 15:05 ` [PATCH 28/29] LMC: Simplify and fix CSR names and logic Krzysztof Halasa
@ 2010-07-31 15:05 ` Krzysztof Halasa
  28 siblings, 0 replies; 30+ messages in thread
From: Krzysztof Halasa @ 2010-07-31 15:05 UTC (permalink / raw)
  To: David Miller; +Cc: netdev

From: Krzysztof Hałasa <khc@pm.waw.pl>

 Signed-off-by: Krzysztof Hałasa <khc@pm.waw.pl>
---
 drivers/net/wan/lmc/main.c |    1 +
 1 files changed, 1 insertions(+), 0 deletions(-)

diff --git a/drivers/net/wan/lmc/main.c b/drivers/net/wan/lmc/main.c
index 6635afc..14b60ce 100644
--- a/drivers/net/wan/lmc/main.c
+++ b/drivers/net/wan/lmc/main.c
@@ -777,6 +777,7 @@ static int __devinit lmc_init_one(struct pci_dev *pdev,
 	lmc_gpio_mkinput(sc, 0xff);
 	sc->gpio = 0;		/* drive no signals yet */
 
+	sc->media->init(sc);
 	sc->media->defaults(sc);
 
 	if (sc->media->set_link_status)
-- 
1.7.1.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2010-07-31 15:06 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-31 14:36 [PULL REQ] WAN: LMC driver Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 01/29] LMC: whitespace and cosmetic fixes Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 02/29] LMC: Remove "lmc_" prefix from source file names Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 03/29] LMC: Remove 3 typedefs Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 04/29] LMC: fix initialization messages Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 05/29] LMC: Remove non-LMC_PPP modes, everything is already handled by generic HDLC Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 06/29] LMC: Remove stub files proto.[ch] Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 07/29] LMC: Convert media structs to named initializers Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 08/29] LMC: Remove "dummy" media functions Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 09/29] LMC: shuffle protocol routines to avoid a need for prototypes Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 10/29] LMC: Remove empty media functions Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 11/29] LMC: Get rid of lmcConsoleLog() Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 12/29] LMC: Get rid of the event logger Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 13/29] LMC: Get rid of debug.[ch] Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 14/29] LMC: Remove now empty header file lmc.h Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 15/29] LMC: lanmedia.com is not functional anymore Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 16/29] LMC: Remove unused macros Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 17/29] LMC: don't wait in lmc_trace() Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 18/29] LMC: strip "lmc_" prefix from field names in struct card Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 19/29] LMC: Remove sc->check. We don't do such checks in drivers Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 20/29] LMC: Remove unused sc->board_idx Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 21/29] LMC: I'm sure Linux doesn't swap PCI subsystem device and vendor IDs Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 22/29] LMC: Move model logic to media structs Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 23/29] LMC: lmc_set_protocol() is effectively a NOP, remove it Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 24/29] LMC: Remove unused variables Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 25/29] LMC: Remove unneeded prototypes Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 26/29] LMC: Remove redundant macro Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 27/29] LMC: Remove redundant card->name Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 28/29] LMC: Simplify and fix CSR names and logic Krzysztof Halasa
2010-07-31 15:05 ` [PATCH 29/29] LMC: Report proper card type before the first dev->open() Krzysztof Halasa

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).