Bluetooth: AMP: Check that AMP is present and active
Before starting quering remote AMP controllers make sure that there is local active AMP controller. Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@intel.com> Signed-off-by: Gustavo Padovan <gustavo.padovan@collabora.co.uk>
This commit is contained in:
parent
ced5c338d7
commit
5d05416e09
2 changed files with 17 additions and 0 deletions
|
@ -779,6 +779,22 @@ void hci_conn_del_sysfs(struct hci_conn *conn);
|
|||
#define lmp_host_le_capable(dev) !!((dev)->host_features[0] & LMP_HOST_LE)
|
||||
#define lmp_host_le_br_capable(dev) !!((dev)->host_features[0] & LMP_HOST_LE_BREDR)
|
||||
|
||||
/* returns true if at least one AMP active */
|
||||
static inline bool hci_amp_capable(void)
|
||||
{
|
||||
struct hci_dev *hdev;
|
||||
bool ret = false;
|
||||
|
||||
read_lock(&hci_dev_list_lock);
|
||||
list_for_each_entry(hdev, &hci_dev_list, list)
|
||||
if (hdev->amp_type == HCI_AMP &&
|
||||
test_bit(HCI_UP, &hdev->flags))
|
||||
ret = true;
|
||||
read_unlock(&hci_dev_list_lock);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
/* ----- HCI protocols ----- */
|
||||
#define HCI_PROTO_DEFER 0x01
|
||||
|
||||
|
|
|
@ -1013,6 +1013,7 @@ static bool __amp_capable(struct l2cap_chan *chan)
|
|||
struct l2cap_conn *conn = chan->conn;
|
||||
|
||||
if (enable_hs &&
|
||||
hci_amp_capable() &&
|
||||
chan->chan_policy == BT_CHANNEL_POLICY_AMP_PREFERRED &&
|
||||
conn->fixed_chan_mask & L2CAP_FC_A2MP)
|
||||
return true;
|
||||
|
|
Loading…
Reference in a new issue