aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--include/net/bluetooth/mgmt.h7
-rw-r--r--net/bluetooth/mgmt.c12
2 files changed, 8 insertions, 11 deletions
diff --git a/include/net/bluetooth/mgmt.h b/include/net/bluetooth/mgmt.h
index 85e9c6e9d22..bf217ccb86b 100644
--- a/include/net/bluetooth/mgmt.h
+++ b/include/net/bluetooth/mgmt.h
@@ -100,6 +100,8 @@ struct mgmt_cp_set_discoverable {
100 100
101#define MGMT_OP_SET_CONNECTABLE 0x0007 101#define MGMT_OP_SET_CONNECTABLE 0x0007
102 102
103#define MGMT_OP_SET_FAST_CONNECTABLE 0x001F
104
103#define MGMT_OP_SET_PAIRABLE 0x0008 105#define MGMT_OP_SET_PAIRABLE 0x0008
104 106
105#define MGMT_OP_ADD_UUID 0x0009 107#define MGMT_OP_ADD_UUID 0x0009
@@ -255,11 +257,6 @@ struct mgmt_cp_unblock_device {
255 bdaddr_t bdaddr; 257 bdaddr_t bdaddr;
256} __packed; 258} __packed;
257 259
258#define MGMT_OP_SET_FAST_CONNECTABLE 0x001F
259struct mgmt_cp_set_fast_connectable {
260 __u8 enable;
261} __packed;
262
263#define MGMT_OP_USER_PASSKEY_REPLY 0x0020 260#define MGMT_OP_USER_PASSKEY_REPLY 0x0020
264struct mgmt_cp_user_passkey_reply { 261struct mgmt_cp_user_passkey_reply {
265 bdaddr_t bdaddr; 262 bdaddr_t bdaddr;
diff --git a/net/bluetooth/mgmt.c b/net/bluetooth/mgmt.c
index 087cf00a443..34e48101339 100644
--- a/net/bluetooth/mgmt.c
+++ b/net/bluetooth/mgmt.c
@@ -2052,7 +2052,7 @@ static int set_fast_connectable(struct sock *sk, u16 index,
2052 unsigned char *data, u16 len) 2052 unsigned char *data, u16 len)
2053{ 2053{
2054 struct hci_dev *hdev; 2054 struct hci_dev *hdev;
2055 struct mgmt_cp_set_fast_connectable *cp = (void *) data; 2055 struct mgmt_mode *cp = (void *) data;
2056 struct hci_cp_write_page_scan_activity acp; 2056 struct hci_cp_write_page_scan_activity acp;
2057 u8 type; 2057 u8 type;
2058 int err; 2058 int err;
@@ -2070,7 +2070,7 @@ static int set_fast_connectable(struct sock *sk, u16 index,
2070 2070
2071 hci_dev_lock(hdev); 2071 hci_dev_lock(hdev);
2072 2072
2073 if (cp->enable) { 2073 if (cp->val) {
2074 type = PAGE_SCAN_TYPE_INTERLACED; 2074 type = PAGE_SCAN_TYPE_INTERLACED;
2075 acp.interval = 0x0024; /* 22.5 msec page scan interval */ 2075 acp.interval = 0x0024; /* 22.5 msec page scan interval */
2076 } else { 2076 } else {
@@ -2154,6 +2154,10 @@ int mgmt_control(struct sock *sk, struct msghdr *msg, size_t msglen)
2154 case MGMT_OP_SET_CONNECTABLE: 2154 case MGMT_OP_SET_CONNECTABLE:
2155 err = set_connectable(sk, index, buf + sizeof(*hdr), len); 2155 err = set_connectable(sk, index, buf + sizeof(*hdr), len);
2156 break; 2156 break;
2157 case MGMT_OP_SET_FAST_CONNECTABLE:
2158 err = set_fast_connectable(sk, index, buf + sizeof(*hdr),
2159 len);
2160 break;
2157 case MGMT_OP_SET_PAIRABLE: 2161 case MGMT_OP_SET_PAIRABLE:
2158 err = set_pairable(sk, index, buf + sizeof(*hdr), len); 2162 err = set_pairable(sk, index, buf + sizeof(*hdr), len);
2159 break; 2163 break;
@@ -2232,10 +2236,6 @@ int mgmt_control(struct sock *sk, struct msghdr *msg, size_t msglen)
2232 case MGMT_OP_UNBLOCK_DEVICE: 2236 case MGMT_OP_UNBLOCK_DEVICE:
2233 err = unblock_device(sk, index, buf + sizeof(*hdr), len); 2237 err = unblock_device(sk, index, buf + sizeof(*hdr), len);
2234 break; 2238 break;
2235 case MGMT_OP_SET_FAST_CONNECTABLE:
2236 err = set_fast_connectable(sk, index, buf + sizeof(*hdr),
2237 len);
2238 break;
2239 default: 2239 default:
2240 BT_DBG("Unknown op %u", opcode); 2240 BT_DBG("Unknown op %u", opcode);
2241 err = cmd_status(sk, index, opcode, 2241 err = cmd_status(sk, index, opcode,