Blame view
net/bluetooth/a2mp.h
3.19 KB
97fb5e8d9 treewide: Replace... |
1 |
/* SPDX-License-Identifier: GPL-2.0-only */ |
9740e49d1 Bluetooth: A2MP: ... |
2 3 4 |
/* Copyright (c) 2010,2011 Code Aurora Forum. All rights reserved. Copyright (c) 2011,2012 Intel Corp. |
9740e49d1 Bluetooth: A2MP: ... |
5 6 7 8 |
*/ #ifndef __A2MP_H #define __A2MP_H |
97e8e89d2 Bluetooth: A2MP: ... |
9 |
#include <net/bluetooth/l2cap.h> |
f97268fcc Bluetooth: A2MP: ... |
10 11 |
enum amp_mgr_state { READ_LOC_AMP_INFO, |
903e45411 Bluetooth: AMP: U... |
12 |
READ_LOC_AMP_ASSOC, |
9495b2ee7 Bluetooth: AMP: P... |
13 |
READ_LOC_AMP_ASSOC_FINAL, |
8e05e3ba8 Bluetooth: AMP: S... |
14 |
WRITE_REMOTE_AMP_ASSOC, |
f97268fcc Bluetooth: A2MP: ... |
15 |
}; |
9740e49d1 Bluetooth: A2MP: ... |
16 |
struct amp_mgr { |
f97268fcc Bluetooth: A2MP: ... |
17 |
struct list_head list; |
9740e49d1 Bluetooth: A2MP: ... |
18 19 |
struct l2cap_conn *l2cap_conn; struct l2cap_chan *a2mp_chan; |
93c3e8f5c Bluetooth: Choose... |
20 |
struct l2cap_chan *bredr_chan; |
9740e49d1 Bluetooth: A2MP: ... |
21 22 23 |
struct kref kref; __u8 ident; __u8 handle; |
cb6801c64 Bluetooth: AMP: U... |
24 |
unsigned long state; |
9740e49d1 Bluetooth: A2MP: ... |
25 |
unsigned long flags; |
52c0d6e56 Bluetooth: AMP: R... |
26 27 28 |
struct list_head amp_ctrls; struct mutex amp_ctrls_lock; |
9740e49d1 Bluetooth: A2MP: ... |
29 |
}; |
f6d3c6e78 Bluetooth: A2MP: ... |
30 31 32 33 |
struct a2mp_cmd { __u8 code; __u8 ident; __le16 len; |
a7e454542 Bluetooth: Replac... |
34 |
__u8 data[]; |
f6d3c6e78 Bluetooth: A2MP: ... |
35 |
} __packed; |
b9058fb67 Bluetooth: A2MP: ... |
36 37 38 39 |
/* A2MP command codes */ #define A2MP_COMMAND_REJ 0x01 struct a2mp_cmd_rej { __le16 reason; |
a7e454542 Bluetooth: Replac... |
40 |
__u8 data[]; |
b9058fb67 Bluetooth: A2MP: ... |
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
} __packed; #define A2MP_DISCOVER_REQ 0x02 struct a2mp_discov_req { __le16 mtu; __le16 ext_feat; } __packed; struct a2mp_cl { __u8 id; __u8 type; __u8 status; } __packed; #define A2MP_DISCOVER_RSP 0x03 struct a2mp_discov_rsp { __le16 mtu; __le16 ext_feat; |
a7e454542 Bluetooth: Replac... |
59 |
struct a2mp_cl cl[]; |
b9058fb67 Bluetooth: A2MP: ... |
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
} __packed; #define A2MP_CHANGE_NOTIFY 0x04 #define A2MP_CHANGE_RSP 0x05 #define A2MP_GETINFO_REQ 0x06 struct a2mp_info_req { __u8 id; } __packed; #define A2MP_GETINFO_RSP 0x07 struct a2mp_info_rsp { __u8 id; __u8 status; __le32 total_bw; __le32 max_bw; __le32 min_latency; __le16 pal_cap; __le16 assoc_size; } __packed; #define A2MP_GETAMPASSOC_REQ 0x08 struct a2mp_amp_assoc_req { __u8 id; } __packed; #define A2MP_GETAMPASSOC_RSP 0x09 struct a2mp_amp_assoc_rsp { __u8 id; __u8 status; |
a7e454542 Bluetooth: Replac... |
90 |
__u8 amp_assoc[]; |
b9058fb67 Bluetooth: A2MP: ... |
91 92 93 94 95 96 97 |
} __packed; #define A2MP_CREATEPHYSLINK_REQ 0x0A #define A2MP_DISCONNPHYSLINK_REQ 0x0C struct a2mp_physlink_req { __u8 local_id; __u8 remote_id; |
a7e454542 Bluetooth: Replac... |
98 |
__u8 amp_assoc[]; |
b9058fb67 Bluetooth: A2MP: ... |
99 100 101 102 103 104 105 106 107 |
} __packed; #define A2MP_CREATEPHYSLINK_RSP 0x0B #define A2MP_DISCONNPHYSLINK_RSP 0x0D struct a2mp_physlink_rsp { __u8 local_id; __u8 remote_id; __u8 status; } __packed; |
e7af522e0 Bluetooth: A2MP: ... |
108 109 110 111 112 113 114 115 116 |
/* A2MP response status */ #define A2MP_STATUS_SUCCESS 0x00 #define A2MP_STATUS_INVALID_CTRL_ID 0x01 #define A2MP_STATUS_UNABLE_START_LINK_CREATION 0x02 #define A2MP_STATUS_NO_PHYSICAL_LINK_EXISTS 0x02 #define A2MP_STATUS_COLLISION_OCCURED 0x03 #define A2MP_STATUS_DISCONN_REQ_RECVD 0x04 #define A2MP_STATUS_PHYS_LINK_EXISTS 0x05 #define A2MP_STATUS_SECURITY_VIOLATION 0x06 |
f706adfea Bluetooth: AMP: G... |
117 |
struct amp_mgr *amp_mgr_get(struct amp_mgr *mgr); |
244bc3775 Bluetooth: Add BT... |
118 119 |
#if IS_ENABLED(CONFIG_BT_HS) |
9740e49d1 Bluetooth: A2MP: ... |
120 |
int amp_mgr_put(struct amp_mgr *mgr); |
97e8e89d2 Bluetooth: A2MP: ... |
121 122 |
struct l2cap_chan *a2mp_channel_create(struct l2cap_conn *conn, struct sk_buff *skb); |
93c3e8f5c Bluetooth: Choose... |
123 |
void a2mp_discover_amp(struct l2cap_chan *chan); |
244bc3775 Bluetooth: Add BT... |
124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 |
#else static inline int amp_mgr_put(struct amp_mgr *mgr) { return 0; } static inline struct l2cap_chan *a2mp_channel_create(struct l2cap_conn *conn, struct sk_buff *skb) { return NULL; } static inline void a2mp_discover_amp(struct l2cap_chan *chan) { } #endif |
8e2a0d92c Bluetooth: AMP: U... |
140 |
void a2mp_send_getinfo_rsp(struct hci_dev *hdev); |
903e45411 Bluetooth: AMP: U... |
141 |
void a2mp_send_getampassoc_rsp(struct hci_dev *hdev, u8 status); |
9495b2ee7 Bluetooth: AMP: P... |
142 |
void a2mp_send_create_phy_link_req(struct hci_dev *hdev, u8 status); |
8e05e3ba8 Bluetooth: AMP: S... |
143 |
void a2mp_send_create_phy_link_rsp(struct hci_dev *hdev, u8 status); |
9740e49d1 Bluetooth: A2MP: ... |
144 145 |
#endif /* __A2MP_H */ |