cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

wl12xx_80211.h (4159B)


      1/* SPDX-License-Identifier: GPL-2.0 */
      2#ifndef __WL12XX_80211_H__
      3#define __WL12XX_80211_H__
      4
      5#include <linux/if_ether.h>	/* ETH_ALEN */
      6
      7/* RATES */
      8#define IEEE80211_CCK_RATE_1MB		        0x02
      9#define IEEE80211_CCK_RATE_2MB		        0x04
     10#define IEEE80211_CCK_RATE_5MB		        0x0B
     11#define IEEE80211_CCK_RATE_11MB		        0x16
     12#define IEEE80211_OFDM_RATE_6MB		        0x0C
     13#define IEEE80211_OFDM_RATE_9MB		        0x12
     14#define IEEE80211_OFDM_RATE_12MB		0x18
     15#define IEEE80211_OFDM_RATE_18MB		0x24
     16#define IEEE80211_OFDM_RATE_24MB		0x30
     17#define IEEE80211_OFDM_RATE_36MB		0x48
     18#define IEEE80211_OFDM_RATE_48MB		0x60
     19#define IEEE80211_OFDM_RATE_54MB		0x6C
     20#define IEEE80211_BASIC_RATE_MASK		0x80
     21
     22#define IEEE80211_CCK_RATE_1MB_MASK		(1<<0)
     23#define IEEE80211_CCK_RATE_2MB_MASK		(1<<1)
     24#define IEEE80211_CCK_RATE_5MB_MASK		(1<<2)
     25#define IEEE80211_CCK_RATE_11MB_MASK		(1<<3)
     26#define IEEE80211_OFDM_RATE_6MB_MASK		(1<<4)
     27#define IEEE80211_OFDM_RATE_9MB_MASK		(1<<5)
     28#define IEEE80211_OFDM_RATE_12MB_MASK		(1<<6)
     29#define IEEE80211_OFDM_RATE_18MB_MASK		(1<<7)
     30#define IEEE80211_OFDM_RATE_24MB_MASK		(1<<8)
     31#define IEEE80211_OFDM_RATE_36MB_MASK		(1<<9)
     32#define IEEE80211_OFDM_RATE_48MB_MASK		(1<<10)
     33#define IEEE80211_OFDM_RATE_54MB_MASK		(1<<11)
     34
     35#define IEEE80211_CCK_RATES_MASK	  0x0000000F
     36#define IEEE80211_CCK_BASIC_RATES_MASK	 (IEEE80211_CCK_RATE_1MB_MASK | \
     37	IEEE80211_CCK_RATE_2MB_MASK)
     38#define IEEE80211_CCK_DEFAULT_RATES_MASK (IEEE80211_CCK_BASIC_RATES_MASK | \
     39	IEEE80211_CCK_RATE_5MB_MASK | \
     40	IEEE80211_CCK_RATE_11MB_MASK)
     41
     42#define IEEE80211_OFDM_RATES_MASK	  0x00000FF0
     43#define IEEE80211_OFDM_BASIC_RATES_MASK	  (IEEE80211_OFDM_RATE_6MB_MASK | \
     44	IEEE80211_OFDM_RATE_12MB_MASK | \
     45	IEEE80211_OFDM_RATE_24MB_MASK)
     46#define IEEE80211_OFDM_DEFAULT_RATES_MASK (IEEE80211_OFDM_BASIC_RATES_MASK | \
     47	IEEE80211_OFDM_RATE_9MB_MASK  | \
     48	IEEE80211_OFDM_RATE_18MB_MASK | \
     49	IEEE80211_OFDM_RATE_36MB_MASK | \
     50	IEEE80211_OFDM_RATE_48MB_MASK | \
     51	IEEE80211_OFDM_RATE_54MB_MASK)
     52#define IEEE80211_DEFAULT_RATES_MASK (IEEE80211_OFDM_DEFAULT_RATES_MASK | \
     53				      IEEE80211_CCK_DEFAULT_RATES_MASK)
     54
     55
     56/* This really should be 8, but not for our firmware */
     57#define MAX_SUPPORTED_RATES 32
     58#define MAX_COUNTRY_TRIPLETS 32
     59
     60/* Headers */
     61struct ieee80211_header {
     62	__le16 frame_ctl;
     63	__le16 duration_id;
     64	u8 da[ETH_ALEN];
     65	u8 sa[ETH_ALEN];
     66	u8 bssid[ETH_ALEN];
     67	__le16 seq_ctl;
     68	u8 payload[];
     69} __packed;
     70
     71struct wl12xx_ie_header {
     72	u8 id;
     73	u8 len;
     74} __packed;
     75
     76/* IEs */
     77
     78struct wl12xx_ie_ssid {
     79	struct wl12xx_ie_header header;
     80	char ssid[IEEE80211_MAX_SSID_LEN];
     81} __packed;
     82
     83struct wl12xx_ie_rates {
     84	struct wl12xx_ie_header header;
     85	u8 rates[MAX_SUPPORTED_RATES];
     86} __packed;
     87
     88struct wl12xx_ie_ds_params {
     89	struct wl12xx_ie_header header;
     90	u8 channel;
     91} __packed;
     92
     93struct country_triplet {
     94	u8 channel;
     95	u8 num_channels;
     96	u8 max_tx_power;
     97} __packed;
     98
     99struct wl12xx_ie_country {
    100	struct wl12xx_ie_header header;
    101	u8 country_string[IEEE80211_COUNTRY_STRING_LEN];
    102	struct country_triplet triplets[MAX_COUNTRY_TRIPLETS];
    103} __packed;
    104
    105
    106/* Templates */
    107
    108struct wl12xx_beacon_template {
    109	struct ieee80211_header header;
    110	__le32 time_stamp[2];
    111	__le16 beacon_interval;
    112	__le16 capability;
    113	struct wl12xx_ie_ssid ssid;
    114	struct wl12xx_ie_rates rates;
    115	struct wl12xx_ie_rates ext_rates;
    116	struct wl12xx_ie_ds_params ds_params;
    117	struct wl12xx_ie_country country;
    118} __packed;
    119
    120struct wl12xx_null_data_template {
    121	struct ieee80211_header header;
    122} __packed;
    123
    124struct wl12xx_ps_poll_template {
    125	__le16 fc;
    126	__le16 aid;
    127	u8 bssid[ETH_ALEN];
    128	u8 ta[ETH_ALEN];
    129} __packed;
    130
    131struct wl12xx_qos_null_data_template {
    132	struct ieee80211_header header;
    133	__le16 qos_ctl;
    134} __packed;
    135
    136struct wl12xx_probe_req_template {
    137	struct ieee80211_header header;
    138	struct wl12xx_ie_ssid ssid;
    139	struct wl12xx_ie_rates rates;
    140	struct wl12xx_ie_rates ext_rates;
    141} __packed;
    142
    143
    144struct wl12xx_probe_resp_template {
    145	struct ieee80211_header header;
    146	__le32 time_stamp[2];
    147	__le16 beacon_interval;
    148	__le16 capability;
    149	struct wl12xx_ie_ssid ssid;
    150	struct wl12xx_ie_rates rates;
    151	struct wl12xx_ie_rates ext_rates;
    152	struct wl12xx_ie_ds_params ds_params;
    153	struct wl12xx_ie_country country;
    154} __packed;
    155
    156#endif