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