Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openeuler
raspberrypi-kernel
提交
64bef763
R
raspberrypi-kernel
项目概览
openeuler
/
raspberrypi-kernel
通知
13
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
raspberrypi-kernel
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
64bef763
编写于
7月 02, 2008
作者:
K
Krzysztof Hałasa
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
WAN: Port LMC driver to generic HDLC
Signed-off-by:
N
Krzysztof Hałasa
<
khc@pm.waw.pl
>
上级
52e8a6a2
变更
8
展开全部
隐藏空白更改
内联
并排
Showing
8 changed file
with
365 addition
and
653 deletion
+365
-653
drivers/net/wan/Kconfig
drivers/net/wan/Kconfig
+3
-4
drivers/net/wan/Makefile
drivers/net/wan/Makefile
+0
-1
drivers/net/wan/lmc/lmc_ioctl.h
drivers/net/wan/lmc/lmc_ioctl.h
+1
-1
drivers/net/wan/lmc/lmc_main.c
drivers/net/wan/lmc/lmc_main.c
+286
-371
drivers/net/wan/lmc/lmc_media.c
drivers/net/wan/lmc/lmc_media.c
+24
-31
drivers/net/wan/lmc/lmc_proto.c
drivers/net/wan/lmc/lmc_proto.c
+25
-121
drivers/net/wan/lmc/lmc_proto.h
drivers/net/wan/lmc/lmc_proto.h
+8
-6
drivers/net/wan/lmc/lmc_var.h
drivers/net/wan/lmc/lmc_var.h
+18
-118
未找到文件。
drivers/net/wan/Kconfig
浏览文件 @
64bef763
...
...
@@ -61,7 +61,7 @@ config COSA
#
config LANMEDIA
tristate "LanMedia Corp. SSI/V.35, T1/E1, HSSI, T3 boards"
depends on PCI && VIRT_TO_BUS
depends on PCI && VIRT_TO_BUS
&& HDLC
---help---
Driver for the following Lan Media family of serial boards:
...
...
@@ -78,9 +78,8 @@ config LANMEDIA
- LMC 5245 board connects directly to a T3 circuit saving the
additional external hardware.
To change setting such as syncPPP vs Cisco HDLC or clock source you
will need lmcctl. It is available at <ftp://ftp.lanmedia.com/>
(broken link).
To change setting such as clock source you will need lmcctl.
It is available at <ftp://ftp.lanmedia.com/> (broken link).
To compile this driver as a module, choose M here: the
module will be called lmc.
...
...
drivers/net/wan/Makefile
浏览文件 @
64bef763
...
...
@@ -26,7 +26,6 @@ obj-$(CONFIG_SEALEVEL_4021) += z85230.o sealevel.o
obj-$(CONFIG_COSA)
+=
cosa.o
obj-$(CONFIG_FARSYNC)
+=
farsync.o
obj-$(CONFIG_DSCC4)
+=
dscc4.o
obj-$(CONFIG_LANMEDIA)
+=
syncppp.o
obj-$(CONFIG_X25_ASY)
+=
x25_asy.o
obj-$(CONFIG_LANMEDIA)
+=
lmc/
...
...
drivers/net/wan/lmc/lmc_ioctl.h
浏览文件 @
64bef763
...
...
@@ -61,7 +61,7 @@
/*
* IFTYPE defines
*/
#define LMC_PPP 1
/* use
sppp
interface */
#define LMC_PPP 1
/* use
generic HDLC
interface */
#define LMC_NET 2
/* use direct net interface */
#define LMC_RAW 3
/* use direct net interface */
...
...
drivers/net/wan/lmc/lmc_main.c
浏览文件 @
64bef763
此差异已折叠。
点击以展开。
drivers/net/wan/lmc/lmc_media.c
浏览文件 @
64bef763
...
...
@@ -425,7 +425,7 @@ lmc_ds3_set_scram (lmc_softc_t * const sc, int ie)
static
int
lmc_ds3_get_link_status
(
lmc_softc_t
*
const
sc
)
{
u
_int16_t
link_status
,
link_status_11
;
u
16
link_status
,
link_status_11
;
int
ret
=
1
;
lmc_mii_writereg
(
sc
,
0
,
17
,
7
);
...
...
@@ -447,7 +447,7 @@ lmc_ds3_get_link_status (lmc_softc_t * const sc)
(
link_status
&
LMC_FRAMER_REG0_OOFS
)){
ret
=
0
;
if
(
sc
->
last_led_err
[
3
]
!=
1
){
u16
r1
;
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
;
...
...
@@ -460,7 +460,7 @@ lmc_ds3_get_link_status (lmc_softc_t * const sc)
else
{
lmc_led_off
(
sc
,
LMC_DS3_LED3
);
/* turn on red LED */
if
(
sc
->
last_led_err
[
3
]
==
1
){
u16
r1
;
u16
r1
;
lmc_mii_writereg
(
sc
,
0
,
17
,
01
);
/* Turn off Xbit error */
r1
=
lmc_mii_readreg
(
sc
,
0
,
18
);
r1
|=
0x01
;
...
...
@@ -538,20 +538,19 @@ lmc_ds3_watchdog (lmc_softc_t * const sc)
* SSI methods
*/
static
void
lmc_ssi_init
(
lmc_softc_t
*
const
sc
)
static
void
lmc_ssi_init
(
lmc_softc_t
*
const
sc
)
{
u_int16_t
mii17
;
int
cable
;
u16
mii17
;
int
cable
;
sc
->
ictl
.
cardtype
=
LMC_CTL_CARDTYPE_LMC1000
;
sc
->
ictl
.
cardtype
=
LMC_CTL_CARDTYPE_LMC1000
;
mii17
=
lmc_mii_readreg
(
sc
,
0
,
17
);
mii17
=
lmc_mii_readreg
(
sc
,
0
,
17
);
cable
=
(
mii17
&
LMC_MII17_SSI_CABLE_MASK
)
>>
LMC_MII17_SSI_CABLE_SHIFT
;
sc
->
ictl
.
cable_type
=
cable
;
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
);
lmc_gpio_mkoutput
(
sc
,
LMC_GEP_SSI_TXCLOCK
);
}
static
void
...
...
@@ -679,11 +678,11 @@ lmc_ssi_set_speed (lmc_softc_t * const sc, lmc_ctl_t * ctl)
static
int
lmc_ssi_get_link_status
(
lmc_softc_t
*
const
sc
)
{
u
_int16_t
link_status
;
u
16
link_status
;
u_int32_t
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.
...
...
@@ -718,9 +717,9 @@ lmc_ssi_get_link_status (lmc_softc_t * const sc)
}
else
if
(
ticks
==
0
)
{
/* no clock found ? */
ret
=
0
;
if
(
sc
->
last_led_err
[
3
]
!=
1
)
{
sc
->
stats
.
tx_lossOfClockCnt
++
;
printk
(
KERN_WARNING
"%s: Lost Clock, Link Down
\n
"
,
sc
->
name
);
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 */
...
...
@@ -885,19 +884,13 @@ write_av9110 (lmc_softc_t * sc, u_int32_t n, u_int32_t m, u_int32_t v,
|
LMC_GEP_SSI_GENERATOR
));
}
static
void
lmc_ssi_watchdog
(
lmc_softc_t
*
const
sc
)
static
void
lmc_ssi_watchdog
(
lmc_softc_t
*
const
sc
)
{
u_int16_t
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
);
}
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
);
}
/*
...
...
@@ -927,7 +920,7 @@ lmc_t1_read (lmc_softc_t * const sc, int a)
static
void
lmc_t1_init
(
lmc_softc_t
*
const
sc
)
{
u
_int16_t
mii16
;
u
16
mii16
;
int
i
;
sc
->
ictl
.
cardtype
=
LMC_CTL_CARDTYPE_LMC1200
;
...
...
@@ -1026,7 +1019,7 @@ lmc_t1_set_status (lmc_softc_t * const sc, lmc_ctl_t * ctl)
*/
static
int
lmc_t1_get_link_status
(
lmc_softc_t
*
const
sc
)
{
u
_int16_t
link_status
;
u
16
link_status
;
int
ret
=
1
;
/* LMC5245 (DS3) & LMC1200 (DS1) LED definitions
...
...
drivers/net/wan/lmc/lmc_proto.c
浏览文件 @
64bef763
...
...
@@ -36,9 +36,6 @@
#include <linux/workqueue.h>
#include <linux/proc_fs.h>
#include <linux/bitops.h>
#include <net/syncppp.h>
#include <asm/processor.h>
/* Processor type for cache alignment. */
#include <asm/io.h>
#include <asm/dma.h>
...
...
@@ -50,48 +47,6 @@
#include "lmc_ioctl.h"
#include "lmc_proto.h"
/*
* The compile-time variable SPPPSTUP causes the module to be
* compiled without referencing any of the sync ppp routines.
*/
#ifdef SPPPSTUB
#define SPPP_detach(d) (void)0
#define SPPP_open(d) 0
#define SPPP_reopen(d) (void)0
#define SPPP_close(d) (void)0
#define SPPP_attach(d) (void)0
#define SPPP_do_ioctl(d,i,c) -EOPNOTSUPP
#else
#define SPPP_attach(x) sppp_attach((x)->pd)
#define SPPP_detach(x) sppp_detach((x)->pd->dev)
#define SPPP_open(x) sppp_open((x)->pd->dev)
#define SPPP_reopen(x) sppp_reopen((x)->pd->dev)
#define SPPP_close(x) sppp_close((x)->pd->dev)
#define SPPP_do_ioctl(x, y, z) sppp_do_ioctl((x)->pd->dev, (y), (z))
#endif
// init
void
lmc_proto_init
(
lmc_softc_t
*
sc
)
/*FOLD00*/
{
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_init in"
);
switch
(
sc
->
if_type
){
case
LMC_PPP
:
sc
->
pd
=
kmalloc
(
sizeof
(
struct
ppp_device
),
GFP_KERNEL
);
if
(
!
sc
->
pd
)
{
printk
(
"lmc_proto_init(): kmalloc failure!
\n
"
);
return
;
}
sc
->
pd
->
dev
=
sc
->
lmc_device
;
sc
->
if_ptr
=
sc
->
pd
;
break
;
case
LMC_RAW
:
break
;
default:
break
;
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_init out"
);
}
// attach
void
lmc_proto_attach
(
lmc_softc_t
*
sc
)
/*FOLD00*/
{
...
...
@@ -100,7 +55,6 @@ void lmc_proto_attach(lmc_softc_t *sc) /*FOLD00*/
case
LMC_PPP
:
{
struct
net_device
*
dev
=
sc
->
lmc_device
;
SPPP_attach
(
sc
);
dev
->
do_ioctl
=
lmc_ioctl
;
}
break
;
...
...
@@ -108,7 +62,7 @@ void lmc_proto_attach(lmc_softc_t *sc) /*FOLD00*/
{
struct
net_device
*
dev
=
sc
->
lmc_device
;
/*
* They set a few basics because they don't use sync_ppp
* They set a few basics because they don't use HDLC
*/
dev
->
flags
|=
IFF_POINTOPOINT
;
...
...
@@ -124,88 +78,39 @@ void lmc_proto_attach(lmc_softc_t *sc) /*FOLD00*/
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_attach out"
);
}
// detach
void
lmc_proto_detach
(
lmc_softc_t
*
sc
)
/*FOLD00*/
int
lmc_proto_ioctl
(
lmc_softc_t
*
sc
,
struct
ifreq
*
ifr
,
int
cmd
)
{
switch
(
sc
->
if_type
){
case
LMC_PPP
:
SPPP_detach
(
sc
);
break
;
case
LMC_RAW
:
/* Tell someone we're detaching? */
break
;
default:
break
;
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_ioctl"
);
if
(
sc
->
if_type
==
LMC_PPP
)
return
hdlc_ioctl
(
sc
->
lmc_device
,
ifr
,
cmd
);
return
-
EOPNOTSUPP
;
}
// reopen
void
lmc_proto_reopen
(
lmc_softc_t
*
sc
)
/*FOLD00*/
int
lmc_proto_open
(
lmc_softc_t
*
sc
)
{
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_reopen in"
);
switch
(
sc
->
if_type
){
case
LMC_PPP
:
SPPP_reopen
(
sc
);
break
;
case
LMC_RAW
:
/* Reset the interface after being down, prerape to receive packets again */
break
;
default:
break
;
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_reopen out"
);
}
int
ret
=
0
;
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_open in"
);
// ioctl
int
lmc_proto_ioctl
(
lmc_softc_t
*
sc
,
struct
ifreq
*
ifr
,
int
cmd
)
/*FOLD00*/
{
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_ioctl out"
);
switch
(
sc
->
if_type
){
case
LMC_PPP
:
return
SPPP_do_ioctl
(
sc
,
ifr
,
cmd
);
break
;
default:
return
-
EOPNOTSUPP
;
break
;
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_ioctl out"
);
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
);
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_open out"
);
return
ret
;
}
// open
void
lmc_proto_open
(
lmc_softc_t
*
sc
)
/*FOLD00*/
void
lmc_proto_close
(
lmc_softc_t
*
sc
)
{
int
ret
;
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_close in"
)
;
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_open in"
);
switch
(
sc
->
if_type
){
case
LMC_PPP
:
ret
=
SPPP_open
(
sc
);
if
(
ret
<
0
)
printk
(
"%s: syncPPP open failed: %d
\n
"
,
sc
->
name
,
ret
);
break
;
case
LMC_RAW
:
/* We're about to start getting packets! */
break
;
default:
break
;
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_open out"
);
}
// close
if
(
sc
->
if_type
==
LMC_PPP
)
hdlc_close
(
sc
->
lmc_device
);
void
lmc_proto_close
(
lmc_softc_t
*
sc
)
/*FOLD00*/
{
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_close in"
);
switch
(
sc
->
if_type
){
case
LMC_PPP
:
SPPP_close
(
sc
);
break
;
case
LMC_RAW
:
/* Interface going down */
break
;
default:
break
;
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_close out"
);
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_close out"
);
}
__be16
lmc_proto_type
(
lmc_softc_t
*
sc
,
struct
sk_buff
*
skb
)
/*FOLD00*/
...
...
@@ -213,8 +118,8 @@ __be16 lmc_proto_type(lmc_softc_t *sc, struct sk_buff *skb) /*FOLD00*/
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_type in"
);
switch
(
sc
->
if_type
){
case
LMC_PPP
:
return
htons
(
ETH_P_WAN_PPP
);
break
;
return
hdlc_type_trans
(
skb
,
sc
->
lmc_device
);
break
;
case
LMC_NET
:
return
htons
(
ETH_P_802_2
);
break
;
...
...
@@ -245,4 +150,3 @@ void lmc_proto_netif(lmc_softc_t *sc, struct sk_buff *skb) /*FOLD00*/
}
lmc_trace
(
sc
->
lmc_device
,
"lmc_proto_netif out"
);
}
drivers/net/wan/lmc/lmc_proto.h
浏览文件 @
64bef763
#ifndef _LMC_PROTO_H_
#define _LMC_PROTO_H_
void
lmc_proto_init
(
lmc_softc_t
*
sc
);
#include <linux/hdlc.h>
void
lmc_proto_attach
(
lmc_softc_t
*
sc
);
void
lmc_proto_detach
(
lmc_softc_t
*
sc
);
void
lmc_proto_reopen
(
lmc_softc_t
*
sc
);
int
lmc_proto_ioctl
(
lmc_softc_t
*
sc
,
struct
ifreq
*
ifr
,
int
cmd
);
void
lmc_proto_open
(
lmc_softc_t
*
sc
);
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
);
int
lmc_skb_rawpackets
(
char
*
buf
,
char
**
start
,
off_t
offset
,
int
len
,
int
unused
);
#endif
static
inline
lmc_softc_t
*
dev_to_sc
(
struct
net_device
*
dev
)
{
return
(
lmc_softc_t
*
)
dev_to_hdlc
(
dev
)
->
priv
;
}
#endif
drivers/net/wan/lmc/lmc_var.h
浏览文件 @
64bef763
#ifndef _LMC_VAR_H_
#define _LMC_VAR_H_
/* $Id: lmc_var.h,v 1.17 2000/04/06 12:16:47 asj Exp $ */
/*
* Copyright (c) 1997-2000 LAN Media Corporation (LMC)
* All rights reserved. www.lanmedia.com
...
...
@@ -19,23 +17,6 @@
#include <linux/timer.h>
#ifndef __KERNEL__
typedef
signed
char
s8
;
typedef
unsigned
char
u8
;
typedef
signed
short
s16
;
typedef
unsigned
short
u16
;
typedef
signed
int
s32
;
typedef
unsigned
int
u32
;
typedef
signed
long
long
s64
;
typedef
unsigned
long
long
u64
;
#define BITS_PER_LONG 32
#endif
/*
* basic definitions used in lmc include files
*/
...
...
@@ -45,9 +26,6 @@ typedef struct lmc___media lmc_media_t;
typedef
struct
lmc___ctl
lmc_ctl_t
;
#define lmc_csrptr_t unsigned long
#define u_int16_t u16
#define u_int8_t u8
#define tulip_uint32_t u32
#define LMC_REG_RANGE 0x80
...
...
@@ -244,46 +222,8 @@ struct lmc___media {
#define STATCHECK 0xBEEFCAFE
/* Included in this structure are first
* - standard net_device_stats
* - some other counters used for debug and driver performance
* evaluation -baz
*/
struct
lmc_statistics
struct
lmc_extra_statistics
{
unsigned
long
rx_packets
;
/* total packets received */
unsigned
long
tx_packets
;
/* total packets transmitted */
unsigned
long
rx_bytes
;
unsigned
long
tx_bytes
;
unsigned
long
rx_errors
;
/* bad packets received */
unsigned
long
tx_errors
;
/* packet transmit problems */
unsigned
long
rx_dropped
;
/* no space in linux buffers */
unsigned
long
tx_dropped
;
/* no space available in linux */
unsigned
long
multicast
;
/* multicast packets received */
unsigned
long
collisions
;
/* detailed rx_errors: */
unsigned
long
rx_length_errors
;
unsigned
long
rx_over_errors
;
/* receiver ring buff overflow */
unsigned
long
rx_crc_errors
;
/* recved pkt with crc error */
unsigned
long
rx_frame_errors
;
/* recv'd frame alignment error */
unsigned
long
rx_fifo_errors
;
/* recv'r fifo overrun */
unsigned
long
rx_missed_errors
;
/* receiver missed packet */
/* detailed tx_errors */
unsigned
long
tx_aborted_errors
;
unsigned
long
tx_carrier_errors
;
unsigned
long
tx_fifo_errors
;
unsigned
long
tx_heartbeat_errors
;
unsigned
long
tx_window_errors
;
/* for cslip etc */
unsigned
long
rx_compressed
;
unsigned
long
tx_compressed
;
/* -------------------------------------
* Custom stats & counters follow -baz */
u_int32_t
version_size
;
u_int32_t
lmc_cardtype
;
...
...
@@ -325,27 +265,26 @@ struct lmc_statistics
u_int32_t
check
;
};
typedef
struct
lmc_xinfo
{
u_int32_t
Magic0
;
/* BEEFCAFE */
u_int32_t
Magic0
;
/* BEEFCAFE */
u_int32_t
PciCardType
;
u_int32_t
PciSlotNumber
;
/* PCI slot number */
u_int32_t
PciCardType
;
u_int32_t
PciSlotNumber
;
/* PCI slot number */
u_int16_t
DriverMajorVersion
;
u_int16_t
DriverMinorVersion
;
u_int16_t
DriverSubVersion
;
u16
DriverMajorVersion
;
u16
DriverMinorVersion
;
u16
DriverSubVersion
;
u_int16_t
XilinxRevisionNumber
;
u_int16_t
MaxFrameSize
;
u16
XilinxRevisionNumber
;
u16
MaxFrameSize
;
u_int16_t
t1_alarm1_status
;
u_int16_t
t1_alarm2_status
;
u16
t1_alarm1_status
;
u16
t1_alarm2_status
;
int
link_status
;
u_int32_t
mii_reg16
;
int
link_status
;
u_int32_t
mii_reg16
;
u_int32_t
Magic1
;
/* DEADBEEF */
u_int32_t
Magic1
;
/* DEADBEEF */
}
LMC_XINFO
;
...
...
@@ -353,11 +292,10 @@ typedef struct lmc_xinfo {
* forward decl
*/
struct
lmc___softc
{
void
*
if_ptr
;
/* General purpose pointer (used by SPPP) */
char
*
name
;
u8
board_idx
;
struct
lmc_
statistics
stats
;
struct
net_device
*
lmc_device
;
struct
lmc_
extra_statistics
extra_
stats
;
struct
net_device
*
lmc_device
;
int
hang
,
rxdesc
,
bad_packet
,
some_counter
;
u_int32_t
txgo
;
...
...
@@ -381,7 +319,7 @@ struct lmc___softc {
unsigned
int
lmc_taint_tx
,
lmc_taint_rx
;
int
lmc_tx_start
,
lmc_txfull
;
int
lmc_txbusy
;
u
_int16_t
lmc_miireg16
;
u
16
lmc_miireg16
;
int
lmc_ok
;
int
last_link_status
;
int
lmc_cardtype
;
...
...
@@ -408,8 +346,7 @@ struct lmc___softc {
u32
num_int
;
spinlock_t
lmc_lock
;
u_int16_t
if_type
;
/* PPP or NET */
struct
ppp_device
*
pd
;
u16
if_type
;
/* HDLC/PPP or NET */
/* Failure cases */
u8
failed_ring
;
...
...
@@ -525,46 +462,9 @@ struct lmc___softc {
#define LMC_ADAP_SSI 4
#define LMC_ADAP_T1 5
#define HDLC_HDR_LEN 4
#define HDLC_ADDR_LEN 1
#define HDLC_SLARP 0x8035
#define LMC_MTU 1500
#define SLARP_LINECHECK 2
#define LMC_CRC_LEN_16 2
/* 16-bit CRC */
#define LMC_CRC_LEN_32 4
#ifdef LMC_HDLC
/* definition of an hdlc header. */
struct
hdlc_hdr
{
u8
address
;
u8
control
;
u16
type
;
};
/* definition of a slarp header. */
struct
slarp
{
long
code
;
union
sl
{
struct
{
ulong
address
;
ulong
mask
;
ushort
unused
;
}
add
;
struct
{
ulong
mysequence
;
ulong
yoursequence
;
ushort
reliability
;
ulong
time
;
}
chk
;
}
t
;
};
#endif
/* LMC_HDLC */
#endif
/* _LMC_VAR_H_ */
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录