ieee80211: add trigger frame definition
Define trigger stype of control frame, and its checking function, struct and trigger type within common_info of trigger. Signed-off-by: Po Hao Huang <phhuang@realtek.com> Signed-off-by: Ping-Ke Shih <pkshih@realtek.com> Signed-off-by: Kalle Valo <kvalo@kernel.org> Link: https://lore.kernel.org/r/20220608113224.11193-2-pkshih@realtek.com
This commit is contained in:
parent
05a2eebfa6
commit
21ab562c1f
@ -76,6 +76,7 @@
|
||||
#define IEEE80211_STYPE_ACTION 0x00D0
|
||||
|
||||
/* control */
|
||||
#define IEEE80211_STYPE_TRIGGER 0x0020
|
||||
#define IEEE80211_STYPE_CTL_EXT 0x0060
|
||||
#define IEEE80211_STYPE_BACK_REQ 0x0080
|
||||
#define IEEE80211_STYPE_BACK 0x0090
|
||||
@ -295,6 +296,17 @@ static inline u16 ieee80211_sn_sub(u16 sn1, u16 sn2)
|
||||
|
||||
#define IEEE80211_HT_CTL_LEN 4
|
||||
|
||||
/* trigger type within common_info of trigger frame */
|
||||
#define IEEE80211_TRIGGER_TYPE_MASK 0xf
|
||||
#define IEEE80211_TRIGGER_TYPE_BASIC 0x0
|
||||
#define IEEE80211_TRIGGER_TYPE_BFRP 0x1
|
||||
#define IEEE80211_TRIGGER_TYPE_MU_BAR 0x2
|
||||
#define IEEE80211_TRIGGER_TYPE_MU_RTS 0x3
|
||||
#define IEEE80211_TRIGGER_TYPE_BSRP 0x4
|
||||
#define IEEE80211_TRIGGER_TYPE_GCR_MU_BAR 0x5
|
||||
#define IEEE80211_TRIGGER_TYPE_BQRP 0x6
|
||||
#define IEEE80211_TRIGGER_TYPE_NFRP 0x7
|
||||
|
||||
struct ieee80211_hdr {
|
||||
__le16 frame_control;
|
||||
__le16 duration_id;
|
||||
@ -324,6 +336,15 @@ struct ieee80211_qos_hdr {
|
||||
__le16 qos_ctrl;
|
||||
} __packed __aligned(2);
|
||||
|
||||
struct ieee80211_trigger {
|
||||
__le16 frame_control;
|
||||
__le16 duration;
|
||||
u8 ra[ETH_ALEN];
|
||||
u8 ta[ETH_ALEN];
|
||||
__le64 common_info;
|
||||
u8 variable[];
|
||||
} __packed __aligned(2);
|
||||
|
||||
/**
|
||||
* ieee80211_has_tods - check if IEEE80211_FCTL_TODS is set
|
||||
* @fc: frame control bytes in little-endian byteorder
|
||||
@ -729,6 +750,16 @@ static inline bool ieee80211_is_qos_nullfunc(__le16 fc)
|
||||
cpu_to_le16(IEEE80211_FTYPE_DATA | IEEE80211_STYPE_QOS_NULLFUNC);
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_is_trigger - check if frame is trigger frame
|
||||
* @fc: frame control field in little-endian byteorder
|
||||
*/
|
||||
static inline bool ieee80211_is_trigger(__le16 fc)
|
||||
{
|
||||
return (fc & cpu_to_le16(IEEE80211_FCTL_FTYPE | IEEE80211_FCTL_STYPE)) ==
|
||||
cpu_to_le16(IEEE80211_FTYPE_CTL | IEEE80211_STYPE_TRIGGER);
|
||||
}
|
||||
|
||||
/**
|
||||
* ieee80211_is_any_nullfunc - check if frame is regular or QoS nullfunc frame
|
||||
* @fc: frame control bytes in little-endian byteorder
|
||||
|
Loading…
x
Reference in New Issue
Block a user