2014-12-19 13:40:20 +02:00
/*
BlueZ - Bluetooth protocol stack for Linux
Copyright ( C ) 2014 Intel Corporation
This program is free software ; you can redistribute it and / or modify
it under the terms of the GNU General Public License version 2 as
published by the Free Software Foundation ;
THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS
OR IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS .
IN NO EVENT SHALL THE COPYRIGHT HOLDER ( S ) AND AUTHOR ( S ) BE LIABLE FOR ANY
CLAIM , OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES , OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE , DATA OR PROFITS , WHETHER IN AN
ACTION OF CONTRACT , NEGLIGENCE OR OTHER TORTIOUS ACTION , ARISING OUT OF
OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE .
ALL LIABILITY , INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS ,
COPYRIGHTS , TRADEMARKS OR OTHER RIGHTS , RELATING TO USE OF THIS
SOFTWARE IS DISCLAIMED .
*/
2016-10-05 12:28:27 +02:00
# include <asm/unaligned.h>
Bluetooth: hci_sync: Make use of hci_cmd_sync_queue set 1
This make use of hci_cmd_sync_queue for the following MGMT commands:
Set Device Class
Set Device ID
Add UUID
Remove UUID
tools/mgmt-tester -s "Set Device Class"
Test Summary
------------
Set Device Class - Success 1 Passed
Set Device Class - Success 2 Passed
Set Device Class - Invalid parameters 1 Passed
Total: 3, Passed: 3 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.0599 seconds
tools/mgmt-tester -s "Set Device ID"
Test Summary
------------
Set Device ID - Success 1 Passed
Set Device ID - Success 2 Passed
Set Device ID - Disable Passed
Set Device ID - Power off and Power on Passed
Set Device ID - SSP off and Power on Passed
Set Device ID - Invalid Parameter Passed
Total: 6, Passed: 6 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.107 seconds
tools/mgmt-tester -s "Add UUID"
Test Summary
------------
Add UUID - UUID-16 1 Passed
Add UUID - UUID-16 multiple 1 Passed
Add UUID - UUID-16 partial 1 Passed
Add UUID - UUID-32 1 Passed
Add UUID - UUID-32 multiple 1 Passed
Add UUID - UUID-32 partial 1 Passed
Add UUID - UUID-128 1 Passed
Add UUID - UUID-128 multiple 1 Passed
Add UUID - UUID-128 partial 1 Passed
Add UUID - UUID mix Passed
Total: 10, Passed: 10 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.198 seconds
tools/mgmt-tester -s "Remove UUID"
Test Summary
------------
Remove UUID - Success 1 Passed
Remove UUID - All UUID - Success 2 Passed
Remove UUID - Power Off - Success 3 Passed
Remove UUID - Power Off and On - Success 4 Passed
Remove UUID - Not Exist - Invalid Params 1 Passed
Total: 5, Passed: 5 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.0908 seconds
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
2021-10-27 16:58:39 -07:00
# define HCI_REQ_DONE 0
# define HCI_REQ_PEND 1
# define HCI_REQ_CANCELED 2
2015-11-10 09:44:55 +02:00
# define hci_req_sync_lock(hdev) mutex_lock(&hdev->req_lock)
# define hci_req_sync_unlock(hdev) mutex_unlock(&hdev->req_lock)
2015-11-10 09:44:54 +02:00
2021-10-27 16:58:38 -07:00
# define HCI_REQ_DONE 0
# define HCI_REQ_PEND 1
# define HCI_REQ_CANCELED 2
2014-12-19 13:40:20 +02:00
struct hci_request {
struct hci_dev * hdev ;
struct sk_buff_head cmd_q ;
/* If something goes wrong when building the HCI request, the error
* value is stored in this field .
*/
int err ;
} ;
void hci_req_init ( struct hci_request * req , struct hci_dev * hdev ) ;
2017-10-25 10:58:48 +05:30
void hci_req_purge ( struct hci_request * req ) ;
2019-05-02 10:01:52 +08:00
bool hci_req_status_pend ( struct hci_dev * hdev ) ;
2014-12-19 13:40:20 +02:00
int hci_req_run ( struct hci_request * req , hci_req_complete_t complete ) ;
2015-04-02 13:41:08 +03:00
int hci_req_run_skb ( struct hci_request * req , hci_req_complete_skb_t complete ) ;
Bluetooth: hci_sync: Make use of hci_cmd_sync_queue set 1
This make use of hci_cmd_sync_queue for the following MGMT commands:
Set Device Class
Set Device ID
Add UUID
Remove UUID
tools/mgmt-tester -s "Set Device Class"
Test Summary
------------
Set Device Class - Success 1 Passed
Set Device Class - Success 2 Passed
Set Device Class - Invalid parameters 1 Passed
Total: 3, Passed: 3 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.0599 seconds
tools/mgmt-tester -s "Set Device ID"
Test Summary
------------
Set Device ID - Success 1 Passed
Set Device ID - Success 2 Passed
Set Device ID - Disable Passed
Set Device ID - Power off and Power on Passed
Set Device ID - SSP off and Power on Passed
Set Device ID - Invalid Parameter Passed
Total: 6, Passed: 6 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.107 seconds
tools/mgmt-tester -s "Add UUID"
Test Summary
------------
Add UUID - UUID-16 1 Passed
Add UUID - UUID-16 multiple 1 Passed
Add UUID - UUID-16 partial 1 Passed
Add UUID - UUID-32 1 Passed
Add UUID - UUID-32 multiple 1 Passed
Add UUID - UUID-32 partial 1 Passed
Add UUID - UUID-128 1 Passed
Add UUID - UUID-128 multiple 1 Passed
Add UUID - UUID-128 partial 1 Passed
Add UUID - UUID mix Passed
Total: 10, Passed: 10 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.198 seconds
tools/mgmt-tester -s "Remove UUID"
Test Summary
------------
Remove UUID - Success 1 Passed
Remove UUID - All UUID - Success 2 Passed
Remove UUID - Power Off - Success 3 Passed
Remove UUID - Power Off and On - Success 4 Passed
Remove UUID - Not Exist - Invalid Params 1 Passed
Total: 5, Passed: 5 (100.0%), Failed: 0, Not Run: 0
Overall execution time: 0.0908 seconds
Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
2021-10-27 16:58:39 -07:00
void hci_req_sync_complete ( struct hci_dev * hdev , u8 result , u16 opcode ,
struct sk_buff * skb ) ;
2014-12-19 13:40:20 +02:00
void hci_req_add ( struct hci_request * req , u16 opcode , u32 plen ,
const void * param ) ;
void hci_req_add_ev ( struct hci_request * req , u16 opcode , u32 plen ,
const void * param , u8 event ) ;
2015-04-02 13:41:08 +03:00
void hci_req_cmd_complete ( struct hci_dev * hdev , u16 opcode , u8 status ,
hci_req_complete_t * req_complete ,
hci_req_complete_skb_t * req_complete_skb ) ;
2014-12-19 13:40:20 +02:00
2015-11-11 08:11:25 +02:00
int hci_req_sync ( struct hci_dev * hdev , int ( * req ) ( struct hci_request * req ,
unsigned long opt ) ,
2015-11-11 08:11:19 +02:00
unsigned long opt , u32 timeout , u8 * hci_status ) ;
2015-11-11 08:11:25 +02:00
int __hci_req_sync ( struct hci_dev * hdev , int ( * func ) ( struct hci_request * req ,
unsigned long opt ) ,
2015-11-11 08:11:19 +02:00
unsigned long opt , u32 timeout , u8 * hci_status ) ;
2015-11-10 09:44:54 +02:00
2014-12-19 13:40:20 +02:00
struct sk_buff * hci_prepare_cmd ( struct hci_dev * hdev , u16 opcode , u32 plen ,
const void * param ) ;
2020-07-23 18:09:01 +05:30
void hci_req_add_le_scan_disable ( struct hci_request * req , bool rpa_le_conn ) ;
2014-12-19 13:40:20 +02:00
void hci_req_add_le_passive_scan ( struct hci_request * req ) ;
2020-03-11 08:54:00 -07:00
void hci_req_prepare_suspend ( struct hci_dev * hdev , enum suspended_state next ) ;
2015-11-11 08:11:16 +02:00
void hci_request_setup ( struct hci_dev * hdev ) ;
void hci_request_cancel_all ( struct hci_dev * hdev ) ;