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
4a513ec1
Commit
4a513ec1
authored
Aug 19, 2003
by
Stephen Hemminger
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[IRDA]: Convert irlan to use alloc_netdev().
parent
8eff18f1
Changes
5
Hide whitespace changes
Inline
Side-by-side
Showing
5 changed files
with
35 additions
and
63 deletions
+35
-63
include/net/irda/irlan_common.h
include/net/irda/irlan_common.h
+1
-1
include/net/irda/irlan_eth.h
include/net/irda/irlan_eth.h
+1
-1
net/irda/irlan/irlan_client.c
net/irda/irlan/irlan_client.c
+1
-1
net/irda/irlan/irlan_common.c
net/irda/irlan/irlan_common.c
+27
-53
net/irda/irlan/irlan_eth.c
net/irda/irlan/irlan_eth.c
+5
-7
No files found.
include/net/irda/irlan_common.h
View file @
4a513ec1
...
...
@@ -162,7 +162,7 @@ struct irlan_provider_cb {
struct
irlan_cb
{
int
magic
;
struct
list_head
dev_list
;
struct
net_device
dev
;
/* Ethernet device structure*/
struct
net_device
*
dev
;
/* Ethernet device structure*/
struct
net_device_stats
stats
;
__u32
saddr
;
/* Source device address */
...
...
include/net/irda/irlan_eth.h
View file @
4a513ec1
...
...
@@ -25,7 +25,7 @@
#ifndef IRLAN_ETH_H
#define IRLAN_ETH_H
int
irlan_eth_init
(
struct
net_device
*
dev
);
void
irlan_eth_setup
(
struct
net_device
*
dev
);
int
irlan_eth_open
(
struct
net_device
*
dev
);
int
irlan_eth_close
(
struct
net_device
*
dev
);
int
irlan_eth_receive
(
void
*
instance
,
void
*
sap
,
struct
sk_buff
*
skb
);
...
...
net/irda/irlan/irlan_client.c
View file @
4a513ec1
...
...
@@ -512,7 +512,7 @@ static void irlan_check_response_param(struct irlan_cb *self, char *param,
bytes
[
0
],
bytes
[
1
],
bytes
[
2
],
bytes
[
3
],
bytes
[
4
],
bytes
[
5
]);
for
(
i
=
0
;
i
<
6
;
i
++
)
self
->
dev
.
dev_addr
[
i
]
=
bytes
[
i
];
self
->
dev
->
dev_addr
[
i
]
=
bytes
[
i
];
}
}
...
...
net/irda/irlan/irlan_common.c
View file @
4a513ec1
...
...
@@ -173,33 +173,6 @@ void __exit irlan_cleanup(void)
rtnl_unlock
();
}
/*
* Function irlan_register_netdev (self)
*
* Registers the network device to be used. We should don't register until
* we have been binded to a particular provider or client.
*/
int
irlan_register_netdev
(
struct
irlan_cb
*
self
)
{
int
i
=
0
;
IRDA_DEBUG
(
0
,
"%s()
\n
"
,
__FUNCTION__
);
/* Check if we should call the device eth<x> or irlan<x> */
if
(
!
eth
)
{
/* Get the first free irlan<x> name */
do
{
sprintf
(
self
->
dev
.
name
,
"%s%d"
,
"irlan"
,
i
++
);
}
while
(
dev_get
(
self
->
dev
.
name
));
}
if
(
register_netdev
(
&
self
->
dev
)
!=
0
)
{
IRDA_DEBUG
(
2
,
"%s(), register_netdev() failed!
\n
"
,
__FUNCTION__
);
return
-
1
;
}
return
0
;
}
/*
* Function irlan_open (void)
*
...
...
@@ -208,30 +181,25 @@ int irlan_register_netdev(struct irlan_cb *self)
*/
struct
irlan_cb
*
irlan_open
(
__u32
saddr
,
__u32
daddr
)
{
struct
net_device
*
dev
;
struct
irlan_cb
*
self
;
IRDA_DEBUG
(
2
,
"%s()
\n
"
,
__FUNCTION__
);
/*
* Initialize the irlan structure.
*/
self
=
kmalloc
(
sizeof
(
struct
irlan_cb
),
GFP_ATOMIC
);
if
(
self
==
NULL
)
/*
Create network device with irlan */
dev
=
alloc_netdev
(
sizeof
(
*
self
),
eth
?
"eth%d"
:
"irlan%d"
,
irlan_eth_setup
);
if
(
!
dev
)
return
NULL
;
memset
(
self
,
0
,
sizeof
(
struct
irlan_cb
));
self
=
dev
->
priv
;
self
->
dev
=
dev
;
/*
* Initialize local device structure
*/
self
->
magic
=
IRLAN_MAGIC
;
sprintf
(
self
->
dev
.
name
,
"%s"
,
"unknown"
);
self
->
dev
.
priv
=
(
void
*
)
self
;
self
->
dev
.
next
=
NULL
;
self
->
dev
.
init
=
irlan_eth_init
;
self
->
saddr
=
saddr
;
self
->
daddr
=
daddr
;
...
...
@@ -242,15 +210,22 @@ struct irlan_cb *irlan_open(__u32 saddr, __u32 daddr)
init_timer
(
&
self
->
watchdog_timer
);
init_timer
(
&
self
->
client
.
kick_timer
);
init_waitqueue_head
(
&
self
->
open_wait
);
list_add_rcu
(
&
self
->
dev_list
,
&
irlans
);
skb_queue_head_init
(
&
self
->
client
.
txq
);
irlan_next_client_state
(
self
,
IRLAN_IDLE
);
irlan_next_provider_state
(
self
,
IRLAN_IDLE
);
irlan_register_netdev
(
self
);
if
(
register_netdev
(
dev
))
{
IRDA_DEBUG
(
2
,
"%s(), register_netdev() failed!
\n
"
,
__FUNCTION__
);
self
=
NULL
;
kfree
(
dev
);
}
else
{
rtnl_lock
();
list_add_rcu
(
&
self
->
dev_list
,
&
irlans
);
rtnl_unlock
();
}
return
self
;
}
...
...
@@ -258,7 +233,8 @@ struct irlan_cb *irlan_open(__u32 saddr, __u32 daddr)
* Function __irlan_close (self)
*
* This function closes and deallocates the IrLAN client instances. Be
* aware that other functions which calles client_close()
* aware that other functions which calls client_close() must
* remove self from irlans list first.
*/
static
void
__irlan_close
(
struct
irlan_cb
*
self
)
{
...
...
@@ -283,10 +259,8 @@ static void __irlan_close(struct irlan_cb *self)
while
((
skb
=
skb_dequeue
(
&
self
->
client
.
txq
)))
dev_kfree_skb
(
skb
);
unregister_netdevice
(
&
self
->
dev
);
self
->
magic
=
0
;
kfree
(
self
);
/* Unregister and free self via destructor */
unregister_netdevice
(
self
->
dev
);
}
/* Find any instance of irlan, used for client discovery wakeup */
...
...
@@ -348,7 +322,7 @@ void irlan_connect_indication(void *instance, void *sap, struct qos_info *qos,
irlan_open_unicast_addr
(
self
);
}
/* Ready to transfer Ethernet frames (at last) */
netif_start_queue
(
&
self
->
dev
);
/* Clear reason */
netif_start_queue
(
self
->
dev
);
/* Clear reason */
}
void
irlan_connect_confirm
(
void
*
instance
,
void
*
sap
,
struct
qos_info
*
qos
,
...
...
@@ -382,7 +356,7 @@ void irlan_connect_confirm(void *instance, void *sap, struct qos_info *qos,
irlan_set_multicast_filter
(
self
,
TRUE
);
/* Ready to transfer Ethernet frames */
netif_start_queue
(
&
self
->
dev
);
netif_start_queue
(
self
->
dev
);
self
->
disconnect_reason
=
0
;
/* Clear reason */
#ifdef CONFIG_IRLAN_SEND_GRATUITOUS_ARP
irlan_eth_send_gratuitous_arp
(
&
self
->
dev
);
...
...
@@ -1110,7 +1084,7 @@ static int irlan_proc_read(char *buf, char **start, off_t offset, int len)
ASSERT
(
self
->
magic
==
IRLAN_MAGIC
,
break
;);
len
+=
sprintf
(
buf
+
len
,
"ifname: %s,
\n
"
,
self
->
dev
.
name
);
self
->
dev
->
name
);
len
+=
sprintf
(
buf
+
len
,
"client state: %s, "
,
irlan_state
[
self
->
client
.
state
]);
len
+=
sprintf
(
buf
+
len
,
"provider state: %s,
\n
"
,
...
...
@@ -1132,7 +1106,7 @@ static int irlan_proc_read(char *buf, char **start, off_t offset, int len)
buf
+
len
);
len
+=
sprintf
(
buf
+
len
,
"tx busy: %s
\n
"
,
netif_queue_stopped
(
&
self
->
dev
)
?
"TRUE"
:
"FALSE"
);
netif_queue_stopped
(
self
->
dev
)
?
"TRUE"
:
"FALSE"
);
len
+=
sprintf
(
buf
+
len
,
"
\n
"
);
}
...
...
net/irda/irlan/irlan_eth.c
View file @
4a513ec1
...
...
@@ -47,14 +47,12 @@
* The network device initialization function.
*
*/
int
irlan_eth_init
(
struct
net_device
*
dev
)
void
irlan_eth_setup
(
struct
net_device
*
dev
)
{
struct
irlan_cb
*
self
;
IRDA_DEBUG
(
2
,
"%s()
\n
"
,
__FUNCTION__
);
ASSERT
(
dev
!=
NULL
,
return
-
1
;);
self
=
(
struct
irlan_cb
*
)
dev
->
priv
;
dev
->
open
=
irlan_eth_open
;
...
...
@@ -62,6 +60,8 @@ int irlan_eth_init(struct net_device *dev)
dev
->
hard_start_xmit
=
irlan_eth_xmit
;
dev
->
get_stats
=
irlan_eth_get_stats
;
dev
->
set_multicast_list
=
irlan_eth_set_multicast_list
;
dev
->
destructor
=
(
void
(
*
)(
struct
net_device
*
))
kfree
;
SET_MODULE_OWNER
(
dev
);
ether_setup
(
dev
);
...
...
@@ -85,8 +85,6 @@ int irlan_eth_init(struct net_device *dev)
get_random_bytes
(
dev
->
dev_addr
+
4
,
1
);
get_random_bytes
(
dev
->
dev_addr
+
5
,
1
);
}
return
0
;
}
/*
...
...
@@ -237,7 +235,7 @@ int irlan_eth_receive(void *instance, void *sap, struct sk_buff *skb)
* might have been previously set by the low level IrDA network
* device driver
*/
skb
->
dev
=
&
self
->
dev
;
skb
->
dev
=
self
->
dev
;
skb
->
protocol
=
eth_type_trans
(
skb
,
skb
->
dev
);
/* Remove eth header */
self
->
stats
.
rx_packets
++
;
...
...
@@ -264,7 +262,7 @@ void irlan_eth_flow_indication(void *instance, void *sap, LOCAL_FLOW flow)
ASSERT
(
self
!=
NULL
,
return
;);
ASSERT
(
self
->
magic
==
IRLAN_MAGIC
,
return
;);
dev
=
&
self
->
dev
;
dev
=
self
->
dev
;
ASSERT
(
dev
!=
NULL
,
return
;);
...
...
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