/* SPDX-License-Identifier: GPL-2.0 */ #ifndef __INC_QOS_TYPE_H #define __INC_QOS_TYPE_H /* * ACI/AIFSN Field. * Ref: WMM spec 2.2.2: WME Parameter Element, p.12. * Note: 1 Byte Length */ struct aci_aifsn { u8 aifsn:4; u8 acm:1; u8 aci:2; u8:1; }; /* * Direction Field Values. * Ref: WMM spec 2.2.11: WME TSPEC Element, p.18. */ enum direction_value { DIR_UP = 0, // 0x00 // UpLink DIR_DOWN = 1, // 0x01 // DownLink DIR_DIRECT = 2, // 0x10 // DirectLink DIR_BI_DIR = 3, // 0x11 // Bi-Direction }; /* * TS Info field in WMM TSPEC Element. * Ref: * 1. WMM spec 2.2.11: WME TSPEC Element, p.18. * 2. 8185 QoS code: QOS_TSINFO [def. in QoS_mp.h] * Note: sizeof 3 Bytes */ struct qos_tsinfo { u16 uc_traffic_type:1; //WMM is reserved u16 uc_tsid:4; u16 uc_direction:2; u16 uc_access_policy:2; //WMM: bit8=0, bit7=1 u16 uc_aggregation:1; //WMM is reserved u16 uc_psb:1; //WMMSA is APSD u16 uc_up:3; u16 uc_ts_info_ack_policy:2; //WMM is reserved u8 uc_schedule:1; //WMM is reserved u8:7; }; /* * WMM TSPEC Body. * Ref: WMM spec 2.2.11: WME TSPEC Element, p.16. * Note: sizeof 55 bytes */ struct tspec_body { struct qos_tsinfo ts_info; //u8 TSInfo[3]; u16 nominal_msd_usize; u16 max_msd_usize; u32 min_service_itv; u32 max_service_itv; u32 inactivity_itv; u32 suspen_itv; u32 service_start_time; u32 min_data_rate; u32 mean_data_rate; u32 peak_data_rate; u32 max_burst_size; u32 delay_bound; u32 min_phy_rate; u16 surplus_bandwidth_allowance; u16 medium_time; }; /* * 802.11 Management frame Status Code field */ struct octet_string { u8 *octet; u16 length; }; #define is_ac_valid(ac) (((ac) <= 7) ? true : false) #endif // #ifndef __INC_QOS_TYPE_H