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
Kirill Smelkov
linux
Commits
706245bb
Commit
706245bb
authored
May 15, 2003
by
Arnaldo Carvalho de Melo
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
o wan/cycx: fix module refcounting, removing MOD_{INC,DEC}_USE_COUNT
parent
652fb411
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
13 additions
and
44 deletions
+13
-44
drivers/net/wan/cycx_main.c
drivers/net/wan/cycx_main.c
+0
-24
drivers/net/wan/cycx_x25.c
drivers/net/wan/cycx_x25.c
+11
-15
include/linux/cyclomx.h
include/linux/cyclomx.h
+2
-5
No files found.
drivers/net/wan/cycx_main.c
View file @
706245bb
...
...
@@ -335,30 +335,6 @@ static irqreturn_t cycx_isr (int irq, void *dev_id, struct pt_regs *regs)
out:
return
IRQ_NONE
;
}
/*
* This routine is called by the protocol-specific modules when network
* interface is being open. The only reason we need this, is because we
* have to call MOD_INC_USE_COUNT, but cannot include 'module.h' where it's
* defined more than once into the same kernel module.
*/
void
cyclomx_mod_inc_use_count
(
struct
cycx_device
*
card
)
{
++
card
->
open_cnt
;
MOD_INC_USE_COUNT
;
}
/*
* This routine is called by the protocol-specific modules when network
* interface is being closed. The only reason we need this, is because we
* have to call MOD_DEC_USE_COUNT, but cannot include 'module.h' where it's
* defined more than once into the same kernel module.
*/
void
cyclomx_mod_dec_use_count
(
struct
cycx_device
*
card
)
{
--
card
->
open_cnt
;
MOD_DEC_USE_COUNT
;
}
/* Set WAN device state. */
void
cyclomx_set_state
(
struct
cycx_device
*
card
,
int
state
)
{
...
...
drivers/net/wan/cycx_x25.c
View file @
706245bb
...
...
@@ -79,14 +79,17 @@
#define CYCLOMX_X25_DEBUG 1
#include <linux/version.h>
#include <linux/kernel.h>
/* printk(), and other useful stuff */
#include <linux/stddef.h>
/* offsetof(), etc. */
#include <linux/errno.h>
/* return codes */
#include <linux/if_arp.h>
/* ARPHRD_HWX25 */
#include <linux/kernel.h>
/* printk(), and other useful stuff */
#include <linux/module.h>
/* SET_MODULE_OWNER */
#include <linux/string.h>
/* inline memset(), etc. */
#include <linux/slab.h>
/* kmalloc(), kfree() */
#include <linux/slab.h>
/* kmalloc(), kfree() */
#include <linux/stddef.h>
/* offsetof(), etc. */
#include <linux/wanrouter.h>
/* WAN router definitions */
#include <asm/byteorder.h>
/* htons(), etc. */
#include <linux/if_arp.h>
/* ARPHRD_HWX25 */
#include <linux/cyclomx.h>
/* Cyclom 2X common user API definitions */
#include <linux/cycx_x25.h>
/* X.25 firmware API definitions */
...
...
@@ -458,7 +461,7 @@ static int del_if(struct wan_device *wandev, struct net_device *dev)
* This routine is called only once for each interface, during Linux network
* interface registration. Returning anything but zero will fail interface
* registration. */
static
int
if_init
(
struct
net_device
*
dev
)
static
int
if_init
(
struct
net_device
*
dev
)
{
x25_channel_t
*
chan
=
dev
->
priv
;
struct
cycx_device
*
card
=
chan
->
card
;
...
...
@@ -491,6 +494,7 @@ static int if_init (struct net_device *dev)
/* Set transmit buffer queue length */
dev
->
tx_queue_len
=
10
;
SET_MODULE_OWNER
(
dev
);
/* Initialize socket buffers */
set_chan_state
(
dev
,
WAN_DISCONNECTED
);
...
...
@@ -503,35 +507,27 @@ static int if_init (struct net_device *dev)
* o if link is disconnected then initiate connection
*
* Return 0 if O.k. or errno. */
static
int
if_open
(
struct
net_device
*
dev
)
static
int
if_open
(
struct
net_device
*
dev
)
{
x25_channel_t
*
chan
=
dev
->
priv
;
struct
cycx_device
*
card
=
chan
->
card
;
if
(
netif_running
(
dev
))
return
-
EBUSY
;
/* only one open is allowed */
netif_start_queue
(
dev
);
cyclomx_mod_inc_use_count
(
card
);
return
0
;
}
/* Close network interface.
* o reset flags.
* o if there's no more open channels then disconnect physical link. */
static
int
if_close
(
struct
net_device
*
dev
)
static
int
if_close
(
struct
net_device
*
dev
)
{
x25_channel_t
*
chan
=
dev
->
priv
;
struct
cycx_device
*
card
=
chan
->
card
;
netif_stop_queue
(
dev
);
if
(
chan
->
state
==
WAN_CONNECTED
||
chan
->
state
==
WAN_CONNECTING
)
chan_disconnect
(
dev
);
cyclomx_mod_dec_use_count
(
card
);
return
0
;
}
...
...
include/linux/cyclomx.h
View file @
706245bb
#ifndef _CYCLOMX_H
#define _CYCLOMX_H
/*
* cyclomx.h Cyclom 2X WAN Link Driver.
* User-level API definitions.
...
...
@@ -21,8 +23,6 @@
* 1998/12/27 acme cleanup: PACKED not needed
* 1998/08/08 acme Version 0.0.1
*/
#ifndef _CYCLOMX_H
#define _CYCLOMX_H
#include <linux/config.h>
#include <linux/wanrouter.h>
...
...
@@ -47,7 +47,6 @@ struct cycx_device {
char
devname
[
WAN_DRVNAME_SZ
+
1
];
/* card name */
cycxhw_t
hw
;
/* hardware configuration */
struct
wan_device
wandev
;
/* WAN device data space */
u32
open_cnt
;
/* number of open interfaces */
u32
state_tick
;
/* link state timestamp */
spinlock_t
lock
;
char
in_isr
;
/* interrupt-in-service flag */
...
...
@@ -72,8 +71,6 @@ struct cycx_device {
};
/* Public Functions */
void
cyclomx_mod_inc_use_count
(
struct
cycx_device
*
card
);
void
cyclomx_mod_dec_use_count
(
struct
cycx_device
*
card
);
void
cyclomx_set_state
(
struct
cycx_device
*
card
,
int
state
);
#ifdef CONFIG_CYCLOMX_X25
...
...
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