Lines Matching defs:cmd
958 struct mgmt_pending_cmd *cmd;
963 cmd = pending_find(MGMT_OP_SET_DISCOVERABLE, hdev);
964 if (cmd) {
965 struct mgmt_mode *cp = cmd->param;
982 struct mgmt_pending_cmd *cmd;
987 cmd = pending_find(MGMT_OP_SET_CONNECTABLE, hdev);
988 if (cmd) {
989 struct mgmt_mode *cp = cmd->param;
1329 struct mgmt_pending_cmd *cmd = data;
1332 /* Make sure cmd still outstanding. */
1333 if (cmd != pending_find(MGMT_OP_SET_POWERED, hdev))
1336 cp = cmd->param;
1348 send_settings_rsp(cmd->sk, cmd->opcode, hdev);
1354 new_settings(hdev, cmd->sk);
1356 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_POWERED,
1360 mgmt_pending_remove(cmd);
1365 struct mgmt_pending_cmd *cmd = data;
1366 struct mgmt_mode *cp = cmd->param;
1377 struct mgmt_pending_cmd *cmd;
1399 cmd = mgmt_pending_add(sk, MGMT_OP_SET_POWERED, hdev, data, len);
1400 if (!cmd) {
1408 err = hci_cmd_sync_queue(hdev, set_powered_sync, cmd,
1412 err = hci_cmd_sync_submit(hdev, set_powered_sync, cmd,
1417 mgmt_pending_remove(cmd);
1435 static void settings_rsp(struct mgmt_pending_cmd *cmd, void *data)
1439 send_settings_rsp(cmd->sk, cmd->opcode, match->hdev);
1441 list_del(&cmd->list);
1444 match->sk = cmd->sk;
1448 mgmt_pending_free(cmd);
1451 static void cmd_status_rsp(struct mgmt_pending_cmd *cmd, void *data)
1455 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, *status);
1456 mgmt_pending_remove(cmd);
1459 static void cmd_complete_rsp(struct mgmt_pending_cmd *cmd, void *data)
1461 if (cmd->cmd_complete) {
1464 cmd->cmd_complete(cmd, *status);
1465 mgmt_pending_remove(cmd);
1470 cmd_status_rsp(cmd, data);
1473 static int generic_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status)
1475 return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status,
1476 cmd->param, cmd->param_len);
1479 static int addr_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status)
1481 return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status,
1482 cmd->param, sizeof(struct mgmt_addr_info));
1508 struct mgmt_pending_cmd *cmd = data;
1512 /* Make sure cmd still outstanding. */
1513 if (cmd != pending_find(MGMT_OP_SET_DISCOVERABLE, hdev))
1520 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err);
1531 send_settings_rsp(cmd->sk, MGMT_OP_SET_DISCOVERABLE, hdev);
1532 new_settings(hdev, cmd->sk);
1535 mgmt_pending_remove(cmd);
1550 struct mgmt_pending_cmd *cmd;
1644 cmd = mgmt_pending_add(sk, MGMT_OP_SET_DISCOVERABLE, hdev, data, len);
1645 if (!cmd) {
1668 err = hci_cmd_sync_queue(hdev, set_discoverable_sync, cmd,
1672 mgmt_pending_remove(cmd);
1682 struct mgmt_pending_cmd *cmd = data;
1686 /* Make sure cmd still outstanding. */
1687 if (cmd != pending_find(MGMT_OP_SET_CONNECTABLE, hdev))
1694 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err);
1698 send_settings_rsp(cmd->sk, MGMT_OP_SET_CONNECTABLE, hdev);
1699 new_settings(hdev, cmd->sk);
1702 if (cmd)
1703 mgmt_pending_remove(cmd);
1748 struct mgmt_pending_cmd *cmd;
1776 cmd = mgmt_pending_add(sk, MGMT_OP_SET_CONNECTABLE, hdev, data, len);
1777 if (!cmd) {
1793 err = hci_cmd_sync_queue(hdev, set_connectable_sync, cmd,
1797 mgmt_pending_remove(cmd);
1846 struct mgmt_pending_cmd *cmd;
1894 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LINK_SECURITY, hdev, data, len);
1895 if (!cmd) {
1902 mgmt_pending_remove(cmd);
1914 struct mgmt_pending_cmd *cmd = data;
1915 struct mgmt_mode *cp = cmd->param;
1919 /* Make sure cmd still outstanding. */
1920 if (cmd != pending_find(MGMT_OP_SET_SSP, hdev))
1955 struct mgmt_pending_cmd *cmd = data;
1956 struct mgmt_mode *cp = cmd->param;
1974 struct mgmt_pending_cmd *cmd;
2026 cmd = mgmt_pending_add(sk, MGMT_OP_SET_SSP, hdev, data, len);
2027 if (!cmd)
2030 err = hci_cmd_sync_queue(hdev, set_ssp_sync, cmd,
2037 if (cmd)
2038 mgmt_pending_remove(cmd);
2077 struct mgmt_pending_cmd *cmd = data;
2078 struct mgmt_mode *cp = cmd->param;
2089 hci_remove_ext_adv_instance_sync(hdev, 0, cmd->sk);
2121 struct mgmt_pending_cmd *cmd = data;
2123 struct sock *sk = cmd->sk;
2131 mgmt_pending_remove(cmd);
2137 struct mgmt_pending_cmd *cmd = data;
2138 struct mgmt_cp_set_mesh *cp = cmd->param;
2139 size_t len = cmd->param_len;
2161 struct mgmt_pending_cmd *cmd;
2177 cmd = mgmt_pending_add(sk, MGMT_OP_SET_MESH_RECEIVER, hdev, data, len);
2178 if (!cmd)
2181 err = hci_cmd_sync_queue(hdev, set_mesh_sync, cmd,
2188 if (cmd)
2189 mgmt_pending_remove(cmd);
2310 struct mgmt_pending_cmd *cmd = data;
2311 struct mgmt_cp_mesh_send_cancel *cancel = (void *)cmd->param;
2316 mesh_tx = mgmt_mesh_next(hdev, cmd->sk);
2324 if (mesh_tx && mesh_tx->sk == cmd->sk)
2328 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_MESH_SEND_CANCEL,
2330 mgmt_pending_free(cmd);
2338 struct mgmt_pending_cmd *cmd;
2351 cmd = mgmt_pending_new(sk, MGMT_OP_MESH_SEND_CANCEL, hdev, data, len);
2352 if (!cmd)
2355 err = hci_cmd_sync_queue(hdev, send_cancel, cmd, NULL);
2361 if (cmd)
2362 mgmt_pending_free(cmd);
2433 struct mgmt_pending_cmd *cmd;
2499 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LE, hdev, data, len);
2500 if (!cmd)
2503 err = hci_cmd_sync_queue(hdev, set_le_sync, cmd,
2510 if (cmd)
2511 mgmt_pending_remove(cmd);
2527 struct mgmt_pending_cmd *cmd;
2529 list_for_each_entry(cmd, &hdev->mgmt_pending, list) {
2530 switch (cmd->opcode) {
2563 struct mgmt_pending_cmd *cmd = data;
2567 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode,
2570 mgmt_pending_free(cmd);
2587 struct mgmt_pending_cmd *cmd;
2613 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_UUID, hdev, data, len);
2614 if (!cmd) {
2619 err = hci_cmd_sync_queue(hdev, add_uuid_sync, cmd, mgmt_class_complete);
2621 mgmt_pending_free(cmd);
2659 struct mgmt_pending_cmd *cmd;
2707 cmd = mgmt_pending_new(sk, MGMT_OP_REMOVE_UUID, hdev, data, len);
2708 if (!cmd) {
2713 err = hci_cmd_sync_queue(hdev, remove_uuid_sync, cmd,
2716 mgmt_pending_free(cmd);
2742 struct mgmt_pending_cmd *cmd;
2774 cmd = mgmt_pending_new(sk, MGMT_OP_SET_DEV_CLASS, hdev, data, len);
2775 if (!cmd) {
2780 err = hci_cmd_sync_queue(hdev, set_class_sync, cmd,
2783 mgmt_pending_free(cmd);
2894 struct mgmt_pending_cmd *cmd = data;
2895 struct mgmt_cp_unpair_device *cp = cmd->param;
2898 device_unpaired(hdev, &cp->addr.bdaddr, cp->addr.type, cmd->sk);
2900 cmd->cmd_complete(cmd, err);
2901 mgmt_pending_free(cmd);
2906 struct mgmt_pending_cmd *cmd = data;
2907 struct mgmt_cp_unpair_device *cp = cmd->param;
2929 struct mgmt_pending_cmd *cmd;
3033 cmd = mgmt_pending_new(sk, MGMT_OP_UNPAIR_DEVICE, hdev, cp,
3035 if (!cmd) {
3040 cmd->cmd_complete = addr_cmd_complete;
3042 err = hci_cmd_sync_queue(hdev, unpair_device_sync, cmd,
3045 mgmt_pending_free(cmd);
3057 struct mgmt_pending_cmd *cmd;
3101 cmd = mgmt_pending_add(sk, MGMT_OP_DISCONNECT, hdev, data, len);
3102 if (!cmd) {
3107 cmd->cmd_complete = generic_cmd_complete;
3111 mgmt_pending_remove(cmd);
3195 struct mgmt_pending_cmd *cmd;
3198 cmd = mgmt_pending_add(sk, MGMT_OP_PIN_CODE_NEG_REPLY, hdev, cp,
3200 if (!cmd)
3203 cmd->cmd_complete = addr_cmd_complete;
3208 mgmt_pending_remove(cmd);
3219 struct mgmt_pending_cmd *cmd;
3254 cmd = mgmt_pending_add(sk, MGMT_OP_PIN_CODE_REPLY, hdev, data, len);
3255 if (!cmd) {
3260 cmd->cmd_complete = addr_cmd_complete;
3268 mgmt_pending_remove(cmd);
3301 struct mgmt_pending_cmd *cmd;
3303 list_for_each_entry(cmd, &hdev->mgmt_pending, list) {
3304 if (cmd->opcode != MGMT_OP_PAIR_DEVICE)
3307 if (cmd->user_data != conn)
3310 return cmd;
3316 static int pairing_complete(struct mgmt_pending_cmd *cmd, u8 status)
3319 struct hci_conn *conn = cmd->user_data;
3325 err = mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_PAIR_DEVICE,
3348 struct mgmt_pending_cmd *cmd;
3350 cmd = find_pairing(conn);
3351 if (cmd) {
3352 cmd->cmd_complete(cmd, status);
3353 mgmt_pending_remove(cmd);
3359 struct mgmt_pending_cmd *cmd;
3363 cmd = find_pairing(conn);
3364 if (!cmd) {
3369 cmd->cmd_complete(cmd, mgmt_status(status));
3370 mgmt_pending_remove(cmd);
3375 struct mgmt_pending_cmd *cmd;
3382 cmd = find_pairing(conn);
3383 if (!cmd) {
3388 cmd->cmd_complete(cmd, mgmt_status(status));
3389 mgmt_pending_remove(cmd);
3397 struct mgmt_pending_cmd *cmd;
3487 cmd = mgmt_pending_add(sk, MGMT_OP_PAIR_DEVICE, hdev, data, len);
3488 if (!cmd) {
3494 cmd->cmd_complete = pairing_complete;
3508 cmd->user_data = hci_conn_get(conn);
3512 cmd->cmd_complete(cmd, 0);
3513 mgmt_pending_remove(cmd);
3527 struct mgmt_pending_cmd *cmd;
3541 cmd = pending_find(MGMT_OP_PAIR_DEVICE, hdev);
3542 if (!cmd) {
3548 conn = cmd->user_data;
3556 cmd->cmd_complete(cmd, MGMT_STATUS_CANCELLED);
3557 mgmt_pending_remove(cmd);
3584 struct mgmt_pending_cmd *cmd;
3624 cmd = mgmt_pending_add(sk, mgmt_op, hdev, addr, sizeof(*addr));
3625 if (!cmd) {
3630 cmd->cmd_complete = addr_cmd_complete;
3644 mgmt_pending_remove(cmd);
3745 struct mgmt_pending_cmd *cmd = data;
3746 struct mgmt_cp_set_local_name *cp = cmd->param;
3751 if (cmd != pending_find(MGMT_OP_SET_LOCAL_NAME, hdev))
3755 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_LOCAL_NAME,
3758 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_SET_LOCAL_NAME, 0,
3765 mgmt_pending_remove(cmd);
3788 struct mgmt_pending_cmd *cmd;
3823 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LOCAL_NAME, hdev, data, len);
3824 if (!cmd)
3827 err = hci_cmd_sync_queue(hdev, set_name_sync, cmd,
3834 if (cmd)
3835 mgmt_pending_remove(cmd);
3922 struct mgmt_pending_cmd *cmd = data;
3923 struct sk_buff *skb = cmd->skb;
3926 if (cmd != pending_find(MGMT_OP_SET_PHY_CONFIGURATION, hdev))
3941 mgmt_cmd_status(cmd->sk, hdev->id,
3944 mgmt_cmd_complete(cmd->sk, hdev->id,
3948 mgmt_phy_configuration_changed(hdev, cmd->sk);
3954 mgmt_pending_remove(cmd);
3959 struct mgmt_pending_cmd *cmd = data;
3960 struct mgmt_cp_set_phy_configuration *cp = cmd->param;
3990 cmd->skb = __hci_cmd_sync(hdev, HCI_OP_LE_SET_DEFAULT_PHY,
4000 struct mgmt_pending_cmd *cmd;
4102 cmd = mgmt_pending_add(sk, MGMT_OP_SET_PHY_CONFIGURATION, hdev, data,
4104 if (!cmd)
4107 err = hci_cmd_sync_queue(hdev, set_default_phy_sync, cmd,
4115 if (cmd)
4116 mgmt_pending_remove(cmd);
5133 struct mgmt_pending_cmd *cmd;
5137 cmd = pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev);
5138 if (cmd) {
5139 cp = cmd->param;
5142 sk_skip = cmd->sk;
5203 struct mgmt_pending_cmd *cmd = data;
5204 struct adv_monitor *monitor = cmd->user_data;
5211 mgmt_adv_monitor_added(cmd->sk, hdev, monitor->handle);
5218 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode,
5220 mgmt_pending_remove(cmd);
5229 struct mgmt_pending_cmd *cmd = data;
5230 struct adv_monitor *monitor = cmd->user_data;
5239 struct mgmt_pending_cmd *cmd;
5255 cmd = mgmt_pending_add(sk, op, hdev, data, len);
5256 if (!cmd) {
5261 cmd->user_data = m;
5262 err = hci_cmd_sync_queue(hdev, mgmt_add_adv_patterns_monitor_sync, cmd,
5417 struct mgmt_pending_cmd *cmd = data;
5418 struct mgmt_cp_remove_adv_monitor *cp = cmd->param;
5427 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode,
5429 mgmt_pending_remove(cmd);
5438 struct mgmt_pending_cmd *cmd = data;
5439 struct mgmt_cp_remove_adv_monitor *cp = cmd->param;
5451 struct mgmt_pending_cmd *cmd;
5464 cmd = mgmt_pending_add(sk, MGMT_OP_REMOVE_ADV_MONITOR, hdev, data, len);
5465 if (!cmd) {
5470 err = hci_cmd_sync_queue(hdev, mgmt_remove_adv_monitor_sync, cmd,
5474 mgmt_pending_remove(cmd);
5498 struct mgmt_pending_cmd *cmd = data;
5499 struct sk_buff *skb = cmd->skb;
5514 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_READ_LOCAL_OOB_DATA, status);
5524 mgmt_cmd_status(cmd->sk, hdev->id,
5538 mgmt_cmd_status(cmd->sk, hdev->id,
5551 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_READ_LOCAL_OOB_DATA,
5558 mgmt_pending_free(cmd);
5563 struct mgmt_pending_cmd *cmd = data;
5566 cmd->skb = hci_read_local_oob_data_sync(hdev, true, cmd->sk);
5568 cmd->skb = hci_read_local_oob_data_sync(hdev, false, cmd->sk);
5570 if (IS_ERR(cmd->skb))
5571 return PTR_ERR(cmd->skb);
5579 struct mgmt_pending_cmd *cmd;
5598 cmd = mgmt_pending_new(sk, MGMT_OP_READ_LOCAL_OOB_DATA, hdev, NULL, 0);
5599 if (!cmd)
5602 err = hci_cmd_sync_queue(hdev, read_local_oob_data_sync, cmd,
5609 if (cmd)
5610 mgmt_pending_free(cmd);
5765 struct mgmt_pending_cmd *cmd;
5771 cmd = pending_find(MGMT_OP_START_DISCOVERY, hdev);
5772 if (!cmd)
5773 cmd = pending_find(MGMT_OP_START_SERVICE_DISCOVERY, hdev);
5775 if (!cmd)
5776 cmd = pending_find(MGMT_OP_START_LIMITED_DISCOVERY, hdev);
5778 if (cmd) {
5779 cmd->cmd_complete(cmd, mgmt_status(status));
5780 mgmt_pending_remove(cmd);
5815 struct mgmt_pending_cmd *cmd = data;
5817 if (cmd != pending_find(MGMT_OP_START_DISCOVERY, hdev) &&
5818 cmd != pending_find(MGMT_OP_START_LIMITED_DISCOVERY, hdev) &&
5819 cmd != pending_find(MGMT_OP_START_SERVICE_DISCOVERY, hdev))
5824 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err),
5825 cmd->param, 1);
5826 mgmt_pending_remove(cmd);
5841 struct mgmt_pending_cmd *cmd;
5888 cmd = mgmt_pending_add(sk, op, hdev, data, len);
5889 if (!cmd) {
5894 err = hci_cmd_sync_queue(hdev, start_discovery_sync, cmd,
5897 mgmt_pending_remove(cmd);
5927 struct mgmt_pending_cmd *cmd;
5991 cmd = mgmt_pending_add(sk, MGMT_OP_START_SERVICE_DISCOVERY,
5993 if (!cmd) {
6016 mgmt_pending_remove(cmd);
6021 err = hci_cmd_sync_queue(hdev, start_discovery_sync, cmd,
6024 mgmt_pending_remove(cmd);
6037 struct mgmt_pending_cmd *cmd;
6043 cmd = pending_find(MGMT_OP_STOP_DISCOVERY, hdev);
6044 if (cmd) {
6045 cmd->cmd_complete(cmd, mgmt_status(status));
6046 mgmt_pending_remove(cmd);
6054 struct mgmt_pending_cmd *cmd = data;
6056 if (cmd != pending_find(MGMT_OP_STOP_DISCOVERY, hdev))
6061 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err),
6062 cmd->param, 1);
6063 mgmt_pending_remove(cmd);
6078 struct mgmt_pending_cmd *cmd;
6099 cmd = mgmt_pending_add(sk, MGMT_OP_STOP_DISCOVERY, hdev, data, len);
6100 if (!cmd) {
6105 err = hci_cmd_sync_queue(hdev, stop_discovery_sync, cmd,
6108 mgmt_pending_remove(cmd);
6328 struct mgmt_pending_cmd *cmd = data;
6329 struct mgmt_mode *cp = cmd->param;
6364 struct mgmt_pending_cmd *cmd;
6430 cmd = mgmt_pending_add(sk, MGMT_OP_SET_ADVERTISING, hdev, data, len);
6431 if (!cmd)
6434 err = hci_cmd_sync_queue(hdev, set_adv_sync, cmd,
6437 if (err < 0 && cmd)
6438 mgmt_pending_remove(cmd);
6540 struct mgmt_pending_cmd *cmd = data;
6545 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_FAST_CONNECTABLE,
6548 struct mgmt_mode *cp = cmd->param;
6555 send_settings_rsp(cmd->sk, MGMT_OP_SET_FAST_CONNECTABLE, hdev);
6556 new_settings(hdev, cmd->sk);
6559 mgmt_pending_free(cmd);
6564 struct mgmt_pending_cmd *cmd = data;
6565 struct mgmt_mode *cp = cmd->param;
6574 struct mgmt_pending_cmd *cmd;
6604 cmd = mgmt_pending_new(sk, MGMT_OP_SET_FAST_CONNECTABLE, hdev, data,
6606 if (!cmd)
6609 err = hci_cmd_sync_queue(hdev, write_fast_connectable_sync, cmd,
6616 if (cmd)
6617 mgmt_pending_free(cmd);
6628 struct mgmt_pending_cmd *cmd = data;
6640 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err);
6642 send_settings_rsp(cmd->sk, MGMT_OP_SET_BREDR, hdev);
6643 new_settings(hdev, cmd->sk);
6646 mgmt_pending_free(cmd);
6670 struct mgmt_pending_cmd *cmd;
6741 cmd = mgmt_pending_new(sk, MGMT_OP_SET_BREDR, hdev, data, len);
6742 if (!cmd)
6745 err = hci_cmd_sync_queue(hdev, set_bredr_sync, cmd,
6751 if (cmd)
6752 mgmt_pending_free(cmd);
6769 struct mgmt_pending_cmd *cmd = data;
6777 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err);
6781 cp = cmd->param;
6798 send_settings_rsp(cmd->sk, cmd->opcode, hdev);
6799 new_settings(hdev, cmd->sk);
6802 mgmt_pending_free(cmd);
6807 struct mgmt_pending_cmd *cmd = data;
6808 struct mgmt_mode *cp = cmd->param;
6821 struct mgmt_pending_cmd *cmd;
6879 cmd = mgmt_pending_new(sk, MGMT_OP_SET_SECURE_CONN, hdev, data, len);
6880 if (!cmd)
6883 err = hci_cmd_sync_queue(hdev, set_secure_conn_sync, cmd,
6889 if (cmd)
6890 mgmt_pending_free(cmd);
7216 struct mgmt_pending_cmd *cmd = data;
7217 struct hci_conn *conn = cmd->user_data;
7218 struct mgmt_cp_get_conn_info *cp = cmd->param;
7237 mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_GET_CONN_INFO, status,
7240 mgmt_pending_free(cmd);
7245 struct mgmt_pending_cmd *cmd = data;
7246 struct mgmt_cp_get_conn_info *cp = cmd->param;
7261 cmd->user_data = conn;
7335 struct mgmt_pending_cmd *cmd;
7337 cmd = mgmt_pending_new(sk, MGMT_OP_GET_CONN_INFO, hdev, data,
7339 if (!cmd) {
7343 cmd, get_conn_info_complete);
7350 if (cmd)
7351 mgmt_pending_free(cmd);
7374 struct mgmt_pending_cmd *cmd = data;
7375 struct mgmt_cp_get_clock_info *cp = cmd->param;
7377 struct hci_conn *conn = cmd->user_data;
7397 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, &rp,
7400 mgmt_pending_free(cmd);
7405 struct mgmt_pending_cmd *cmd = data;
7406 struct mgmt_cp_get_clock_info *cp = cmd->param;
7418 cmd->user_data = conn;
7430 struct mgmt_pending_cmd *cmd;
7468 cmd = mgmt_pending_new(sk, MGMT_OP_GET_CLOCK_INFO, hdev, data, len);
7469 if (!cmd)
7472 err = hci_cmd_sync_queue(hdev, get_clock_info_sync, cmd,
7479 if (cmd)
7480 mgmt_pending_free(cmd);
8009 struct mgmt_pending_cmd *cmd = data;
8010 struct sk_buff *skb = cmd->skb;
8014 if (cmd != pending_find(MGMT_OP_READ_LOCAL_OOB_EXT_DATA, hdev))
8028 mgmt_cp = cmd->param;
8107 err = mgmt_cmd_complete(cmd->sk, hdev->id,
8113 hci_sock_set_flag(cmd->sk, HCI_MGMT_OOB_DATA_EVENTS);
8117 HCI_MGMT_OOB_DATA_EVENTS, cmd->sk);
8123 mgmt_pending_remove(cmd);
8129 struct mgmt_pending_cmd *cmd;
8132 cmd = mgmt_pending_add(sk, MGMT_OP_READ_LOCAL_OOB_EXT_DATA, hdev,
8134 if (!cmd)
8137 err = hci_cmd_sync_queue(hdev, read_local_oob_data_sync, cmd,
8141 mgmt_pending_remove(cmd);
8554 struct mgmt_pending_cmd *cmd = data;
8555 struct mgmt_cp_add_advertising *cp = cmd->param;
8563 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode,
8566 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode,
8569 add_adv_complete(hdev, cmd->sk, cp->instance, err);
8571 mgmt_pending_free(cmd);
8576 struct mgmt_pending_cmd *cmd = data;
8577 struct mgmt_cp_add_advertising *cp = cmd->param;
8594 struct mgmt_pending_cmd *cmd;
8697 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_ADVERTISING, hdev, data,
8699 if (!cmd) {
8706 err = hci_cmd_sync_queue(hdev, add_advertising_sync, cmd,
8709 mgmt_pending_free(cmd);
8720 struct mgmt_pending_cmd *cmd = data;
8721 struct mgmt_cp_add_ext_adv_params *cp = cmd->param;
8750 mgmt_advertising_removed(cmd->sk, hdev, cp->instance);
8754 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode,
8757 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode,
8762 if (cmd)
8763 mgmt_pending_free(cmd);
8770 struct mgmt_pending_cmd *cmd = data;
8771 struct mgmt_cp_add_ext_adv_params *cp = cmd->param;
8781 struct mgmt_pending_cmd *cmd = NULL;
8864 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_EXT_ADV_PARAMS, hdev,
8866 if (!cmd) {
8872 err = hci_cmd_sync_queue(hdev, add_ext_adv_params_sync, cmd,
8875 mgmt_pending_free(cmd);
8894 struct mgmt_pending_cmd *cmd = data;
8895 struct mgmt_cp_add_ext_adv_data *cp = cmd->param;
8898 add_adv_complete(hdev, cmd->sk, cp->instance, err);
8905 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode,
8908 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode,
8911 mgmt_pending_free(cmd);
8916 struct mgmt_pending_cmd *cmd = data;
8917 struct mgmt_cp_add_ext_adv_data *cp = cmd->param;
8944 struct mgmt_pending_cmd *cmd;
9021 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_EXT_ADV_DATA, hdev, data,
9023 if (!cmd) {
9028 err = hci_cmd_sync_queue(hdev, add_ext_adv_data_sync, cmd,
9031 mgmt_pending_free(cmd);
9057 struct mgmt_pending_cmd *cmd = data;
9058 struct mgmt_cp_remove_advertising *cp = cmd->param;
9067 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode,
9070 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode,
9073 mgmt_pending_free(cmd);
9078 struct mgmt_pending_cmd *cmd = data;
9079 struct mgmt_cp_remove_advertising *cp = cmd->param;
9082 err = hci_remove_advertising_sync(hdev, cmd->sk, cp->instance, true);
9096 struct mgmt_pending_cmd *cmd;
9122 cmd = mgmt_pending_new(sk, MGMT_OP_REMOVE_ADVERTISING, hdev, data,
9124 if (!cmd) {
9129 err = hci_cmd_sync_queue(hdev, remove_advertising_sync, cmd,
9132 mgmt_pending_free(cmd);
9443 struct mgmt_pending_cmd *cmd;
9446 cmd = pending_find(MGMT_OP_SET_POWERED, hdev);
9447 if (!cmd)
9455 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_POWERED, status);
9457 mgmt_pending_remove(cmd);
9656 static void disconnect_rsp(struct mgmt_pending_cmd *cmd, void *data)
9660 cmd->cmd_complete(cmd, 0);
9662 *sk = cmd->sk;
9665 mgmt_pending_remove(cmd);
9668 static void unpair_device_rsp(struct mgmt_pending_cmd *cmd, void *data)
9671 struct mgmt_cp_unpair_device *cp = cmd->param;
9673 device_unpaired(hdev, &cp->addr.bdaddr, cp->addr.type, cmd->sk);
9675 cmd->cmd_complete(cmd, 0);
9676 mgmt_pending_remove(cmd);
9681 struct mgmt_pending_cmd *cmd;
9684 cmd = pending_find(MGMT_OP_SET_POWERED, hdev);
9685 if (!cmd)
9688 cp = cmd->param;
9732 struct mgmt_pending_cmd *cmd;
9737 cmd = pending_find(MGMT_OP_DISCONNECT, hdev);
9738 if (!cmd)
9741 cp = cmd->param;
9749 cmd->cmd_complete(cmd, mgmt_status(status));
9750 mgmt_pending_remove(cmd);
9779 struct mgmt_pending_cmd *cmd;
9781 cmd = pending_find(MGMT_OP_PIN_CODE_REPLY, hdev);
9782 if (!cmd)
9785 cmd->cmd_complete(cmd, mgmt_status(status));
9786 mgmt_pending_remove(cmd);
9792 struct mgmt_pending_cmd *cmd;
9794 cmd = pending_find(MGMT_OP_PIN_CODE_NEG_REPLY, hdev);
9795 if (!cmd)
9798 cmd->cmd_complete(cmd, mgmt_status(status));
9799 mgmt_pending_remove(cmd);
9837 struct mgmt_pending_cmd *cmd;
9839 cmd = pending_find(opcode, hdev);
9840 if (!cmd)
9843 cmd->cmd_complete(cmd, mgmt_status(status));
9844 mgmt_pending_remove(cmd);
9898 struct mgmt_pending_cmd *cmd;
9905 cmd = find_pairing(conn);
9908 cmd ? cmd->sk : NULL);
9910 if (cmd) {
9911 cmd->cmd_complete(cmd, status);
9912 mgmt_pending_remove(cmd);
9943 static void sk_lookup(struct mgmt_pending_cmd *cmd, void *data)
9948 match->sk = cmd->sk;
9975 struct mgmt_pending_cmd *cmd;
9984 cmd = pending_find(MGMT_OP_SET_LOCAL_NAME, hdev);
9985 if (!cmd) {
9996 HCI_MGMT_LOCAL_NAME_EVENTS, cmd ? cmd->sk : NULL);
9997 ext_info_changed(hdev, cmd ? cmd->sk : NULL);