Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
linux
Commits
00121eaa
Commit
00121eaa
authored
Jun 23, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/jgarzik/net-drivers-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
6bc8a393
0f416829
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
290 additions
and
310 deletions
+290
-310
drivers/net/sk98lin/skge.c
drivers/net/sk98lin/skge.c
+286
-298
drivers/net/wan/sdla_chdlc.c
drivers/net/wan/sdla_chdlc.c
+1
-3
drivers/net/wan/sdla_fr.c
drivers/net/wan/sdla_fr.c
+1
-3
drivers/net/wan/sdla_ppp.c
drivers/net/wan/sdla_ppp.c
+1
-3
drivers/net/wan/sdla_x25.c
drivers/net/wan/sdla_x25.c
+1
-3
No files found.
drivers/net/sk98lin/skge.c
View file @
00121eaa
...
...
@@ -48,6 +48,9 @@
* History:
*
* $Log: skge.c,v $
* Revision x.xx.x.x 2003/06/07 02:31:17 romieu@fr.zoreil.com
* pci api style init.
*
* Revision 1.29.2.6 2001/05/21 07:59:29 mlindner
* fix: MTU init problems
*
...
...
@@ -275,6 +278,10 @@
#include "h/skdrv2nd.h"
/* defines ******************************************************************/
#define DRV_MODULE_NAME "sk98lin"
#define PFX DRV_MODULE_NAME ": "
/* for debuging on x86 only */
/* #define BREAKPOINT() asm(" int $3"); */
...
...
@@ -361,9 +368,7 @@ static void DumpLong(char*, int);
/* global variables *********************************************************/
static
const
char
*
BootString
=
BOOT_STRING
;
struct
net_device
*
sk98lin_root_dev
=
NULL
;
static
int
probed
__initdata
=
0
;
static
int
boards_found
;
struct
inode_operations
SkInodeOps
;
//static struct file_operations SkFileOps; /* with open/relase */
...
...
@@ -371,236 +376,219 @@ struct inode_operations SkInodeOps;
static
uintptr_t
TxQueueAddr
[
SK_MAX_MACS
][
2
]
=
{{
0x680
,
0x600
},{
0x780
,
0x700
}};
static
uintptr_t
RxQueueAddr
[
SK_MAX_MACS
]
=
{
0x400
,
0x480
};
spinlock_t
sk_devs_lock
=
SPIN_LOCK_UNLOCKED
;
static
int
SkGeDevInit
(
struct
net_device
*
dev
)
{
DEV_NET
*
pNet
=
dev
->
priv
;
int
ret
=
0
;
dev
->
open
=
&
SkGeOpen
;
dev
->
stop
=
&
SkGeClose
;
dev
->
hard_start_xmit
=
&
SkGeXmit
;
dev
->
get_stats
=
&
SkGeStats
;
dev
->
set_multicast_list
=
&
SkGeSetRxMode
;
dev
->
set_mac_address
=
&
SkGeSetMacAddr
;
dev
->
do_ioctl
=
&
SkGeIoctl
;
dev
->
change_mtu
=
&
SkGeChangeMtu
;
if
(
register_netdev
(
dev
)
!=
0
)
{
printk
(
KERN_ERR
"Unable to register etherdev
\n
"
);
ret
=
-
ENOMEM
;
goto
out
;
}
pNet
->
proc
=
create_proc_entry
(
dev
->
name
,
S_IFREG
|
0444
,
pSkRootDir
);
if
(
pNet
->
proc
)
{
pNet
->
proc
->
data
=
dev
;
pNet
->
proc
->
owner
=
THIS_MODULE
;
pNet
->
proc
->
proc_fops
=
&
sk_proc_fops
;
}
out:
return
ret
;
}
static
void
SkGeDevCleanUp
(
struct
net_device
*
dev
)
{
DEV_NET
*
pNet
=
dev
->
priv
;
if
(
pNet
->
proc
)
{
spin_lock
(
&
sk_devs_lock
);
pNet
->
proc
->
data
=
NULL
;
spin_unlock
(
&
sk_devs_lock
);
remove_proc_entry
(
dev
->
name
,
pSkRootDir
);
}
unregister_netdev
(
dev
);
}
/*****************************************************************************
*
* skge_
probe - find all SK-98xx adapters
* skge_
init_one - init a single instance of a SK-98xx adapter
*
* Description:
* This function scans the PCI bus for SK-98xx adapters. Resources for
* each adapter are allocated and the adapter is brought into Init 1
* state.
* This function allocates resources for an SK-98xx adapter and brings
* it into Init 1 state.
*
* Returns:
* 0, if everything is ok
*
!=
0, on error
*
<
0, on error
*/
static
int
__init
skge_probe
(
void
)
static
int
__devinit
skge_init_one
(
struct
pci_dev
*
pdev
,
const
struct
pci_device_id
*
ent
)
{
int
proc_root_initialized
=
0
;
int
boards_found
=
0
;
int
version_disp
=
0
;
SK_AC
*
pAC
;
DEV_NET
*
pNet
=
NULL
;
struct
pci_dev
*
pdev
=
NULL
;
unsigned
long
base_address
;
struct
net_device
*
dev
=
NULL
;
if
(
probed
)
return
-
ENODEV
;
probed
++
;
/* display driver info */
if
(
!
version_disp
)
{
/* set display flag to TRUE so that */
/* we only display this string ONCE */
version_disp
=
1
;
printk
(
"%s
\n
"
,
BootString
);
}
DEV_NET
*
pNet
;
unsigned
long
base_address
;
struct
net_device
*
dev
;
int
ret
;
while
((
pdev
=
pci_find_device
(
PCI_VENDOR_ID_SYSKONNECT
,
PCI_DEVICE_ID_SYSKONNECT_GE
,
pdev
))
!=
NULL
)
{
#ifndef MODULE
static
int
version_disp
=
0
;
pNet
=
NULL
;
if
(
!
version_disp
++
)
printk
(
KERN_INFO
"%s
\n
"
,
BOOT_STRING
);
#endif
ret
=
pci_enable_device
(
pdev
);
if
(
ret
)
goto
out
;
if
(
pci_enable_device
(
pdev
))
continue
;
/* Configure DMA attributes. */
if
(
pci_set_dma_mask
(
pdev
,
(
u64
)
0xffffffffffffffff
))
{
ret
=
pci_set_dma_mask
(
pdev
,
(
u64
)
0xffffffff
);
if
(
ret
)
{
printk
(
KERN_ERR
PFX
"No usable DMA configuration
\n
"
);
goto
out_disable
;
}
}
/* Configure DMA attributes. */
if
(
pci_set_dma_mask
(
pdev
,
(
u64
)
0xffffffffffffffffULL
)
&&
pci_set_dma_mask
(
pdev
,
(
u64
)
0xffffffff
))
continue
;
ret
=
-
ENOMEM
;
dev
=
alloc_etherdev
(
sizeof
(
DEV_NET
));
if
(
!
dev
)
{
printk
(
KERN_ERR
"Unable to allocate etherdev "
"structure!
\n
"
);
break
;
}
dev
=
alloc_etherdev
(
sizeof
(
DEV_NET
));
if
(
!
dev
)
{
printk
(
KERN_ERR
"Unable to allocate etherdev structure!
\n
"
);
goto
out_disable
;
}
pNet
=
dev
->
priv
;
pNet
->
pAC
=
kmalloc
(
sizeof
(
SK_AC
),
GFP_KERNEL
);
if
(
pNet
->
pAC
==
NULL
){
kfree
(
dev
);
printk
(
KERN_ERR
"Unable to allocate adapter "
"structure!
\n
"
);
break
;
}
pNet
=
dev
->
priv
;
memset
(
pNet
->
pAC
,
0
,
sizeof
(
SK_AC
));
pAC
=
pNet
->
pAC
;
pAC
->
PciDev
=
*
pdev
;
pAC
->
PciDevId
=
pdev
->
device
;
pAC
->
dev
[
0
]
=
dev
;
pAC
->
dev
[
1
]
=
dev
;
sprintf
(
pAC
->
Name
,
"SysKonnect SK-98xx"
);
pAC
->
CheckQueue
=
SK_FALSE
;
pAC
=
kmalloc
(
sizeof
(
*
pAC
),
GFP_KERNEL
);
if
(
pAC
==
NULL
){
printk
(
KERN_ERR
"Unable to allocate adapter structure!
\n
"
);
goto
out_free_dev
;
}
memset
(
pAC
,
0
,
sizeof
(
SK_AC
));
pNet
->
pAC
=
pAC
;
pAC
->
PciDev
=
*
pdev
;
pAC
->
PciDevId
=
pdev
->
device
;
pAC
->
dev
[
0
]
=
dev
;
pAC
->
dev
[
1
]
=
dev
;
sprintf
(
pAC
->
Name
,
"SysKonnect SK-98xx"
);
pAC
->
CheckQueue
=
SK_FALSE
;
pNet
->
Mtu
=
1500
;
pNet
->
Up
=
0
;
dev
->
irq
=
pdev
->
irq
;
SET_MODULE_OWNER
(
dev
);
SET_NETDEV_DEV
(
dev
,
&
pdev
->
dev
);
dev
->
open
=
&
SkGeOpen
;
dev
->
stop
=
&
SkGeClose
;
dev
->
hard_start_xmit
=
&
SkGeXmit
;
dev
->
get_stats
=
&
SkGeStats
;
dev
->
set_multicast_list
=
&
SkGeSetRxMode
;
dev
->
set_mac_address
=
&
SkGeSetMacAddr
;
dev
->
do_ioctl
=
&
SkGeIoctl
;
dev
->
change_mtu
=
&
SkGeChangeMtu
;
if
(
!
proc_root_initialized
)
{
pSkRootDir
=
create_proc_entry
(
SK_Root_Dir_entry
,
S_IFDIR
|
S_IWUSR
|
S_IRUGO
|
S_IXUGO
,
proc_net
);
pSkRootDir
->
owner
=
THIS_MODULE
;
proc_root_initialized
=
1
;
}
pNet
->
Mtu
=
1500
;
pNet
->
Up
=
0
;
dev
->
irq
=
pdev
->
irq
;
/*
* Dummy value.
*/
dev
->
base_addr
=
42
;
pci_set_master
(
pdev
);
base_address
=
pci_resource_start
(
pdev
,
0
);
SET_MODULE_OWNER
(
dev
);
SET_NETDEV_DEV
(
dev
,
&
pdev
->
dev
);
ret
=
SkGeDevInit
(
dev
);
if
(
ret
<
0
)
goto
out_free_priv
;
/*
* Dummy value.
*/
dev
->
base_addr
=
42
;
pci_set_master
(
pdev
);
base_address
=
pci_resource_start
(
pdev
,
0
);
#ifdef SK_BIG_ENDIAN
/*
* On big endian machines, we use the adapter's ai
bility of
* reading the descriptors as big endian.
*/
{
/*
* On big endian machines, we use the adapter's a
bility of
* reading the descriptors as big endian.
*/
{
SK_U32
our2
;
SkPciReadCfgDWord
(
pAC
,
PCI_OUR_REG_2
,
&
our2
);
our2
|=
PCI_REV_DESC
;
SkPciWriteCfgDWord
(
pAC
,
PCI_OUR_REG_2
,
our2
);
}
SkPciReadCfgDWord
(
pAC
,
PCI_OUR_REG_2
,
&
our2
);
our2
|=
PCI_REV_DESC
;
SkPciWriteCfgDWord
(
pAC
,
PCI_OUR_REG_2
,
our2
);
}
#endif
/* BIG ENDIAN */
/*
* Remap the regs into kernel space.
*/
/*
* Remap the regs into kernel space.
*/
pAC
->
IoBase
=
(
char
*
)
ioremap
(
base_address
,
0x4000
);
if
(
!
pAC
->
IoBase
){
printk
(
KERN_ERR
"%s: Unable to map I/O register, "
"SK 98xx No. %i will be disabled.
\n
"
,
dev
->
name
,
boards_found
);
kfree
(
dev
);
break
;
}
pAC
->
Index
=
boards_found
;
pAC
->
IoBase
=
(
char
*
)
ioremap
(
base_address
,
0x4000
);
if
(
!
pAC
->
IoBase
)
{
printk
(
KERN_ERR
PFX
"unable to map I/O register. "
"SK 98xx device disabled.
\n
"
);
ret
=
-
EIO
;
goto
out_dev_uninit
;
}
pAC
->
Index
=
boards_found
++
;
if
(
SkGeBoardInit
(
dev
,
pAC
))
{
FreeResources
(
dev
);
kfree
(
dev
);
continue
;
}
ret
=
SkGeBoardInit
(
dev
,
pAC
);
if
(
ret
<
0
)
goto
out_free_resources
;
memcpy
((
caddr_t
)
&
dev
->
dev_addr
,
(
caddr_t
)
&
pAC
->
Addr
.
Net
[
0
].
CurrentMacAddress
,
6
);
memcpy
((
caddr_t
)
&
dev
->
dev_addr
,
(
caddr_t
)
&
pAC
->
Addr
.
Net
[
0
].
CurrentMacAddress
,
6
);
pNet
->
PortNr
=
0
;
pNet
->
NetNr
=
0
;
pNet
->
PortNr
=
0
;
pNet
->
NetNr
=
0
;
if
(
register_netdev
(
dev
)
!=
0
)
{
printk
(
KERN_ERR
"Unable to register etherdev
\n
"
);
sk98lin_root_dev
=
pAC
->
Next
;
remove_proc_entry
(
dev
->
name
,
pSkRootDir
);
FreeResources
(
dev
);
kfree
(
dev
);
continue
;
}
/* More then one port found */
if
((
pAC
->
GIni
.
GIMacsFound
==
2
)
&&
(
pAC
->
RlmtNets
==
2
))
{
struct
net_device
*
sec_dev
;
pNet
->
proc
=
create_proc_entry
(
dev
->
name
,
S_IFREG
|
0444
,
pSkRootDir
);
if
(
pNet
->
proc
)
{
pNet
->
proc
->
data
=
dev
;
pNet
->
proc
->
owner
=
THIS_MODULE
;
pNet
->
proc
->
proc_fops
=
&
sk_proc_fop
s
;
sec_dev
=
alloc_etherdev
(
sizeof
(
DEV_NET
));
if
(
!
sec_dev
)
{
printk
(
KERN_ERR
PFX
"Unable to allocate etherdev structure!
\n
"
)
;
ret
=
-
ENOMEM
;
goto
out_free_resource
s
;
}
boards_found
++
;
/* More then one port found */
if
((
pAC
->
GIni
.
GIMacsFound
==
2
)
&&
(
pAC
->
RlmtNets
==
2
))
{
dev
=
alloc_etherdev
(
sizeof
(
DEV_NET
));
if
(
!
dev
)
{
printk
(
KERN_ERR
"Unable to allocate etherdev "
"structure!
\n
"
);
break
;
}
pAC
->
dev
[
1
]
=
dev
;
pNet
=
dev
->
priv
;
pNet
->
PortNr
=
1
;
pNet
->
NetNr
=
1
;
pNet
->
pAC
=
pAC
;
pNet
->
Mtu
=
1500
;
pNet
->
Up
=
0
;
dev
->
open
=
&
SkGeOpen
;
dev
->
stop
=
&
SkGeClose
;
dev
->
hard_start_xmit
=
&
SkGeXmit
;
dev
->
get_stats
=
&
SkGeStats
;
dev
->
set_multicast_list
=
&
SkGeSetRxMode
;
dev
->
set_mac_address
=
&
SkGeSetMacAddr
;
dev
->
do_ioctl
=
&
SkGeIoctl
;
dev
->
change_mtu
=
&
SkGeChangeMtu
;
memcpy
((
caddr_t
)
&
dev
->
dev_addr
,
(
caddr_t
)
&
pAC
->
Addr
.
Net
[
1
].
CurrentMacAddress
,
6
);
printk
(
"%s: %s
\n
"
,
dev
->
name
,
pAC
->
DeviceStr
);
printk
(
" PrefPort:B RlmtMode:Dual Check Link State
\n
"
);
if
(
register_netdev
(
dev
)
!=
0
)
{
printk
(
KERN_ERR
"Unable to register etherdev
\n
"
);
kfree
(
dev
);
break
;
}
pAC
->
dev
[
1
]
=
sec_dev
;
pNet
=
sec_dev
->
priv
;
pNet
->
PortNr
=
1
;
pNet
->
NetNr
=
1
;
pNet
->
pAC
=
pAC
;
pNet
->
Mtu
=
1500
;
pNet
->
Up
=
0
;
pNet
->
proc
=
create_proc_entry
(
dev
->
name
,
S_IFREG
|
0444
,
pSkRootDir
);
if
(
pNet
->
proc
)
{
pNet
->
proc
->
data
=
dev
;
pNet
->
proc
->
owner
=
THIS_MODULE
;
pNet
->
proc
->
proc_fops
=
&
sk_proc_fops
;
}
}
ret
=
SkGeDevInit
(
sec_dev
);
if
(
ret
<
0
)
goto
out_free_secondary_dev
;
memcpy
((
caddr_t
)
&
sec_dev
->
dev_addr
,
(
caddr_t
)
&
pAC
->
Addr
.
Net
[
0
].
CurrentMacAddress
,
6
);
/*
* This is bollocks, but we need to tell the net-init
* code that it shall go for the next device.
*/
#ifndef MODULE
dev
->
base_addr
=
0
;
#endif
printk
(
"%s: %s
\n
"
,
sec_dev
->
name
,
pAC
->
DeviceStr
);
printk
(
" PrefPort:B RlmtMode:Dual Check Link State
\n
"
);
}
pci_set_drvdata
(
pdev
,
dev
);
/*
* If we're at this point we're going through skge_probe() for
* the first time. Return success (0) if we've initialized 1
* or more boards. Otherwise, return failure (-ENODEV).
*/
ret
=
0
;
out:
return
ret
;
return
boards_found
;
}
/* skge_probe */
out_free_secondary_dev:
kfree
(
pAC
->
dev
[
1
]);
out_free_resources:
FreeResources
(
dev
);
out_dev_uninit:
SkGeDevCleanUp
(
dev
);
out_free_priv:
kfree
(
pAC
);
out_free_dev:
kfree
(
dev
);
out_disable:
pci_disable_device
(
pdev
);
goto
out
;
}
/* skge_init_one */
/*****************************************************************************
*
...
...
@@ -718,39 +706,9 @@ static char *RlmtMode[SK_MAX_CARD_PARAM] = {"", };
static
int
debug
=
0
;
/* not used */
static
int
options
[
SK_MAX_CARD_PARAM
]
=
{
0
,
};
/* not used */
/*****************************************************************************
*
* skge_init_module - module initialization function
*
* Description:
* Very simple, only call skge_probe and return approriate result.
*
* Returns:
* 0, if everything is ok
* !=0, on error
*/
static
int
__init
skge_init_module
(
void
)
{
int
cards
;
sk98lin_root_dev
=
NULL
;
/* just to avoid warnings ... */
debug
=
0
;
options
[
0
]
=
0
;
cards
=
skge_probe
();
if
(
cards
==
0
)
{
printk
(
"No adapter found
\n
"
);
}
return
cards
?
0
:
-
ENODEV
;
}
/* skge_init_module */
spinlock_t
sk_devs_lock
=
SPIN_LOCK_UNLOCKED
;
/*****************************************************************************
*
* skge_cleanup_module - module unload function
* skge_remove_one - remove a single instance of a SK-98xx adapter
*
* Description:
* Disable adapter if it is still running, free resources,
...
...
@@ -758,82 +716,65 @@ spinlock_t sk_devs_lock = SPIN_LOCK_UNLOCKED;
*
* Returns: N/A
*/
static
void
__
exit
skge_cleanup_module
(
void
)
static
void
__
devexit
skge_remove_one
(
struct
pci_dev
*
pdev
)
{
DEV_NET
*
pNet
;
SK_AC
*
pAC
;
struct
net_device
*
next
;
unsigned
long
Flags
;
SK_EVPARA
EvPara
;
while
(
sk98lin_root_dev
)
{
pNet
=
(
DEV_NET
*
)
sk98lin_root_dev
->
priv
;
pAC
=
pNet
->
pAC
;
next
=
pAC
->
Next
;
netif_stop_queue
(
sk98lin_root_dev
);
SkGeYellowLED
(
pAC
,
pAC
->
IoBase
,
0
);
if
(
pNet
->
proc
)
{
spin_lock
(
&
sk_devs_lock
);
pNet
->
proc
->
data
=
NULL
;
spin_unlock
(
&
sk_devs_lock
);
}
if
(
pAC
->
BoardLevel
==
2
)
{
/* board is still alive */
spin_lock_irqsave
(
&
pAC
->
SlowPathLock
,
Flags
);
EvPara
.
Para32
[
0
]
=
0
;
EvPara
.
Para32
[
1
]
=
-
1
;
SkEventQueue
(
pAC
,
SKGE_RLMT
,
SK_RLMT_STOP
,
EvPara
);
EvPara
.
Para32
[
0
]
=
1
;
EvPara
.
Para32
[
1
]
=
-
1
;
SkEventQueue
(
pAC
,
SKGE_RLMT
,
SK_RLMT_STOP
,
EvPara
);
SkEventDispatcher
(
pAC
,
pAC
->
IoBase
);
/* disable interrupts */
SK_OUT32
(
pAC
->
IoBase
,
B0_IMSK
,
0
);
SkGeDeInit
(
pAC
,
pAC
->
IoBase
);
spin_unlock_irqrestore
(
&
pAC
->
SlowPathLock
,
Flags
);
pAC
->
BoardLevel
=
0
;
/* We do NOT check here, if IRQ was pending, of course*/
}
struct
net_device
*
dev
=
pci_get_drvdata
(
pdev
);
DEV_NET
*
pNet
=
dev
->
priv
;
SK_AC
*
pAC
=
pNet
->
pAC
;
unsigned
long
Flags
;
SK_EVPARA
EvPara
;
if
(
pAC
->
BoardLevel
==
1
)
{
/* board is still alive */
SkGeDeInit
(
pAC
,
pAC
->
IoBase
);
pAC
->
BoardLevel
=
0
;
}
if
((
pAC
->
GIni
.
GIMacsFound
==
2
)
&&
pAC
->
RlmtNets
==
2
){
pNet
=
(
DEV_NET
*
)
pAC
->
dev
[
1
]
->
priv
;
if
(
pNet
->
proc
)
{
spin_lock
(
&
sk_devs_lock
);
pNet
->
proc
->
data
=
NULL
;
spin_unlock
(
&
sk_devs_lock
);
}
unregister_netdev
(
pAC
->
dev
[
1
]);
kfree
(
pAC
->
dev
[
1
]);
}
netif_stop_queue
(
dev
);
SkGeYellowLED
(
pAC
,
pAC
->
IoBase
,
0
);
if
(
pNet
->
proc
)
{
spin_lock
(
&
sk_devs_lock
);
pNet
->
proc
->
data
=
NULL
;
spin_unlock
(
&
sk_devs_lock
);
remove_proc_entry
(
dev
->
name
,
pSkRootDir
);
}
FreeResources
(
sk98lin_root_dev
);
if
(
pAC
->
BoardLevel
==
2
)
{
/* board is still alive */
spin_lock_irqsave
(
&
pAC
->
SlowPathLock
,
Flags
);
EvPara
.
Para32
[
0
]
=
0
;
EvPara
.
Para32
[
1
]
=
-
1
;
SkEventQueue
(
pAC
,
SKGE_RLMT
,
SK_RLMT_STOP
,
EvPara
);
EvPara
.
Para32
[
0
]
=
1
;
EvPara
.
Para32
[
1
]
=
-
1
;
SkEventQueue
(
pAC
,
SKGE_RLMT
,
SK_RLMT_STOP
,
EvPara
);
SkEventDispatcher
(
pAC
,
pAC
->
IoBase
);
/* disable interrupts */
SK_OUT32
(
pAC
->
IoBase
,
B0_IMSK
,
0
);
SkGeDeInit
(
pAC
,
pAC
->
IoBase
);
spin_unlock_irqrestore
(
&
pAC
->
SlowPathLock
,
Flags
);
pAC
->
BoardLevel
=
0
;
/* We do NOT check here, if IRQ was pending, of course*/
}
sk98lin_root_dev
->
get_stats
=
NULL
;
/*
* otherwise unregister_netdev calls get_stats with
* invalid IO ... :-(
*/
unregister_netdev
(
sk98lin_root_dev
);
kfree
(
sk98lin_root_dev
);
kfree
(
pAC
);
sk98lin_root_dev
=
next
;
if
(
pAC
->
BoardLevel
==
1
)
{
/* board is still alive */
SkGeDeInit
(
pAC
,
pAC
->
IoBase
);
pAC
->
BoardLevel
=
0
;
}
/* clear proc-dir */
remove_proc_entry
(
pSkRootDir
->
name
,
proc_net
);
if
((
pAC
->
GIni
.
GIMacsFound
==
2
)
&&
pAC
->
RlmtNets
==
2
)
{
SkGeDevCleanUp
(
pAC
->
dev
[
1
]);
kfree
(
pAC
->
dev
[
1
]);
}
}
/* skge_cleanup_module */
FreeResources
(
dev
);
module_init
(
skge_init_module
);
module_exit
(
skge_cleanup_module
);
dev
->
get_stats
=
NULL
;
/*
* otherwise unregister_netdev calls get_stats with
* invalid IO ... :-(
*/
unregister_netdev
(
dev
);
kfree
(
dev
);
kfree
(
pAC
);
boards_found
--
;
}
/* skge_remove_one */
/*****************************************************************************
*
...
...
@@ -968,12 +909,6 @@ int Ret; /* return code of request_irq */
SkGeYellowLED
(
pAC
,
pAC
->
IoBase
,
1
);
/*
* Register the device here
*/
pAC
->
Next
=
sk98lin_root_dev
;
sk98lin_root_dev
=
dev
;
return
(
0
);
}
/* SkGeBoardInit */
...
...
@@ -4097,9 +4032,62 @@ int l;
#endif
/* DEBUG */
static
struct
pci_device_id
skge_pci_tbl
[]
__devinitdata
=
{
{
PCI_VENDOR_ID_SYSKONNECT
,
PCI_DEVICE_ID_SYSKONNECT_GE
,
PCI_ANY_ID
,
PCI_ANY_ID
,
},
{
0
,}
};
MODULE_DEVICE_TABLE
(
pci
,
skge_pci_tbl
);
static
struct
pci_driver
skge_driver
=
{
.
name
=
DRV_MODULE_NAME
,
.
id_table
=
skge_pci_tbl
,
.
probe
=
skge_init_one
,
.
remove
=
__devexit_p
(
skge_remove_one
),
};
/*****************************************************************************
*
* skge_init - module initialization function
*
* Description:
* root /proc directory allocation and pci driver invocation.
*
* Returns:
* 0, if everything is ok
* !=0, on error
*/
static
int
__init
skge_init
(
void
)
{
int
ret
=
-
ENOMEM
;
/* just to avoid warnings ... */
debug
=
0
;
options
[
0
]
=
0
;
pSkRootDir
=
create_proc_entry
(
DRV_MODULE_NAME
,
S_IFDIR
|
S_IWUSR
|
S_IRUGO
|
S_IXUGO
,
proc_net
);
if
(
pSkRootDir
)
{
pSkRootDir
->
owner
=
THIS_MODULE
;
ret
=
pci_module_init
(
&
skge_driver
);
if
(
ret
)
remove_proc_entry
(
pSkRootDir
->
name
,
proc_net
);
}
return
ret
;
}
/* skge_init */
static
void
__exit
skge_cleanup
(
void
)
{
remove_proc_entry
(
pSkRootDir
->
name
,
proc_net
);
pci_unregister_driver
(
&
skge_driver
);
}
module_init
(
skge_init
);
module_exit
(
skge_cleanup
);
/*
* Local variables:
* compile-command: "make"
* End:
*/
drivers/net/wan/sdla_chdlc.c
View file @
00121eaa
...
...
@@ -996,13 +996,11 @@ static int if_open(struct net_device* dev)
set_bit
(
0
,
&
chdlc_priv_area
->
config_chdlc
);
chdlc_priv_area
->
config_chdlc_timeout
=
jiffies
;
del_timer
(
&
chdlc_priv_area
->
poll_delay_timer
);
/* Start the CHDLC configuration after 1sec delay.
* This will give the interface initilization time
* to finish its configuration */
chdlc_priv_area
->
poll_delay_timer
.
expires
=
jiffies
+
HZ
;
add_timer
(
&
chdlc_priv_area
->
poll_delay_timer
);
mod_timer
(
&
chdlc_priv_area
->
poll_delay_timer
,
jiffies
+
HZ
);
return
err
;
}
...
...
drivers/net/wan/sdla_fr.c
View file @
00121eaa
...
...
@@ -4163,9 +4163,7 @@ static void trigger_fr_arp(struct net_device *dev)
{
fr_channel_t
*
chan
=
dev
->
priv
;
del_timer
(
&
chan
->
fr_arp_timer
);
chan
->
fr_arp_timer
.
expires
=
jiffies
+
(
chan
->
inarp_interval
*
HZ
);
add_timer
(
&
chan
->
fr_arp_timer
);
mod_timer
(
&
chan
->
fr_arp_timer
,
jiffies
+
chan
->
inarp_interval
*
HZ
);
return
;
}
...
...
drivers/net/wan/sdla_ppp.c
View file @
00121eaa
...
...
@@ -762,9 +762,7 @@ static int if_open(struct net_device *dev)
/* Start the PPP configuration after 1sec delay.
* This will give the interface initilization time
* to finish its configuration */
del_timer
(
&
ppp_priv_area
->
poll_delay_timer
);
ppp_priv_area
->
poll_delay_timer
.
expires
=
jiffies
+
HZ
;
add_timer
(
&
ppp_priv_area
->
poll_delay_timer
);
mod_timer
(
&
ppp_priv_area
->
poll_delay_timer
,
jiffies
+
HZ
);
return
0
;
}
...
...
drivers/net/wan/sdla_x25.c
View file @
00121eaa
...
...
@@ -1235,9 +1235,7 @@ static int if_open(struct net_device* dev)
connect
(
card
);
S508_S514_unlock
(
card
,
&
smp_flags
);
del_timer
(
&
card
->
u
.
x
.
x25_timer
);
card
->
u
.
x
.
x25_timer
.
expires
=
jiffies
+
HZ
;
add_timer
(
&
card
->
u
.
x
.
x25_timer
);
mod_timer
(
&
card
->
u
.
x
.
x25_timer
,
jiffies
+
HZ
);
}
}
/* Device is not up until the we are in connected state */
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment