mirror of
https://github.com/Fishwaldo/Star64_linux.git
synced 2025-06-21 06:01:23 +00:00
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>
This commit is contained in:
parent
6d5a681dfb
commit
fec1a5932f
6 changed files with 100 additions and 122 deletions
|
@ -30,6 +30,7 @@
|
|||
#include <linux/device.h>
|
||||
#include <linux/mutex.h>
|
||||
#include <linux/timer.h>
|
||||
#include <linux/wait.h>
|
||||
#include <linux/workqueue.h>
|
||||
#include <linux/uwb/spec.h>
|
||||
|
||||
|
@ -86,6 +87,22 @@ struct uwb_notifs_chain {
|
|||
struct mutex mutex;
|
||||
};
|
||||
|
||||
/* Beacon cache list */
|
||||
struct uwb_beca {
|
||||
struct list_head list;
|
||||
size_t entries;
|
||||
struct mutex mutex;
|
||||
};
|
||||
|
||||
/* Event handling thread. */
|
||||
struct uwbd {
|
||||
int pid;
|
||||
struct task_struct *task;
|
||||
wait_queue_head_t wq;
|
||||
struct list_head event_list;
|
||||
spinlock_t event_list_lock;
|
||||
};
|
||||
|
||||
/**
|
||||
* struct uwb_mas_bm - a bitmap of all MAS in a superframe
|
||||
* @bm: a bitmap of length #UWB_NUM_MAS
|
||||
|
@ -342,6 +359,9 @@ struct uwb_rc {
|
|||
enum uwb_scan_type scan_type:3;
|
||||
unsigned ready:1;
|
||||
struct uwb_notifs_chain notifs_chain;
|
||||
struct uwb_beca uwb_beca;
|
||||
|
||||
struct uwbd uwbd;
|
||||
|
||||
struct uwb_drp_avail drp_avail;
|
||||
struct list_head reservations;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue