Lines Matching refs:cmd
126 int mgmt_cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status) in mgmt_cmd_status() argument
133 BT_DBG("sock %p, index %u, cmd %u, status %u", sk, index, cmd, status); in mgmt_cmd_status()
147 ev->opcode = cpu_to_le16(cmd); in mgmt_cmd_status()
169 int mgmt_cmd_complete(struct sock *sk, u16 index, u16 cmd, u8 status, in mgmt_cmd_complete() argument
190 ev->opcode = cpu_to_le16(cmd); in mgmt_cmd_complete()
220 struct mgmt_pending_cmd *cmd, *tmp; in mgmt_pending_find() local
224 list_for_each_entry_safe(cmd, tmp, &hdev->mgmt_pending, list) { in mgmt_pending_find()
225 if (hci_sock_get_channel(cmd->sk) != channel) in mgmt_pending_find()
228 if (cmd->opcode == opcode) { in mgmt_pending_find()
230 return cmd; in mgmt_pending_find()
240 void (*cb)(struct mgmt_pending_cmd *cmd, void *data), in mgmt_pending_foreach() argument
243 struct mgmt_pending_cmd *cmd, *tmp; in mgmt_pending_foreach() local
247 list_for_each_entry_safe(cmd, tmp, &hdev->mgmt_pending, list) { in mgmt_pending_foreach()
248 if (opcode > 0 && cmd->opcode != opcode) in mgmt_pending_foreach()
252 list_del(&cmd->list); in mgmt_pending_foreach()
254 cb(cmd, data); in mgmt_pending_foreach()
257 mgmt_pending_free(cmd); in mgmt_pending_foreach()
267 struct mgmt_pending_cmd *cmd; in mgmt_pending_new() local
269 cmd = kzalloc(sizeof(*cmd), GFP_KERNEL); in mgmt_pending_new()
270 if (!cmd) in mgmt_pending_new()
273 cmd->opcode = opcode; in mgmt_pending_new()
274 cmd->hdev = hdev; in mgmt_pending_new()
276 cmd->param = kmemdup(data, len, GFP_KERNEL); in mgmt_pending_new()
277 if (!cmd->param) { in mgmt_pending_new()
278 kfree(cmd); in mgmt_pending_new()
282 cmd->param_len = len; in mgmt_pending_new()
284 cmd->sk = sk; in mgmt_pending_new()
287 return cmd; in mgmt_pending_new()
294 struct mgmt_pending_cmd *cmd; in mgmt_pending_add() local
296 cmd = mgmt_pending_new(sk, opcode, hdev, data, len); in mgmt_pending_add()
297 if (!cmd) in mgmt_pending_add()
301 list_add_tail(&cmd->list, &hdev->mgmt_pending); in mgmt_pending_add()
304 return cmd; in mgmt_pending_add()
307 void mgmt_pending_free(struct mgmt_pending_cmd *cmd) in mgmt_pending_free() argument
309 sock_put(cmd->sk); in mgmt_pending_free()
310 kfree(cmd->param); in mgmt_pending_free()
311 kfree(cmd); in mgmt_pending_free()
314 void mgmt_pending_remove(struct mgmt_pending_cmd *cmd) in mgmt_pending_remove() argument
316 mutex_lock(&cmd->hdev->mgmt_pending_lock); in mgmt_pending_remove()
317 list_del(&cmd->list); in mgmt_pending_remove()
318 mutex_unlock(&cmd->hdev->mgmt_pending_lock); in mgmt_pending_remove()
320 mgmt_pending_free(cmd); in mgmt_pending_remove()