mirror of https://gitee.com/openkylin/linux.git
Bluetooth: AMP: Use set_bit / test_bit for amp_mgr state
Using bit operations solves problems with multiple requests and clearing state. 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
cbf54ad104
commit
cb6801c640
|
@ -34,7 +34,7 @@ struct amp_mgr {
|
|||
struct kref kref;
|
||||
__u8 ident;
|
||||
__u8 handle;
|
||||
enum amp_mgr_state state;
|
||||
unsigned long state;
|
||||
unsigned long flags;
|
||||
|
||||
struct list_head amp_ctrls;
|
||||
|
|
|
@ -290,7 +290,7 @@ static int a2mp_getinfo_req(struct amp_mgr *mgr, struct sk_buff *skb,
|
|||
goto done;
|
||||
}
|
||||
|
||||
mgr->state = READ_LOC_AMP_INFO;
|
||||
set_bit(READ_LOC_AMP_INFO, &mgr->state);
|
||||
hci_send_cmd(hdev, HCI_OP_READ_LOCAL_AMP_INFO, 0, NULL);
|
||||
|
||||
done:
|
||||
|
@ -506,7 +506,7 @@ static int a2mp_createphyslink_req(struct amp_mgr *mgr, struct sk_buff *skb,
|
|||
a2mp_send(mgr, A2MP_CREATEPHYSLINK_RSP, hdr->ident,
|
||||
sizeof(rsp), &rsp);
|
||||
} else {
|
||||
mgr->state = WRITE_REMOTE_AMP_ASSOC;
|
||||
set_bit(WRITE_REMOTE_AMP_ASSOC, &mgr->state);
|
||||
mgr->ident = hdr->ident;
|
||||
}
|
||||
|
||||
|
@ -848,7 +848,7 @@ struct amp_mgr *amp_mgr_lookup_by_state(u8 state)
|
|||
|
||||
mutex_lock(&_mgr_list_lock);
|
||||
list_for_each_entry(mgr, &_mgr_list, list) {
|
||||
if (mgr->state == state) {
|
||||
if (test_and_clear_bit(state, &mgr->state)) {
|
||||
amp_mgr_get(mgr);
|
||||
mutex_unlock(&_mgr_list_lock);
|
||||
return mgr;
|
||||
|
|
|
@ -236,7 +236,7 @@ void amp_read_loc_assoc(struct hci_dev *hdev, struct amp_mgr *mgr)
|
|||
|
||||
cp.max_len = cpu_to_le16(hdev->amp_assoc_size);
|
||||
|
||||
mgr->state = READ_LOC_AMP_ASSOC;
|
||||
set_bit(READ_LOC_AMP_ASSOC, &mgr->state);
|
||||
hci_send_cmd(hdev, HCI_OP_READ_LOCAL_AMP_ASSOC, sizeof(cp), &cp);
|
||||
}
|
||||
|
||||
|
@ -250,7 +250,7 @@ void amp_read_loc_assoc_final_data(struct hci_dev *hdev,
|
|||
cp.len_so_far = cpu_to_le16(0);
|
||||
cp.max_len = cpu_to_le16(hdev->amp_assoc_size);
|
||||
|
||||
mgr->state = READ_LOC_AMP_ASSOC_FINAL;
|
||||
set_bit(READ_LOC_AMP_ASSOC_FINAL, &mgr->state);
|
||||
|
||||
/* Read Local AMP Assoc final link information data */
|
||||
hci_send_cmd(hdev, HCI_OP_READ_LOCAL_AMP_ASSOC, sizeof(cp), &cp);
|
||||
|
|
Loading…
Reference in New Issue