1 /* SPDX-License-Identifier: GPL-2.0 */ 2 /* Copyright (c) 2012 GCT Semiconductor, Inc. All rights reserved. */ 3 4 #ifndef _HCI_PACKET_H_ 5 #define _HCI_PACKET_H_ 6 7 #define HCI_HEADER_SIZE 4 8 9 /* 10 * The NIC type definition: 11 * For backward compatibility, lower 16 bits used as they were. 12 * Lower 16 bit: NIC_TYPE values 13 * Uppoer 16 bit: NIC_TYPE Flags 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[]; 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[]; 55 } __packed; 56 57 struct multi_sdu { 58 __dev16 cmd_evt; 59 __dev16 len; 60 __dev16 num_packet; 61 __dev16 reserved; 62 u8 data[]; 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 /* _HCI_PACKET_H_ */ 83