summaryrefslogtreecommitdiff
path: root/netspeed/src/ieee80211.h
blob: ccfeb9edcabd7f58d5423422724a4fba084d3c94 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
#ifndef __IEEE80211
#define __IEEE80211

/* 802.11n HT capability AMPDU settings (for ampdu_params_info) */
#define IEEE80211_HT_AMPDU_PARM_FACTOR          0x03
#define IEEE80211_HT_AMPDU_PARM_DENSITY         0x1C

#define IEEE80211_HT_CAP_SUP_WIDTH_20_40        0x0002
#define IEEE80211_HT_CAP_SGI_40                 0x0040
#define IEEE80211_HT_CAP_MAX_AMSDU              0x0800

#define IEEE80211_HT_MCS_MASK_LEN               10

/**
 * struct ieee80211_mcs_info - MCS information
 * @rx_mask: RX mask
 * @rx_highest: highest supported RX rate. If set represents
 *      the highest supported RX data rate in units of 1 Mbps.
 *      If this field is 0 this value should not be used to
 *      consider the highest RX data rate supported.
 * @tx_params: TX parameters
 */
struct ieee80211_mcs_info {
    __u8 rx_mask[IEEE80211_HT_MCS_MASK_LEN];
    __u16 rx_highest;
    __u8 tx_params;
    __u8 reserved[3];
} __attribute__ ((packed));

/**
 * struct ieee80211_ht_cap - HT capabilities
 *
 * This structure is the "HT capabilities element" as
 * described in 802.11n D5.0 7.3.2.57
 */
struct ieee80211_ht_cap {
    __u16 cap_info;
    __u8 ampdu_params_info;

    /* 16 bytes MCS information */
    struct ieee80211_mcs_info mcs;

    __u16 extended_ht_cap_info;
    __u32 tx_BF_cap_info;
    __u8 antenna_selection_info;
} __attribute__ ((packed));

struct ieee80211_vht_mcs_info {
    __u16 rx_vht_mcs;
    __u16 rx_highest;
    __u16 tx_vht_mcs;
    __u16 tx_highest;
} __attribute__ ((packed));

struct ieee80211_vht_cap {
    __u32 cap_info;
    struct ieee80211_vht_mcs_info mcs;
} __attribute__ ((packed));

#endif /* __IEEE80211 */