0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023 struct mgmt_pending_cmd {
0024 struct list_head list;
0025 u16 opcode;
0026 int index;
0027 void *param;
0028 size_t param_len;
0029 struct sock *sk;
0030 struct sk_buff *skb;
0031 void *user_data;
0032 int (*cmd_complete)(struct mgmt_pending_cmd *cmd, u8 status);
0033 };
0034
0035 struct sk_buff *mgmt_alloc_skb(struct hci_dev *hdev, u16 opcode,
0036 unsigned int size);
0037 int mgmt_send_event_skb(unsigned short channel, struct sk_buff *skb, int flag,
0038 struct sock *skip_sk);
0039 int mgmt_send_event(u16 event, struct hci_dev *hdev, unsigned short channel,
0040 void *data, u16 data_len, int flag, struct sock *skip_sk);
0041 int mgmt_cmd_status(struct sock *sk, u16 index, u16 cmd, u8 status);
0042 int mgmt_cmd_complete(struct sock *sk, u16 index, u16 cmd, u8 status,
0043 void *rp, size_t rp_len);
0044
0045 struct mgmt_pending_cmd *mgmt_pending_find(unsigned short channel, u16 opcode,
0046 struct hci_dev *hdev);
0047 struct mgmt_pending_cmd *mgmt_pending_find_data(unsigned short channel,
0048 u16 opcode,
0049 struct hci_dev *hdev,
0050 const void *data);
0051 void mgmt_pending_foreach(u16 opcode, struct hci_dev *hdev,
0052 void (*cb)(struct mgmt_pending_cmd *cmd, void *data),
0053 void *data);
0054 struct mgmt_pending_cmd *mgmt_pending_add(struct sock *sk, u16 opcode,
0055 struct hci_dev *hdev,
0056 void *data, u16 len);
0057 struct mgmt_pending_cmd *mgmt_pending_new(struct sock *sk, u16 opcode,
0058 struct hci_dev *hdev,
0059 void *data, u16 len);
0060 void mgmt_pending_free(struct mgmt_pending_cmd *cmd);
0061 void mgmt_pending_remove(struct mgmt_pending_cmd *cmd);