xref: /aosp_15_r20/tools/netsim/pdl/mac80211_hwsim.pdl (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker// PDL grammar file for mac80211_hwsim packet format.
2*cf78ab8cSAndroid Build Coastguard Worker//
3*cf78ab8cSAndroid Build Coastguard Worker// See
4*cf78ab8cSAndroid Build Coastguard Worker//   - mac80211_hwsim.h
5*cf78ab8cSAndroid Build Coastguard Worker
6*cf78ab8cSAndroid Build Coastguard Worker
7*cf78ab8cSAndroid Build Coastguard Worker// Host byte order
8*cf78ab8cSAndroid Build Coastguard Workerlittle_endian_packets
9*cf78ab8cSAndroid Build Coastguard Worker
10*cf78ab8cSAndroid Build Coastguard Worker// Netlink Message Header
11*cf78ab8cSAndroid Build Coastguard Worker
12*cf78ab8cSAndroid Build Coastguard Worker// TODO: use include from netlink.pdl
13*cf78ab8cSAndroid Build Coastguard Worker
14*cf78ab8cSAndroid Build Coastguard Workerstruct NlMsgHdr {
15*cf78ab8cSAndroid Build Coastguard Worker    nlmsg_len : 32,             // Length of message including header
16*cf78ab8cSAndroid Build Coastguard Worker    nlmsg_type : 16,            // Message type identifier
17*cf78ab8cSAndroid Build Coastguard Worker    nlmsg_flags : 16,           // Flags (NLM_F_)
18*cf78ab8cSAndroid Build Coastguard Worker    nlmsg_seq : 32,             // Sequence number
19*cf78ab8cSAndroid Build Coastguard Worker    nlmsg_pid : 32,             // Sending process port ID
20*cf78ab8cSAndroid Build Coastguard Worker}
21*cf78ab8cSAndroid Build Coastguard Worker
22*cf78ab8cSAndroid Build Coastguard Worker// mac80211_hwsim definitions
23*cf78ab8cSAndroid Build Coastguard Worker
24*cf78ab8cSAndroid Build Coastguard Worker/**
25*cf78ab8cSAndroid Build Coastguard Worker * enum hwsim_commands - supported hwsim commands
26*cf78ab8cSAndroid Build Coastguard Worker *
27*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_UNSPEC: unspecified command to catch errors
28*cf78ab8cSAndroid Build Coastguard Worker *
29*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_REGISTER: request to register and received all broadcasted
30*cf78ab8cSAndroid Build Coastguard Worker *	frames by any mac80211_hwsim radio device.
31*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_FRAME: send/receive a broadcasted frame from/to kernel/user
32*cf78ab8cSAndroid Build Coastguard Worker *	space, uses:
33*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_ADDR_TRANSMITTER,
34*cf78ab8cSAndroid Build Coastguard Worker *      %HWSIM_ATTR_ADDR_RECEIVER,
35*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_FRAME,
36*cf78ab8cSAndroid Build Coastguard Worker *      %HWSIM_ATTR_FLAGS,
37*cf78ab8cSAndroid Build Coastguard Worker *      %HWSIM_ATTR_RX_RATE,
38*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_SIGNAL,
39*cf78ab8cSAndroid Build Coastguard Worker *      %HWSIM_ATTR_COOKIE,
40*cf78ab8cSAndroid Build Coastguard Worker *      %HWSIM_ATTR_FREQ (optional)
41*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_TX_INFO_FRAME: Transmission info report from user space to
42*cf78ab8cSAndroid Build Coastguard Worker *	kernel, uses:
43*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_ADDR_TRANSMITTER, %HWSIM_ATTR_FLAGS,
44*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_TX_INFO, %WSIM_ATTR_TX_INFO_FLAGS,
45*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_SIGNAL, %HWSIM_ATTR_COOKIE
46*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_NEW_RADIO: create a new radio with the given parameters,
47*cf78ab8cSAndroid Build Coastguard Worker *	returns the radio ID (>= 0) or negative on errors, if successful
48*cf78ab8cSAndroid Build Coastguard Worker *	then multicast the result, uses optional parameter:
49*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_REG_STRICT_REG, %HWSIM_ATTR_SUPPORT_P2P_DEVICE,
50*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE, %HWSIM_ATTR_CHANNELS,
51*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_NO_VIF, %HWSIM_ATTR_RADIO_NAME, %HWSIM_ATTR_USE_CHANCTX,
52*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_REG_HINT_ALPHA2, %HWSIM_ATTR_REG_CUSTOM_REG,
53*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_PERM_ADDR
54*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_DEL_RADIO: destroy a radio, reply is multicasted
55*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_GET_RADIO: fetch information about existing radios, uses:
56*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_RADIO_ID
57*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_ADD_MAC_ADDR: add a receive MAC address (given in the
58*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_ADDR_RECEIVER attribute) to a device identified by
59*cf78ab8cSAndroid Build Coastguard Worker *	%HWSIM_ATTR_ADDR_TRANSMITTER. This lets wmediumd forward frames
60*cf78ab8cSAndroid Build Coastguard Worker *	to this receiver address for a given station.
61*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_CMD_DEL_MAC_ADDR: remove the MAC address again, the attributes
62*cf78ab8cSAndroid Build Coastguard Worker *	are the same as to @HWSIM_CMD_ADD_MAC_ADDR.
63*cf78ab8cSAndroid Build Coastguard Worker */
64*cf78ab8cSAndroid Build Coastguard Worker
65*cf78ab8cSAndroid Build Coastguard Workerenum HwsimCmd : 8 {
66*cf78ab8cSAndroid Build Coastguard Worker    UNSPEC = 0,
67*cf78ab8cSAndroid Build Coastguard Worker    REGISTER = 1,
68*cf78ab8cSAndroid Build Coastguard Worker    FRAME = 2,
69*cf78ab8cSAndroid Build Coastguard Worker    TX_INFO_FRAME = 3,
70*cf78ab8cSAndroid Build Coastguard Worker    NEW_RADIO = 4,
71*cf78ab8cSAndroid Build Coastguard Worker    DEL_RADIO = 5,
72*cf78ab8cSAndroid Build Coastguard Worker    GET_RADIO = 6,
73*cf78ab8cSAndroid Build Coastguard Worker    ADD_MAC_ADDR = 7,
74*cf78ab8cSAndroid Build Coastguard Worker    DEL_MAC_ADDR = 8,
75*cf78ab8cSAndroid Build Coastguard Worker}
76*cf78ab8cSAndroid Build Coastguard Worker
77*cf78ab8cSAndroid Build Coastguard Worker/**
78*cf78ab8cSAndroid Build Coastguard Worker * enum hwsim_attrs - hwsim netlink attributes
79*cf78ab8cSAndroid Build Coastguard Worker *
80*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_UNSPEC: unspecified attribute to catch errors
81*cf78ab8cSAndroid Build Coastguard Worker *
82*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_ADDR_RECEIVER: MAC address of the radio device that
83*cf78ab8cSAndroid Build Coastguard Worker *	the frame is broadcasted to
84*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_ADDR_TRANSMITTER: MAC address of the radio device that
85*cf78ab8cSAndroid Build Coastguard Worker *	the frame was broadcasted from
86*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_FRAME: Data array
87*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_FLAGS: mac80211 transmission flags, used to process
88*cf78ab8cSAndroid Build Coastguard Worker        properly the frame at user space
89*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_RX_RATE: estimated rx rate index for this frame at user
90*cf78ab8cSAndroid Build Coastguard Worker        space
91*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_SIGNAL: estimated RX signal for this frame at user
92*cf78ab8cSAndroid Build Coastguard Worker        space
93*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_TX_INFO: ieee80211_tx_rate array
94*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_COOKIE: sk_buff cookie to identify the frame
95*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_CHANNELS: u32 attribute used with the %HWSIM_CMD_CREATE_RADIO
96*cf78ab8cSAndroid Build Coastguard Worker *	command giving the number of channels supported by the new radio
97*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_RADIO_ID: u32 attribute used with %HWSIM_CMD_DESTROY_RADIO
98*cf78ab8cSAndroid Build Coastguard Worker *	only to destroy a radio
99*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_REG_HINT_ALPHA2: alpha2 for regulatoro driver hint
100*cf78ab8cSAndroid Build Coastguard Worker *	(nla string, length 2)
101*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_REG_CUSTOM_REG: custom regulatory domain index (u32 attribute)
102*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_REG_STRICT_REG: request REGULATORY_STRICT_REG (flag attribute)
103*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_SUPPORT_P2P_DEVICE: support P2P Device virtual interface (flag)
104*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_USE_CHANCTX: used with the %HWSIM_CMD_CREATE_RADIO
105*cf78ab8cSAndroid Build Coastguard Worker *	command to force use of channel contexts even when only a
106*cf78ab8cSAndroid Build Coastguard Worker *	single channel is supported
107*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_DESTROY_RADIO_ON_CLOSE: used with the %HWSIM_CMD_CREATE_RADIO
108*cf78ab8cSAndroid Build Coastguard Worker *	command to force radio removal when process that created the radio dies
109*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_RADIO_NAME: Name of radio, e.g. phy666
110*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_NO_VIF:  Do not create vif (wlanX) when creating radio.
111*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_FREQ: Frequency at which packet is transmitted or received.
112*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_TX_INFO_FLAGS: additional flags for corresponding
113*cf78ab8cSAndroid Build Coastguard Worker *	rates of %HWSIM_ATTR_TX_INFO
114*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_PERM_ADDR: permanent mac address of new radio
115*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_IFTYPE_SUPPORT: u32 attribute of supported interface types bits
116*cf78ab8cSAndroid Build Coastguard Worker * @HWSIM_ATTR_CIPHER_SUPPORT: u32 array of supported cipher types
117*cf78ab8cSAndroid Build Coastguard Worker */
118*cf78ab8cSAndroid Build Coastguard Worker
119*cf78ab8cSAndroid Build Coastguard Workerenum HwsimAttrEnum : 14 {
120*cf78ab8cSAndroid Build Coastguard Worker    UNSPEC = 0,
121*cf78ab8cSAndroid Build Coastguard Worker    ADDR_RECEIVER = 1,
122*cf78ab8cSAndroid Build Coastguard Worker    ADDR_TRANSMITTER = 2,
123*cf78ab8cSAndroid Build Coastguard Worker    FRAME = 3,
124*cf78ab8cSAndroid Build Coastguard Worker    FLAGS = 4,
125*cf78ab8cSAndroid Build Coastguard Worker    RX_RATE = 5,
126*cf78ab8cSAndroid Build Coastguard Worker    SIGNAL = 6,
127*cf78ab8cSAndroid Build Coastguard Worker    TX_INFO = 7,
128*cf78ab8cSAndroid Build Coastguard Worker    COOKIE = 8,
129*cf78ab8cSAndroid Build Coastguard Worker    CHANNELS = 9,
130*cf78ab8cSAndroid Build Coastguard Worker    RADIO_ID = 10,
131*cf78ab8cSAndroid Build Coastguard Worker    REG_HINT_ALPHA2 = 11,
132*cf78ab8cSAndroid Build Coastguard Worker    REG_CUSTOM_REG = 12,
133*cf78ab8cSAndroid Build Coastguard Worker    REG_STRICT_REG = 13,
134*cf78ab8cSAndroid Build Coastguard Worker    SUPPORT_P2P_DEVICE = 14,
135*cf78ab8cSAndroid Build Coastguard Worker    USE_CHANCTX = 15,
136*cf78ab8cSAndroid Build Coastguard Worker    DESTROY_RADIO_ON_CLOSE = 16,
137*cf78ab8cSAndroid Build Coastguard Worker    RADIO_NAME = 17,
138*cf78ab8cSAndroid Build Coastguard Worker    NO_VIF = 18,
139*cf78ab8cSAndroid Build Coastguard Worker    FREQ = 19,
140*cf78ab8cSAndroid Build Coastguard Worker    PAD = 20,
141*cf78ab8cSAndroid Build Coastguard Worker    TX_INFO_FLAGS = 21,
142*cf78ab8cSAndroid Build Coastguard Worker    PERM_ADDR = 22,
143*cf78ab8cSAndroid Build Coastguard Worker    IFTYPE_SUPPORT = 23,
144*cf78ab8cSAndroid Build Coastguard Worker    CIPHER_SUPPORT = 24,
145*cf78ab8cSAndroid Build Coastguard Worker}
146*cf78ab8cSAndroid Build Coastguard Worker
147*cf78ab8cSAndroid Build Coastguard Worker// Hwsim attribute base packet.
148*cf78ab8cSAndroid Build Coastguard Worker//
149*cf78ab8cSAndroid Build Coastguard Worker// This is a variant of NlAttrHdr with hwsim attribute types.
150*cf78ab8cSAndroid Build Coastguard Worker
151*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttr {
152*cf78ab8cSAndroid Build Coastguard Worker    _size_(_payload_): 16,      // nla_len, the attribute length
153*cf78ab8cSAndroid Build Coastguard Worker    nla_type: HwsimAttrEnum,
154*cf78ab8cSAndroid Build Coastguard Worker    nla_m : 1,
155*cf78ab8cSAndroid Build Coastguard Worker    nla_o : 1,
156*cf78ab8cSAndroid Build Coastguard Worker    _payload_: [+4],
157*cf78ab8cSAndroid Build Coastguard Worker}
158*cf78ab8cSAndroid Build Coastguard Worker
159*cf78ab8cSAndroid Build Coastguard Worker// ATTR_ADDR_RECEIVER: MAC address of the radio device that the frame
160*cf78ab8cSAndroid Build Coastguard Worker// is broadcasted to
161*cf78ab8cSAndroid Build Coastguard Worker
162*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrAddrReceiver : HwsimAttr(nla_type = ADDR_RECEIVER) {
163*cf78ab8cSAndroid Build Coastguard Worker    address : 8[6],
164*cf78ab8cSAndroid Build Coastguard Worker}
165*cf78ab8cSAndroid Build Coastguard Worker
166*cf78ab8cSAndroid Build Coastguard Worker// ATTR_ADDR_TRANSMITTER: MAC address of the radio device that
167*cf78ab8cSAndroid Build Coastguard Worker// the frame was broadcasted from
168*cf78ab8cSAndroid Build Coastguard Worker
169*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrAddrTransmitter : HwsimAttr(nla_type = ADDR_TRANSMITTER) {
170*cf78ab8cSAndroid Build Coastguard Worker    address : 8[6],
171*cf78ab8cSAndroid Build Coastguard Worker}
172*cf78ab8cSAndroid Build Coastguard Worker
173*cf78ab8cSAndroid Build Coastguard Worker// ATTR_FRAME: Data array
174*cf78ab8cSAndroid Build Coastguard Worker
175*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrFrame : HwsimAttr(nla_type = FRAME) {
176*cf78ab8cSAndroid Build Coastguard Worker    data: 8[]
177*cf78ab8cSAndroid Build Coastguard Worker}
178*cf78ab8cSAndroid Build Coastguard Worker
179*cf78ab8cSAndroid Build Coastguard Worker// ATTR_FLAGS
180*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrFlags : HwsimAttr(nla_type = FLAGS) {
181*cf78ab8cSAndroid Build Coastguard Worker    flags : 32,
182*cf78ab8cSAndroid Build Coastguard Worker}
183*cf78ab8cSAndroid Build Coastguard Worker
184*cf78ab8cSAndroid Build Coastguard Worker// ATTR_RX_RATE
185*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrRxRate : HwsimAttr(nla_type = RX_RATE) {
186*cf78ab8cSAndroid Build Coastguard Worker    rx_rate_idx : 32,
187*cf78ab8cSAndroid Build Coastguard Worker}
188*cf78ab8cSAndroid Build Coastguard Worker
189*cf78ab8cSAndroid Build Coastguard Worker// ATTR_SIGNAL
190*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrSignal : HwsimAttr(nla_type = SIGNAL) {
191*cf78ab8cSAndroid Build Coastguard Worker    signal : 32,
192*cf78ab8cSAndroid Build Coastguard Worker}
193*cf78ab8cSAndroid Build Coastguard Worker
194*cf78ab8cSAndroid Build Coastguard Worker// ATTR_FREQ
195*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrFreq : HwsimAttr(nla_type = FREQ) {
196*cf78ab8cSAndroid Build Coastguard Worker    freq : 32,
197*cf78ab8cSAndroid Build Coastguard Worker}
198*cf78ab8cSAndroid Build Coastguard Worker
199*cf78ab8cSAndroid Build Coastguard Worker// ATTR_COOKIE
200*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrCookie : HwsimAttr(nla_type = COOKIE) {
201*cf78ab8cSAndroid Build Coastguard Worker    cookie : 64,
202*cf78ab8cSAndroid Build Coastguard Worker}
203*cf78ab8cSAndroid Build Coastguard Worker
204*cf78ab8cSAndroid Build Coastguard Workerstruct TxRate {
205*cf78ab8cSAndroid Build Coastguard Worker    idx : 8,
206*cf78ab8cSAndroid Build Coastguard Worker    count: 8,
207*cf78ab8cSAndroid Build Coastguard Worker}
208*cf78ab8cSAndroid Build Coastguard Worker
209*cf78ab8cSAndroid Build Coastguard Worker// ATTR_TX_INFO
210*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrTxInfo : HwsimAttr(nla_type = TX_INFO) {
211*cf78ab8cSAndroid Build Coastguard Worker    tx_rates : TxRate[],
212*cf78ab8cSAndroid Build Coastguard Worker}
213*cf78ab8cSAndroid Build Coastguard Worker
214*cf78ab8cSAndroid Build Coastguard Workerenum HwsimTxRateFlags : 16 {
215*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_USE_RTS_CTS = 0x01,
216*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_USE_CTS_PROTECT = 0x02,
217*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_USE_SHORT_PREAMBLE = 0x04,
218*cf78ab8cSAndroid Build Coastguard Worker    /* rate index is an HT/VHT MCS instead of an index */
219*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_MCS = 0x08,
220*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_GREEN_FIELD = 0x0f,
221*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_40_MHZ_WIDTH = 0x10,
222*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_DUP_DATA = 0x20,
223*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_SHORT_GI = 0x40,
224*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_VHT_MCS = 0x80,
225*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_80_MHZ_WIDTH = 0xf0,
226*cf78ab8cSAndroid Build Coastguard Worker    MAC80211_HWSIM_TX_RC_160_MHZ_WIDTH = 0x100,
227*cf78ab8cSAndroid Build Coastguard Worker}
228*cf78ab8cSAndroid Build Coastguard Worker
229*cf78ab8cSAndroid Build Coastguard Workerstruct TxRateFlag {
230*cf78ab8cSAndroid Build Coastguard Worker    idx : 8,
231*cf78ab8cSAndroid Build Coastguard Worker    flags : 16, // HwsimTxRateFlags,
232*cf78ab8cSAndroid Build Coastguard Worker}
233*cf78ab8cSAndroid Build Coastguard Worker
234*cf78ab8cSAndroid Build Coastguard Worker// ATTR_TX_INFO_FLAGS
235*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimAttrTxInfoFlags : HwsimAttr(nla_type = TX_INFO_FLAGS) {
236*cf78ab8cSAndroid Build Coastguard Worker    tx_rate_flags : TxRateFlag[],
237*cf78ab8cSAndroid Build Coastguard Worker}
238*cf78ab8cSAndroid Build Coastguard Worker
239*cf78ab8cSAndroid Build Coastguard Workerstruct HwsimMsgHdr {
240*cf78ab8cSAndroid Build Coastguard Worker    hwsim_cmd : HwsimCmd,
241*cf78ab8cSAndroid Build Coastguard Worker    hwsim_version: 8,
242*cf78ab8cSAndroid Build Coastguard Worker    reserved: 16,
243*cf78ab8cSAndroid Build Coastguard Worker}
244*cf78ab8cSAndroid Build Coastguard Worker
245*cf78ab8cSAndroid Build Coastguard Workerpacket HwsimMsg {
246*cf78ab8cSAndroid Build Coastguard Worker    nl_hdr: NlMsgHdr,
247*cf78ab8cSAndroid Build Coastguard Worker    hwsim_hdr: HwsimMsgHdr,
248*cf78ab8cSAndroid Build Coastguard Worker    // user header
249*cf78ab8cSAndroid Build Coastguard Worker    attributes: 8[],
250*cf78ab8cSAndroid Build Coastguard Worker}
251