xref: /aosp_15_r20/tools/netsim/pdl/ieee80211.pdl (revision cf78ab8cffb8fc9207af348f23af247fb04370a6)
1*cf78ab8cSAndroid Build Coastguard Worker// PDL grammar file for ieee80211 packet format.
2*cf78ab8cSAndroid Build Coastguard Worker//
3*cf78ab8cSAndroid Build Coastguard Worker// This only includes definitions necessary for the mac80211_hwsim
4*cf78ab8cSAndroid Build Coastguard Worker// use case.
5*cf78ab8cSAndroid Build Coastguard Worker
6*cf78ab8cSAndroid Build Coastguard Workerlittle_endian_packets
7*cf78ab8cSAndroid Build Coastguard Worker
8*cf78ab8cSAndroid Build Coastguard Workercustom_field MacAddress : 48 "macaddr/"
9*cf78ab8cSAndroid Build Coastguard Worker
10*cf78ab8cSAndroid Build Coastguard Worker// Frame type B3..B2
11*cf78ab8cSAndroid Build Coastguard Workerenum FrameType : 2 {
12*cf78ab8cSAndroid Build Coastguard Worker    MGMT = 0,
13*cf78ab8cSAndroid Build Coastguard Worker    CTL = 1,
14*cf78ab8cSAndroid Build Coastguard Worker    DATA = 2,
15*cf78ab8cSAndroid Build Coastguard Worker    EXT = 3,
16*cf78ab8cSAndroid Build Coastguard Worker}
17*cf78ab8cSAndroid Build Coastguard Worker
18*cf78ab8cSAndroid Build Coastguard Worker// Data substypes
19*cf78ab8cSAndroid Build Coastguard Workerenum DataSubType : 4 {
20*cf78ab8cSAndroid Build Coastguard Worker    DATA = 0,
21*cf78ab8cSAndroid Build Coastguard Worker    DATA_CF_ACK = 1,
22*cf78ab8cSAndroid Build Coastguard Worker    DATA_CF_POLL = 2,
23*cf78ab8cSAndroid Build Coastguard Worker    DATA_CF_ACPL = 3,
24*cf78ab8cSAndroid Build Coastguard Worker    NODATA = 4,
25*cf78ab8cSAndroid Build Coastguard Worker    NODATA_CF_ACK = 5,
26*cf78ab8cSAndroid Build Coastguard Worker    NODATA_CF_POLL = 6,
27*cf78ab8cSAndroid Build Coastguard Worker    NODATA_CF_ACPL = 7,
28*cf78ab8cSAndroid Build Coastguard Worker    QOS = 8,
29*cf78ab8cSAndroid Build Coastguard Worker    QOS_NULL = 12,
30*cf78ab8cSAndroid Build Coastguard Worker}
31*cf78ab8cSAndroid Build Coastguard Worker
32*cf78ab8cSAndroid Build Coastguard Worker// Management subtypes
33*cf78ab8cSAndroid Build Coastguard Workerenum ManagementSubType : 4 {
34*cf78ab8cSAndroid Build Coastguard Worker    ASSOC_REQ = 0,
35*cf78ab8cSAndroid Build Coastguard Worker    ASSOC_RESP = 1,
36*cf78ab8cSAndroid Build Coastguard Worker    REASSOC_REQ = 2,
37*cf78ab8cSAndroid Build Coastguard Worker    REASSOC_RESP = 3,
38*cf78ab8cSAndroid Build Coastguard Worker    PROBE_REQ = 4,
39*cf78ab8cSAndroid Build Coastguard Worker    PROBE_RESP = 5,
40*cf78ab8cSAndroid Build Coastguard Worker    BEACON = 8,
41*cf78ab8cSAndroid Build Coastguard Worker    ATIM = 9,
42*cf78ab8cSAndroid Build Coastguard Worker    DISASSOC = 10,
43*cf78ab8cSAndroid Build Coastguard Worker    AUTH = 11,
44*cf78ab8cSAndroid Build Coastguard Worker    DEAUTH = 12,
45*cf78ab8cSAndroid Build Coastguard Worker    ACTION = 13,
46*cf78ab8cSAndroid Build Coastguard Worker}
47*cf78ab8cSAndroid Build Coastguard Worker
48*cf78ab8cSAndroid Build Coastguard Workergroup FrameControl {
49*cf78ab8cSAndroid Build Coastguard Worker    version : 2,                // B1..B0
50*cf78ab8cSAndroid Build Coastguard Worker    ftype: FrameType,           // B3..B2
51*cf78ab8cSAndroid Build Coastguard Worker    stype: 4,                   // B7..B4
52*cf78ab8cSAndroid Build Coastguard Worker    to_ds: 1,                   // B8
53*cf78ab8cSAndroid Build Coastguard Worker    from_ds: 1,                 // B9
54*cf78ab8cSAndroid Build Coastguard Worker    more_frags: 1,              // B10
55*cf78ab8cSAndroid Build Coastguard Worker    retry: 1,                   // B11
56*cf78ab8cSAndroid Build Coastguard Worker    pm : 1,                     // B12
57*cf78ab8cSAndroid Build Coastguard Worker    more_data: 1,               // B13
58*cf78ab8cSAndroid Build Coastguard Worker    protected: 1,               // B14
59*cf78ab8cSAndroid Build Coastguard Worker    order: 1,                   // B15
60*cf78ab8cSAndroid Build Coastguard Worker}
61*cf78ab8cSAndroid Build Coastguard Worker
62*cf78ab8cSAndroid Build Coastguard Worker
63*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211 {
64*cf78ab8cSAndroid Build Coastguard Worker    FrameControl,
65*cf78ab8cSAndroid Build Coastguard Worker    duration_id: 16,
66*cf78ab8cSAndroid Build Coastguard Worker    _payload_,
67*cf78ab8cSAndroid Build Coastguard Worker}
68*cf78ab8cSAndroid Build Coastguard Worker
69*cf78ab8cSAndroid Build Coastguard Worker/*
70*cf78ab8cSAndroid Build Coastguard Worker * DS bit usage
71*cf78ab8cSAndroid Build Coastguard Worker *
72*cf78ab8cSAndroid Build Coastguard Worker * TA = transmitter address
73*cf78ab8cSAndroid Build Coastguard Worker * RA = receiver address
74*cf78ab8cSAndroid Build Coastguard Worker * DA = destination address
75*cf78ab8cSAndroid Build Coastguard Worker * SA = source address
76*cf78ab8cSAndroid Build Coastguard Worker *
77*cf78ab8cSAndroid Build Coastguard Worker * ToDS    FromDS  A1(RA)  A2(TA)  A3      A4      Use
78*cf78ab8cSAndroid Build Coastguard Worker * -----------------------------------------------------------------
79*cf78ab8cSAndroid Build Coastguard Worker *  0       0       DA      SA      BSSID   -       IBSS/DLS
80*cf78ab8cSAndroid Build Coastguard Worker *  0       1       DA      BSSID   SA      -       AP -> STA
81*cf78ab8cSAndroid Build Coastguard Worker *  1       0       BSSID   SA      DA      -       AP <- STA
82*cf78ab8cSAndroid Build Coastguard Worker *  1       1       RA      TA      DA      SA      unspecified (WDS)
83*cf78ab8cSAndroid Build Coastguard Worker */
84*cf78ab8cSAndroid Build Coastguard Worker
85*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211Ibss : Ieee80211 (to_ds=0, from_ds=0) {
86*cf78ab8cSAndroid Build Coastguard Worker    destination : MacAddress,
87*cf78ab8cSAndroid Build Coastguard Worker    source : MacAddress,
88*cf78ab8cSAndroid Build Coastguard Worker    bssid : MacAddress,
89*cf78ab8cSAndroid Build Coastguard Worker    seq_ctrl : 16,
90*cf78ab8cSAndroid Build Coastguard Worker    payload: 8[],
91*cf78ab8cSAndroid Build Coastguard Worker}
92*cf78ab8cSAndroid Build Coastguard Worker
93*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211FromAp : Ieee80211 (to_ds=0, from_ds=1) {
94*cf78ab8cSAndroid Build Coastguard Worker    destination : MacAddress,
95*cf78ab8cSAndroid Build Coastguard Worker    bssid : MacAddress,
96*cf78ab8cSAndroid Build Coastguard Worker    source : MacAddress,
97*cf78ab8cSAndroid Build Coastguard Worker    seq_ctrl : 16,
98*cf78ab8cSAndroid Build Coastguard Worker    payload: 8[],
99*cf78ab8cSAndroid Build Coastguard Worker}
100*cf78ab8cSAndroid Build Coastguard Worker
101*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211ToAp : Ieee80211 (to_ds=1, from_ds=0) {
102*cf78ab8cSAndroid Build Coastguard Worker    bssid : MacAddress,
103*cf78ab8cSAndroid Build Coastguard Worker    source : MacAddress,
104*cf78ab8cSAndroid Build Coastguard Worker    destination : MacAddress,
105*cf78ab8cSAndroid Build Coastguard Worker    seq_ctrl : 16,
106*cf78ab8cSAndroid Build Coastguard Worker    payload: 8[],
107*cf78ab8cSAndroid Build Coastguard Worker}
108*cf78ab8cSAndroid Build Coastguard Worker
109*cf78ab8cSAndroid Build Coastguard Workerpacket Ieee80211Wds : Ieee80211 (to_ds=1, from_ds=1) {
110*cf78ab8cSAndroid Build Coastguard Worker    receiver : MacAddress,
111*cf78ab8cSAndroid Build Coastguard Worker    transmitter : MacAddress,
112*cf78ab8cSAndroid Build Coastguard Worker    destination : MacAddress,
113*cf78ab8cSAndroid Build Coastguard Worker    seq_ctrl : 16,
114*cf78ab8cSAndroid Build Coastguard Worker    source : MacAddress,
115*cf78ab8cSAndroid Build Coastguard Worker    payload: 8[],
116*cf78ab8cSAndroid Build Coastguard Worker}
117