diff options
author | Stefano Panella <stefano.panella@csr.com> | 2008-11-04 10:39:08 -0500 |
---|---|---|
committer | David Vrabel <david.vrabel@csr.com> | 2008-11-04 10:55:26 -0500 |
commit | fec1a5932f16c0eb1b3f5ca2e18d81d860924088 (patch) | |
tree | 48836158dbd458bb462b18f4deffa89e9db80376 /include/linux/uwb.h | |
parent | 6d5a681dfb583b2f1eefe7cd5505419ca2d4d6c8 (diff) |
uwb: per-radio controller event thread and beacon cache
Use an event thread per-radio controller so processing events from one
radio controller doesn't delay another.
A radio controller shouldn't have information on devices seen by a
different radio controller (they may be on different channels) so make the
beacon cache per-radio controller.
Signed-off-by: Stefano Panella <stefano.panella@csr.com>
Signed-off-by: David Vrabel <david.vrabel@csr.com>
Diffstat (limited to 'include/linux/uwb.h')
-rw-r--r-- | include/linux/uwb.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/uwb.h b/include/linux/uwb.h index 6d93f54b8879..881f0c5b6d28 100644 --- a/include/linux/uwb.h +++ b/include/linux/uwb.h | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <linux/device.h> | 30 | #include <linux/device.h> |
31 | #include <linux/mutex.h> | 31 | #include <linux/mutex.h> |
32 | #include <linux/timer.h> | 32 | #include <linux/timer.h> |
33 | #include <linux/wait.h> | ||
33 | #include <linux/workqueue.h> | 34 | #include <linux/workqueue.h> |
34 | #include <linux/uwb/spec.h> | 35 | #include <linux/uwb/spec.h> |
35 | 36 | ||
@@ -86,6 +87,22 @@ struct uwb_notifs_chain { | |||
86 | struct mutex mutex; | 87 | struct mutex mutex; |
87 | }; | 88 | }; |
88 | 89 | ||
90 | /* Beacon cache list */ | ||
91 | struct uwb_beca { | ||
92 | struct list_head list; | ||
93 | size_t entries; | ||
94 | struct mutex mutex; | ||
95 | }; | ||
96 | |||
97 | /* Event handling thread. */ | ||
98 | struct uwbd { | ||
99 | int pid; | ||
100 | struct task_struct *task; | ||
101 | wait_queue_head_t wq; | ||
102 | struct list_head event_list; | ||
103 | spinlock_t event_list_lock; | ||
104 | }; | ||
105 | |||
89 | /** | 106 | /** |
90 | * struct uwb_mas_bm - a bitmap of all MAS in a superframe | 107 | * struct uwb_mas_bm - a bitmap of all MAS in a superframe |
91 | * @bm: a bitmap of length #UWB_NUM_MAS | 108 | * @bm: a bitmap of length #UWB_NUM_MAS |
@@ -342,6 +359,9 @@ struct uwb_rc { | |||
342 | enum uwb_scan_type scan_type:3; | 359 | enum uwb_scan_type scan_type:3; |
343 | unsigned ready:1; | 360 | unsigned ready:1; |
344 | struct uwb_notifs_chain notifs_chain; | 361 | struct uwb_notifs_chain notifs_chain; |
362 | struct uwb_beca uwb_beca; | ||
363 | |||
364 | struct uwbd uwbd; | ||
345 | 365 | ||
346 | struct uwb_drp_avail drp_avail; | 366 | struct uwb_drp_avail drp_avail; |
347 | struct list_head reservations; | 367 | struct list_head reservations; |