1
2
3
4 #ifndef _HCI_PACKET_H_
5 #define _HCI_PACKET_H_
6
7 #define HCI_HEADER_SIZE 4
8
9
10
11
12
13
14
15 #define NIC_TYPE_NIC0 0x00000010
16 #define NIC_TYPE_NIC1 0x00000011
17 #define NIC_TYPE_NIC2 0x00000012
18 #define NIC_TYPE_NIC3 0x00000013
19 #define NIC_TYPE_ARP 0x00000100
20 #define NIC_TYPE_ICMPV6 0x00000200
21 #define NIC_TYPE_MASK 0x0000FFFF
22 #define NIC_TYPE_F_IPV4 0x00010000
23 #define NIC_TYPE_F_IPV6 0x00020000
24 #define NIC_TYPE_F_DHCP 0x00040000
25 #define NIC_TYPE_F_NDP 0x00080000
26 #define NIC_TYPE_F_VLAN 0x00100000
27
28 struct hci_packet {
29 __dev16 cmd_evt;
30 __dev16 len;
31 u8 data[0];
32 } __packed;
33
34 struct tlv {
35 u8 type;
36 u8 len;
37 u8 *data[1];
38 } __packed;
39
40 struct sdu_header {
41 __dev16 cmd_evt;
42 __dev16 len;
43 __dev32 dft_eps_id;
44 __dev32 bearer_ID;
45 __dev32 nic_type;
46 } __packed;
47
48 struct sdu {
49 __dev16 cmd_evt;
50 __dev16 len;
51 __dev32 dft_eps_ID;
52 __dev32 bearer_ID;
53 __dev32 nic_type;
54 u8 data[0];
55 } __packed;
56
57 struct multi_sdu {
58 __dev16 cmd_evt;
59 __dev16 len;
60 __dev16 num_packet;
61 __dev16 reserved;
62 u8 data[0];
63 } __packed;
64
65 struct hci_pdn_table_ind {
66 __dev16 cmd_evt;
67 __dev16 len;
68 u8 activate;
69 __dev32 dft_eps_id;
70 __dev32 nic_type;
71 u8 pdn_type;
72 u8 ipv4_addr[4];
73 u8 ipv6_intf_id[8];
74 } __packed;
75
76 struct hci_connect_ind {
77 __dev16 cmd_evt;
78 __dev16 len;
79 __dev32 connect;
80 } __packed;
81
82 #endif