diff options
author | Johan Hedberg <johan.hedberg@intel.com> | 2014-09-24 06:14:46 -0400 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2014-09-24 08:03:32 -0400 |
commit | d41c15cf95bd91b9c333f6f749670e22c8a47ad9 (patch) | |
tree | 15d9e261f3f7699e723d933812683938de6c8eaa | |
parent | 2b0bf6c85a4940e00516f68ff7103329abf8512d (diff) |
Bluetooth: Fix reason code used for rejecting SCO connections
The core specification defines valid values for the
HCI_Reject_Synchronous_Connection_Request command to be 0x0D-0x0F. So
far the code has been using HCI_ERROR_REMOTE_USER_TERM (0x13) which is
not a valid value and is therefore being rejected by some controllers:
> HCI Event: Connect Request (0x04) plen 10
bdaddr 40:6F:2A:6A:E5:E0 class 0x000000 type eSCO
< HCI Command: Reject Synchronous Connection (0x01|0x002a) plen 7
bdaddr 40:6F:2A:6A:E5:E0 reason 0x13
Reason: Remote User Terminated Connection
> HCI Event: Command Status (0x0f) plen 4
Reject Synchronous Connection (0x01|0x002a) status 0x12 ncmd 1
Error: Invalid HCI Command Parameters
This patch introduces a new define for a value from the valid range
(0x0d == Connection Rejected Due To Limited Resources) and uses it
instead for rejecting incoming connections.
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
-rw-r--r-- | include/net/bluetooth/hci.h | 1 | ||||
-rw-r--r-- | net/bluetooth/hci_conn.c | 2 |
2 files changed, 2 insertions, 1 deletions
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index 3f8547f1c6f8..6e8f24967308 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -385,6 +385,7 @@ enum { | |||
385 | #define HCI_ERROR_AUTH_FAILURE 0x05 | 385 | #define HCI_ERROR_AUTH_FAILURE 0x05 |
386 | #define HCI_ERROR_MEMORY_EXCEEDED 0x07 | 386 | #define HCI_ERROR_MEMORY_EXCEEDED 0x07 |
387 | #define HCI_ERROR_CONNECTION_TIMEOUT 0x08 | 387 | #define HCI_ERROR_CONNECTION_TIMEOUT 0x08 |
388 | #define HCI_ERROR_REJ_LIMITED_RESOURCES 0x0d | ||
388 | #define HCI_ERROR_REJ_BAD_ADDR 0x0f | 389 | #define HCI_ERROR_REJ_BAD_ADDR 0x0f |
389 | #define HCI_ERROR_REMOTE_USER_TERM 0x13 | 390 | #define HCI_ERROR_REMOTE_USER_TERM 0x13 |
390 | #define HCI_ERROR_REMOTE_LOW_RESOURCES 0x14 | 391 | #define HCI_ERROR_REMOTE_LOW_RESOURCES 0x14 |
diff --git a/net/bluetooth/hci_conn.c b/net/bluetooth/hci_conn.c index 22b253750f78..445829cd363c 100644 --- a/net/bluetooth/hci_conn.c +++ b/net/bluetooth/hci_conn.c | |||
@@ -121,7 +121,7 @@ static void hci_reject_sco(struct hci_conn *conn) | |||
121 | { | 121 | { |
122 | struct hci_cp_reject_sync_conn_req cp; | 122 | struct hci_cp_reject_sync_conn_req cp; |
123 | 123 | ||
124 | cp.reason = HCI_ERROR_REMOTE_USER_TERM; | 124 | cp.reason = HCI_ERROR_REJ_LIMITED_RESOURCES; |
125 | bacpy(&cp.bdaddr, &conn->dst); | 125 | bacpy(&cp.bdaddr, &conn->dst); |
126 | 126 | ||
127 | hci_send_cmd(conn->hdev, HCI_OP_REJECT_SYNC_CONN_REQ, sizeof(cp), &cp); | 127 | hci_send_cmd(conn->hdev, HCI_OP_REJECT_SYNC_CONN_REQ, sizeof(cp), &cp); |