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
760a916d
Commit
760a916d
authored
May 17, 2002
by
Linus Torvalds
Browse files
Options
Browse Files
Download
Plain Diff
Merge
http://gkernel.bkbits.net/irda-2.5
into home.transmeta.com:/home/torvalds/v2.5/linux
parents
e752b6dd
5a1c8ba5
Changes
7
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
68 additions
and
49 deletions
+68
-49
drivers/net/irda/smc-ircc.c
drivers/net/irda/smc-ircc.c
+7
-6
include/net/irda/irlmp.h
include/net/irda/irlmp.h
+23
-15
include/net/irda/irttp.h
include/net/irda/irttp.h
+1
-1
net/irda/irlmp.c
net/irda/irlmp.c
+11
-13
net/irda/irlmp_frame.c
net/irda/irlmp_frame.c
+23
-11
net/irda/irnet/irnet.h
net/irda/irnet/irnet.h
+2
-2
net/irda/irnet/irnet_ppp.c
net/irda/irnet/irnet_ppp.c
+1
-1
No files found.
drivers/net/irda/smc-ircc.c
View file @
760a916d
...
...
@@ -10,6 +10,8 @@
* Modified by: Dag Brattli <dag@brattli.net>
* Modified at: Tue Jun 26 2001
* Modified by: Stefani Seibold <stefani@seibold.net>
* Modified at: Thur Apr 18 2002
* Modified by: Jeff Snyder <je4d@pobox.com>
*
* Copyright (c) 2001 Stefani Seibold
* Copyright (c) 1999-2001 Dag Brattli
...
...
@@ -539,7 +541,7 @@ static int __init ircc_open(unsigned int fir_base, unsigned int sir_base)
if
(
ircc_irq
<
255
)
{
if
(
ircc_irq
!=
irq
)
MESSAGE
(
"%s, Overriding IRQ - chip says %d, using %d
\n
"
,
driver_name
,
self
->
io
->
irq
,
ircc_irq
);
driver_name
,
irq
,
ircc_irq
);
self
->
io
->
irq
=
ircc_irq
;
}
else
...
...
@@ -547,13 +549,13 @@ static int __init ircc_open(unsigned int fir_base, unsigned int sir_base)
if
(
ircc_dma
<
255
)
{
if
(
ircc_dma
!=
dma
)
MESSAGE
(
"%s, Overriding DMA - chip says %d, using %d
\n
"
,
driver_name
,
self
->
io
->
dma
,
ircc_dma
);
driver_name
,
dma
,
ircc_dma
);
self
->
io
->
dma
=
ircc_dma
;
}
else
self
->
io
->
dma
=
dma
;
request_region
(
fir_base
,
CHIP_IO_EXTENT
,
driver_name
);
request_region
(
self
->
io
->
fir_base
,
CHIP_IO_EXTENT
,
driver_name
);
/* Initialize QoS for this device */
irda_init_max_qos_capabilies
(
&
irport
->
qos
);
...
...
@@ -1191,10 +1193,9 @@ static int __exit ircc_close(struct ircc_cb *self)
outb(IRCC_CFGB_IR, iobase+IRCC_SCE_CFGB);
#endif
/* Release the PORT that this driver is using */
IRDA_DEBUG
(
0
,
__FUNCTION__
"(), releasing 0x%03x
\n
"
,
self
->
io
->
fir_base
);
IRDA_DEBUG
(
0
,
__FUNCTION__
"(), releasing 0x%03x
\n
"
,
iobase
);
release_region
(
self
->
io
->
fir_base
,
self
->
io
->
fir_ext
);
release_region
(
iobase
,
CHIP_IO_EXTENT
);
if
(
self
->
tx_buff
.
head
)
kfree
(
self
->
tx_buff
.
head
);
...
...
include/net/irda/irlmp.h
View file @
760a916d
...
...
@@ -100,7 +100,7 @@ struct lsap_cb {
irda_queue_t
queue
;
/* Must be first */
magic_t
magic
;
int
connected
;
unsigned
long
connected
;
/* set_bit used on this */
int
persistent
;
__u8
slsap_sel
;
/* Source (this) LSAP address */
...
...
@@ -119,6 +119,21 @@ struct lsap_cb {
struct
lap_cb
*
lap
;
/* Pointer to LAP connection structure */
};
/*
* Used for caching the last slsap->dlsap->handle mapping
*
* We don't need to keep/match the remote address in the cache because
* we are associated with a specific LAP (which implies it).
* Jean II
*/
typedef
struct
{
int
valid
;
__u8
slsap_sel
;
__u8
dlsap_sel
;
struct
lsap_cb
*
lsap
;
}
CACHE_ENTRY
;
/*
* Information about each registred IrLAP layer
*/
...
...
@@ -140,19 +155,15 @@ struct lap_cb {
struct
qos_info
*
qos
;
/* LAP QoS for this session */
struct
timer_list
idle_timer
;
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
/* The lsap cache was moved from struct irlmp_cb to here because
* it must be associated with the specific LAP. Also, this
* improves performance. - Jean II */
CACHE_ENTRY
cache
;
/* Caching last slsap->dlsap->handle mapping */
#endif
};
/*
* Used for caching the last slsap->dlsap->handle mapping
*/
typedef
struct
{
int
valid
;
__u8
slsap_sel
;
__u8
dlsap_sel
;
struct
lsap_cb
*
lsap
;
}
CACHE_ENTRY
;
/*
* Main structure for IrLMP
*/
...
...
@@ -166,9 +177,6 @@ struct irlmp_cb {
int
free_lsap_sel
;
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
CACHE_ENTRY
cache
;
/* Caching last slsap->dlsap->handle mapping */
#endif
struct
timer_list
discovery_timer
;
hashbin_t
*
links
;
/* IrLAP connection table */
...
...
include/net/irda/irttp.h
View file @
760a916d
...
...
@@ -139,7 +139,7 @@ struct tsap_cb {
__u32
tx_max_sdu_size
;
/* Max transmit user data size */
int
close_pend
;
/* Close, but disconnect_pend */
int
disconnect_pend
;
/* Disconnect, but still data to send */
unsigned
long
disconnect_pend
;
/* Disconnect, but still data to send */
struct
sk_buff
*
disconnect_skb
;
};
...
...
net/irda/irlmp.c
View file @
760a916d
...
...
@@ -93,9 +93,6 @@ int __init irlmp_init(void)
irlmp
->
cachelog
=
hashbin_new
(
HB_GLOBAL
);
irlmp
->
free_lsap_sel
=
0x10
;
/* Reserved 0x00-0x0f */
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
irlmp
->
cache
.
valid
=
FALSE
;
#endif
strcpy
(
sysctl_devname
,
"Linux"
);
/* Do discovery every 3 seconds */
...
...
@@ -208,10 +205,6 @@ static void __irlmp_close_lsap(struct lsap_cb *self)
if
(
self
->
conn_skb
)
dev_kfree_skb
(
self
->
conn_skb
);
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
ASSERT
(
irlmp
!=
NULL
,
return
;);
irlmp
->
cache
.
valid
=
FALSE
;
#endif
kfree
(
self
);
}
...
...
@@ -247,6 +240,9 @@ void irlmp_close_lsap(struct lsap_cb *self)
}
/* Now, remove from the link */
lsap
=
hashbin_remove
(
lap
->
lsaps
,
(
int
)
self
,
NULL
);
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
lap
->
cache
.
valid
=
FALSE
;
#endif
}
self
->
lap
=
NULL
;
/* Check if we found the LSAP! If not then try the unconnected lsaps */
...
...
@@ -292,6 +288,9 @@ void irlmp_register_link(struct irlap_cb *irlap, __u32 saddr, notify_t *notify)
lap
->
saddr
=
saddr
;
lap
->
daddr
=
DEV_ADDR_ANY
;
lap
->
lsaps
=
hashbin_new
(
HB_GLOBAL
);
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
lap
->
cache
.
valid
=
FALSE
;
#endif
lap
->
lap_state
=
LAP_STANDBY
;
...
...
@@ -602,7 +601,7 @@ struct lsap_cb *irlmp_dup(struct lsap_cb *orig, void *instance)
/* Make sure that we invalidate the cache */
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
irlm
p
->
cache
.
valid
=
FALSE
;
new
->
la
p
->
cache
.
valid
=
FALSE
;
#endif
/* CONFIG_IRDA_CACHE_LAST_LSAP */
return
new
;
...
...
@@ -692,17 +691,16 @@ void irlmp_disconnect_indication(struct lsap_cb *self, LM_REASON reason,
return
;
}
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
irlmp
->
cache
.
valid
=
FALSE
;
#endif
/*
* Remove association between this LSAP and the link it used
*/
ASSERT
(
self
->
lap
!=
NULL
,
return
;);
ASSERT
(
self
->
lap
->
lsaps
!=
NULL
,
return
;);
lsap
=
hashbin_remove
(
self
->
lap
->
lsaps
,
(
int
)
self
,
NULL
);
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
self
->
lap
->
cache
.
valid
=
FALSE
;
#endif
ASSERT
(
lsap
!=
NULL
,
return
;);
ASSERT
(
lsap
==
self
,
return
;);
...
...
net/irda/irlmp_frame.c
View file @
760a916d
...
...
@@ -408,13 +408,14 @@ void irlmp_link_discovery_confirm(struct lap_cb *self, hashbin_t *log)
}
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
inline
void
irlmp_update_cache
(
struct
lsap_cb
*
self
)
static
inline
void
irlmp_update_cache
(
struct
lap_cb
*
lap
,
struct
lsap_cb
*
lsap
)
{
/* Update cache entry */
irlmp
->
cache
.
dlsap_sel
=
self
->
dlsap_sel
;
irlmp
->
cache
.
slsap_sel
=
self
->
slsap_sel
;
irlmp
->
cache
.
lsap
=
self
;
irlm
p
->
cache
.
valid
=
TRUE
;
lap
->
cache
.
dlsap_sel
=
lsap
->
dlsap_sel
;
lap
->
cache
.
slsap_sel
=
lsap
->
slsap_sel
;
lap
->
cache
.
lsap
=
lsap
;
la
p
->
cache
.
valid
=
TRUE
;
}
#endif
...
...
@@ -423,6 +424,17 @@ inline void irlmp_update_cache(struct lsap_cb *self)
*
* Find handle assosiated with destination and source LSAP
*
* Any IrDA connection (LSAP/TSAP) is uniquely identified by
* 3 parameters, the local lsap, the remote lsap and the remote address.
* We may initiate multiple connections to the same remote service
* (they will have different local lsap), a remote device may initiate
* multiple connections to the same local service (they will have
* different remote lsap), or multiple devices may connect to the same
* service and may use the same remote lsap (and they will have
* different remote address).
* So, where is the remote address ? Each LAP connection is made with
* a single remote device, so imply a specific remote address.
* Jean II
*/
static
struct
lsap_cb
*
irlmp_find_lsap
(
struct
lap_cb
*
self
,
__u8
dlsap_sel
,
__u8
slsap_sel
,
int
status
,
...
...
@@ -436,11 +448,11 @@ static struct lsap_cb *irlmp_find_lsap(struct lap_cb *self, __u8 dlsap_sel,
* cache first to avoid the linear search
*/
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
if
((
irlmp
->
cache
.
valid
)
&&
(
irlmp
->
cache
.
slsap_sel
==
slsap_sel
)
&&
(
irlmp
->
cache
.
dlsap_sel
==
dlsap_sel
))
if
((
self
->
cache
.
valid
)
&&
(
self
->
cache
.
slsap_sel
==
slsap_sel
)
&&
(
self
->
cache
.
dlsap_sel
==
dlsap_sel
))
{
return
(
irlmp
->
cache
.
lsap
);
return
(
self
->
cache
.
lsap
);
}
#endif
lsap
=
(
struct
lsap_cb
*
)
hashbin_get_first
(
queue
);
...
...
@@ -458,7 +470,7 @@ static struct lsap_cb *irlmp_find_lsap(struct lap_cb *self, __u8 dlsap_sel,
lsap
->
dlsap_sel
=
dlsap_sel
;
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
irlmp_update_cache
(
lsap
);
irlmp_update_cache
(
self
,
lsap
);
#endif
return
lsap
;
}
...
...
@@ -469,7 +481,7 @@ static struct lsap_cb *irlmp_find_lsap(struct lap_cb *self, __u8 dlsap_sel,
(
lsap
->
dlsap_sel
==
dlsap_sel
))
{
#ifdef CONFIG_IRDA_CACHE_LAST_LSAP
irlmp_update_cache
(
lsap
);
irlmp_update_cache
(
self
,
lsap
);
#endif
return
lsap
;
}
...
...
net/irda/irnet/irnet.h
View file @
760a916d
...
...
@@ -409,8 +409,8 @@ typedef struct irnet_socket
/* ------------------------ IrTTP part ------------------------ */
/* We create a pseudo "socket" over the IrDA tranport */
int
ttp_open
;
/* Set when IrTTP is ready */
int
ttp_connect
;
/* Set when IrTTP is connecting */
unsigned
long
ttp_open
;
/* Set when IrTTP is ready */
unsigned
long
ttp_connect
;
/* Set when IrTTP is connecting */
struct
tsap_cb
*
tsap
;
/* IrTTP instance (the connection) */
char
rname
[
NICKNAME_MAX_LEN
+
1
];
...
...
net/irda/irnet/irnet_ppp.c
View file @
760a916d
...
...
@@ -860,7 +860,7 @@ ppp_irnet_send(struct ppp_channel * chan,
irda_irnet_connect
(
self
);
#endif
/* CONNECT_IN_SEND */
DEBUG
(
PPP_INFO
,
"IrTTP not ready ! (%
d-%
d)
\n
"
,
DEBUG
(
PPP_INFO
,
"IrTTP not ready ! (%
ld-%l
d)
\n
"
,
self
->
ttp_open
,
self
->
ttp_connect
);
/* Note : we can either drop the packet or block the packet.
...
...
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