Commit ece69126 authored by Marcel Holtmann's avatar Marcel Holtmann Committed by Johan Hedberg

Bluetooth: Separate AMP controller type from HCI device type

There are two defined HCI device types. One is for BR/EDR controllers
and the other is for AMP controllers. The HCI device type is not the
same as the AMP controller type. It just happens that currently the
defined types match, but that is not guaranteed.

Split the usage of AMP controller type into its own domain so that
it is possible to separate between BR/EDR controllers, 802.11 AMP
controllers and any other AMP technology that might be defined in
the future.
Signed-off-by: default avatarMarcel Holtmann <marcel@holtmann.org>
Signed-off-by: default avatarJohan Hedberg <johan.hedberg@intel.com>
parent 7c13823d
...@@ -803,7 +803,7 @@ static inline bool hci_amp_capable(void) ...@@ -803,7 +803,7 @@ static inline bool hci_amp_capable(void)
read_lock(&hci_dev_list_lock); read_lock(&hci_dev_list_lock);
list_for_each_entry(hdev, &hci_dev_list, list) list_for_each_entry(hdev, &hci_dev_list, list)
if (hdev->amp_type == HCI_AMP && if (hdev->amp_type != AMP_TYPE_BREDR &&
test_bit(HCI_UP, &hdev->flags)) test_bit(HCI_UP, &hdev->flags))
ret = true; ret = true;
read_unlock(&hci_dev_list_lock); read_unlock(&hci_dev_list_lock);
......
...@@ -78,7 +78,7 @@ u8 __next_ident(struct amp_mgr *mgr) ...@@ -78,7 +78,7 @@ u8 __next_ident(struct amp_mgr *mgr)
static inline void __a2mp_cl_bredr(struct a2mp_cl *cl) static inline void __a2mp_cl_bredr(struct a2mp_cl *cl)
{ {
cl->id = 0; cl->id = 0;
cl->type = 0; cl->type = AMP_TYPE_BREDR;
cl->status = 1; cl->status = 1;
} }
...@@ -352,7 +352,7 @@ static int a2mp_getampassoc_req(struct amp_mgr *mgr, struct sk_buff *skb, ...@@ -352,7 +352,7 @@ static int a2mp_getampassoc_req(struct amp_mgr *mgr, struct sk_buff *skb,
tmp = amp_mgr_lookup_by_state(READ_LOC_AMP_ASSOC); tmp = amp_mgr_lookup_by_state(READ_LOC_AMP_ASSOC);
hdev = hci_dev_get(req->id); hdev = hci_dev_get(req->id);
if (!hdev || hdev->amp_type == HCI_BREDR || tmp) { if (!hdev || hdev->amp_type == AMP_TYPE_BREDR || tmp) {
struct a2mp_amp_assoc_rsp rsp; struct a2mp_amp_assoc_rsp rsp;
rsp.id = req->id; rsp.id = req->id;
...@@ -459,7 +459,7 @@ static int a2mp_createphyslink_req(struct amp_mgr *mgr, struct sk_buff *skb, ...@@ -459,7 +459,7 @@ static int a2mp_createphyslink_req(struct amp_mgr *mgr, struct sk_buff *skb,
rsp.remote_id = req->local_id; rsp.remote_id = req->local_id;
hdev = hci_dev_get(req->remote_id); hdev = hci_dev_get(req->remote_id);
if (!hdev || hdev->amp_type != HCI_AMP) { if (!hdev || hdev->amp_type == AMP_TYPE_BREDR) {
rsp.status = A2MP_STATUS_INVALID_CTRL_ID; rsp.status = A2MP_STATUS_INVALID_CTRL_ID;
goto send_rsp; goto send_rsp;
} }
...@@ -879,7 +879,7 @@ void a2mp_send_getinfo_rsp(struct hci_dev *hdev) ...@@ -879,7 +879,7 @@ void a2mp_send_getinfo_rsp(struct hci_dev *hdev)
rsp.id = hdev->id; rsp.id = hdev->id;
rsp.status = A2MP_STATUS_INVALID_CTRL_ID; rsp.status = A2MP_STATUS_INVALID_CTRL_ID;
if (hdev->amp_type != HCI_BREDR) { if (hdev->amp_type != AMP_TYPE_BREDR) {
rsp.status = 0; rsp.status = 0;
rsp.total_bw = cpu_to_le32(hdev->amp_total_bw); rsp.total_bw = cpu_to_le32(hdev->amp_total_bw);
rsp.max_bw = cpu_to_le32(hdev->amp_max_bw); rsp.max_bw = cpu_to_le32(hdev->amp_max_bw);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment