Lines Matching refs:cmd

946 	struct mgmt_pending_cmd *cmd;  in mgmt_get_adv_discov_flags()  local
951 cmd = pending_find(MGMT_OP_SET_DISCOVERABLE, hdev); in mgmt_get_adv_discov_flags()
952 if (cmd) { in mgmt_get_adv_discov_flags()
953 struct mgmt_mode *cp = cmd->param; in mgmt_get_adv_discov_flags()
970 struct mgmt_pending_cmd *cmd; in mgmt_get_connectable() local
975 cmd = pending_find(MGMT_OP_SET_CONNECTABLE, hdev); in mgmt_get_connectable()
976 if (cmd) { in mgmt_get_connectable()
977 struct mgmt_mode *cp = cmd->param; in mgmt_get_connectable()
1317 struct mgmt_pending_cmd *cmd = data; in mgmt_set_powered_complete() local
1321 if (cmd != pending_find(MGMT_OP_SET_POWERED, hdev)) in mgmt_set_powered_complete()
1324 cp = cmd->param; in mgmt_set_powered_complete()
1336 send_settings_rsp(cmd->sk, cmd->opcode, hdev); in mgmt_set_powered_complete()
1342 new_settings(hdev, cmd->sk); in mgmt_set_powered_complete()
1344 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_POWERED, in mgmt_set_powered_complete()
1348 mgmt_pending_remove(cmd); in mgmt_set_powered_complete()
1353 struct mgmt_pending_cmd *cmd = data; in set_powered_sync() local
1354 struct mgmt_mode *cp = cmd->param; in set_powered_sync()
1365 struct mgmt_pending_cmd *cmd; in set_powered() local
1387 cmd = mgmt_pending_add(sk, MGMT_OP_SET_POWERED, hdev, data, len); in set_powered()
1388 if (!cmd) { in set_powered()
1396 err = hci_cmd_sync_queue(hdev, set_powered_sync, cmd, in set_powered()
1400 err = hci_cmd_sync_submit(hdev, set_powered_sync, cmd, in set_powered()
1405 mgmt_pending_remove(cmd); in set_powered()
1423 static void settings_rsp(struct mgmt_pending_cmd *cmd, void *data) in settings_rsp() argument
1427 send_settings_rsp(cmd->sk, cmd->opcode, match->hdev); in settings_rsp()
1429 list_del(&cmd->list); in settings_rsp()
1432 match->sk = cmd->sk; in settings_rsp()
1436 mgmt_pending_free(cmd); in settings_rsp()
1439 static void cmd_status_rsp(struct mgmt_pending_cmd *cmd, void *data) in cmd_status_rsp() argument
1443 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, *status); in cmd_status_rsp()
1444 mgmt_pending_remove(cmd); in cmd_status_rsp()
1447 static void cmd_complete_rsp(struct mgmt_pending_cmd *cmd, void *data) in cmd_complete_rsp() argument
1449 if (cmd->cmd_complete) { in cmd_complete_rsp()
1452 cmd->cmd_complete(cmd, *status); in cmd_complete_rsp()
1453 mgmt_pending_remove(cmd); in cmd_complete_rsp()
1458 cmd_status_rsp(cmd, data); in cmd_complete_rsp()
1461 static int generic_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) in generic_cmd_complete() argument
1463 return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, in generic_cmd_complete()
1464 cmd->param, cmd->param_len); in generic_cmd_complete()
1467 static int addr_cmd_complete(struct mgmt_pending_cmd *cmd, u8 status) in addr_cmd_complete() argument
1469 return mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, in addr_cmd_complete()
1470 cmd->param, sizeof(struct mgmt_addr_info)); in addr_cmd_complete()
1496 struct mgmt_pending_cmd *cmd = data; in mgmt_set_discoverable_complete() local
1501 if (cmd != pending_find(MGMT_OP_SET_DISCOVERABLE, hdev)) in mgmt_set_discoverable_complete()
1508 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); in mgmt_set_discoverable_complete()
1519 send_settings_rsp(cmd->sk, MGMT_OP_SET_DISCOVERABLE, hdev); in mgmt_set_discoverable_complete()
1520 new_settings(hdev, cmd->sk); in mgmt_set_discoverable_complete()
1523 mgmt_pending_remove(cmd); in mgmt_set_discoverable_complete()
1538 struct mgmt_pending_cmd *cmd; in set_discoverable() local
1632 cmd = mgmt_pending_add(sk, MGMT_OP_SET_DISCOVERABLE, hdev, data, len); in set_discoverable()
1633 if (!cmd) { in set_discoverable()
1656 err = hci_cmd_sync_queue(hdev, set_discoverable_sync, cmd, in set_discoverable()
1660 mgmt_pending_remove(cmd); in set_discoverable()
1670 struct mgmt_pending_cmd *cmd = data; in mgmt_set_connectable_complete() local
1675 if (cmd != pending_find(MGMT_OP_SET_CONNECTABLE, hdev)) in mgmt_set_connectable_complete()
1682 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); in mgmt_set_connectable_complete()
1686 send_settings_rsp(cmd->sk, MGMT_OP_SET_CONNECTABLE, hdev); in mgmt_set_connectable_complete()
1687 new_settings(hdev, cmd->sk); in mgmt_set_connectable_complete()
1690 if (cmd) in mgmt_set_connectable_complete()
1691 mgmt_pending_remove(cmd); in mgmt_set_connectable_complete()
1736 struct mgmt_pending_cmd *cmd; in set_connectable() local
1764 cmd = mgmt_pending_add(sk, MGMT_OP_SET_CONNECTABLE, hdev, data, len); in set_connectable()
1765 if (!cmd) { in set_connectable()
1781 err = hci_cmd_sync_queue(hdev, set_connectable_sync, cmd, in set_connectable()
1785 mgmt_pending_remove(cmd); in set_connectable()
1834 struct mgmt_pending_cmd *cmd; in set_link_security() local
1882 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LINK_SECURITY, hdev, data, len); in set_link_security()
1883 if (!cmd) { in set_link_security()
1890 mgmt_pending_remove(cmd); in set_link_security()
1902 struct mgmt_pending_cmd *cmd = data; in set_ssp_complete() local
1903 struct mgmt_mode *cp = cmd->param; in set_ssp_complete()
1908 if (cmd != pending_find(MGMT_OP_SET_SSP, hdev)) in set_ssp_complete()
1943 struct mgmt_pending_cmd *cmd = data; in set_ssp_sync() local
1944 struct mgmt_mode *cp = cmd->param; in set_ssp_sync()
1962 struct mgmt_pending_cmd *cmd; in set_ssp() local
2014 cmd = mgmt_pending_add(sk, MGMT_OP_SET_SSP, hdev, data, len); in set_ssp()
2015 if (!cmd) in set_ssp()
2018 err = hci_cmd_sync_queue(hdev, set_ssp_sync, cmd, in set_ssp()
2025 if (cmd) in set_ssp()
2026 mgmt_pending_remove(cmd); in set_ssp()
2065 struct mgmt_pending_cmd *cmd = data; in set_le_sync() local
2066 struct mgmt_mode *cp = cmd->param; in set_le_sync()
2077 hci_remove_ext_adv_instance_sync(hdev, 0, cmd->sk); in set_le_sync()
2109 struct mgmt_pending_cmd *cmd = data; in set_mesh_complete() local
2111 struct sock *sk = cmd->sk; in set_mesh_complete()
2119 mgmt_pending_remove(cmd); in set_mesh_complete()
2125 struct mgmt_pending_cmd *cmd = data; in set_mesh_sync() local
2126 struct mgmt_cp_set_mesh *cp = cmd->param; in set_mesh_sync()
2127 size_t len = cmd->param_len; in set_mesh_sync()
2149 struct mgmt_pending_cmd *cmd; in set_mesh() local
2165 cmd = mgmt_pending_add(sk, MGMT_OP_SET_MESH_RECEIVER, hdev, data, len); in set_mesh()
2166 if (!cmd) in set_mesh()
2169 err = hci_cmd_sync_queue(hdev, set_mesh_sync, cmd, in set_mesh()
2176 if (cmd) in set_mesh()
2177 mgmt_pending_remove(cmd); in set_mesh()
2298 struct mgmt_pending_cmd *cmd = data; in send_cancel() local
2299 struct mgmt_cp_mesh_send_cancel *cancel = (void *)cmd->param; in send_cancel()
2304 mesh_tx = mgmt_mesh_next(hdev, cmd->sk); in send_cancel()
2312 if (mesh_tx && mesh_tx->sk == cmd->sk) in send_cancel()
2316 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_MESH_SEND_CANCEL, in send_cancel()
2318 mgmt_pending_free(cmd); in send_cancel()
2326 struct mgmt_pending_cmd *cmd; in mesh_send_cancel() local
2339 cmd = mgmt_pending_new(sk, MGMT_OP_MESH_SEND_CANCEL, hdev, data, len); in mesh_send_cancel()
2340 if (!cmd) in mesh_send_cancel()
2343 err = hci_cmd_sync_queue(hdev, send_cancel, cmd, NULL); in mesh_send_cancel()
2349 if (cmd) in mesh_send_cancel()
2350 mgmt_pending_free(cmd); in mesh_send_cancel()
2421 struct mgmt_pending_cmd *cmd; in set_le() local
2487 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LE, hdev, data, len); in set_le()
2488 if (!cmd) in set_le()
2491 err = hci_cmd_sync_queue(hdev, set_le_sync, cmd, in set_le()
2498 if (cmd) in set_le()
2499 mgmt_pending_remove(cmd); in set_le()
2515 struct mgmt_pending_cmd *cmd; in pending_eir_or_class() local
2517 list_for_each_entry(cmd, &hdev->mgmt_pending, list) { in pending_eir_or_class()
2518 switch (cmd->opcode) { in pending_eir_or_class()
2551 struct mgmt_pending_cmd *cmd = data; in mgmt_class_complete() local
2555 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, in mgmt_class_complete()
2558 mgmt_pending_free(cmd); in mgmt_class_complete()
2575 struct mgmt_pending_cmd *cmd; in add_uuid() local
2601 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_UUID, hdev, data, len); in add_uuid()
2602 if (!cmd) { in add_uuid()
2610 err = hci_cmd_sync_submit(hdev, add_uuid_sync, cmd, in add_uuid()
2613 mgmt_pending_free(cmd); in add_uuid()
2651 struct mgmt_pending_cmd *cmd; in remove_uuid() local
2699 cmd = mgmt_pending_new(sk, MGMT_OP_REMOVE_UUID, hdev, data, len); in remove_uuid()
2700 if (!cmd) { in remove_uuid()
2708 err = hci_cmd_sync_submit(hdev, remove_uuid_sync, cmd, in remove_uuid()
2711 mgmt_pending_free(cmd); in remove_uuid()
2737 struct mgmt_pending_cmd *cmd; in set_dev_class() local
2769 cmd = mgmt_pending_new(sk, MGMT_OP_SET_DEV_CLASS, hdev, data, len); in set_dev_class()
2770 if (!cmd) { in set_dev_class()
2778 err = hci_cmd_sync_submit(hdev, set_class_sync, cmd, in set_dev_class()
2781 mgmt_pending_free(cmd); in set_dev_class()
2895 struct mgmt_pending_cmd *cmd = data; in unpair_device_complete() local
2896 struct mgmt_cp_unpair_device *cp = cmd->param; in unpair_device_complete()
2899 device_unpaired(hdev, &cp->addr.bdaddr, cp->addr.type, cmd->sk); in unpair_device_complete()
2901 cmd->cmd_complete(cmd, err); in unpair_device_complete()
2902 mgmt_pending_free(cmd); in unpair_device_complete()
2907 struct mgmt_pending_cmd *cmd = data; in unpair_device_sync() local
2908 struct mgmt_cp_unpair_device *cp = cmd->param; in unpair_device_sync()
2935 struct mgmt_pending_cmd *cmd; in unpair_device() local
3039 cmd = mgmt_pending_new(sk, MGMT_OP_UNPAIR_DEVICE, hdev, cp, in unpair_device()
3041 if (!cmd) { in unpair_device()
3046 cmd->cmd_complete = addr_cmd_complete; in unpair_device()
3048 err = hci_cmd_sync_queue(hdev, unpair_device_sync, cmd, in unpair_device()
3051 mgmt_pending_free(cmd); in unpair_device()
3060 struct mgmt_pending_cmd *cmd = data; in disconnect_complete() local
3062 cmd->cmd_complete(cmd, mgmt_status(err)); in disconnect_complete()
3063 mgmt_pending_free(cmd); in disconnect_complete()
3068 struct mgmt_pending_cmd *cmd = data; in disconnect_sync() local
3069 struct mgmt_cp_disconnect *cp = cmd->param; in disconnect_sync()
3095 struct mgmt_pending_cmd *cmd; in disconnect() local
3118 cmd = mgmt_pending_new(sk, MGMT_OP_DISCONNECT, hdev, data, len); in disconnect()
3119 if (!cmd) { in disconnect()
3124 cmd->cmd_complete = generic_cmd_complete; in disconnect()
3126 err = hci_cmd_sync_queue(hdev, disconnect_sync, cmd, in disconnect()
3129 mgmt_pending_free(cmd); in disconnect()
3213 struct mgmt_pending_cmd *cmd; in send_pin_code_neg_reply() local
3216 cmd = mgmt_pending_add(sk, MGMT_OP_PIN_CODE_NEG_REPLY, hdev, cp, in send_pin_code_neg_reply()
3218 if (!cmd) in send_pin_code_neg_reply()
3221 cmd->cmd_complete = addr_cmd_complete; in send_pin_code_neg_reply()
3226 mgmt_pending_remove(cmd); in send_pin_code_neg_reply()
3237 struct mgmt_pending_cmd *cmd; in pin_code_reply() local
3272 cmd = mgmt_pending_add(sk, MGMT_OP_PIN_CODE_REPLY, hdev, data, len); in pin_code_reply()
3273 if (!cmd) { in pin_code_reply()
3278 cmd->cmd_complete = addr_cmd_complete; in pin_code_reply()
3286 mgmt_pending_remove(cmd); in pin_code_reply()
3319 struct mgmt_pending_cmd *cmd; in find_pairing() local
3321 list_for_each_entry(cmd, &hdev->mgmt_pending, list) { in find_pairing()
3322 if (cmd->opcode != MGMT_OP_PAIR_DEVICE) in find_pairing()
3325 if (cmd->user_data != conn) in find_pairing()
3328 return cmd; in find_pairing()
3334 static int pairing_complete(struct mgmt_pending_cmd *cmd, u8 status) in pairing_complete() argument
3337 struct hci_conn *conn = cmd->user_data; in pairing_complete()
3343 err = mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_PAIR_DEVICE, in pairing_complete()
3366 struct mgmt_pending_cmd *cmd; in mgmt_smp_complete() local
3368 cmd = find_pairing(conn); in mgmt_smp_complete()
3369 if (cmd) { in mgmt_smp_complete()
3370 cmd->cmd_complete(cmd, status); in mgmt_smp_complete()
3371 mgmt_pending_remove(cmd); in mgmt_smp_complete()
3377 struct mgmt_pending_cmd *cmd; in pairing_complete_cb() local
3381 cmd = find_pairing(conn); in pairing_complete_cb()
3382 if (!cmd) { in pairing_complete_cb()
3387 cmd->cmd_complete(cmd, mgmt_status(status)); in pairing_complete_cb()
3388 mgmt_pending_remove(cmd); in pairing_complete_cb()
3393 struct mgmt_pending_cmd *cmd; in le_pairing_complete_cb() local
3400 cmd = find_pairing(conn); in le_pairing_complete_cb()
3401 if (!cmd) { in le_pairing_complete_cb()
3406 cmd->cmd_complete(cmd, mgmt_status(status)); in le_pairing_complete_cb()
3407 mgmt_pending_remove(cmd); in le_pairing_complete_cb()
3415 struct mgmt_pending_cmd *cmd; in pair_device() local
3509 cmd = mgmt_pending_add(sk, MGMT_OP_PAIR_DEVICE, hdev, data, len); in pair_device()
3510 if (!cmd) { in pair_device()
3516 cmd->cmd_complete = pairing_complete; in pair_device()
3530 cmd->user_data = hci_conn_get(conn); in pair_device()
3534 cmd->cmd_complete(cmd, 0); in pair_device()
3535 mgmt_pending_remove(cmd); in pair_device()
3549 struct mgmt_pending_cmd *cmd; in cancel_pair_device() local
3563 cmd = pending_find(MGMT_OP_PAIR_DEVICE, hdev); in cancel_pair_device()
3564 if (!cmd) { in cancel_pair_device()
3570 conn = cmd->user_data; in cancel_pair_device()
3578 cmd->cmd_complete(cmd, MGMT_STATUS_CANCELLED); in cancel_pair_device()
3579 mgmt_pending_remove(cmd); in cancel_pair_device()
3606 struct mgmt_pending_cmd *cmd; in user_pairing_resp() local
3646 cmd = mgmt_pending_add(sk, mgmt_op, hdev, addr, sizeof(*addr)); in user_pairing_resp()
3647 if (!cmd) { in user_pairing_resp()
3652 cmd->cmd_complete = addr_cmd_complete; in user_pairing_resp()
3666 mgmt_pending_remove(cmd); in user_pairing_resp()
3767 struct mgmt_pending_cmd *cmd = data; in set_name_complete() local
3768 struct mgmt_cp_set_local_name *cp = cmd->param; in set_name_complete()
3773 if (cmd != pending_find(MGMT_OP_SET_LOCAL_NAME, hdev)) in set_name_complete()
3777 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_LOCAL_NAME, in set_name_complete()
3780 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_SET_LOCAL_NAME, 0, in set_name_complete()
3787 mgmt_pending_remove(cmd); in set_name_complete()
3810 struct mgmt_pending_cmd *cmd; in set_local_name() local
3845 cmd = mgmt_pending_add(sk, MGMT_OP_SET_LOCAL_NAME, hdev, data, len); in set_local_name()
3846 if (!cmd) in set_local_name()
3849 err = hci_cmd_sync_queue(hdev, set_name_sync, cmd, in set_local_name()
3856 if (cmd) in set_local_name()
3857 mgmt_pending_remove(cmd); in set_local_name()
3944 struct mgmt_pending_cmd *cmd = data; in set_default_phy_complete() local
3945 struct sk_buff *skb = cmd->skb; in set_default_phy_complete()
3948 if (cmd != pending_find(MGMT_OP_SET_PHY_CONFIGURATION, hdev)) in set_default_phy_complete()
3963 mgmt_cmd_status(cmd->sk, hdev->id, in set_default_phy_complete()
3966 mgmt_cmd_complete(cmd->sk, hdev->id, in set_default_phy_complete()
3970 mgmt_phy_configuration_changed(hdev, cmd->sk); in set_default_phy_complete()
3976 mgmt_pending_remove(cmd); in set_default_phy_complete()
3981 struct mgmt_pending_cmd *cmd = data; in set_default_phy_sync() local
3982 struct mgmt_cp_set_phy_configuration *cp = cmd->param; in set_default_phy_sync()
4012 cmd->skb = __hci_cmd_sync(hdev, HCI_OP_LE_SET_DEFAULT_PHY, in set_default_phy_sync()
4022 struct mgmt_pending_cmd *cmd; in set_phy_configuration() local
4124 cmd = mgmt_pending_add(sk, MGMT_OP_SET_PHY_CONFIGURATION, hdev, data, in set_phy_configuration()
4126 if (!cmd) in set_phy_configuration()
4129 err = hci_cmd_sync_queue(hdev, set_default_phy_sync, cmd, in set_phy_configuration()
4137 if (cmd) in set_phy_configuration()
4138 mgmt_pending_remove(cmd); in set_phy_configuration()
5155 struct mgmt_pending_cmd *cmd; in mgmt_adv_monitor_removed() local
5159 cmd = pending_find(MGMT_OP_REMOVE_ADV_MONITOR, hdev); in mgmt_adv_monitor_removed()
5160 if (cmd) { in mgmt_adv_monitor_removed()
5161 cp = cmd->param; in mgmt_adv_monitor_removed()
5164 sk_skip = cmd->sk; in mgmt_adv_monitor_removed()
5225 struct mgmt_pending_cmd *cmd = data; in mgmt_add_adv_patterns_monitor_complete() local
5226 struct adv_monitor *monitor = cmd->user_data; in mgmt_add_adv_patterns_monitor_complete()
5233 mgmt_adv_monitor_added(cmd->sk, hdev, monitor->handle); in mgmt_add_adv_patterns_monitor_complete()
5240 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, in mgmt_add_adv_patterns_monitor_complete()
5242 mgmt_pending_remove(cmd); in mgmt_add_adv_patterns_monitor_complete()
5251 struct mgmt_pending_cmd *cmd = data; in mgmt_add_adv_patterns_monitor_sync() local
5252 struct adv_monitor *monitor = cmd->user_data; in mgmt_add_adv_patterns_monitor_sync()
5261 struct mgmt_pending_cmd *cmd; in __add_adv_patterns_monitor() local
5277 cmd = mgmt_pending_add(sk, op, hdev, data, len); in __add_adv_patterns_monitor()
5278 if (!cmd) { in __add_adv_patterns_monitor()
5283 cmd->user_data = m; in __add_adv_patterns_monitor()
5284 err = hci_cmd_sync_queue(hdev, mgmt_add_adv_patterns_monitor_sync, cmd, in __add_adv_patterns_monitor()
5439 struct mgmt_pending_cmd *cmd = data; in mgmt_remove_adv_monitor_complete() local
5440 struct mgmt_cp_remove_adv_monitor *cp = cmd->param; in mgmt_remove_adv_monitor_complete()
5449 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, in mgmt_remove_adv_monitor_complete()
5451 mgmt_pending_remove(cmd); in mgmt_remove_adv_monitor_complete()
5460 struct mgmt_pending_cmd *cmd = data; in mgmt_remove_adv_monitor_sync() local
5461 struct mgmt_cp_remove_adv_monitor *cp = cmd->param; in mgmt_remove_adv_monitor_sync()
5473 struct mgmt_pending_cmd *cmd; in remove_adv_monitor() local
5486 cmd = mgmt_pending_add(sk, MGMT_OP_REMOVE_ADV_MONITOR, hdev, data, len); in remove_adv_monitor()
5487 if (!cmd) { in remove_adv_monitor()
5492 err = hci_cmd_sync_submit(hdev, mgmt_remove_adv_monitor_sync, cmd, in remove_adv_monitor()
5496 mgmt_pending_remove(cmd); in remove_adv_monitor()
5520 struct mgmt_pending_cmd *cmd = data; in read_local_oob_data_complete() local
5521 struct sk_buff *skb = cmd->skb; in read_local_oob_data_complete()
5536 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_READ_LOCAL_OOB_DATA, status); in read_local_oob_data_complete()
5546 mgmt_cmd_status(cmd->sk, hdev->id, in read_local_oob_data_complete()
5560 mgmt_cmd_status(cmd->sk, hdev->id, in read_local_oob_data_complete()
5573 mgmt_cmd_complete(cmd->sk, hdev->id, MGMT_OP_READ_LOCAL_OOB_DATA, in read_local_oob_data_complete()
5580 mgmt_pending_free(cmd); in read_local_oob_data_complete()
5585 struct mgmt_pending_cmd *cmd = data; in read_local_oob_data_sync() local
5588 cmd->skb = hci_read_local_oob_data_sync(hdev, true, cmd->sk); in read_local_oob_data_sync()
5590 cmd->skb = hci_read_local_oob_data_sync(hdev, false, cmd->sk); in read_local_oob_data_sync()
5592 if (IS_ERR(cmd->skb)) in read_local_oob_data_sync()
5593 return PTR_ERR(cmd->skb); in read_local_oob_data_sync()
5601 struct mgmt_pending_cmd *cmd; in read_local_oob_data() local
5620 cmd = mgmt_pending_new(sk, MGMT_OP_READ_LOCAL_OOB_DATA, hdev, NULL, 0); in read_local_oob_data()
5621 if (!cmd) in read_local_oob_data()
5624 err = hci_cmd_sync_queue(hdev, read_local_oob_data_sync, cmd, in read_local_oob_data()
5631 if (cmd) in read_local_oob_data()
5632 mgmt_pending_free(cmd); in read_local_oob_data()
5787 struct mgmt_pending_cmd *cmd; in mgmt_start_discovery_complete() local
5793 cmd = pending_find(MGMT_OP_START_DISCOVERY, hdev); in mgmt_start_discovery_complete()
5794 if (!cmd) in mgmt_start_discovery_complete()
5795 cmd = pending_find(MGMT_OP_START_SERVICE_DISCOVERY, hdev); in mgmt_start_discovery_complete()
5797 if (!cmd) in mgmt_start_discovery_complete()
5798 cmd = pending_find(MGMT_OP_START_LIMITED_DISCOVERY, hdev); in mgmt_start_discovery_complete()
5800 if (cmd) { in mgmt_start_discovery_complete()
5801 cmd->cmd_complete(cmd, mgmt_status(status)); in mgmt_start_discovery_complete()
5802 mgmt_pending_remove(cmd); in mgmt_start_discovery_complete()
5837 struct mgmt_pending_cmd *cmd = data; in start_discovery_complete() local
5839 if (cmd != pending_find(MGMT_OP_START_DISCOVERY, hdev) && in start_discovery_complete()
5840 cmd != pending_find(MGMT_OP_START_LIMITED_DISCOVERY, hdev) && in start_discovery_complete()
5841 cmd != pending_find(MGMT_OP_START_SERVICE_DISCOVERY, hdev)) in start_discovery_complete()
5846 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), in start_discovery_complete()
5847 cmd->param, 1); in start_discovery_complete()
5848 mgmt_pending_remove(cmd); in start_discovery_complete()
5863 struct mgmt_pending_cmd *cmd; in start_discovery_internal() local
5910 cmd = mgmt_pending_add(sk, op, hdev, data, len); in start_discovery_internal()
5911 if (!cmd) { in start_discovery_internal()
5916 err = hci_cmd_sync_queue(hdev, start_discovery_sync, cmd, in start_discovery_internal()
5919 mgmt_pending_remove(cmd); in start_discovery_internal()
5949 struct mgmt_pending_cmd *cmd; in start_service_discovery() local
6013 cmd = mgmt_pending_add(sk, MGMT_OP_START_SERVICE_DISCOVERY, in start_service_discovery()
6015 if (!cmd) { in start_service_discovery()
6038 mgmt_pending_remove(cmd); in start_service_discovery()
6043 err = hci_cmd_sync_queue(hdev, start_discovery_sync, cmd, in start_service_discovery()
6046 mgmt_pending_remove(cmd); in start_service_discovery()
6059 struct mgmt_pending_cmd *cmd; in mgmt_stop_discovery_complete() local
6065 cmd = pending_find(MGMT_OP_STOP_DISCOVERY, hdev); in mgmt_stop_discovery_complete()
6066 if (cmd) { in mgmt_stop_discovery_complete()
6067 cmd->cmd_complete(cmd, mgmt_status(status)); in mgmt_stop_discovery_complete()
6068 mgmt_pending_remove(cmd); in mgmt_stop_discovery_complete()
6076 struct mgmt_pending_cmd *cmd = data; in stop_discovery_complete() local
6078 if (cmd != pending_find(MGMT_OP_STOP_DISCOVERY, hdev)) in stop_discovery_complete()
6083 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, mgmt_status(err), in stop_discovery_complete()
6084 cmd->param, 1); in stop_discovery_complete()
6085 mgmt_pending_remove(cmd); in stop_discovery_complete()
6100 struct mgmt_pending_cmd *cmd; in stop_discovery() local
6121 cmd = mgmt_pending_add(sk, MGMT_OP_STOP_DISCOVERY, hdev, data, len); in stop_discovery()
6122 if (!cmd) { in stop_discovery()
6127 err = hci_cmd_sync_queue(hdev, stop_discovery_sync, cmd, in stop_discovery()
6130 mgmt_pending_remove(cmd); in stop_discovery()
6350 struct mgmt_pending_cmd *cmd = data; in set_adv_sync() local
6351 struct mgmt_mode *cp = cmd->param; in set_adv_sync()
6386 struct mgmt_pending_cmd *cmd; in set_advertising() local
6452 cmd = mgmt_pending_add(sk, MGMT_OP_SET_ADVERTISING, hdev, data, len); in set_advertising()
6453 if (!cmd) in set_advertising()
6456 err = hci_cmd_sync_queue(hdev, set_adv_sync, cmd, in set_advertising()
6459 if (err < 0 && cmd) in set_advertising()
6460 mgmt_pending_remove(cmd); in set_advertising()
6562 struct mgmt_pending_cmd *cmd = data; in fast_connectable_complete() local
6567 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_FAST_CONNECTABLE, in fast_connectable_complete()
6570 struct mgmt_mode *cp = cmd->param; in fast_connectable_complete()
6577 send_settings_rsp(cmd->sk, MGMT_OP_SET_FAST_CONNECTABLE, hdev); in fast_connectable_complete()
6578 new_settings(hdev, cmd->sk); in fast_connectable_complete()
6581 mgmt_pending_free(cmd); in fast_connectable_complete()
6586 struct mgmt_pending_cmd *cmd = data; in write_fast_connectable_sync() local
6587 struct mgmt_mode *cp = cmd->param; in write_fast_connectable_sync()
6596 struct mgmt_pending_cmd *cmd; in set_fast_connectable() local
6626 cmd = mgmt_pending_new(sk, MGMT_OP_SET_FAST_CONNECTABLE, hdev, data, in set_fast_connectable()
6628 if (!cmd) in set_fast_connectable()
6631 err = hci_cmd_sync_queue(hdev, write_fast_connectable_sync, cmd, in set_fast_connectable()
6638 if (cmd) in set_fast_connectable()
6639 mgmt_pending_free(cmd); in set_fast_connectable()
6650 struct mgmt_pending_cmd *cmd = data; in set_bredr_complete() local
6662 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); in set_bredr_complete()
6664 send_settings_rsp(cmd->sk, MGMT_OP_SET_BREDR, hdev); in set_bredr_complete()
6665 new_settings(hdev, cmd->sk); in set_bredr_complete()
6668 mgmt_pending_free(cmd); in set_bredr_complete()
6692 struct mgmt_pending_cmd *cmd; in set_bredr() local
6763 cmd = mgmt_pending_new(sk, MGMT_OP_SET_BREDR, hdev, data, len); in set_bredr()
6764 if (!cmd) in set_bredr()
6767 err = hci_cmd_sync_queue(hdev, set_bredr_sync, cmd, in set_bredr()
6773 if (cmd) in set_bredr()
6774 mgmt_pending_free(cmd); in set_bredr()
6791 struct mgmt_pending_cmd *cmd = data; in set_secure_conn_complete() local
6799 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, mgmt_err); in set_secure_conn_complete()
6803 cp = cmd->param; in set_secure_conn_complete()
6820 send_settings_rsp(cmd->sk, cmd->opcode, hdev); in set_secure_conn_complete()
6821 new_settings(hdev, cmd->sk); in set_secure_conn_complete()
6824 mgmt_pending_free(cmd); in set_secure_conn_complete()
6829 struct mgmt_pending_cmd *cmd = data; in set_secure_conn_sync() local
6830 struct mgmt_mode *cp = cmd->param; in set_secure_conn_sync()
6843 struct mgmt_pending_cmd *cmd; in set_secure_conn() local
6901 cmd = mgmt_pending_new(sk, MGMT_OP_SET_SECURE_CONN, hdev, data, len); in set_secure_conn()
6902 if (!cmd) in set_secure_conn()
6905 err = hci_cmd_sync_queue(hdev, set_secure_conn_sync, cmd, in set_secure_conn()
6911 if (cmd) in set_secure_conn()
6912 mgmt_pending_free(cmd); in set_secure_conn()
7225 struct mgmt_pending_cmd *cmd = data; in get_conn_info_complete() local
7226 struct hci_conn *conn = cmd->user_data; in get_conn_info_complete()
7227 struct mgmt_cp_get_conn_info *cp = cmd->param; in get_conn_info_complete()
7246 mgmt_cmd_complete(cmd->sk, cmd->index, MGMT_OP_GET_CONN_INFO, status, in get_conn_info_complete()
7249 mgmt_pending_free(cmd); in get_conn_info_complete()
7254 struct mgmt_pending_cmd *cmd = data; in get_conn_info_sync() local
7255 struct mgmt_cp_get_conn_info *cp = cmd->param; in get_conn_info_sync()
7270 cmd->user_data = conn; in get_conn_info_sync()
7344 struct mgmt_pending_cmd *cmd; in get_conn_info() local
7346 cmd = mgmt_pending_new(sk, MGMT_OP_GET_CONN_INFO, hdev, data, in get_conn_info()
7348 if (!cmd) { in get_conn_info()
7352 cmd, get_conn_info_complete); in get_conn_info()
7359 if (cmd) in get_conn_info()
7360 mgmt_pending_free(cmd); in get_conn_info()
7383 struct mgmt_pending_cmd *cmd = data; in get_clock_info_complete() local
7384 struct mgmt_cp_get_clock_info *cp = cmd->param; in get_clock_info_complete()
7386 struct hci_conn *conn = cmd->user_data; in get_clock_info_complete()
7406 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, status, &rp, in get_clock_info_complete()
7409 mgmt_pending_free(cmd); in get_clock_info_complete()
7414 struct mgmt_pending_cmd *cmd = data; in get_clock_info_sync() local
7415 struct mgmt_cp_get_clock_info *cp = cmd->param; in get_clock_info_sync()
7427 cmd->user_data = conn; in get_clock_info_sync()
7439 struct mgmt_pending_cmd *cmd; in get_clock_info() local
7477 cmd = mgmt_pending_new(sk, MGMT_OP_GET_CLOCK_INFO, hdev, data, len); in get_clock_info()
7478 if (!cmd) in get_clock_info()
7481 err = hci_cmd_sync_queue(hdev, get_clock_info_sync, cmd, in get_clock_info()
7488 if (cmd) in get_clock_info()
7489 mgmt_pending_free(cmd); in get_clock_info()
8018 struct mgmt_pending_cmd *cmd = data; in read_local_oob_ext_data_complete() local
8019 struct sk_buff *skb = cmd->skb; in read_local_oob_ext_data_complete()
8023 if (cmd != pending_find(MGMT_OP_READ_LOCAL_OOB_EXT_DATA, hdev)) in read_local_oob_ext_data_complete()
8037 mgmt_cp = cmd->param; in read_local_oob_ext_data_complete()
8116 err = mgmt_cmd_complete(cmd->sk, hdev->id, in read_local_oob_ext_data_complete()
8122 hci_sock_set_flag(cmd->sk, HCI_MGMT_OOB_DATA_EVENTS); in read_local_oob_ext_data_complete()
8126 HCI_MGMT_OOB_DATA_EVENTS, cmd->sk); in read_local_oob_ext_data_complete()
8132 mgmt_pending_remove(cmd); in read_local_oob_ext_data_complete()
8138 struct mgmt_pending_cmd *cmd; in read_local_ssp_oob_req() local
8141 cmd = mgmt_pending_add(sk, MGMT_OP_READ_LOCAL_OOB_EXT_DATA, hdev, in read_local_ssp_oob_req()
8143 if (!cmd) in read_local_ssp_oob_req()
8146 err = hci_cmd_sync_queue(hdev, read_local_oob_data_sync, cmd, in read_local_ssp_oob_req()
8150 mgmt_pending_remove(cmd); in read_local_ssp_oob_req()
8563 struct mgmt_pending_cmd *cmd = data; in add_advertising_complete() local
8564 struct mgmt_cp_add_advertising *cp = cmd->param; in add_advertising_complete()
8572 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, in add_advertising_complete()
8575 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, in add_advertising_complete()
8578 add_adv_complete(hdev, cmd->sk, cp->instance, err); in add_advertising_complete()
8580 mgmt_pending_free(cmd); in add_advertising_complete()
8585 struct mgmt_pending_cmd *cmd = data; in add_advertising_sync() local
8586 struct mgmt_cp_add_advertising *cp = cmd->param; in add_advertising_sync()
8603 struct mgmt_pending_cmd *cmd; in add_advertising() local
8706 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_ADVERTISING, hdev, data, in add_advertising()
8708 if (!cmd) { in add_advertising()
8715 err = hci_cmd_sync_queue(hdev, add_advertising_sync, cmd, in add_advertising()
8718 mgmt_pending_free(cmd); in add_advertising()
8729 struct mgmt_pending_cmd *cmd = data; in add_ext_adv_params_complete() local
8730 struct mgmt_cp_add_ext_adv_params *cp = cmd->param; in add_ext_adv_params_complete()
8759 mgmt_advertising_removed(cmd->sk, hdev, cp->instance); in add_ext_adv_params_complete()
8763 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, in add_ext_adv_params_complete()
8766 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, in add_ext_adv_params_complete()
8771 if (cmd) in add_ext_adv_params_complete()
8772 mgmt_pending_free(cmd); in add_ext_adv_params_complete()
8779 struct mgmt_pending_cmd *cmd = data; in add_ext_adv_params_sync() local
8780 struct mgmt_cp_add_ext_adv_params *cp = cmd->param; in add_ext_adv_params_sync()
8790 struct mgmt_pending_cmd *cmd = NULL; in add_ext_adv_params() local
8873 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_EXT_ADV_PARAMS, hdev, in add_ext_adv_params()
8875 if (!cmd) { in add_ext_adv_params()
8881 err = hci_cmd_sync_queue(hdev, add_ext_adv_params_sync, cmd, in add_ext_adv_params()
8884 mgmt_pending_free(cmd); in add_ext_adv_params()
8903 struct mgmt_pending_cmd *cmd = data; in add_ext_adv_data_complete() local
8904 struct mgmt_cp_add_ext_adv_data *cp = cmd->param; in add_ext_adv_data_complete()
8907 add_adv_complete(hdev, cmd->sk, cp->instance, err); in add_ext_adv_data_complete()
8914 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, in add_ext_adv_data_complete()
8917 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, in add_ext_adv_data_complete()
8920 mgmt_pending_free(cmd); in add_ext_adv_data_complete()
8925 struct mgmt_pending_cmd *cmd = data; in add_ext_adv_data_sync() local
8926 struct mgmt_cp_add_ext_adv_data *cp = cmd->param; in add_ext_adv_data_sync()
8953 struct mgmt_pending_cmd *cmd; in add_ext_adv_data() local
9030 cmd = mgmt_pending_new(sk, MGMT_OP_ADD_EXT_ADV_DATA, hdev, data, in add_ext_adv_data()
9032 if (!cmd) { in add_ext_adv_data()
9037 err = hci_cmd_sync_queue(hdev, add_ext_adv_data_sync, cmd, in add_ext_adv_data()
9040 mgmt_pending_free(cmd); in add_ext_adv_data()
9066 struct mgmt_pending_cmd *cmd = data; in remove_advertising_complete() local
9067 struct mgmt_cp_remove_advertising *cp = cmd->param; in remove_advertising_complete()
9076 mgmt_cmd_status(cmd->sk, cmd->index, cmd->opcode, in remove_advertising_complete()
9079 mgmt_cmd_complete(cmd->sk, cmd->index, cmd->opcode, in remove_advertising_complete()
9082 mgmt_pending_free(cmd); in remove_advertising_complete()
9087 struct mgmt_pending_cmd *cmd = data; in remove_advertising_sync() local
9088 struct mgmt_cp_remove_advertising *cp = cmd->param; in remove_advertising_sync()
9091 err = hci_remove_advertising_sync(hdev, cmd->sk, cp->instance, true); in remove_advertising_sync()
9105 struct mgmt_pending_cmd *cmd; in remove_advertising() local
9131 cmd = mgmt_pending_new(sk, MGMT_OP_REMOVE_ADVERTISING, hdev, data, in remove_advertising()
9133 if (!cmd) { in remove_advertising()
9138 err = hci_cmd_sync_queue(hdev, remove_advertising_sync, cmd, in remove_advertising()
9141 mgmt_pending_free(cmd); in remove_advertising()
9434 struct mgmt_pending_cmd *cmd; in mgmt_set_powered_failed() local
9437 cmd = pending_find(MGMT_OP_SET_POWERED, hdev); in mgmt_set_powered_failed()
9438 if (!cmd) in mgmt_set_powered_failed()
9446 mgmt_cmd_status(cmd->sk, hdev->id, MGMT_OP_SET_POWERED, status); in mgmt_set_powered_failed()
9448 mgmt_pending_remove(cmd); in mgmt_set_powered_failed()
9647 static void unpair_device_rsp(struct mgmt_pending_cmd *cmd, void *data) in unpair_device_rsp() argument
9650 struct mgmt_cp_unpair_device *cp = cmd->param; in unpair_device_rsp()
9652 device_unpaired(hdev, &cp->addr.bdaddr, cp->addr.type, cmd->sk); in unpair_device_rsp()
9654 cmd->cmd_complete(cmd, 0); in unpair_device_rsp()
9655 mgmt_pending_remove(cmd); in unpair_device_rsp()
9660 struct mgmt_pending_cmd *cmd; in mgmt_powering_down() local
9663 cmd = pending_find(MGMT_OP_SET_POWERED, hdev); in mgmt_powering_down()
9664 if (!cmd) in mgmt_powering_down()
9667 cp = cmd->param; in mgmt_powering_down()
9706 struct mgmt_pending_cmd *cmd; in mgmt_disconnect_failed() local
9711 cmd = pending_find(MGMT_OP_DISCONNECT, hdev); in mgmt_disconnect_failed()
9712 if (!cmd) in mgmt_disconnect_failed()
9715 cp = cmd->param; in mgmt_disconnect_failed()
9723 cmd->cmd_complete(cmd, mgmt_status(status)); in mgmt_disconnect_failed()
9724 mgmt_pending_remove(cmd); in mgmt_disconnect_failed()
9753 struct mgmt_pending_cmd *cmd; in mgmt_pin_code_reply_complete() local
9755 cmd = pending_find(MGMT_OP_PIN_CODE_REPLY, hdev); in mgmt_pin_code_reply_complete()
9756 if (!cmd) in mgmt_pin_code_reply_complete()
9759 cmd->cmd_complete(cmd, mgmt_status(status)); in mgmt_pin_code_reply_complete()
9760 mgmt_pending_remove(cmd); in mgmt_pin_code_reply_complete()
9766 struct mgmt_pending_cmd *cmd; in mgmt_pin_code_neg_reply_complete() local
9768 cmd = pending_find(MGMT_OP_PIN_CODE_NEG_REPLY, hdev); in mgmt_pin_code_neg_reply_complete()
9769 if (!cmd) in mgmt_pin_code_neg_reply_complete()
9772 cmd->cmd_complete(cmd, mgmt_status(status)); in mgmt_pin_code_neg_reply_complete()
9773 mgmt_pending_remove(cmd); in mgmt_pin_code_neg_reply_complete()
9811 struct mgmt_pending_cmd *cmd; in user_pairing_resp_complete() local
9813 cmd = pending_find(opcode, hdev); in user_pairing_resp_complete()
9814 if (!cmd) in user_pairing_resp_complete()
9817 cmd->cmd_complete(cmd, mgmt_status(status)); in user_pairing_resp_complete()
9818 mgmt_pending_remove(cmd); in user_pairing_resp_complete()
9872 struct mgmt_pending_cmd *cmd; in mgmt_auth_failed() local
9879 cmd = find_pairing(conn); in mgmt_auth_failed()
9882 cmd ? cmd->sk : NULL); in mgmt_auth_failed()
9884 if (cmd) { in mgmt_auth_failed()
9885 cmd->cmd_complete(cmd, status); in mgmt_auth_failed()
9886 mgmt_pending_remove(cmd); in mgmt_auth_failed()
9917 static void sk_lookup(struct mgmt_pending_cmd *cmd, void *data) in sk_lookup() argument
9922 match->sk = cmd->sk; in sk_lookup()
9949 struct mgmt_pending_cmd *cmd; in mgmt_set_local_name_complete() local
9958 cmd = pending_find(MGMT_OP_SET_LOCAL_NAME, hdev); in mgmt_set_local_name_complete()
9959 if (!cmd) { in mgmt_set_local_name_complete()
9970 HCI_MGMT_LOCAL_NAME_EVENTS, cmd ? cmd->sk : NULL); in mgmt_set_local_name_complete()
9971 ext_info_changed(hdev, cmd ? cmd->sk : NULL); in mgmt_set_local_name_complete()