aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/uwb/uwb-internal.h
diff options
context:
space:
mode:
authorStefano Panella <stefano.panella@csr.com>2008-11-04 10:39:08 -0500
committerDavid Vrabel <david.vrabel@csr.com>2008-11-04 10:55:26 -0500
commitfec1a5932f16c0eb1b3f5ca2e18d81d860924088 (patch)
tree48836158dbd458bb462b18f4deffa89e9db80376 /drivers/uwb/uwb-internal.h
parent6d5a681dfb583b2f1eefe7cd5505419ca2d4d6c8 (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 'drivers/uwb/uwb-internal.h')
-rw-r--r--drivers/uwb/uwb-internal.h20
1 files changed, 4 insertions, 16 deletions
diff --git a/drivers/uwb/uwb-internal.h b/drivers/uwb/uwb-internal.h
index 031e8a885681..4c2449679978 100644
--- a/drivers/uwb/uwb-internal.h
+++ b/drivers/uwb/uwb-internal.h
@@ -160,8 +160,8 @@ struct uwb_event {
160 }; 160 };
161}; 161};
162 162
163extern void uwbd_start(void); 163extern void uwbd_start(struct uwb_rc *rc);
164extern void uwbd_stop(void); 164extern void uwbd_stop(struct uwb_rc *rc);
165extern struct uwb_event *uwb_event_alloc(size_t, gfp_t gfp_mask); 165extern struct uwb_event *uwb_event_alloc(size_t, gfp_t gfp_mask);
166extern void uwbd_event_queue(struct uwb_event *); 166extern void uwbd_event_queue(struct uwb_event *);
167void uwbd_flush(struct uwb_rc *rc); 167void uwbd_flush(struct uwb_rc *rc);
@@ -194,15 +194,6 @@ int uwbd_evt_handle_rc_dev_addr_conflict(struct uwb_event *evt);
194 194
195extern unsigned long beacon_timeout_ms; 195extern unsigned long beacon_timeout_ms;
196 196
197/** Beacon cache list */
198struct uwb_beca {
199 struct list_head list;
200 size_t entries;
201 struct mutex mutex;
202};
203
204extern struct uwb_beca uwb_beca;
205
206/** 197/**
207 * Beacon cache entry 198 * Beacon cache entry
208 * 199 *
@@ -229,9 +220,6 @@ struct uwb_beca_e {
229struct uwb_beacon_frame; 220struct uwb_beacon_frame;
230extern ssize_t uwb_bce_print_IEs(struct uwb_dev *, struct uwb_beca_e *, 221extern ssize_t uwb_bce_print_IEs(struct uwb_dev *, struct uwb_beca_e *,
231 char *, size_t); 222 char *, size_t);
232extern struct uwb_beca_e *__uwb_beca_add(struct uwb_rc_evt_beacon *,
233 struct uwb_beacon_frame *,
234 unsigned long);
235 223
236extern void uwb_bce_kfree(struct kref *_bce); 224extern void uwb_bce_kfree(struct kref *_bce);
237static inline void uwb_bce_get(struct uwb_beca_e *bce) 225static inline void uwb_bce_get(struct uwb_beca_e *bce)
@@ -242,8 +230,8 @@ static inline void uwb_bce_put(struct uwb_beca_e *bce)
242{ 230{
243 kref_put(&bce->refcnt, uwb_bce_kfree); 231 kref_put(&bce->refcnt, uwb_bce_kfree);
244} 232}
245extern void uwb_beca_purge(void); 233extern void uwb_beca_purge(struct uwb_rc *rc);
246extern void uwb_beca_release(void); 234extern void uwb_beca_release(struct uwb_rc *rc);
247 235
248struct uwb_dev *uwb_dev_get_by_devaddr(struct uwb_rc *rc, 236struct uwb_dev *uwb_dev_get_by_devaddr(struct uwb_rc *rc,
249 const struct uwb_dev_addr *devaddr); 237 const struct uwb_dev_addr *devaddr);