diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2014-07-10 22:58:29 -0400 |
---|---|---|
committer | Johan Hedberg <johan.hedberg@intel.com> | 2014-07-11 06:53:04 -0400 |
commit | f49daa8190ebf25eae907048266b590a9cdccb95 (patch) | |
tree | dee6ee7780dda2218098ef6ff7ce9dc0f22680c7 /include/net/bluetooth | |
parent | 12aa4f0a3d0576c554efc770a6e16c8bb897b966 (diff) |
Bluetooth: Move HCI socket definitions into its own header file
All the HCI sockets and ioctl based definitions have been in a global
header file that also includes all the HCI protocol structures. To
make this a bit cleaner, move them into its own file.
This also adjusts fs/compat_ioctl.c to only include this new file
and not all the protocol structures that are not needed.
Signed-off-by: Marcel Holtmann <marcel@holtmann.org>
Signed-off-by: Johan Hedberg <johan.hedberg@intel.com>
Diffstat (limited to 'include/net/bluetooth')
-rw-r--r-- | include/net/bluetooth/hci.h | 149 | ||||
-rw-r--r-- | include/net/bluetooth/hci_core.h | 1 | ||||
-rw-r--r-- | include/net/bluetooth/hci_sock.h | 175 |
3 files changed, 176 insertions, 149 deletions
diff --git a/include/net/bluetooth/hci.h b/include/net/bluetooth/hci.h index a01236e2df13..7f754a246ca5 100644 --- a/include/net/bluetooth/hci.h +++ b/include/net/bluetooth/hci.h | |||
@@ -202,33 +202,6 @@ enum { | |||
202 | #define HCI_PERSISTENT_MASK (BIT(HCI_LE_SCAN) | BIT(HCI_PERIODIC_INQ) | \ | 202 | #define HCI_PERSISTENT_MASK (BIT(HCI_LE_SCAN) | BIT(HCI_PERIODIC_INQ) | \ |
203 | BIT(HCI_FAST_CONNECTABLE) | BIT(HCI_LE_ADV)) | 203 | BIT(HCI_FAST_CONNECTABLE) | BIT(HCI_LE_ADV)) |
204 | 204 | ||
205 | /* HCI ioctl defines */ | ||
206 | #define HCIDEVUP _IOW('H', 201, int) | ||
207 | #define HCIDEVDOWN _IOW('H', 202, int) | ||
208 | #define HCIDEVRESET _IOW('H', 203, int) | ||
209 | #define HCIDEVRESTAT _IOW('H', 204, int) | ||
210 | |||
211 | #define HCIGETDEVLIST _IOR('H', 210, int) | ||
212 | #define HCIGETDEVINFO _IOR('H', 211, int) | ||
213 | #define HCIGETCONNLIST _IOR('H', 212, int) | ||
214 | #define HCIGETCONNINFO _IOR('H', 213, int) | ||
215 | #define HCIGETAUTHINFO _IOR('H', 215, int) | ||
216 | |||
217 | #define HCISETRAW _IOW('H', 220, int) | ||
218 | #define HCISETSCAN _IOW('H', 221, int) | ||
219 | #define HCISETAUTH _IOW('H', 222, int) | ||
220 | #define HCISETENCRYPT _IOW('H', 223, int) | ||
221 | #define HCISETPTYPE _IOW('H', 224, int) | ||
222 | #define HCISETLINKPOL _IOW('H', 225, int) | ||
223 | #define HCISETLINKMODE _IOW('H', 226, int) | ||
224 | #define HCISETACLMTU _IOW('H', 227, int) | ||
225 | #define HCISETSCOMTU _IOW('H', 228, int) | ||
226 | |||
227 | #define HCIBLOCKADDR _IOW('H', 230, int) | ||
228 | #define HCIUNBLOCKADDR _IOW('H', 231, int) | ||
229 | |||
230 | #define HCIINQUIRY _IOR('H', 240, int) | ||
231 | |||
232 | /* HCI timeouts */ | 205 | /* HCI timeouts */ |
233 | #define HCI_DISCONN_TIMEOUT msecs_to_jiffies(2000) /* 2 seconds */ | 206 | #define HCI_DISCONN_TIMEOUT msecs_to_jiffies(2000) /* 2 seconds */ |
234 | #define HCI_PAIRING_TIMEOUT msecs_to_jiffies(60000) /* 60 seconds */ | 207 | #define HCI_PAIRING_TIMEOUT msecs_to_jiffies(60000) /* 60 seconds */ |
@@ -1871,126 +1844,4 @@ static inline struct hci_sco_hdr *hci_sco_hdr(const struct sk_buff *skb) | |||
1871 | #define hci_handle(h) (h & 0x0fff) | 1844 | #define hci_handle(h) (h & 0x0fff) |
1872 | #define hci_flags(h) (h >> 12) | 1845 | #define hci_flags(h) (h >> 12) |
1873 | 1846 | ||
1874 | /* ---- HCI Sockets ---- */ | ||
1875 | |||
1876 | /* Socket options */ | ||
1877 | #define HCI_DATA_DIR 1 | ||
1878 | #define HCI_FILTER 2 | ||
1879 | #define HCI_TIME_STAMP 3 | ||
1880 | |||
1881 | /* CMSG flags */ | ||
1882 | #define HCI_CMSG_DIR 0x0001 | ||
1883 | #define HCI_CMSG_TSTAMP 0x0002 | ||
1884 | |||
1885 | struct sockaddr_hci { | ||
1886 | sa_family_t hci_family; | ||
1887 | unsigned short hci_dev; | ||
1888 | unsigned short hci_channel; | ||
1889 | }; | ||
1890 | #define HCI_DEV_NONE 0xffff | ||
1891 | |||
1892 | #define HCI_CHANNEL_RAW 0 | ||
1893 | #define HCI_CHANNEL_USER 1 | ||
1894 | #define HCI_CHANNEL_MONITOR 2 | ||
1895 | #define HCI_CHANNEL_CONTROL 3 | ||
1896 | |||
1897 | struct hci_filter { | ||
1898 | unsigned long type_mask; | ||
1899 | unsigned long event_mask[2]; | ||
1900 | __le16 opcode; | ||
1901 | }; | ||
1902 | |||
1903 | struct hci_ufilter { | ||
1904 | __u32 type_mask; | ||
1905 | __u32 event_mask[2]; | ||
1906 | __le16 opcode; | ||
1907 | }; | ||
1908 | |||
1909 | #define HCI_FLT_TYPE_BITS 31 | ||
1910 | #define HCI_FLT_EVENT_BITS 63 | ||
1911 | #define HCI_FLT_OGF_BITS 63 | ||
1912 | #define HCI_FLT_OCF_BITS 127 | ||
1913 | |||
1914 | /* ---- HCI Ioctl requests structures ---- */ | ||
1915 | struct hci_dev_stats { | ||
1916 | __u32 err_rx; | ||
1917 | __u32 err_tx; | ||
1918 | __u32 cmd_tx; | ||
1919 | __u32 evt_rx; | ||
1920 | __u32 acl_tx; | ||
1921 | __u32 acl_rx; | ||
1922 | __u32 sco_tx; | ||
1923 | __u32 sco_rx; | ||
1924 | __u32 byte_rx; | ||
1925 | __u32 byte_tx; | ||
1926 | }; | ||
1927 | |||
1928 | struct hci_dev_info { | ||
1929 | __u16 dev_id; | ||
1930 | char name[8]; | ||
1931 | |||
1932 | bdaddr_t bdaddr; | ||
1933 | |||
1934 | __u32 flags; | ||
1935 | __u8 type; | ||
1936 | |||
1937 | __u8 features[8]; | ||
1938 | |||
1939 | __u32 pkt_type; | ||
1940 | __u32 link_policy; | ||
1941 | __u32 link_mode; | ||
1942 | |||
1943 | __u16 acl_mtu; | ||
1944 | __u16 acl_pkts; | ||
1945 | __u16 sco_mtu; | ||
1946 | __u16 sco_pkts; | ||
1947 | |||
1948 | struct hci_dev_stats stat; | ||
1949 | }; | ||
1950 | |||
1951 | struct hci_conn_info { | ||
1952 | __u16 handle; | ||
1953 | bdaddr_t bdaddr; | ||
1954 | __u8 type; | ||
1955 | __u8 out; | ||
1956 | __u16 state; | ||
1957 | __u32 link_mode; | ||
1958 | }; | ||
1959 | |||
1960 | struct hci_dev_req { | ||
1961 | __u16 dev_id; | ||
1962 | __u32 dev_opt; | ||
1963 | }; | ||
1964 | |||
1965 | struct hci_dev_list_req { | ||
1966 | __u16 dev_num; | ||
1967 | struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ | ||
1968 | }; | ||
1969 | |||
1970 | struct hci_conn_list_req { | ||
1971 | __u16 dev_id; | ||
1972 | __u16 conn_num; | ||
1973 | struct hci_conn_info conn_info[0]; | ||
1974 | }; | ||
1975 | |||
1976 | struct hci_conn_info_req { | ||
1977 | bdaddr_t bdaddr; | ||
1978 | __u8 type; | ||
1979 | struct hci_conn_info conn_info[0]; | ||
1980 | }; | ||
1981 | |||
1982 | struct hci_auth_info_req { | ||
1983 | bdaddr_t bdaddr; | ||
1984 | __u8 type; | ||
1985 | }; | ||
1986 | |||
1987 | struct hci_inquiry_req { | ||
1988 | __u16 dev_id; | ||
1989 | __u16 flags; | ||
1990 | __u8 lap[3]; | ||
1991 | __u8 length; | ||
1992 | __u8 num_rsp; | ||
1993 | }; | ||
1994 | #define IREQ_CACHE_FLUSH 0x0001 | ||
1995 | |||
1996 | #endif /* __HCI_H */ | 1847 | #endif /* __HCI_H */ |
diff --git a/include/net/bluetooth/hci_core.h b/include/net/bluetooth/hci_core.h index 7e9e95633a85..5c52a17d6326 100644 --- a/include/net/bluetooth/hci_core.h +++ b/include/net/bluetooth/hci_core.h | |||
@@ -26,6 +26,7 @@ | |||
26 | #define __HCI_CORE_H | 26 | #define __HCI_CORE_H |
27 | 27 | ||
28 | #include <net/bluetooth/hci.h> | 28 | #include <net/bluetooth/hci.h> |
29 | #include <net/bluetooth/hci_sock.h> | ||
29 | 30 | ||
30 | /* HCI priority */ | 31 | /* HCI priority */ |
31 | #define HCI_PRIO_MAX 7 | 32 | #define HCI_PRIO_MAX 7 |
diff --git a/include/net/bluetooth/hci_sock.h b/include/net/bluetooth/hci_sock.h new file mode 100644 index 000000000000..9a46d665c1b5 --- /dev/null +++ b/include/net/bluetooth/hci_sock.h | |||
@@ -0,0 +1,175 @@ | |||
1 | /* | ||
2 | BlueZ - Bluetooth protocol stack for Linux | ||
3 | Copyright (C) 2000-2001 Qualcomm Incorporated | ||
4 | |||
5 | Written 2000,2001 by Maxim Krasnyansky <maxk@qualcomm.com> | ||
6 | |||
7 | This program is free software; you can redistribute it and/or modify | ||
8 | it under the terms of the GNU General Public License version 2 as | ||
9 | published by the Free Software Foundation; | ||
10 | |||
11 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
12 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
13 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD PARTY RIGHTS. | ||
14 | IN NO EVENT SHALL THE COPYRIGHT HOLDER(S) AND AUTHOR(S) BE LIABLE FOR ANY | ||
15 | CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES | ||
16 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||
17 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
18 | OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
19 | |||
20 | ALL LIABILITY, INCLUDING LIABILITY FOR INFRINGEMENT OF ANY PATENTS, | ||
21 | COPYRIGHTS, TRADEMARKS OR OTHER RIGHTS, RELATING TO USE OF THIS | ||
22 | SOFTWARE IS DISCLAIMED. | ||
23 | */ | ||
24 | |||
25 | #ifndef __HCI_SOCK_H | ||
26 | #define __HCI_SOCK_H | ||
27 | |||
28 | /* Socket options */ | ||
29 | #define HCI_DATA_DIR 1 | ||
30 | #define HCI_FILTER 2 | ||
31 | #define HCI_TIME_STAMP 3 | ||
32 | |||
33 | /* CMSG flags */ | ||
34 | #define HCI_CMSG_DIR 0x0001 | ||
35 | #define HCI_CMSG_TSTAMP 0x0002 | ||
36 | |||
37 | struct sockaddr_hci { | ||
38 | sa_family_t hci_family; | ||
39 | unsigned short hci_dev; | ||
40 | unsigned short hci_channel; | ||
41 | }; | ||
42 | #define HCI_DEV_NONE 0xffff | ||
43 | |||
44 | #define HCI_CHANNEL_RAW 0 | ||
45 | #define HCI_CHANNEL_USER 1 | ||
46 | #define HCI_CHANNEL_MONITOR 2 | ||
47 | #define HCI_CHANNEL_CONTROL 3 | ||
48 | |||
49 | struct hci_filter { | ||
50 | unsigned long type_mask; | ||
51 | unsigned long event_mask[2]; | ||
52 | __le16 opcode; | ||
53 | }; | ||
54 | |||
55 | struct hci_ufilter { | ||
56 | __u32 type_mask; | ||
57 | __u32 event_mask[2]; | ||
58 | __le16 opcode; | ||
59 | }; | ||
60 | |||
61 | #define HCI_FLT_TYPE_BITS 31 | ||
62 | #define HCI_FLT_EVENT_BITS 63 | ||
63 | #define HCI_FLT_OGF_BITS 63 | ||
64 | #define HCI_FLT_OCF_BITS 127 | ||
65 | |||
66 | /* Ioctl defines */ | ||
67 | #define HCIDEVUP _IOW('H', 201, int) | ||
68 | #define HCIDEVDOWN _IOW('H', 202, int) | ||
69 | #define HCIDEVRESET _IOW('H', 203, int) | ||
70 | #define HCIDEVRESTAT _IOW('H', 204, int) | ||
71 | |||
72 | #define HCIGETDEVLIST _IOR('H', 210, int) | ||
73 | #define HCIGETDEVINFO _IOR('H', 211, int) | ||
74 | #define HCIGETCONNLIST _IOR('H', 212, int) | ||
75 | #define HCIGETCONNINFO _IOR('H', 213, int) | ||
76 | #define HCIGETAUTHINFO _IOR('H', 215, int) | ||
77 | |||
78 | #define HCISETRAW _IOW('H', 220, int) | ||
79 | #define HCISETSCAN _IOW('H', 221, int) | ||
80 | #define HCISETAUTH _IOW('H', 222, int) | ||
81 | #define HCISETENCRYPT _IOW('H', 223, int) | ||
82 | #define HCISETPTYPE _IOW('H', 224, int) | ||
83 | #define HCISETLINKPOL _IOW('H', 225, int) | ||
84 | #define HCISETLINKMODE _IOW('H', 226, int) | ||
85 | #define HCISETACLMTU _IOW('H', 227, int) | ||
86 | #define HCISETSCOMTU _IOW('H', 228, int) | ||
87 | |||
88 | #define HCIBLOCKADDR _IOW('H', 230, int) | ||
89 | #define HCIUNBLOCKADDR _IOW('H', 231, int) | ||
90 | |||
91 | #define HCIINQUIRY _IOR('H', 240, int) | ||
92 | |||
93 | /* Ioctl requests structures */ | ||
94 | struct hci_dev_stats { | ||
95 | __u32 err_rx; | ||
96 | __u32 err_tx; | ||
97 | __u32 cmd_tx; | ||
98 | __u32 evt_rx; | ||
99 | __u32 acl_tx; | ||
100 | __u32 acl_rx; | ||
101 | __u32 sco_tx; | ||
102 | __u32 sco_rx; | ||
103 | __u32 byte_rx; | ||
104 | __u32 byte_tx; | ||
105 | }; | ||
106 | |||
107 | struct hci_dev_info { | ||
108 | __u16 dev_id; | ||
109 | char name[8]; | ||
110 | |||
111 | bdaddr_t bdaddr; | ||
112 | |||
113 | __u32 flags; | ||
114 | __u8 type; | ||
115 | |||
116 | __u8 features[8]; | ||
117 | |||
118 | __u32 pkt_type; | ||
119 | __u32 link_policy; | ||
120 | __u32 link_mode; | ||
121 | |||
122 | __u16 acl_mtu; | ||
123 | __u16 acl_pkts; | ||
124 | __u16 sco_mtu; | ||
125 | __u16 sco_pkts; | ||
126 | |||
127 | struct hci_dev_stats stat; | ||
128 | }; | ||
129 | |||
130 | struct hci_conn_info { | ||
131 | __u16 handle; | ||
132 | bdaddr_t bdaddr; | ||
133 | __u8 type; | ||
134 | __u8 out; | ||
135 | __u16 state; | ||
136 | __u32 link_mode; | ||
137 | }; | ||
138 | |||
139 | struct hci_dev_req { | ||
140 | __u16 dev_id; | ||
141 | __u32 dev_opt; | ||
142 | }; | ||
143 | |||
144 | struct hci_dev_list_req { | ||
145 | __u16 dev_num; | ||
146 | struct hci_dev_req dev_req[0]; /* hci_dev_req structures */ | ||
147 | }; | ||
148 | |||
149 | struct hci_conn_list_req { | ||
150 | __u16 dev_id; | ||
151 | __u16 conn_num; | ||
152 | struct hci_conn_info conn_info[0]; | ||
153 | }; | ||
154 | |||
155 | struct hci_conn_info_req { | ||
156 | bdaddr_t bdaddr; | ||
157 | __u8 type; | ||
158 | struct hci_conn_info conn_info[0]; | ||
159 | }; | ||
160 | |||
161 | struct hci_auth_info_req { | ||
162 | bdaddr_t bdaddr; | ||
163 | __u8 type; | ||
164 | }; | ||
165 | |||
166 | struct hci_inquiry_req { | ||
167 | __u16 dev_id; | ||
168 | __u16 flags; | ||
169 | __u8 lap[3]; | ||
170 | __u8 length; | ||
171 | __u8 num_rsp; | ||
172 | }; | ||
173 | #define IREQ_CACHE_FLUSH 0x0001 | ||
174 | |||
175 | #endif /* __HCI_SOCK_H */ | ||