Ieee80211DataHeader

Namespace inet::ieee80211

Ieee80211DataHeader

class

Format of the 802.11 data frame

Extends

Name Type Description
Ieee80211DataOrMgmtHeader (unknown -- not in documented files)

Fields

Name Type Description
chunkLength

The presence of the Address 4 field is determined by the setting of the To DS and From DS subfields of the Frame Control field (see below). The QoS Control field is present when the QoS subfield of the Subtype field is set to 1 (8.3.2.1 Data frame format) FIXME chunkLength is not a constant value DATAFRAME_HEADER_MINLENGTH (24 bytes). For example, with Address 4 and without QoS the correct length is 30 bytes. Without Address 4 and QoS the correct value is indeed 24 bytes. With Address 4 and QoS the correct value is indeed 32 bytes.

type

or ST_DATA_WITH_QOS

address4 MacAddress

optional field, exists when toDS and fromDS are true

ackPolicy AckPolicy
tid uint8_t

optional field, exists when type == ST_DATA_WITH_QOS

aMsduPresent bool

8.2.4.5.9 A-MSDU Present subfield

Packet operations (observed)

actionmodule
insertAtFrontDs, Ieee80211Mac, Tx, Dcf, Hcf, OriginatorMacDataService, OriginatorQosMacDataService, RecipientMacDataService, RecipientQosMacDataService
peekAtFrontHcf, OriginatorQosMacDataService, RecipientQosMacDataService
popAtFrontOriginatorQosMacDataService, RecipientQosMacDataService
removeAtFrontHcf

Source code

//
// Format of the 802.11 data frame
//
class Ieee80211DataHeader extends Ieee80211DataOrMgmtHeader
{
    //  The presence of the Address 4 field is determined by the setting of the To DS and From DS subfields of
    //  the Frame Control field (see below). The QoS Control field is present when the QoS subfield of the Subtype
    //  field is set to 1 (8.3.2.1 Data frame format)
    //  FIXME chunkLength is not a constant value DATAFRAME_HEADER_MINLENGTH (24 bytes).
    //  For example, with Address 4 and without QoS the correct length is 30 bytes.
    //  Without Address 4 and QoS the correct value is indeed 24 bytes.
    //  With Address 4 and QoS the correct value is indeed 32 bytes.
    chunkLength = DATAFRAME_HEADER_MINLENGTH;
    type = ST_DATA;         // or ST_DATA_WITH_QOS
    MacAddress address4;    // optional field, exists when toDS and fromDS are true
    AckPolicy ackPolicy = NORMAL_ACK;
    uint8_t tid;              // optional field, exists when type == ST_DATA_WITH_QOS
    bool aMsduPresent = false; // 8.2.4.5.9 A-MSDU Present subfield
}

//TODO this can be introduced when the SNAP header
//class Ieee80211QoSDataHeader extends Ieee80211DataHeader
//{
//    type = ST_DATA_WITH_QOS;
//    chunkLength = DATAFRAME_HEADER_MINLENGTH + QOSCONTROL_PART_LENGTH;
//    AckPolicy ackPolicy = NORMAL_ACK; //FIXME in real life this is part of the optional qos field above...
//    uint8_t tid;
//    // TODO other QoS control field parts
//}

File: src/inet/linklayer/ieee80211/mac/Ieee80211Frame.msg