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
c5838f46
Commit
c5838f46
authored
Jul 01, 2003
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
bk://kernel.bkbits.net/jgarzik/net-drivers-2.5
into home.osdl.org:/home/torvalds/v2.5/linux
parents
74541720
f258f44a
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
121 additions
and
118 deletions
+121
-118
drivers/net/e100/e100_main.c
drivers/net/e100/e100_main.c
+2
-1
drivers/net/tulip/de2104x.c
drivers/net/tulip/de2104x.c
+0
-1
drivers/net/typhoon.c
drivers/net/typhoon.c
+5
-5
drivers/net/wireless/airo.c
drivers/net/wireless/airo.c
+9
-15
drivers/net/wireless/netwave_cs.c
drivers/net/wireless/netwave_cs.c
+16
-16
drivers/net/wireless/strip.c
drivers/net/wireless/strip.c
+89
-80
No files found.
drivers/net/e100/e100_main.c
View file @
c5838f46
...
...
@@ -2068,13 +2068,14 @@ e100_rx_srv(struct e100_private *bdp)
skb
->
ip_summed
=
CHECKSUM_NONE
;
}
bdp
->
drv_stats
.
net_stats
.
rx_bytes
+=
skb
->
len
;
if
(
bdp
->
vlgrp
&&
(
rfd_status
&
CB_STATUS_VLAN
))
{
vlan_hwaccel_rx
(
skb
,
bdp
->
vlgrp
,
be16_to_cpu
(
rfd
->
vlanid
));
}
else
{
netif_rx
(
skb
);
}
dev
->
last_rx
=
jiffies
;
bdp
->
drv_stats
.
net_stats
.
rx_bytes
+=
skb
->
len
;
rfd_cnt
++
;
}
/* end of rfd loop */
...
...
drivers/net/tulip/de2104x.c
View file @
c5838f46
...
...
@@ -77,7 +77,6 @@ MODULE_PARM_DESC (rx_copybreak, "de2104x Breakpoint at which Rx packets are copi
#define DE_DEF_MSG_ENABLE (NETIF_MSG_DRV | \
NETIF_MSG_PROBE | \
NETIF_MSG_LINK | \
NETIF_MSG_TIMER | \
NETIF_MSG_IFDOWN | \
NETIF_MSG_IFUP | \
NETIF_MSG_RX_ERR | \
...
...
drivers/net/typhoon.c
View file @
c5838f46
...
...
@@ -40,7 +40,7 @@
/* Set the copy breakpoint for the copy-only-tiny-frames scheme.
* Setting to > 1518 effectively disables this feature.
*/
static
int
rx_copybreak
=
0
;
static
int
rx_copybreak
=
20
0
;
/* end user-configurable values */
...
...
@@ -85,8 +85,8 @@ static const int multicast_filter_limit = 32;
#define PKT_BUF_SZ 1536
#define DRV_MODULE_NAME "typhoon"
#define DRV_MODULE_VERSION "1.
0
"
#define DRV_MODULE_RELDATE "03/0
2/14
"
#define DRV_MODULE_VERSION "1.
5.1
"
#define DRV_MODULE_RELDATE "03/0
6/26
"
#define PFX DRV_MODULE_NAME ": "
#define ERR_PFX KERN_ERR PFX
...
...
@@ -150,7 +150,7 @@ struct typhoon_card_info {
#define TYPHOON_CRYPTO_DES 1
#define TYPHOON_CRYPTO_3DES 2
#define TYPHOON_CRYPTO_VARIABLE 4
#define TYPHOON_FIBER
5
#define TYPHOON_FIBER
8
enum
typhoon_cards
{
TYPHOON_TX
=
0
,
TYPHOON_TX95
,
TYPHOON_TX97
,
TYPHOON_SVR
,
...
...
@@ -1798,7 +1798,7 @@ typhoon_interrupt(int irq, void *dev_instance, struct pt_regs *rgs)
u32
intr_status
;
intr_status
=
readl
(
ioaddr
+
TYPHOON_REG_INTR_STATUS
);
if
(
!
intr_status
)
if
(
!
(
intr_status
&
TYPHOON_INTR_HOST_INT
)
)
return
IRQ_NONE
;
writel
(
intr_status
,
ioaddr
+
TYPHOON_REG_INTR_STATUS
);
...
...
drivers/net/wireless/airo.c
View file @
c5838f46
...
...
@@ -2901,6 +2901,7 @@ static int setup_proc_entry( struct net_device *dev,
airo_entry
);
apriv
->
proc_entry
->
uid
=
proc_uid
;
apriv
->
proc_entry
->
gid
=
proc_gid
;
apriv
->
proc_entry
->
owner
=
THIS_MODULE
;
/* Setup the StatsDelta */
entry
=
create_proc_entry
(
"StatsDelta"
,
...
...
@@ -2909,6 +2910,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_statsdelta_ops
);
/* Setup the Stats */
...
...
@@ -2918,6 +2920,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_stats_ops
);
/* Setup the Status */
...
...
@@ -2927,6 +2930,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_status_ops
);
/* Setup the Config */
...
...
@@ -2936,6 +2940,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_config_ops
);
/* Setup the SSID */
...
...
@@ -2945,6 +2950,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_SSID_ops
);
/* Setup the APList */
...
...
@@ -2954,6 +2960,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_APList_ops
);
/* Setup the BSSList */
...
...
@@ -2963,6 +2970,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_BSSList_ops
);
/* Setup the WepKey */
...
...
@@ -2972,6 +2980,7 @@ static int setup_proc_entry( struct net_device *dev,
entry
->
uid
=
proc_uid
;
entry
->
gid
=
proc_gid
;
entry
->
data
=
dev
;
entry
->
owner
=
THIS_MODULE
;
SETPROC_OPS
(
entry
,
proc_wepkey_ops
);
return
0
;
...
...
@@ -3062,8 +3071,6 @@ static int proc_status_open( struct inode *inode, struct file *file ) {
StatusRid
status_rid
;
int
i
;
MOD_INC_USE_COUNT
;
if
((
file
->
private_data
=
kmalloc
(
sizeof
(
struct
proc_data
),
GFP_KERNEL
))
==
NULL
)
return
-
ENOMEM
;
memset
(
file
->
private_data
,
0
,
sizeof
(
struct
proc_data
));
...
...
@@ -3143,8 +3150,6 @@ static int proc_stats_rid_open( struct inode *inode,
StatsRid
stats
;
int
i
,
j
;
int
*
vals
=
stats
.
vals
;
MOD_INC_USE_COUNT
;
if
((
file
->
private_data
=
kmalloc
(
sizeof
(
struct
proc_data
),
GFP_KERNEL
))
==
NULL
)
return
-
ENOMEM
;
...
...
@@ -3421,8 +3426,6 @@ static int proc_config_open( struct inode *inode, struct file *file ) {
struct
airo_info
*
ai
=
dev
->
priv
;
int
i
;
MOD_INC_USE_COUNT
;
if
((
file
->
private_data
=
kmalloc
(
sizeof
(
struct
proc_data
),
GFP_KERNEL
))
==
NULL
)
return
-
ENOMEM
;
memset
(
file
->
private_data
,
0
,
sizeof
(
struct
proc_data
));
...
...
@@ -3692,8 +3695,6 @@ static int proc_wepkey_open( struct inode *inode, struct file *file ) {
int
j
=
0
;
int
rc
;
MOD_INC_USE_COUNT
;
if
((
file
->
private_data
=
kmalloc
(
sizeof
(
struct
proc_data
),
GFP_KERNEL
))
==
NULL
)
return
-
ENOMEM
;
memset
(
file
->
private_data
,
0
,
sizeof
(
struct
proc_data
));
...
...
@@ -3742,8 +3743,6 @@ static int proc_SSID_open( struct inode *inode, struct file *file ) {
char
*
ptr
;
SsidRid
SSID_rid
;
MOD_INC_USE_COUNT
;
if
((
file
->
private_data
=
kmalloc
(
sizeof
(
struct
proc_data
),
GFP_KERNEL
))
==
NULL
)
return
-
ENOMEM
;
memset
(
file
->
private_data
,
0
,
sizeof
(
struct
proc_data
));
...
...
@@ -3788,8 +3787,6 @@ static int proc_APList_open( struct inode *inode, struct file *file ) {
char
*
ptr
;
APListRid
APList_rid
;
MOD_INC_USE_COUNT
;
if
((
file
->
private_data
=
kmalloc
(
sizeof
(
struct
proc_data
),
GFP_KERNEL
))
==
NULL
)
return
-
ENOMEM
;
memset
(
file
->
private_data
,
0
,
sizeof
(
struct
proc_data
));
...
...
@@ -3840,8 +3837,6 @@ static int proc_BSSList_open( struct inode *inode, struct file *file ) {
/* If doLoseSync is not 1, we won't do a Lose Sync */
int
doLoseSync
=
-
1
;
MOD_INC_USE_COUNT
;
if
((
file
->
private_data
=
kmalloc
(
sizeof
(
struct
proc_data
),
GFP_KERNEL
))
==
NULL
)
return
-
ENOMEM
;
memset
(
file
->
private_data
,
0
,
sizeof
(
struct
proc_data
));
...
...
@@ -3904,7 +3899,6 @@ static int proc_close( struct inode *inode, struct file *file )
{
struct
proc_data
*
data
=
(
struct
proc_data
*
)
file
->
private_data
;
if
(
data
->
on_close
!=
NULL
)
data
->
on_close
(
inode
,
file
);
MOD_DEC_USE_COUNT
;
if
(
data
->
rbuffer
)
kfree
(
data
->
rbuffer
);
if
(
data
->
wbuffer
)
kfree
(
data
->
wbuffer
);
kfree
(
data
);
...
...
drivers/net/wireless/netwave_cs.c
View file @
c5838f46
...
...
@@ -321,7 +321,6 @@ struct site_survey {
typedef
struct
netwave_private
{
dev_link_t
link
;
struct
net_device
dev
;
spinlock_t
spinlock
;
/* Serialize access to the hardware (SMP) */
dev_node_t
node
;
u_char
*
ramBase
;
...
...
@@ -449,11 +448,13 @@ static dev_link_t *netwave_attach(void)
netwave_flush_stale_links
();
/* Initialize the dev_link_t structure */
priv
=
kmalloc
(
sizeof
(
*
priv
),
GFP_KERNEL
);
if
(
!
priv
)
return
NULL
;
memset
(
priv
,
0
,
sizeof
(
*
priv
));
link
=
&
priv
->
link
;
dev
=
&
priv
->
dev
;
link
->
priv
=
dev
->
priv
=
priv
;
dev
=
alloc_etherdev
(
sizeof
(
netwave_private
));
if
(
!
dev
)
return
NULL
;
priv
=
dev
->
priv
;
link
=
&
priv
->
link
;
link
->
priv
=
dev
;
init_timer
(
&
link
->
release
);
link
->
release
.
function
=
&
netwave_release
;
link
->
release
.
data
=
(
u_long
)
link
;
...
...
@@ -504,7 +505,6 @@ static dev_link_t *netwave_attach(void)
dev
->
tx_timeout
=
&
netwave_watchdog
;
dev
->
watchdog_timeo
=
TX_TIMEOUT
;
ether_setup
(
dev
);
dev
->
open
=
&
netwave_open
;
dev
->
stop
=
&
netwave_close
;
link
->
irq
.
Instance
=
dev
;
...
...
@@ -541,7 +541,7 @@ static dev_link_t *netwave_attach(void)
*/
static
void
netwave_detach
(
dev_link_t
*
link
)
{
netwave_private
*
pri
v
=
link
->
priv
;
struct
net_device
*
de
v
=
link
->
priv
;
dev_link_t
**
linkp
;
DEBUG
(
0
,
"netwave_detach(0x%p)
\n
"
,
link
);
...
...
@@ -580,8 +580,8 @@ static void netwave_detach(dev_link_t *link)
/* Unlink device structure, free pieces */
*
linkp
=
link
->
next
;
if
(
link
->
dev
)
unregister_netdev
(
&
priv
->
dev
);
kfree
(
pri
v
);
unregister_netdev
(
dev
);
kfree
(
de
v
);
}
/* netwave_detach */
...
...
@@ -1038,8 +1038,8 @@ while ((last_ret=CardServices(last_fn=(fn), args))!=0) goto cs_failed
static
void
netwave_pcmcia_config
(
dev_link_t
*
link
)
{
client_handle_t
handle
=
link
->
handle
;
netwave_private
*
pri
v
=
link
->
priv
;
struct
net_device
*
dev
=
&
priv
->
de
v
;
struct
net_device
*
de
v
=
link
->
priv
;
netwave_private
*
priv
=
dev
->
pri
v
;
tuple_t
tuple
;
cisparse_t
parse
;
int
i
,
j
,
last_ret
,
last_fn
;
...
...
@@ -1099,7 +1099,7 @@ static void netwave_pcmcia_config(dev_link_t *link) {
* Allocate a 32K memory window. Note that the dev_link_t
* structure provides space for one window handle -- if your
* device needs several windows, you'll need to keep track of
* the handles in your private data structure,
link
->priv.
* the handles in your private data structure,
dev
->priv.
*/
DEBUG
(
1
,
"Setting mem speed of %d
\n
"
,
mem_speed
);
...
...
@@ -1161,7 +1161,8 @@ static void netwave_pcmcia_config(dev_link_t *link) {
*/
static
void
netwave_release
(
u_long
arg
)
{
dev_link_t
*
link
=
(
dev_link_t
*
)
arg
;
netwave_private
*
priv
=
link
->
priv
;
struct
net_device
*
dev
=
link
->
priv
;
netwave_private
*
priv
=
dev
->
priv
;
DEBUG
(
0
,
"netwave_release(0x%p)
\n
"
,
link
);
...
...
@@ -1206,8 +1207,7 @@ static void netwave_release(u_long arg) {
static
int
netwave_event
(
event_t
event
,
int
priority
,
event_callback_args_t
*
args
)
{
dev_link_t
*
link
=
args
->
client_data
;
netwave_private
*
priv
=
link
->
priv
;
struct
net_device
*
dev
=
&
priv
->
dev
;
struct
net_device
*
dev
=
link
->
priv
;
DEBUG
(
1
,
"netwave_event(0x%06x)
\n
"
,
event
);
...
...
drivers/net/wireless/strip.c
View file @
c5838f46
...
...
@@ -284,7 +284,7 @@ struct strip {
*/
struct
tty_struct
*
tty
;
/* ptr to TTY structure */
struct
net_device
dev
;
/* Our device structure */
struct
net_device
*
dev
;
/* Our device structure */
/*
* Neighbour radio records
...
...
@@ -509,7 +509,7 @@ static void DumpData(char *msg, struct strip *strip_info, __u8 * ptr,
*
p
++
=
'\"'
;
*
p
++
=
0
;
printk
(
KERN_INFO
"%s: %-13s%s
\n
"
,
strip_info
->
dev
.
name
,
msg
,
pkt_text
);
printk
(
KERN_INFO
"%s: %-13s%s
\n
"
,
strip_info
->
dev
->
name
,
msg
,
pkt_text
);
}
...
...
@@ -846,7 +846,7 @@ static __u8 *radio_address_to_string(const MetricomAddress * addr,
static
int
allocate_buffers
(
struct
strip
*
strip_info
)
{
struct
net_device
*
dev
=
&
strip_info
->
dev
;
struct
net_device
*
dev
=
strip_info
->
dev
;
int
sx_size
=
MAX
(
STRIP_ENCAP_SIZE
(
MAX_RECV_MTU
),
4096
);
int
tx_size
=
STRIP_ENCAP_SIZE
(
dev
->
mtu
)
+
MaxCommandStringLength
;
__u8
*
r
=
kmalloc
(
MAX_RECV_MTU
,
GFP_ATOMIC
);
...
...
@@ -881,7 +881,7 @@ static int allocate_buffers(struct strip *strip_info)
static
void
strip_changedmtu
(
struct
strip
*
strip_info
)
{
int
old_mtu
=
strip_info
->
mtu
;
struct
net_device
*
dev
=
&
strip_info
->
dev
;
struct
net_device
*
dev
=
strip_info
->
dev
;
unsigned
char
*
orbuff
=
strip_info
->
rx_buff
;
unsigned
char
*
osbuff
=
strip_info
->
sx_buff
;
unsigned
char
*
otbuff
=
strip_info
->
tx_buff
;
...
...
@@ -889,14 +889,14 @@ static void strip_changedmtu(struct strip *strip_info)
if
(
dev
->
mtu
>
MAX_SEND_MTU
)
{
printk
(
KERN_ERR
"%s: MTU exceeds maximum allowable (%d), MTU change cancelled.
\n
"
,
strip_info
->
dev
.
name
,
MAX_SEND_MTU
);
strip_info
->
dev
->
name
,
MAX_SEND_MTU
);
dev
->
mtu
=
old_mtu
;
return
;
}
if
(
!
allocate_buffers
(
strip_info
))
{
printk
(
KERN_ERR
"%s: unable to grow strip buffers, MTU change cancelled.
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
dev
->
mtu
=
old_mtu
;
return
;
}
...
...
@@ -923,7 +923,7 @@ static void strip_changedmtu(struct strip *strip_info)
strip_info
->
tx_head
=
strip_info
->
tx_buff
;
printk
(
KERN_NOTICE
"%s: strip MTU changed fom %d to %d.
\n
"
,
strip_info
->
dev
.
name
,
old_mtu
,
strip_info
->
mtu
);
strip_info
->
dev
->
name
,
old_mtu
,
strip_info
->
mtu
);
if
(
orbuff
)
kfree
(
orbuff
);
...
...
@@ -940,7 +940,7 @@ static void strip_unlock(struct strip *strip_info)
*/
strip_info
->
idle_timer
.
expires
=
jiffies
+
1
*
HZ
;
add_timer
(
&
strip_info
->
idle_timer
);
netif_wake_queue
(
&
strip_info
->
dev
);
netif_wake_queue
(
strip_info
->
dev
);
}
...
...
@@ -1087,10 +1087,10 @@ static int sprintf_status_info(char *buffer, struct strip *strip_info)
FirmwareVersion
firmware_version
=
strip_info
->
firmware_version
;
SerialNumber
serial_number
=
strip_info
->
serial_number
;
BatteryVoltage
battery_voltage
=
strip_info
->
battery_voltage
;
char
*
if_name
=
strip_info
->
dev
.
name
;
char
*
if_name
=
strip_info
->
dev
->
name
;
MetricomAddress
true_dev_addr
=
strip_info
->
true_dev_addr
;
MetricomAddress
dev_dev_addr
=
*
(
MetricomAddress
*
)
strip_info
->
dev
.
dev_addr
;
*
(
MetricomAddress
*
)
strip_info
->
dev
->
dev_addr
;
int
manual_dev_addr
=
strip_info
->
manual_dev_addr
;
#ifdef EXT_COUNTERS
unsigned
long
rx_bytes
=
strip_info
->
rx_bytes
;
...
...
@@ -1133,7 +1133,7 @@ static int sprintf_status_info(char *buffer, struct strip *strip_info)
p
+=
sprintf
(
p
,
" Next gratuitous ARP:
\t
"
);
if
(
!
memcmp
(
strip_info
->
dev
.
dev_addr
,
zero_address
.
c
,
(
strip_info
->
dev
->
dev_addr
,
zero_address
.
c
,
sizeof
(
zero_address
)))
p
+=
sprintf
(
p
,
"Disabled
\n
"
);
else
{
...
...
@@ -1210,7 +1210,7 @@ static void ResetRadio(struct strip *strip_info)
*/
if
(
strip_info
->
working
)
{
printk
(
KERN_INFO
"%s: No response: Resetting radio.
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
strip_info
->
firmware_version
.
c
[
0
]
=
'\0'
;
strip_info
->
serial_number
.
c
[
0
]
=
'\0'
;
strip_info
->
battery_voltage
.
c
[
0
]
=
'\0'
;
...
...
@@ -1231,7 +1231,7 @@ static void ResetRadio(struct strip *strip_info)
/* Mark radio address as unknown */
*
(
MetricomAddress
*
)
&
strip_info
->
true_dev_addr
=
zero_address
;
if
(
!
strip_info
->
manual_dev_addr
)
*
(
MetricomAddress
*
)
strip_info
->
dev
.
dev_addr
=
*
(
MetricomAddress
*
)
strip_info
->
dev
->
dev_addr
=
zero_address
;
strip_info
->
working
=
FALSE
;
strip_info
->
firmware_level
=
NoStructure
;
...
...
@@ -1285,7 +1285,7 @@ static void strip_write_some_more(struct tty_struct *tty)
/* First make sure we're connected. */
if
(
!
strip_info
||
strip_info
->
magic
!=
STRIP_MAGIC
||
!
netif_running
(
&
strip_info
->
dev
))
!
netif_running
(
strip_info
->
dev
))
return
;
if
(
strip_info
->
tx_left
>
0
)
{
...
...
@@ -1340,14 +1340,14 @@ static unsigned char *strip_make_packet(unsigned char *buffer,
else
{
printk
(
KERN_ERR
"%s: strip_make_packet: Unknown packet type 0x%04X
\n
"
,
strip_info
->
dev
.
name
,
ntohs
(
header
->
protocol
));
strip_info
->
dev
->
name
,
ntohs
(
header
->
protocol
));
return
(
NULL
);
}
if
(
len
>
strip_info
->
mtu
)
{
printk
(
KERN_ERR
"%s: Dropping oversized transmit packet: %d bytes
\n
"
,
strip_info
->
dev
.
name
,
len
);
strip_info
->
dev
->
name
,
len
);
return
(
NULL
);
}
...
...
@@ -1357,7 +1357,7 @@ static unsigned char *strip_make_packet(unsigned char *buffer,
*/
if
(
!
memcmp
(
haddr
.
c
,
strip_info
->
true_dev_addr
.
c
,
sizeof
(
haddr
)))
{
printk
(
KERN_ERR
"%s: Dropping packet addressed to self
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
return
(
NULL
);
}
...
...
@@ -1367,7 +1367,7 @@ static unsigned char *strip_make_packet(unsigned char *buffer,
*/
if
(
haddr
.
c
[
0
]
==
0xFF
)
{
u32
brd
=
0
;
struct
in_device
*
in_dev
=
in_dev_get
(
&
strip_info
->
dev
);
struct
in_device
*
in_dev
=
in_dev_get
(
strip_info
->
dev
);
if
(
in_dev
==
NULL
)
return
NULL
;
read_lock
(
&
in_dev
->
lock
);
...
...
@@ -1377,10 +1377,10 @@ static unsigned char *strip_make_packet(unsigned char *buffer,
in_dev_put
(
in_dev
);
/* arp_query returns 1 if it succeeds in looking up the address, 0 if it fails */
if
(
!
arp_query
(
haddr
.
c
,
brd
,
&
strip_info
->
dev
))
{
if
(
!
arp_query
(
haddr
.
c
,
brd
,
strip_info
->
dev
))
{
printk
(
KERN_ERR
"%s: Unable to send packet (no broadcast hub configured)
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
return
(
NULL
);
}
/*
...
...
@@ -1491,7 +1491,7 @@ static void strip_send(struct strip *strip_info, struct sk_buff *skb)
#endif
strip_info
->
watchdog_doprobe
=
jiffies
+
10
*
HZ
;
strip_info
->
watchdog_doreset
=
jiffies
+
1
*
HZ
;
/*printk(KERN_INFO "%s: Routine radio test.\n", strip_info->dev
.
name); */
/*printk(KERN_INFO "%s: Routine radio test.\n", strip_info->dev
->
name); */
}
/*
...
...
@@ -1506,7 +1506,7 @@ static void strip_send(struct strip *strip_info, struct sk_buff *skb)
*/
if
(
strip_info
->
tx_size
-
strip_info
->
tx_left
<
20
)
printk
(
KERN_ERR
"%s: Sending%5d bytes;%5d bytes free.
\n
"
,
strip_info
->
dev
.
name
,
strip_info
->
tx_left
,
strip_info
->
dev
->
name
,
strip_info
->
tx_left
,
strip_info
->
tx_size
-
strip_info
->
tx_left
);
/*
...
...
@@ -1519,7 +1519,7 @@ static void strip_send(struct strip *strip_info, struct sk_buff *skb)
}
if
(
1
)
{
struct
in_device
*
in_dev
=
in_dev_get
(
&
strip_info
->
dev
);
struct
in_device
*
in_dev
=
in_dev_get
(
strip_info
->
dev
);
brd
=
addr
=
0
;
if
(
in_dev
)
{
read_lock
(
&
in_dev
->
lock
);
...
...
@@ -1549,11 +1549,11 @@ static void strip_send(struct strip *strip_info, struct sk_buff *skb)
*/
if
(
strip_info
->
working
&&
(
long
)
jiffies
-
strip_info
->
gratuitous_arp
>=
0
&&
memcmp
(
strip_info
->
dev
.
dev_addr
,
zero_address
.
c
,
&&
memcmp
(
strip_info
->
dev
->
dev_addr
,
zero_address
.
c
,
sizeof
(
zero_address
))
&&
arp_query
(
haddr
.
c
,
brd
,
&
strip_info
->
dev
))
{
&&
arp_query
(
haddr
.
c
,
brd
,
strip_info
->
dev
))
{
/*printk(KERN_INFO "%s: Sending gratuitous ARP with interval %ld\n",
strip_info->dev
.
name, strip_info->arp_interval / HZ); */
strip_info->dev
->
name, strip_info->arp_interval / HZ); */
strip_info
->
gratuitous_arp
=
jiffies
+
strip_info
->
arp_interval
;
strip_info
->
arp_interval
*=
2
;
...
...
@@ -1561,11 +1561,11 @@ static void strip_send(struct strip *strip_info, struct sk_buff *skb)
strip_info
->
arp_interval
=
MaxARPInterval
;
if
(
addr
)
arp_send
(
ARPOP_REPLY
,
ETH_P_ARP
,
addr
,
/* Target address of ARP packet is our address */
&
strip_info
->
dev
,
/* Device to send packet on */
strip_info
->
dev
,
/* Device to send packet on */
addr
,
/* Source IP address this ARP packet comes from */
NULL
,
/* Destination HW address is NULL (broadcast it) */
strip_info
->
dev
.
dev_addr
,
/* Source HW address is our HW address */
strip_info
->
dev
.
dev_addr
);
/* Target HW address is our HW address (redundant) */
strip_info
->
dev
->
dev_addr
,
/* Source HW address is our HW address */
strip_info
->
dev
->
dev_addr
);
/* Target HW address is our HW address (redundant) */
}
/*
...
...
@@ -1608,18 +1608,18 @@ static int strip_xmit(struct sk_buff *skb, struct net_device *dev)
if
(
rx_pps_count
/
8
>=
10
)
printk
(
KERN_INFO
"%s: WARNING: Receiving %ld packets per second.
\n
"
,
strip_info
->
dev
.
name
,
rx_pps_count
/
8
);
strip_info
->
dev
->
name
,
rx_pps_count
/
8
);
if
(
tx_pps_count
/
8
>=
10
)
printk
(
KERN_INFO
"%s: WARNING: Tx %ld packets per second.
\n
"
,
strip_info
->
dev
.
name
,
tx_pps_count
/
8
);
strip_info
->
dev
->
name
,
tx_pps_count
/
8
);
if
(
sx_pps_count
/
8
>=
10
)
printk
(
KERN_INFO
"%s: WARNING: Sending %ld packets per second.
\n
"
,
strip_info
->
dev
.
name
,
sx_pps_count
/
8
);
strip_info
->
dev
->
name
,
sx_pps_count
/
8
);
}
spin_lock_irqsave
(
&
strip_lock
,
flags
);
/* See if someone has been ifconfigging */
if
(
strip_info
->
mtu
!=
strip_info
->
dev
.
mtu
)
if
(
strip_info
->
mtu
!=
strip_info
->
dev
->
mtu
)
strip_changedmtu
(
strip_info
);
strip_send
(
strip_info
,
skb
);
...
...
@@ -1735,7 +1735,7 @@ static void get_radio_version(struct strip *strip_info, __u8 * ptr, __u8 * end)
len
=
MIN
(
len
,
sizeof
(
FirmwareVersion
)
-
1
);
if
(
strip_info
->
firmware_version
.
c
[
0
]
==
0
)
printk
(
KERN_INFO
"%s: Radio Firmware: %.*s
\n
"
,
strip_info
->
dev
.
name
,
len
,
value_begin
);
strip_info
->
dev
->
name
,
len
,
value_begin
);
sprintf
(
strip_info
->
firmware_version
.
c
,
"%.*s"
,
len
,
value_begin
);
/* Look for the first colon */
...
...
@@ -1806,10 +1806,10 @@ static int get_radio_address(struct strip *strip_info, __u8 * p)
MetricomAddressString
addr_string
;
radio_address_to_string
(
&
addr
,
&
addr_string
);
printk
(
KERN_INFO
"%s: Radio address = %s
\n
"
,
strip_info
->
dev
.
name
,
addr_string
.
c
);
strip_info
->
dev
->
name
,
addr_string
.
c
);
strip_info
->
true_dev_addr
=
addr
;
if
(
!
strip_info
->
manual_dev_addr
)
*
(
MetricomAddress
*
)
strip_info
->
dev
.
dev_addr
=
*
(
MetricomAddress
*
)
strip_info
->
dev
->
dev_addr
=
addr
;
/* Give the radio a few seconds to get its head straight, then send an arp */
strip_info
->
gratuitous_arp
=
jiffies
+
15
*
HZ
;
...
...
@@ -1830,7 +1830,7 @@ static int verify_checksum(struct strip *strip_info)
if
(
sum
==
0
&&
strip_info
->
firmware_level
==
StructuredMessages
)
{
strip_info
->
firmware_level
=
ChecksummedMessages
;
printk
(
KERN_INFO
"%s: Radio provides message checksums
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
}
return
(
sum
==
0
);
}
...
...
@@ -1849,7 +1849,7 @@ static void RecvErr_Message(struct strip *strip_info, __u8 * sendername,
if
(
has_prefix
(
msg
,
len
,
"001"
))
{
/* Not in StarMode! */
RecvErr
(
"Error Msg:"
,
strip_info
);
printk
(
KERN_INFO
"%s: Radio %s is not in StarMode
\n
"
,
strip_info
->
dev
.
name
,
sendername
);
strip_info
->
dev
->
name
,
sendername
);
}
else
if
(
has_prefix
(
msg
,
len
,
"002"
))
{
/* Remap handle */
...
...
@@ -1859,7 +1859,7 @@ static void RecvErr_Message(struct strip *strip_info, __u8 * sendername,
else
if
(
has_prefix
(
msg
,
len
,
"003"
))
{
/* Can't resolve name */
RecvErr
(
"Error Msg:"
,
strip_info
);
printk
(
KERN_INFO
"%s: Destination radio name is unknown
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
}
else
if
(
has_prefix
(
msg
,
len
,
"004"
))
{
/* Name too small or missing */
...
...
@@ -1876,7 +1876,7 @@ static void RecvErr_Message(struct strip *strip_info, __u8 * sendername,
if
(
!
strip_info
->
working
)
{
strip_info
->
working
=
TRUE
;
printk
(
KERN_INFO
"%s: Radio now in starmode
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
/*
* If the radio has just entered a working state, we should do our first
* probe ASAP, so that we find out our radio address etc. without delay.
...
...
@@ -1888,7 +1888,7 @@ static void RecvErr_Message(struct strip *strip_info, __u8 * sendername,
strip_info
->
next_command
=
0
;
/* Try to enable checksums ASAP */
printk
(
KERN_INFO
"%s: Radio provides structured messages
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
}
if
(
strip_info
->
firmware_level
>=
StructuredMessages
)
{
/*
...
...
@@ -1916,14 +1916,14 @@ static void RecvErr_Message(struct strip *strip_info, __u8 * sendername,
RecvErr
(
"Error Msg:"
,
strip_info
);
printk
(
KERN_ERR
"%s: Error! Packet size too big for radio.
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
}
else
if
(
has_prefix
(
msg
,
len
,
"008"
))
{
/* Bad character in name */
RecvErr
(
"Error Msg:"
,
strip_info
);
printk
(
KERN_ERR
"%s: Radio name contains illegal character
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
}
else
if
(
has_prefix
(
msg
,
len
,
"009"
))
/* No count or line terminator */
...
...
@@ -1994,7 +1994,7 @@ static struct net_device *get_strip_dev(struct strip *strip_info)
/* real radio hardware address, try to find another strip device that has been */
/* manually set to that address that we can 'transfer ownership' of this packet to */
if
(
strip_info
->
manual_dev_addr
&&
!
memcmp
(
strip_info
->
dev
.
dev_addr
,
zero_address
.
c
,
!
memcmp
(
strip_info
->
dev
->
dev_addr
,
zero_address
.
c
,
sizeof
(
zero_address
))
&&
memcmp
(
&
strip_info
->
true_dev_addr
,
zero_address
.
c
,
sizeof
(
zero_address
)))
{
...
...
@@ -2002,13 +2002,13 @@ static struct net_device *get_strip_dev(struct strip *strip_info)
read_lock_bh
(
&
dev_base_lock
);
dev
=
dev_base
;
while
(
dev
)
{
if
(
dev
->
type
==
strip_info
->
dev
.
type
&&
if
(
dev
->
type
==
strip_info
->
dev
->
type
&&
!
memcmp
(
dev
->
dev_addr
,
&
strip_info
->
true_dev_addr
,
sizeof
(
MetricomAddress
)))
{
printk
(
KERN_INFO
"%s: Transferred packet ownership to %s.
\n
"
,
strip_info
->
dev
.
name
,
dev
->
name
);
strip_info
->
dev
->
name
,
dev
->
name
);
read_unlock_bh
(
&
dev_base_lock
);
return
(
dev
);
}
...
...
@@ -2016,7 +2016,7 @@ static struct net_device *get_strip_dev(struct strip *strip_info)
}
read_unlock_bh
(
&
dev_base_lock
);
}
return
(
&
strip_info
->
dev
);
return
(
strip_info
->
dev
);
}
/*
...
...
@@ -2029,7 +2029,7 @@ static void deliver_packet(struct strip *strip_info, STRIP_Header * header,
struct
sk_buff
*
skb
=
dev_alloc_skb
(
sizeof
(
STRIP_Header
)
+
packetlen
);
if
(
!
skb
)
{
printk
(
KERN_ERR
"%s: memory squeeze, dropping packet.
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
strip_info
->
rx_dropped
++
;
}
else
{
memcpy
(
skb_put
(
skb
,
sizeof
(
STRIP_Header
)),
header
,
...
...
@@ -2073,12 +2073,12 @@ static void process_IP_packet(struct strip *strip_info,
if
(
packetlen
>
MAX_RECV_MTU
)
{
printk
(
KERN_INFO
"%s: Dropping oversized received IP packet: %d bytes
\n
"
,
strip_info
->
dev
.
name
,
packetlen
);
strip_info
->
dev
->
name
,
packetlen
);
strip_info
->
rx_dropped
++
;
return
;
}
/*printk(KERN_INFO "%s: Got %d byte IP packet\n", strip_info->dev
.
name, packetlen); */
/*printk(KERN_INFO "%s: Got %d byte IP packet\n", strip_info->dev
->
name, packetlen); */
/* Decode remainder of the IP packet */
ptr
=
...
...
@@ -2117,13 +2117,13 @@ static void process_ARP_packet(struct strip *strip_info,
if
(
packetlen
>
MAX_RECV_MTU
)
{
printk
(
KERN_INFO
"%s: Dropping oversized received ARP packet: %d bytes
\n
"
,
strip_info
->
dev
.
name
,
packetlen
);
strip_info
->
dev
->
name
,
packetlen
);
strip_info
->
rx_dropped
++
;
return
;
}
/*printk(KERN_INFO "%s: Got %d byte ARP %s\n",
strip_info->dev
.
name, packetlen,
strip_info->dev
->
name, packetlen,
ntohs(arphdr->ar_op) == ARPOP_REQUEST ? "request" : "reply"); */
/* Decode remainder of the ARP packet */
...
...
@@ -2251,7 +2251,7 @@ static void process_message(struct strip *strip_info)
}
}
/*printk(KERN_INFO "%s: Got packet from \"%s\".\n", strip_info->dev
.
name, sendername); */
/*printk(KERN_INFO "%s: Got packet from \"%s\".\n", strip_info->dev
->
name, sendername); */
/*
* Fill in (pseudo) source and destination addresses in the packet.
...
...
@@ -2320,13 +2320,13 @@ static void strip_receive_buf(struct tty_struct *tty, const unsigned char *cp,
unsigned
long
flags
;
if
(
!
strip_info
||
strip_info
->
magic
!=
STRIP_MAGIC
||
!
netif_running
(
&
strip_info
->
dev
))
||
!
netif_running
(
strip_info
->
dev
))
return
;
spin_lock_irqsave
(
&
strip_lock
,
flags
);
/* Argh! mtu change time! - costs us the packet part received at the change */
if
(
strip_info
->
mtu
!=
strip_info
->
dev
.
mtu
)
if
(
strip_info
->
mtu
!=
strip_info
->
dev
->
mtu
)
strip_changedmtu
(
strip_info
);
#if 0
...
...
@@ -2347,7 +2347,7 @@ static void strip_receive_buf(struct tty_struct *tty, const unsigned char *cp,
while
(
cp
<
end
)
{
if
(
fp
&&
*
fp
)
printk
(
KERN_INFO
"%s: %s on serial port
\n
"
,
strip_info
->
dev
.
name
,
TTYERROR
(
*
fp
));
strip_info
->
dev
->
name
,
TTYERROR
(
*
fp
));
if
(
fp
&&
*
fp
++
&&
!
strip_info
->
discard
)
{
/* If there's a serial error, record it */
/* If we have some characters in the buffer, discard them */
strip_info
->
discard
=
strip_info
->
sx_count
;
...
...
@@ -2360,7 +2360,7 @@ static void strip_receive_buf(struct tty_struct *tty, const unsigned char *cp,
if
(
strip_info
->
sx_count
>
3000
)
printk
(
KERN_INFO
"%s: Cut a %d byte packet (%d bytes remaining)%s
\n
"
,
strip_info
->
dev
.
name
,
strip_info
->
dev
->
name
,
strip_info
->
sx_count
,
end
-
cp
-
1
,
strip_info
->
...
...
@@ -2371,12 +2371,12 @@ static void strip_receive_buf(struct tty_struct *tty, const unsigned char *cp,
strip_info
->
rx_over_errors
++
;
printk
(
KERN_INFO
"%s: sx_buff overflow (%d bytes total)
\n
"
,
strip_info
->
dev
.
name
,
strip_info
->
dev
->
name
,
strip_info
->
sx_count
);
}
else
if
(
strip_info
->
discard
)
printk
(
KERN_INFO
"%s: Discarding bad packet (%d/%d)
\n
"
,
strip_info
->
dev
.
name
,
strip_info
->
dev
->
name
,
strip_info
->
discard
,
strip_info
->
sx_count
);
else
...
...
@@ -2415,9 +2415,9 @@ static int set_mac_address(struct strip *strip_info,
memcmp
(
addr
->
c
,
broadcast_address
.
c
,
sizeof
(
broadcast_address
));
if
(
strip_info
->
manual_dev_addr
)
*
(
MetricomAddress
*
)
strip_info
->
dev
.
dev_addr
=
*
addr
;
*
(
MetricomAddress
*
)
strip_info
->
dev
->
dev_addr
=
*
addr
;
else
*
(
MetricomAddress
*
)
strip_info
->
dev
.
dev_addr
=
*
(
MetricomAddress
*
)
strip_info
->
dev
->
dev_addr
=
strip_info
->
true_dev_addr
;
return
0
;
}
...
...
@@ -2496,7 +2496,7 @@ static int strip_open_low(struct net_device *dev)
strip_info
->
user_baud
=
get_baud
(
strip_info
->
tty
);
printk
(
KERN_INFO
"%s: Initializing Radio.
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
ResetRadio
(
strip_info
);
strip_info
->
idle_timer
.
expires
=
jiffies
+
1
*
HZ
;
add_timer
(
&
strip_info
->
idle_timer
);
...
...
@@ -2589,6 +2589,8 @@ static void strip_free(struct strip *strip_info)
if
(
strip_info
->
next
)
strip_info
->
next
->
referrer
=
strip_info
->
referrer
;
strip_info
->
magic
=
0
;
if
(
strip_info
->
dev
)
kfree
(
strip_info
->
dev
);
kfree
(
strip_info
);
}
...
...
@@ -2600,6 +2602,7 @@ static struct strip *strip_alloc(void)
{
int
channel_id
=
0
;
struct
strip
**
s
=
&
struct_strip_list
;
struct
net_device
*
dev
;
struct
strip
*
strip_info
=
(
struct
strip
*
)
kmalloc
(
sizeof
(
struct
strip
),
GFP_KERNEL
);
...
...
@@ -2612,13 +2615,22 @@ static struct strip *strip_alloc(void)
memset
(
strip_info
,
0
,
sizeof
(
struct
strip
));
/* allocate the net_device */
dev
=
kmalloc
(
sizeof
(
struct
net_device
),
GFP_KERNEL
);
if
(
!
dev
)
{
kfree
(
strip_info
);
return
NULL
;
}
strip_info
->
dev
=
dev
;
SET_MODULE_OWNER
(
dev
);
/*
* Search the list to find where to put our new entry
* (and in the process decide what channel number it is
* going to be)
*/
while
(
*
s
&&
(
*
s
)
->
dev
.
base_addr
==
channel_id
)
{
while
(
*
s
&&
(
*
s
)
->
dev
->
base_addr
==
channel_id
)
{
channel_id
++
;
s
=
&
(
*
s
)
->
next
;
}
...
...
@@ -2639,15 +2651,15 @@ static struct strip *strip_alloc(void)
strip_info
->
gratuitous_arp
=
jiffies
+
LongTime
;
strip_info
->
arp_interval
=
0
;
init_timer
(
&
strip_info
->
idle_timer
);
strip_info
->
idle_timer
.
data
=
(
long
)
&
strip_info
->
dev
;
strip_info
->
idle_timer
.
data
=
(
long
)
dev
;
strip_info
->
idle_timer
.
function
=
strip_IdleTask
;
/* Note: strip_info->if_name is currently 8 characters long */
sprintf
(
strip_info
->
dev
.
name
,
"st%d"
,
channel_id
);
strip_info
->
dev
.
base_addr
=
channel_id
;
strip_info
->
dev
.
priv
=
(
void
*
)
strip_info
;
strip_info
->
dev
.
next
=
NULL
;
strip_info
->
dev
.
init
=
strip_dev_init
;
sprintf
(
dev
->
name
,
"st%d"
,
channel_id
);
dev
->
base_addr
=
channel_id
;
dev
->
priv
=
(
void
*
)
strip_info
;
dev
->
next
=
NULL
;
dev
->
init
=
strip_dev_init
;
return
strip_info
;
}
...
...
@@ -2682,7 +2694,7 @@ static int strip_open(struct tty_struct *tty)
* strip_dev_init() will be called as a side-effect
*/
if
(
register_netdev
(
&
strip_info
->
dev
)
!=
0
)
{
if
(
register_netdev
(
strip_info
->
dev
)
!=
0
)
{
printk
(
KERN_ERR
"strip: register_netdev() failed.
\n
"
);
strip_free
(
strip_info
);
return
-
ENFILE
;
...
...
@@ -2699,7 +2711,7 @@ static int strip_open(struct tty_struct *tty)
* Restore default settings
*/
strip_info
->
dev
.
type
=
ARPHRD_METRICOM
;
/* dtang */
strip_info
->
dev
->
type
=
ARPHRD_METRICOM
;
/* dtang */
/*
* Set tty options
...
...
@@ -2709,15 +2721,13 @@ static int strip_open(struct tty_struct *tty)
tty
->
termios
->
c_cflag
|=
CLOCAL
;
/* Ignore modem control signals. */
tty
->
termios
->
c_cflag
&=
~
HUPCL
;
/* Don't close on hup */
MOD_INC_USE_COUNT
;
printk
(
KERN_INFO
"STRIP: device
\"
%s
\"
activated
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
/*
* Done. We have linked the TTY line to a channel.
*/
return
(
strip_info
->
dev
.
base_addr
);
return
(
strip_info
->
dev
->
base_addr
);
}
/*
...
...
@@ -2738,15 +2748,14 @@ static void strip_close(struct tty_struct *tty)
if
(
!
strip_info
||
strip_info
->
magic
!=
STRIP_MAGIC
)
return
;
unregister_netdev
(
&
strip_info
->
dev
);
unregister_netdev
(
strip_info
->
dev
);
tty
->
disc_data
=
0
;
strip_info
->
tty
=
NULL
;
printk
(
KERN_INFO
"STRIP: device
\"
%s
\"
closed down
\n
"
,
strip_info
->
dev
.
name
);
strip_info
->
dev
->
name
);
strip_free
(
strip_info
);
tty
->
disc_data
=
NULL
;
MOD_DEC_USE_COUNT
;
}
...
...
@@ -2767,13 +2776,13 @@ static int strip_ioctl(struct tty_struct *tty, struct file *file,
switch
(
cmd
)
{
case
SIOCGIFNAME
:
if
(
copy_to_user
((
void
*
)
arg
,
strip_info
->
dev
.
name
,
strlen
(
strip_info
->
dev
.
name
)
+
1
))
if
(
copy_to_user
((
void
*
)
arg
,
strip_info
->
dev
->
name
,
strlen
(
strip_info
->
dev
->
name
)
+
1
))
return
-
EFAULT
;
break
;
case
SIOCSIFHWADDR
:
{
MetricomAddress
addr
;
//printk(KERN_INFO "%s: SIOCSIFHWADDR\n", strip_info->dev
.
name);
//printk(KERN_INFO "%s: SIOCSIFHWADDR\n", strip_info->dev
->
name);
if
(
copy_from_user
(
&
addr
,
(
void
*
)
arg
,
sizeof
(
MetricomAddress
)))
return
-
EFAULT
;
return
set_mac_address
(
strip_info
,
&
addr
);
...
...
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