Changeset View
Changeset View
Standalone View
Standalone View
sys/net80211/ieee80211.h
Show First 20 Lines • Show All 111 Lines • ▼ Show 20 Lines | struct ieee80211_qosframe_addr4 { | ||||
uint8_t i_qos[2]; | uint8_t i_qos[2]; | ||||
} __packed; | } __packed; | ||||
#define IEEE80211_FC0_VERSION_MASK 0x03 | #define IEEE80211_FC0_VERSION_MASK 0x03 | ||||
#define IEEE80211_FC0_VERSION_SHIFT 0 | #define IEEE80211_FC0_VERSION_SHIFT 0 | ||||
#define IEEE80211_FC0_VERSION_0 0x00 | #define IEEE80211_FC0_VERSION_0 0x00 | ||||
#define IEEE80211_FC0_TYPE_MASK 0x0c | #define IEEE80211_FC0_TYPE_MASK 0x0c | ||||
#define IEEE80211_FC0_TYPE_SHIFT 2 | #define IEEE80211_FC0_TYPE_SHIFT 2 | ||||
#define IEEE80211_FC0_TYPE_MGT 0x00 | #define IEEE80211_FC0_TYPE_MGT 0x00 /* Management */ | ||||
#define IEEE80211_FC0_TYPE_CTL 0x04 | #define IEEE80211_FC0_TYPE_CTL 0x04 /* Control */ | ||||
#define IEEE80211_FC0_TYPE_DATA 0x08 | #define IEEE80211_FC0_TYPE_DATA 0x08 /* Data */ | ||||
#define IEEE80211_FC0_TYPE_EXT 0x0c /* Extension */ | |||||
#define IEEE80211_FC0_SUBTYPE_MASK 0xf0 | #define IEEE80211_FC0_SUBTYPE_MASK 0xf0 | ||||
#define IEEE80211_FC0_SUBTYPE_SHIFT 4 | #define IEEE80211_FC0_SUBTYPE_SHIFT 4 | ||||
/* for TYPE_MGT */ | /* 802.11-2020 Table 9-1-Valid type and subtype combinations */ | ||||
#define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00 | /* For type 00 Management (IEEE80211_FC0_TYPE_MGT) */ | ||||
#define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10 | #define IEEE80211_FC0_SUBTYPE_ASSOC_REQ 0x00 /* Association Request */ | ||||
#define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20 | #define IEEE80211_FC0_SUBTYPE_ASSOC_RESP 0x10 /* Association Response */ | ||||
#define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30 | #define IEEE80211_FC0_SUBTYPE_REASSOC_REQ 0x20 /* Reassociation Request */ | ||||
#define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40 | #define IEEE80211_FC0_SUBTYPE_REASSOC_RESP 0x30 /* Reassociation Response */ | ||||
#define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50 | #define IEEE80211_FC0_SUBTYPE_PROBE_REQ 0x40 /* Probe Request */ | ||||
#define IEEE80211_FC0_SUBTYPE_TIMING_ADV 0x60 | #define IEEE80211_FC0_SUBTYPE_PROBE_RESP 0x50 /* Probe Response */ | ||||
#define IEEE80211_FC0_SUBTYPE_BEACON 0x80 | #define IEEE80211_FC0_SUBTYPE_TIMING_ADV 0x60 /* Timing Advertisement */ | ||||
#define IEEE80211_FC0_SUBTYPE_ATIM 0x90 | /* 0111 Reserved 0x70 */ | ||||
#define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0 | #define IEEE80211_FC0_SUBTYPE_BEACON 0x80 /* Beacon */ | ||||
#define IEEE80211_FC0_SUBTYPE_AUTH 0xb0 | #define IEEE80211_FC0_SUBTYPE_ATIM 0x90 /* ATIM */ | ||||
#define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0 | #define IEEE80211_FC0_SUBTYPE_DISASSOC 0xa0 /* Disassociation */ | ||||
#define IEEE80211_FC0_SUBTYPE_ACTION 0xd0 | #define IEEE80211_FC0_SUBTYPE_AUTH 0xb0 /* Authentication */ | ||||
#define IEEE80211_FC0_SUBTYPE_ACTION_NOACK 0xe0 | #define IEEE80211_FC0_SUBTYPE_DEAUTH 0xc0 /* Deauthentication */ | ||||
/* for TYPE_CTL */ | #define IEEE80211_FC0_SUBTYPE_ACTION 0xd0 /* Action */ | ||||
#define IEEE80211_FC0_SUBTYPE_TRIGGER 0x20 | #define IEEE80211_FC0_SUBTYPE_ACTION_NOACK 0xe0 /* Action No Ack */ | ||||
#define IEEE80211_FC0_SUBTYPE_CONTROL_WRAP 0x70 | /* 1111 Reserved 0xf0 */ | ||||
#define IEEE80211_FC0_SUBTYPE_BAR 0x80 | /* For type 01 Control (IEEE80211_FC0_TYPE_CTL) */ | ||||
#define IEEE80211_FC0_SUBTYPE_BA 0x90 | /* 0000-0001 Reserved 0x00-0x10 */ | ||||
#define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0 | #define IEEE80211_FC0_SUBTYPE_TRIGGER 0x20 /* Trigger, 80211ax-2021 */ | ||||
#define IEEE80211_FC0_SUBTYPE_RTS 0xb0 | #define IEEE80211_FC0_SUBTYPE_TACK 0x30 /* TACK */ | ||||
#define IEEE80211_FC0_SUBTYPE_CTS 0xc0 | #define IEEE80211_FC0_SUBTYPE_BF_REPORT_POLL 0x40 /* Beamforming Report Poll */ | ||||
#define IEEE80211_FC0_SUBTYPE_ACK 0xd0 | #define IEEE80211_FC0_SUBTYPE_VHT_HE_NDP 0x50 /* VHT/HE NDP Announcement, 80211ac/ax-2013/2021 */ | ||||
#define IEEE80211_FC0_SUBTYPE_CF_END 0xe0 | #define IEEE80211_FC0_SUBTYPE_CTL_EXT 0x60 /* Control Frame Extension */ | ||||
#define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0 | #define IEEE80211_FC0_SUBTYPE_CONTROL_WRAP 0x70 /* Control Wrapper */ | ||||
/* for TYPE_DATA (bit combination) */ | #define IEEE80211_FC0_SUBTYPE_BAR 0x80 /* Block Ack Request (BlockAckReq) */ | ||||
#define IEEE80211_FC0_SUBTYPE_DATA 0x00 | #define IEEE80211_FC0_SUBTYPE_BA 0x90 /* Block Ack (BlockAck) */ | ||||
#define IEEE80211_FC0_SUBTYPE_CF_ACK 0x10 | #define IEEE80211_FC0_SUBTYPE_PS_POLL 0xa0 /* PS-Poll */ | ||||
#define IEEE80211_FC0_SUBTYPE_CF_POLL 0x20 | #define IEEE80211_FC0_SUBTYPE_RTS 0xb0 /* RTS */ | ||||
#define IEEE80211_FC0_SUBTYPE_CF_ACPL 0x30 | #define IEEE80211_FC0_SUBTYPE_CTS 0xc0 /* CTS */ | ||||
#define IEEE80211_FC0_SUBTYPE_NODATA 0x40 | #define IEEE80211_FC0_SUBTYPE_ACK 0xd0 /* Ack */ | ||||
#define IEEE80211_FC0_SUBTYPE_CFACK 0x50 | #define IEEE80211_FC0_SUBTYPE_CF_END 0xe0 /* CF-End */ | ||||
#define IEEE80211_FC0_SUBTYPE_CFPOLL 0x60 | #define IEEE80211_FC0_SUBTYPE_CF_END_ACK 0xf0 /* 1111 Reserved - what was CF_END_ACK? */ | ||||
#define IEEE80211_FC0_SUBTYPE_CF_ACK_CF_ACK 0x70 | /* For type 10 Data (IEEE80211_FC0_TYPE_DATA) */ | ||||
#define IEEE80211_FC0_SUBTYPE_QOS_DATA 0x80 | #define IEEE80211_FC0_SUBTYPE_DATA 0x00 /* Data */ | ||||
#define IEEE80211_FC0_SUBTYPE_QOS_DATA_CFACK 0x90 | /* 0001-0011 Reserved 0x10-0x30 */ /* Were: CF_ACK, CF_POLL, CF_ACPL */ | ||||
#define IEEE80211_FC0_SUBTYPE_QOS_DATA_CFPOLL 0xa0 | #define IEEE80211_FC0_SUBTYPE_NODATA 0x40 /* Null */ | ||||
#define IEEE80211_FC0_SUBTYPE_QOS_DATA_CFACKPOLL 0xb0 | /* 0101-0111 Reserved 0x50-0x70 */ /* Were: CFACK, CFPOLL, CF_ACK_CF_ACK */ | ||||
#define IEEE80211_FC0_SUBTYPE_QOS_NULL 0xc0 | #define IEEE80211_FC0_SUBTYPE_QOS_DATA 0x80 /* QoS Data */ | ||||
#define IEEE80211_FC0_SUBTYPE_QOS_DATA_CFACK 0x90 /* QoS Data +CF-Ack */ | |||||
#define IEEE80211_FC0_SUBTYPE_QOS_DATA_CFPOLL 0xa0 /* QoS Data +CF-Poll */ | |||||
#define IEEE80211_FC0_SUBTYPE_QOS_DATA_CFACKPOLL 0xb0 /* QoS Data +CF-Ack +CF-Poll */ | |||||
#define IEEE80211_FC0_SUBTYPE_QOS_NULL 0xc0 /* QoS Null */ | |||||
/* 1101 Reserved 0xd0 */ | |||||
#define IEEE80211_FC0_SUBTYPE_QOS_CFPOLL 0xe0 /* QoS CF-Poll */ | |||||
#define IEEE80211_FC0_SUBTYPE_QOS_CFACKPOLL 0xf0 /* QoS CF-Ack +CF-Poll */ | |||||
/* For type 11 Extension (IEEE80211_FC0_TYPE_EXT) */ | |||||
#define IEEE80211_FC0_SUBTYPE_DMG_BEACON 0x00 /* DMG Beacon */ | |||||
#define IEEE80211_FC0_SUBTYPE_S1G_BEACON 0x10 /* S1G Beacon */ | |||||
/* 0010-1111 Reserved 0x20-0xff */ | |||||
/* 802.11-2020 Table 9-2-Control Frame Extension */ | |||||
/* Reusing B11..B8, part of FC1 */ | |||||
#define IEEE80211_CTL_EXT_SECTOR_ACK 0x00 /* Sector Ack, 80211ay-2021 */ | |||||
#define IEEE80211_CTL_EXT_BA_SCHED 0x01 /* Block Ack Schedule, 80211ay-2021 */ | |||||
#define IEEE80211_CTL_EXT_POLL 0x02 /* Poll */ | |||||
#define IEEE80211_CTL_EXT_SPR 0x03 /* SPR */ | |||||
#define IEEE80211_CTL_EXT_GRANT 0x04 /* Grant */ | |||||
#define IEEE80211_CTL_EXT_DMG_CTS 0x05 /* DMG CTS */ | |||||
#define IEEE80211_CTL_EXT_DMG_DTS 0x06 /* DMG DTS */ | |||||
#define IEEE80211_CTL_EXT_GRANT_ACK 0x07 /* Grant Ack */ | |||||
#define IEEE80211_CTL_EXT_SSW 0x08 /* SSW */ | |||||
#define IEEE80211_CTL_EXT_SSW_FBACK 0x09 /* SSW-Feedback */ | |||||
#define IEEE80211_CTL_EXT_SSW_ACK 0x0a /* SSW-Ack */ | |||||
#define IEEE80211_CTL_EXT_TDD_BF 0x0b /* TDD Beamforming, 80211ay-2021 */ | |||||
/* 1100-1111 Reserved 0xc-0xf */ | |||||
#define IEEE80211_IS_MGMT(wh) \ | #define IEEE80211_IS_MGMT(wh) \ | ||||
(!! (((wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) \ | (!! (((wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) \ | ||||
== IEEE80211_FC0_TYPE_MGT)) | == IEEE80211_FC0_TYPE_MGT)) | ||||
#define IEEE80211_IS_CTL(wh) \ | #define IEEE80211_IS_CTL(wh) \ | ||||
(!! (((wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) \ | (!! (((wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) \ | ||||
== IEEE80211_FC0_TYPE_CTL)) | == IEEE80211_FC0_TYPE_CTL)) | ||||
#define IEEE80211_IS_DATA(wh) \ | #define IEEE80211_IS_DATA(wh) \ | ||||
(!! (((wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) \ | (!! (((wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) \ | ||||
== IEEE80211_FC0_TYPE_DATA)) | == IEEE80211_FC0_TYPE_DATA)) | ||||
#define IEEE80211_IS_EXT(wh) \ | |||||
(!! (((wh)->i_fc[0] & IEEE80211_FC0_TYPE_MASK) \ | |||||
== IEEE80211_FC0_TYPE_EXT)) | |||||
#define IEEE80211_FC0_QOSDATA \ | #define IEEE80211_FC0_QOSDATA \ | ||||
(IEEE80211_FC0_TYPE_DATA|IEEE80211_FC0_SUBTYPE_QOS_DATA|IEEE80211_FC0_VERSION_0) | (IEEE80211_FC0_TYPE_DATA|IEEE80211_FC0_SUBTYPE_QOS_DATA|IEEE80211_FC0_VERSION_0) | ||||
#define IEEE80211_IS_QOSDATA(wh) \ | #define IEEE80211_IS_QOSDATA(wh) \ | ||||
((wh)->i_fc[0] == IEEE80211_FC0_QOSDATA) | ((wh)->i_fc[0] == IEEE80211_FC0_QOSDATA) | ||||
#define IEEE80211_FC1_DIR_MASK 0x03 | #define IEEE80211_FC1_DIR_MASK 0x03 | ||||
▲ Show 20 Lines • Show All 1,288 Lines • Show Last 20 Lines |