diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-16 11:33:06 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-10-16 11:33:06 -0400 |
commit | 5206a79d7b217c139116fc6faef55d1c0e65c800 (patch) | |
tree | 334717cbd3ae9752351ec81acc088577142c8cab /include | |
parent | 29da7eb0ec69245c6e9b4eb5bdaa04af685f5c4f (diff) | |
parent | 3f5306927d800306ebba542438cfdf1a1c418376 (diff) |
Merge master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6
* master.kernel.org:/pub/scm/linux/kernel/git/davem/net-2.6: (25 commits)
[Bluetooth] Use work queue to trigger URB submission
[Bluetooth] Add locking for bt_proto array manipulation
[Bluetooth] Check if DLC is still attached to the TTY
[Bluetooth] Fix reference count when connection lookup fails
[Bluetooth] Disconnect HID interrupt channel first
[Bluetooth] Support concurrent connect requests
[Bluetooth] Make use of virtual devices tree
[Bluetooth] Handle return values from driver core functions
[Bluetooth] Fix compat ioctl for BNEP, CMTP and HIDP
[IPV6] sit: Add missing MODULE_LICENSE
[IPV6]: Remove bogus WARN_ON in Proxy-NA handling.
[IPv6] rules: Use RT6_LOOKUP_F_HAS_SADDR and fix source based selectors
[XFRM]: Fix xfrm_state_num going negative.
[NET]: reduce sizeof(struct inet_peer), cleanup, change in peer_check_expire()
NetLabel: the CIPSOv4 passthrough mapping does not pass categories correctly
NetLabel: better error handling involving mls_export_cat()
NetLabel: only deref the CIPSOv4 standard map fields when using standard mapping
[BRIDGE]: flush forwarding table when device carrier off
[NETFILTER]: ctnetlink: Remove debugging messages
[NETFILTER]: Update MAINTAINERS entry
...
Diffstat (limited to 'include')
-rw-r--r-- | include/net/bluetooth/hci_core.h | 17 | ||||
-rw-r--r-- | include/net/inetpeer.h | 17 |
2 files changed, 19 insertions, 15 deletions
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index df22efcfcc0b..c0fc39620f36 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -153,6 +153,7 @@ struct hci_conn { | |||
153 | __u8 mode; | 153 | __u8 mode; |
154 | __u8 type; | 154 | __u8 type; |
155 | __u8 out; | 155 | __u8 out; |
156 | __u8 attempt; | ||
156 | __u8 dev_class[3]; | 157 | __u8 dev_class[3]; |
157 | __u8 features[8]; | 158 | __u8 features[8]; |
158 | __u16 interval; | 159 | __u16 interval; |
@@ -289,6 +290,22 @@ static inline struct hci_conn *hci_conn_hash_lookup_ba(struct hci_dev *hdev, | |||
289 | return NULL; | 290 | return NULL; |
290 | } | 291 | } |
291 | 292 | ||
293 | static inline struct hci_conn *hci_conn_hash_lookup_state(struct hci_dev *hdev, | ||
294 | __u8 type, __u16 state) | ||
295 | { | ||
296 | struct hci_conn_hash *h = &hdev->conn_hash; | ||
297 | struct list_head *p; | ||
298 | struct hci_conn *c; | ||
299 | |||
300 | list_for_each(p, &h->list) { | ||
301 | c = list_entry(p, struct hci_conn, list); | ||
302 | if (c->type == type && c->state == state) | ||
303 | return c; | ||
304 | } | ||
305 | return NULL; | ||
306 | } | ||
307 | |||
308 | void hci_acl_connect(struct hci_conn *conn); | ||
292 | void hci_acl_disconn(struct hci_conn *conn, __u8 reason); | 309 | void hci_acl_disconn(struct hci_conn *conn, __u8 reason); |
293 | void hci_add_sco(struct hci_conn *conn, __u16 handle); | 310 | void hci_add_sco(struct hci_conn *conn, __u16 handle); |
294 | 311 | ||
diff --git a/include/net/inetpeer.h b/include/net/inetpeer.h index 925573fd2aed..f13cc0c2b163 100644 --- a/include/net/inetpeer.h +++ b/include/net/inetpeer.h | |||
@@ -19,7 +19,7 @@ struct inet_peer | |||
19 | { | 19 | { |
20 | struct inet_peer *avl_left, *avl_right; | 20 | struct inet_peer *avl_left, *avl_right; |
21 | struct inet_peer *unused_next, **unused_prevp; | 21 | struct inet_peer *unused_next, **unused_prevp; |
22 | unsigned long dtime; /* the time of last use of not | 22 | __u32 dtime; /* the time of last use of not |
23 | * referenced entries */ | 23 | * referenced entries */ |
24 | atomic_t refcnt; | 24 | atomic_t refcnt; |
25 | __be32 v4daddr; /* peer's address */ | 25 | __be32 v4daddr; /* peer's address */ |
@@ -35,21 +35,8 @@ void inet_initpeers(void) __init; | |||
35 | /* can be called with or without local BH being disabled */ | 35 | /* can be called with or without local BH being disabled */ |
36 | struct inet_peer *inet_getpeer(__be32 daddr, int create); | 36 | struct inet_peer *inet_getpeer(__be32 daddr, int create); |
37 | 37 | ||
38 | extern spinlock_t inet_peer_unused_lock; | ||
39 | extern struct inet_peer **inet_peer_unused_tailp; | ||
40 | /* can be called from BH context or outside */ | 38 | /* can be called from BH context or outside */ |
41 | static inline void inet_putpeer(struct inet_peer *p) | 39 | extern void inet_putpeer(struct inet_peer *p); |
42 | { | ||
43 | spin_lock_bh(&inet_peer_unused_lock); | ||
44 | if (atomic_dec_and_test(&p->refcnt)) { | ||
45 | p->unused_prevp = inet_peer_unused_tailp; | ||
46 | p->unused_next = NULL; | ||
47 | *inet_peer_unused_tailp = p; | ||
48 | inet_peer_unused_tailp = &p->unused_next; | ||
49 | p->dtime = jiffies; | ||
50 | } | ||
51 | spin_unlock_bh(&inet_peer_unused_lock); | ||
52 | } | ||
53 | 40 | ||
54 | extern spinlock_t inet_peer_idlock; | 41 | extern spinlock_t inet_peer_idlock; |
55 | /* can be called with or without local BH being disabled */ | 42 | /* can be called with or without local BH being disabled */ |