ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.6.tar.bz2
[linux-2.6.git] / include / net / bluetooth / hci.h
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 /*
26  *  $Id: hci.h,v 1.4 2002/04/18 22:26:15 maxk Exp $
27  */
28
29 #ifndef __HCI_H
30 #define __HCI_H
31
32 #define HCI_MAX_ACL_SIZE        1024
33 #define HCI_MAX_SCO_SIZE        255
34 #define HCI_MAX_EVENT_SIZE      260
35 #define HCI_MAX_FRAME_SIZE      (HCI_MAX_ACL_SIZE + 4)
36
37 /* HCI dev events */
38 #define HCI_DEV_REG                     1
39 #define HCI_DEV_UNREG                   2
40 #define HCI_DEV_UP                      3
41 #define HCI_DEV_DOWN                    4
42 #define HCI_DEV_SUSPEND                 5
43 #define HCI_DEV_RESUME                  6
44
45 /* HCI notify events */
46 #define HCI_NOTIFY_CONN_ADD             1
47 #define HCI_NOTIFY_CONN_DEL             2
48 #define HCI_NOTIFY_VOICE_SETTING        3
49
50 /* HCI device types */
51 #define HCI_VHCI        0
52 #define HCI_USB         1
53 #define HCI_PCCARD      2
54 #define HCI_UART        3
55 #define HCI_RS232       4
56 #define HCI_PCI         5
57
58 /* HCI device quirks */
59 enum {
60         HCI_QUIRK_RESET_ON_INIT
61 };
62
63 /* HCI device flags */
64 enum {
65         HCI_UP,
66         HCI_INIT,
67         HCI_RUNNING,
68
69         HCI_PSCAN,
70         HCI_ISCAN,
71         HCI_AUTH,
72         HCI_ENCRYPT,
73         HCI_INQUIRY,
74
75         HCI_RAW
76 };
77
78 /* HCI ioctl defines */
79 #define HCIDEVUP        _IOW('H', 201, int)
80 #define HCIDEVDOWN      _IOW('H', 202, int)
81 #define HCIDEVRESET     _IOW('H', 203, int)
82 #define HCIDEVRESTAT    _IOW('H', 204, int)
83
84 #define HCIGETDEVLIST   _IOR('H', 210, int)
85 #define HCIGETDEVINFO   _IOR('H', 211, int)
86 #define HCIGETCONNLIST  _IOR('H', 212, int)
87 #define HCIGETCONNINFO  _IOR('H', 213, int)
88
89 #define HCISETRAW       _IOW('H', 220, int)
90 #define HCISETSCAN      _IOW('H', 221, int)
91 #define HCISETAUTH      _IOW('H', 222, int)
92 #define HCISETENCRYPT   _IOW('H', 223, int)
93 #define HCISETPTYPE     _IOW('H', 224, int)
94 #define HCISETLINKPOL   _IOW('H', 225, int)
95 #define HCISETLINKMODE  _IOW('H', 226, int)
96 #define HCISETACLMTU    _IOW('H', 227, int)
97 #define HCISETSCOMTU    _IOW('H', 228, int)
98 #define HCISETRAWVND    _IOW('H', 229, int)
99
100 #define HCIINQUIRY      _IOR('H', 240, int)
101
102 /* HCI timeouts */
103 #define HCI_CONN_TIMEOUT        (HZ * 40)
104 #define HCI_DISCONN_TIMEOUT     (HZ * 2)
105 #define HCI_CONN_IDLE_TIMEOUT   (HZ * 60)
106
107 /* HCI Packet types */
108 #define HCI_COMMAND_PKT         0x01
109 #define HCI_ACLDATA_PKT         0x02
110 #define HCI_SCODATA_PKT         0x03
111 #define HCI_EVENT_PKT           0x04
112 #define HCI_UNKNOWN_PKT         0xff
113
114 /* HCI Packet types */
115 #define HCI_DM1         0x0008
116 #define HCI_DM3         0x0400
117 #define HCI_DM5         0x4000
118 #define HCI_DH1         0x0010
119 #define HCI_DH3         0x0800
120 #define HCI_DH5         0x8000
121
122 #define HCI_HV1         0x0020
123 #define HCI_HV2         0x0040
124 #define HCI_HV3         0x0080
125
126 #define SCO_PTYPE_MASK  (HCI_HV1 | HCI_HV2 | HCI_HV3)
127 #define ACL_PTYPE_MASK  (~SCO_PTYPE_MASK)
128
129 /* ACL flags */
130 #define ACL_CONT                0x01
131 #define ACL_START               0x02
132 #define ACL_ACTIVE_BCAST        0x04
133 #define ACL_PICO_BCAST          0x08
134
135 /* Baseband links */
136 #define SCO_LINK        0x00
137 #define ACL_LINK        0x01
138
139 /* LMP features */
140 #define LMP_3SLOT       0x01
141 #define LMP_5SLOT       0x02
142 #define LMP_ENCRYPT     0x04
143 #define LMP_SOFFSET     0x08
144 #define LMP_TACCURACY   0x10
145 #define LMP_RSWITCH     0x20
146 #define LMP_HOLD        0x40
147 #define LMP_SNIF        0x80
148
149 #define LMP_PARK        0x01
150 #define LMP_RSSI        0x02
151 #define LMP_QUALITY     0x04
152 #define LMP_SCO         0x08
153 #define LMP_HV2         0x10
154 #define LMP_HV3         0x20
155 #define LMP_ULAW        0x40
156 #define LMP_ALAW        0x80
157
158 #define LMP_CVSD        0x01
159 #define LMP_PSCHEME     0x02
160 #define LMP_PCONTROL    0x04
161
162 /* Link policies */
163 #define HCI_LP_RSWITCH  0x0001
164 #define HCI_LP_HOLD     0x0002
165 #define HCI_LP_SNIFF    0x0004
166 #define HCI_LP_PARK     0x0008
167
168 /* Link mode */
169 #define HCI_LM_ACCEPT   0x8000
170 #define HCI_LM_MASTER   0x0001
171 #define HCI_LM_AUTH     0x0002
172 #define HCI_LM_ENCRYPT  0x0004
173 #define HCI_LM_TRUSTED  0x0008
174
175 /* -----  HCI Commands ---- */
176 /* OGF & OCF values */
177
178 /* Informational Parameters */
179 #define OGF_INFO_PARAM  0x04
180
181 #define OCF_READ_LOCAL_VERSION  0x0001
182 struct hci_rp_read_loc_version {
183         __u8     status;
184         __u8     hci_ver;
185         __u16    hci_rev;
186         __u8     lmp_ver;
187         __u16    manufacturer;
188         __u16    lmp_subver;
189 } __attribute__ ((packed));
190
191 #define OCF_READ_LOCAL_FEATURES 0x0003
192 struct hci_rp_read_loc_features {
193         __u8 status;
194         __u8 features[8];
195 } __attribute__ ((packed));
196
197 #define OCF_READ_BUFFER_SIZE    0x0005
198 struct hci_rp_read_buffer_size {
199         __u8     status;
200         __u16    acl_mtu;
201         __u8     sco_mtu;
202         __u16    acl_max_pkt;
203         __u16    sco_max_pkt;
204 } __attribute__ ((packed));
205
206 #define OCF_READ_BD_ADDR        0x0009
207 struct hci_rp_read_bd_addr {
208         __u8     status;
209         bdaddr_t bdaddr;
210 } __attribute__ ((packed));
211
212 /* Host Controller and Baseband */
213 #define OGF_HOST_CTL    0x03
214 #define OCF_RESET               0x0003
215 #define OCF_READ_AUTH_ENABLE    0x001F
216 #define OCF_WRITE_AUTH_ENABLE   0x0020
217         #define AUTH_DISABLED           0x00
218         #define AUTH_ENABLED            0x01
219
220 #define OCF_READ_ENCRYPT_MODE   0x0021
221 #define OCF_WRITE_ENCRYPT_MODE  0x0022
222         #define ENCRYPT_DISABLED        0x00
223         #define ENCRYPT_P2P             0x01
224         #define ENCRYPT_BOTH            0x02
225
226 #define OCF_WRITE_CA_TIMEOUT    0x0016  
227 #define OCF_WRITE_PG_TIMEOUT    0x0018
228
229 #define OCF_WRITE_SCAN_ENABLE   0x001A
230         #define SCAN_DISABLED           0x00
231         #define SCAN_INQUIRY            0x01
232         #define SCAN_PAGE               0x02
233
234 #define OCF_SET_EVENT_FLT       0x0005
235 struct hci_cp_set_event_flt {
236         __u8     flt_type;
237         __u8     cond_type;
238         __u8     condition[0];
239 } __attribute__ ((packed));
240
241 /* Filter types */
242 #define HCI_FLT_CLEAR_ALL       0x00
243 #define HCI_FLT_INQ_RESULT      0x01
244 #define HCI_FLT_CONN_SETUP      0x02
245
246 /* CONN_SETUP Condition types */
247 #define HCI_CONN_SETUP_ALLOW_ALL        0x00
248 #define HCI_CONN_SETUP_ALLOW_CLASS      0x01
249 #define HCI_CONN_SETUP_ALLOW_BDADDR     0x02
250
251 /* CONN_SETUP Conditions */
252 #define HCI_CONN_SETUP_AUTO_OFF 0x01
253 #define HCI_CONN_SETUP_AUTO_ON  0x02
254
255 #define OCF_READ_CLASS_OF_DEV   0x0023
256 struct hci_rp_read_dev_class {
257         __u8     status;
258         __u8     dev_class[3];
259 } __attribute__ ((packed));
260
261 #define OCF_WRITE_CLASS_OF_DEV  0x0024
262 struct hci_cp_write_dev_class {
263         __u8     dev_class[3];
264 } __attribute__ ((packed));
265
266 #define OCF_READ_VOICE_SETTING  0x0025
267 struct hci_rp_read_voice_setting {
268         __u8    status;
269         __u16   voice_setting;
270 } __attribute__ ((packed));
271
272 #define OCF_WRITE_VOICE_SETTING 0x0026
273 struct hci_cp_write_voice_setting {
274         __u16   voice_setting;
275 } __attribute__ ((packed));
276
277 #define OCF_HOST_BUFFER_SIZE    0x0033
278 struct hci_cp_host_buffer_size {
279         __u16    acl_mtu;
280         __u8     sco_mtu;
281         __u16    acl_max_pkt;
282         __u16    sco_max_pkt;
283 } __attribute__ ((packed));
284
285 /* Link Control */
286 #define OGF_LINK_CTL    0x01 
287 #define OCF_CREATE_CONN         0x0005
288 struct hci_cp_create_conn {
289         bdaddr_t bdaddr;
290         __u16    pkt_type;
291         __u8     pscan_rep_mode;
292         __u8     pscan_mode;
293         __u16    clock_offset;
294         __u8     role_switch;
295 } __attribute__ ((packed));
296
297 #define OCF_ACCEPT_CONN_REQ     0x0009
298 struct hci_cp_accept_conn_req {
299         bdaddr_t bdaddr;
300         __u8     role;
301 } __attribute__ ((packed));
302
303 #define OCF_REJECT_CONN_REQ     0x000a
304 struct hci_cp_reject_conn_req {
305         bdaddr_t bdaddr;
306         __u8     reason;
307 } __attribute__ ((packed));
308
309 #define OCF_DISCONNECT  0x0006
310 struct hci_cp_disconnect {
311         __u16    handle;
312         __u8     reason;
313 } __attribute__ ((packed));
314
315 #define OCF_ADD_SCO     0x0007
316 struct hci_cp_add_sco {
317         __u16    handle;
318         __u16    pkt_type;
319 } __attribute__ ((packed));
320
321 #define OCF_INQUIRY             0x0001
322 struct hci_cp_inquiry {
323         __u8     lap[3];
324         __u8     length;
325         __u8     num_rsp;
326 } __attribute__ ((packed));
327
328 #define OCF_INQUIRY_CANCEL      0x0002
329
330 #define OCF_LINK_KEY_REPLY      0x000B
331 #define OCF_LINK_KEY_NEG_REPLY  0x000C
332 struct hci_cp_link_key_reply {
333         bdaddr_t bdaddr;
334         __u8     link_key[16];
335 } __attribute__ ((packed));
336
337 #define OCF_PIN_CODE_REPLY      0x000D
338 #define OCF_PIN_CODE_NEG_REPLY  0x000E
339 struct hci_cp_pin_code_reply {
340         bdaddr_t bdaddr;
341         __u8     pin_len;
342         __u8     pin_code[16];
343 } __attribute__ ((packed));
344
345 #define OCF_CHANGE_CONN_PTYPE   0x000F
346 struct hci_cp_change_conn_ptype {
347         __u16    handle;
348         __u16    pkt_type;
349 } __attribute__ ((packed));
350
351 #define OCF_AUTH_REQUESTED      0x0011
352 struct hci_cp_auth_requested {
353         __u16    handle;
354 } __attribute__ ((packed));
355
356 #define OCF_SET_CONN_ENCRYPT    0x0013
357 struct hci_cp_set_conn_encrypt {
358         __u16    handle;
359         __u8     encrypt;
360 } __attribute__ ((packed));
361
362 #define OCF_READ_REMOTE_FEATURES 0x001B
363 struct hci_cp_read_rmt_features {
364         __u16    handle;
365 } __attribute__ ((packed));
366
367 #define OCF_READ_REMOTE_VERSION 0x001D
368 struct hci_cp_read_rmt_version {
369         __u16    handle;
370 } __attribute__ ((packed));
371
372 /* Link Policy */
373 #define OGF_LINK_POLICY  0x02   
374 #define OCF_ROLE_DISCOVERY      0x0009
375 struct hci_cp_role_discovery {
376         __u16    handle;
377 } __attribute__ ((packed));
378 struct hci_rp_role_discovery {
379         __u8     status;
380         __u16    handle;
381         __u8     role;
382 } __attribute__ ((packed));
383
384 #define OCF_READ_LINK_POLICY    0x000C
385 struct hci_cp_read_link_policy {
386         __u16    handle;
387 } __attribute__ ((packed));
388 struct hci_rp_read_link_policy {
389         __u8     status;
390         __u16    handle;
391         __u16    policy;
392 } __attribute__ ((packed));
393
394 #define OCF_SWITCH_ROLE 0x000B
395 struct hci_cp_switch_role {
396         bdaddr_t bdaddr;
397         __u8     role;
398 } __attribute__ ((packed));
399
400 #define OCF_WRITE_LINK_POLICY   0x000D
401 struct hci_cp_write_link_policy {
402         __u16    handle;
403         __u16    policy;
404 } __attribute__ ((packed));
405 struct hci_rp_write_link_policy {
406         __u8     status;
407         __u16    handle;
408 } __attribute__ ((packed));
409
410 /* Status params */
411 #define OGF_STATUS_PARAM        0x05
412
413 /* Testing commands */
414 #define OGF_TESTING_CMD         0x3E
415
416 /* Vendor specific commands */
417 #define OGF_VENDOR_CMD          0x3F
418
419 /* ---- HCI Events ---- */
420 #define HCI_EV_INQUIRY_COMPLETE 0x01
421
422 #define HCI_EV_INQUIRY_RESULT   0x02
423 struct inquiry_info {
424         bdaddr_t bdaddr;
425         __u8     pscan_rep_mode;
426         __u8     pscan_period_mode;
427         __u8     pscan_mode;
428         __u8     dev_class[3];
429         __u16    clock_offset;
430 } __attribute__ ((packed));
431
432 #define HCI_EV_INQUIRY_RESULT_WITH_RSSI 0x22
433 struct inquiry_info_with_rssi {
434         bdaddr_t bdaddr;
435         __u8     pscan_rep_mode;
436         __u8     pscan_period_mode;
437         __u8     dev_class[3];
438         __u16    clock_offset;
439         __u8     rssi;
440 } __attribute__ ((packed));
441
442 #define HCI_EV_CONN_COMPLETE    0x03
443 struct hci_ev_conn_complete {
444         __u8     status;
445         __u16    handle;
446         bdaddr_t bdaddr;
447         __u8     link_type;
448         __u8     encr_mode;
449 } __attribute__ ((packed));
450
451 #define HCI_EV_CONN_REQUEST     0x04
452 struct hci_ev_conn_request {
453         bdaddr_t bdaddr;
454         __u8     dev_class[3];
455         __u8     link_type;
456 } __attribute__ ((packed));
457
458 #define HCI_EV_DISCONN_COMPLETE 0x05
459 struct hci_ev_disconn_complete {
460         __u8     status;
461         __u16    handle;
462         __u8     reason;
463 } __attribute__ ((packed));
464
465 #define HCI_EV_AUTH_COMPLETE    0x06
466 struct hci_ev_auth_complete {
467         __u8     status;
468         __u16    handle;
469 } __attribute__ ((packed));
470
471 #define HCI_EV_ENCRYPT_CHANGE   0x08
472 struct hci_ev_encrypt_change {
473         __u8     status;
474         __u16    handle;
475         __u8     encrypt;
476 } __attribute__ ((packed));
477
478 #define HCI_EV_QOS_SETUP_COMPLETE       0x0D
479 struct hci_qos {
480         __u8     service_type;
481         __u32    token_rate;
482         __u32    peak_bandwidth;
483         __u32    latency;
484         __u32    delay_variation;
485 } __attribute__ ((packed));
486 struct hci_ev_qos_setup_complete {
487         __u8     status;
488         __u16    handle;
489         struct   hci_qos qos;
490 } __attribute__ ((packed));
491
492 #define HCI_EV_CMD_COMPLETE     0x0E
493 struct hci_ev_cmd_complete {
494         __u8     ncmd;
495         __u16    opcode;
496 } __attribute__ ((packed));
497
498 #define HCI_EV_CMD_STATUS       0x0F
499 struct hci_ev_cmd_status {
500         __u8     status;
501         __u8     ncmd;
502         __u16    opcode;
503 } __attribute__ ((packed));
504
505 #define HCI_EV_NUM_COMP_PKTS    0x13
506 struct hci_ev_num_comp_pkts {
507         __u8     num_hndl;
508         /* variable length part */
509 } __attribute__ ((packed));
510
511 #define HCI_EV_ROLE_CHANGE      0x12
512 struct hci_ev_role_change {
513         __u8     status;
514         bdaddr_t bdaddr;
515         __u8     role;
516 } __attribute__ ((packed));
517
518 #define HCI_EV_PIN_CODE_REQ     0x16
519 struct hci_ev_pin_code_req {
520         bdaddr_t bdaddr;
521 } __attribute__ ((packed));
522
523 #define HCI_EV_LINK_KEY_REQ     0x17
524 struct hci_ev_link_key_req {
525         bdaddr_t bdaddr;
526 } __attribute__ ((packed));
527
528 #define HCI_EV_LINK_KEY_NOTIFY  0x18
529 struct hci_ev_link_key_notify {
530         bdaddr_t bdaddr;
531         __u8     link_key[16];
532         __u8     key_type;
533 } __attribute__ ((packed));
534
535 #define HCI_EV_RMT_FEATURES     0x0B
536 struct hci_ev_rmt_features {
537         __u8     status;
538         __u16    handle;
539         __u8     features[8];
540 } __attribute__ ((packed));
541
542 #define HCI_EV_RMT_VERSION      0x0C
543 struct hci_ev_rmt_version {
544         __u8     status;
545         __u16    handle;
546         __u8     lmp_ver;
547         __u16    manufacturer;
548         __u16    lmp_subver;
549 } __attribute__ ((packed));
550
551 /* Internal events generated by Bluetooth stack */
552 #define HCI_EV_STACK_INTERNAL   0xFD
553 struct hci_ev_stack_internal {
554         __u16    type;
555         __u8     data[0];
556 } __attribute__ ((packed));
557
558 #define HCI_EV_SI_DEVICE        0x01
559 struct hci_ev_si_device {
560         __u16    event;
561         __u16    dev_id;
562 } __attribute__ ((packed));
563
564 #define HCI_EV_SI_SECURITY      0x02
565 struct hci_ev_si_security {
566         __u16    event;
567         __u16    proto;
568         __u16    subproto;
569         __u8     incoming;
570 } __attribute__ ((packed));
571
572 /* ---- HCI Packet structures ---- */
573 #define HCI_COMMAND_HDR_SIZE 3
574 #define HCI_EVENT_HDR_SIZE   2
575 #define HCI_ACL_HDR_SIZE     4
576 #define HCI_SCO_HDR_SIZE     3
577
578 struct hci_command_hdr {
579         __u16   opcode;         /* OCF & OGF */
580         __u8    plen;
581 } __attribute__ ((packed));
582
583 struct hci_event_hdr {
584         __u8    evt;
585         __u8    plen;
586 } __attribute__ ((packed));
587
588 struct hci_acl_hdr {
589         __u16   handle;         /* Handle & Flags(PB, BC) */
590         __u16   dlen;
591 } __attribute__ ((packed));
592
593 struct hci_sco_hdr {
594         __u16   handle;
595         __u8    dlen;
596 } __attribute__ ((packed));
597
598 /* Command opcode pack/unpack */
599 #define hci_opcode_pack(ogf, ocf)       (__u16)((ocf & 0x03ff)|(ogf << 10))
600 #define hci_opcode_ogf(op)              (op >> 10)
601 #define hci_opcode_ocf(op)              (op & 0x03ff)
602
603 /* ACL handle and flags pack/unpack */
604 #define hci_handle_pack(h, f)   (__u16)((h & 0x0fff)|(f << 12))
605 #define hci_handle(h)           (h & 0x0fff)
606 #define hci_flags(h)            (h >> 12)
607
608 /* ---- HCI Sockets ---- */
609
610 /* Socket options */
611 #define HCI_DATA_DIR    1
612 #define HCI_FILTER      2
613 #define HCI_TIME_STAMP  3
614
615 /* CMSG flags */
616 #define HCI_CMSG_DIR    0x0001
617 #define HCI_CMSG_TSTAMP 0x0002
618
619 struct sockaddr_hci {
620         sa_family_t    hci_family;
621         unsigned short hci_dev;
622 };
623 #define HCI_DEV_NONE    0xffff
624
625 struct hci_filter {
626         unsigned long type_mask;
627         unsigned long event_mask[2];
628         __u16   opcode;
629 };
630
631 struct hci_ufilter {
632         __u32   type_mask;
633         __u32   event_mask[2];
634         __u16   opcode;
635 };
636
637 #define HCI_FLT_TYPE_BITS       31
638 #define HCI_FLT_EVENT_BITS      63
639 #define HCI_FLT_OGF_BITS        63
640 #define HCI_FLT_OCF_BITS        127
641
642 /* ---- HCI Ioctl requests structures ---- */
643 struct hci_dev_stats {
644         __u32 err_rx;
645         __u32 err_tx;
646         __u32 cmd_tx;
647         __u32 evt_rx;
648         __u32 acl_tx;
649         __u32 acl_rx;
650         __u32 sco_tx;
651         __u32 sco_rx;
652         __u32 byte_rx;
653         __u32 byte_tx;
654 };
655
656 struct hci_dev_info {
657         __u16 dev_id;
658         char  name[8];
659
660         bdaddr_t bdaddr;
661
662         __u32 flags;
663         __u8  type;
664
665         __u8  features[8];
666
667         __u32 pkt_type;
668         __u32 link_policy;
669         __u32 link_mode;
670
671         __u16 acl_mtu;
672         __u16 acl_pkts;
673         __u16 sco_mtu;
674         __u16 sco_pkts;
675
676         struct hci_dev_stats stat;
677 };
678
679 struct hci_conn_info {
680         __u16    handle;
681         bdaddr_t bdaddr;
682         __u8     type;
683         __u8     out;
684         __u16    state;
685         __u32    link_mode;
686 };
687
688 struct hci_dev_req {
689         __u16 dev_id;
690         __u32 dev_opt;
691 };
692
693 struct hci_dev_list_req {
694         __u16  dev_num;
695         struct hci_dev_req dev_req[0];  /* hci_dev_req structures */
696 };
697
698 struct hci_conn_list_req {
699         __u16  dev_id;
700         __u16  conn_num;
701         struct hci_conn_info conn_info[0];
702 };
703
704 struct hci_conn_info_req {
705         bdaddr_t bdaddr;
706         __u8     type;
707         struct   hci_conn_info conn_info[0];
708 };
709
710 struct hci_inquiry_req {
711         __u16 dev_id;
712         __u16 flags;
713         __u8  lap[3];
714         __u8  length;
715         __u8  num_rsp;
716 };
717 #define IREQ_CACHE_FLUSH 0x0001
718
719 #endif /* __HCI_H */