| /* 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 |