Bluetooth: Fix command complete/status for discovery commands
Subsystems (2)
PATCH 1/1 Bluetooth: Fix command complete/status for discovery commands
From: Johan Hedberg <[email protected]>
This patch adds the necessary code to send proper command status or command complete events to the start/stop discovery management commands. Before this patch these events were completely missing.
Signed-off-by Johan Hedberg <[email protected]>
--- include/net/bluetooth/hci_core.h | 1 + net/bluetooth/hci_event.c | 2 ++ net/bluetooth/mgmt.c | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 0 deletions(-)
include/net/bluetooth/hci_core.h +1 -0
@@ -884,6 +884,7 @@ int mgmt_read_local_oob_data_reply_complete(u16 index, u8 *hash, u8 *randomizer,int mgmt_device_found (u16 index,bdaddr_t *bdaddr,u8 *dev_class,s8 rssi,u8 *eir);int mgmt_remote_name (u16 index,bdaddr_t *bdaddr,u8 *name); +int mgmt_inquiry_failed (u16 index,u8 status);int mgmt_discovering (u16 index,u8 discovering);int mgmt_device_blocked (u16 index,bdaddr_t *bdaddr);int mgmt_device_unblocked (u16 index,bdaddr_t *bdaddr);
net/bluetooth/hci_event.c +2 -0
@@ -979,6 +979,8 @@ static inline void hci_cs_inquiry(struct hci_dev *hdev, __u8 status)if (status) {hci_req_complete (hdev,HCI_OP_INQUIRY , status);hci_conn_check_pending (hdev); +if (test_bit (HCI_MGMT , &hdev->flags)) +mgmt_inquiry_failed (hdev->id, status);return ; }
net/bluetooth/mgmt.c +27 -0
@@ -2349,8 +2349,35 @@ int mgmt_remote_name(u16 index, bdaddr_t *bdaddr, u8 *name)return mgmt_event (MGMT_EV_REMOTE_NAME , index, &ev,sizeof (ev),NULL ); } +int mgmt_inquiry_failed (u16 index,u8 status) +{ +struct pending_cmd *cmd; +int err; + + cmd =mgmt_pending_find (MGMT_OP_START_DISCOVERY , index); +if (!cmd) +return -ENOENT ; + + err =cmd_status (cmd->sk, index, cmd->opcode, status); +mgmt_pending_remove (cmd); + +return err; +} +int mgmt_discovering (u16 index,u8 discovering) { +struct pending_cmd *cmd; + +if (discovering) + cmd =mgmt_pending_find (MGMT_OP_START_DISCOVERY , index); +else + cmd =mgmt_pending_find (MGMT_OP_STOP_DISCOVERY , index); + +if (cmd !=NULL ) { +cmd_complete (cmd->sk, index, cmd->opcode,NULL ,0 ); +mgmt_pending_remove (cmd); + } +return mgmt_event (MGMT_EV_DISCOVERING , index, &discovering,sizeof (discovering),NULL ); }
Signature · 1 line
1.7.7
Hi Johan,
Quoted 6 lines · * [email protected] <[email protected]> [2011-11-01 17:06:44 +0200]:
From: Johan Hedberg <[email protected]>
This patch adds the necessary code to send proper command status or command complete events to the start/stop discovery management commands. Before this patch these events were completely missing.
Quoted 6 lines
Signed-off-by Johan Hedberg <[email protected]>--- include/net/bluetooth/hci_core.h | 1 + net/bluetooth/hci_event.c | 2 ++ net/bluetooth/mgmt.c | 27 +++++++++++++++++++++++++++ 3 files changed, 30 insertions(+), 0 deletions(-)
Patch was applied, thanks.
Gustavo