Bluetooth: Add hci_conn_lookup_type() helper function
Some drivers require knowledge of what connection handle is assigned to what connection link type (ACL or SCO/eSCO). Instead of having each driver implement connection tracking, provide a simple helper function for lookup of the link type. Signed-off-by: Marcel Holtmann <marcel@holtmann.org> Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
This commit is contained in:
committed by
Johan Hedberg
parent
2cbd3f5ccd
commit
845472e8d5
@@ -274,6 +274,7 @@ enum {
|
|||||||
/* Low Energy links do not have defined link type. Use invented one */
|
/* Low Energy links do not have defined link type. Use invented one */
|
||||||
#define LE_LINK 0x80
|
#define LE_LINK 0x80
|
||||||
#define AMP_LINK 0x81
|
#define AMP_LINK 0x81
|
||||||
|
#define INVALID_LINK 0xff
|
||||||
|
|
||||||
/* LMP features */
|
/* LMP features */
|
||||||
#define LMP_3SLOT 0x01
|
#define LMP_3SLOT 0x01
|
||||||
|
|||||||
@@ -646,6 +646,26 @@ static inline unsigned int hci_conn_count(struct hci_dev *hdev)
|
|||||||
return c->acl_num + c->amp_num + c->sco_num + c->le_num;
|
return c->acl_num + c->amp_num + c->sco_num + c->le_num;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline __u8 hci_conn_lookup_type(struct hci_dev *hdev, __u16 handle)
|
||||||
|
{
|
||||||
|
struct hci_conn_hash *h = &hdev->conn_hash;
|
||||||
|
struct hci_conn *c;
|
||||||
|
__u8 type = INVALID_LINK;
|
||||||
|
|
||||||
|
rcu_read_lock();
|
||||||
|
|
||||||
|
list_for_each_entry_rcu(c, &h->list, list) {
|
||||||
|
if (c->handle == handle) {
|
||||||
|
type = c->type;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
rcu_read_unlock();
|
||||||
|
|
||||||
|
return type;
|
||||||
|
}
|
||||||
|
|
||||||
static inline struct hci_conn *hci_conn_hash_lookup_handle(struct hci_dev *hdev,
|
static inline struct hci_conn *hci_conn_hash_lookup_handle(struct hci_dev *hdev,
|
||||||
__u16 handle)
|
__u16 handle)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user