Linux kernel & device driver programming

Cross-Referenced Linux and Device Driver Code

[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ]
Version: [ 2.6.11.8 ] [ 2.6.25 ] [ 2.6.25.8 ] [ 2.6.31.13 ] Architecture: [ i386 ]
  1 #ifndef __WL12XX_80211_H__
  2 #define __WL12XX_80211_H__
  3 
  4 #include <linux/if_ether.h>     /* ETH_ALEN */
  5 
  6 /* RATES */
  7 #define IEEE80211_CCK_RATE_1MB                  0x02
  8 #define IEEE80211_CCK_RATE_2MB                  0x04
  9 #define IEEE80211_CCK_RATE_5MB                  0x0B
 10 #define IEEE80211_CCK_RATE_11MB                 0x16
 11 #define IEEE80211_OFDM_RATE_6MB                 0x0C
 12 #define IEEE80211_OFDM_RATE_9MB                 0x12
 13 #define IEEE80211_OFDM_RATE_12MB                0x18
 14 #define IEEE80211_OFDM_RATE_18MB                0x24
 15 #define IEEE80211_OFDM_RATE_24MB                0x30
 16 #define IEEE80211_OFDM_RATE_36MB                0x48
 17 #define IEEE80211_OFDM_RATE_48MB                0x60
 18 #define IEEE80211_OFDM_RATE_54MB                0x6C
 19 #define IEEE80211_BASIC_RATE_MASK               0x80
 20 
 21 #define IEEE80211_CCK_RATE_1MB_MASK             (1<<0)
 22 #define IEEE80211_CCK_RATE_2MB_MASK             (1<<1)
 23 #define IEEE80211_CCK_RATE_5MB_MASK             (1<<2)
 24 #define IEEE80211_CCK_RATE_11MB_MASK            (1<<3)
 25 #define IEEE80211_OFDM_RATE_6MB_MASK            (1<<4)
 26 #define IEEE80211_OFDM_RATE_9MB_MASK            (1<<5)
 27 #define IEEE80211_OFDM_RATE_12MB_MASK           (1<<6)
 28 #define IEEE80211_OFDM_RATE_18MB_MASK           (1<<7)
 29 #define IEEE80211_OFDM_RATE_24MB_MASK           (1<<8)
 30 #define IEEE80211_OFDM_RATE_36MB_MASK           (1<<9)
 31 #define IEEE80211_OFDM_RATE_48MB_MASK           (1<<10)
 32 #define IEEE80211_OFDM_RATE_54MB_MASK           (1<<11)
 33 
 34 #define IEEE80211_CCK_RATES_MASK          0x0000000F
 35 #define IEEE80211_CCK_BASIC_RATES_MASK   (IEEE80211_CCK_RATE_1MB_MASK | \
 36         IEEE80211_CCK_RATE_2MB_MASK)
 37 #define IEEE80211_CCK_DEFAULT_RATES_MASK (IEEE80211_CCK_BASIC_RATES_MASK | \
 38         IEEE80211_CCK_RATE_5MB_MASK | \
 39         IEEE80211_CCK_RATE_11MB_MASK)
 40 
 41 #define IEEE80211_OFDM_RATES_MASK         0x00000FF0
 42 #define IEEE80211_OFDM_BASIC_RATES_MASK   (IEEE80211_OFDM_RATE_6MB_MASK | \
 43         IEEE80211_OFDM_RATE_12MB_MASK | \
 44         IEEE80211_OFDM_RATE_24MB_MASK)
 45 #define IEEE80211_OFDM_DEFAULT_RATES_MASK (IEEE80211_OFDM_BASIC_RATES_MASK | \
 46         IEEE80211_OFDM_RATE_9MB_MASK  | \
 47         IEEE80211_OFDM_RATE_18MB_MASK | \
 48         IEEE80211_OFDM_RATE_36MB_MASK | \
 49         IEEE80211_OFDM_RATE_48MB_MASK | \
 50         IEEE80211_OFDM_RATE_54MB_MASK)
 51 #define IEEE80211_DEFAULT_RATES_MASK (IEEE80211_OFDM_DEFAULT_RATES_MASK | \
 52                                       IEEE80211_CCK_DEFAULT_RATES_MASK)
 53 
 54 
 55 /* This really should be 8, but not for our firmware */
 56 #define MAX_SUPPORTED_RATES 32
 57 #define COUNTRY_STRING_LEN 3
 58 #define MAX_COUNTRY_TRIPLETS 32
 59 
 60 /* Headers */
 61 struct 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[0];
 69 } __attribute__ ((packed));
 70 
 71 struct wl12xx_ie_header {
 72         u8 id;
 73         u8 len;
 74 } __attribute__ ((packed));
 75 
 76 /* IEs */
 77 
 78 struct wl12xx_ie_ssid {
 79         struct wl12xx_ie_header header;
 80         char ssid[IW_ESSID_MAX_SIZE];
 81 } __attribute__ ((packed));
 82 
 83 struct wl12xx_ie_rates {
 84         struct wl12xx_ie_header header;
 85         u8 rates[MAX_SUPPORTED_RATES];
 86 } __attribute__ ((packed));
 87 
 88 struct wl12xx_ie_ds_params {
 89         struct wl12xx_ie_header header;
 90         u8 channel;
 91 } __attribute__ ((packed));
 92 
 93 struct country_triplet {
 94         u8 channel;
 95         u8 num_channels;
 96         u8 max_tx_power;
 97 } __attribute__ ((packed));
 98 
 99 struct wl12xx_ie_country {
100         struct wl12xx_ie_header header;
101         u8 country_string[COUNTRY_STRING_LEN];
102         struct country_triplet triplets[MAX_COUNTRY_TRIPLETS];
103 } __attribute__ ((packed));
104 
105 
106 /* Templates */
107 
108 struct 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 } __attribute__ ((packed));
119 
120 struct wl12xx_null_data_template {
121         struct ieee80211_header header;
122 } __attribute__ ((packed));
123 
124 struct wl12xx_ps_poll_template {
125         u16 fc;
126         u16 aid;
127         u8 bssid[ETH_ALEN];
128         u8 ta[ETH_ALEN];
129 } __attribute__ ((packed));
130 
131 struct wl12xx_qos_null_data_template {
132         struct ieee80211_header header;
133         __le16 qos_ctl;
134 } __attribute__ ((packed));
135 
136 struct 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 } __attribute__ ((packed));
142 
143 
144 struct 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 } __attribute__ ((packed));
155 
156 #endif
157 
  This page was automatically generated by the LXR engine.