diff options
Diffstat (limited to 'include/net/ieee80211softmac.h')
| -rw-r--r-- | include/net/ieee80211softmac.h | 61 |
1 files changed, 55 insertions, 6 deletions
diff --git a/include/net/ieee80211softmac.h b/include/net/ieee80211softmac.h index 7a483ab4022f..425b3a57ac74 100644 --- a/include/net/ieee80211softmac.h +++ b/include/net/ieee80211softmac.h | |||
| @@ -86,9 +86,6 @@ struct ieee80211softmac_assoc_info { | |||
| 86 | 86 | ||
| 87 | /* BSSID we're trying to associate to */ | 87 | /* BSSID we're trying to associate to */ |
| 88 | char bssid[ETH_ALEN]; | 88 | char bssid[ETH_ALEN]; |
| 89 | |||
| 90 | /* Rates supported by the network */ | ||
| 91 | struct ieee80211softmac_ratesinfo supported_rates; | ||
| 92 | 89 | ||
| 93 | /* some flags. | 90 | /* some flags. |
| 94 | * static_essid is valid if the essid is constant, | 91 | * static_essid is valid if the essid is constant, |
| @@ -103,7 +100,9 @@ struct ieee80211softmac_assoc_info { | |||
| 103 | * bssfixed is used for SIOCSIWAP. | 100 | * bssfixed is used for SIOCSIWAP. |
| 104 | */ | 101 | */ |
| 105 | u8 static_essid:1, | 102 | u8 static_essid:1, |
| 103 | short_preamble_available:1, | ||
| 106 | associating:1, | 104 | associating:1, |
| 105 | assoc_wait:1, | ||
| 107 | bssvalid:1, | 106 | bssvalid:1, |
| 108 | bssfixed:1; | 107 | bssfixed:1; |
| 109 | 108 | ||
| @@ -114,6 +113,19 @@ struct ieee80211softmac_assoc_info { | |||
| 114 | struct work_struct timeout; | 113 | struct work_struct timeout; |
| 115 | }; | 114 | }; |
| 116 | 115 | ||
| 116 | struct ieee80211softmac_bss_info { | ||
| 117 | /* Rates supported by the network */ | ||
| 118 | struct ieee80211softmac_ratesinfo supported_rates; | ||
| 119 | |||
| 120 | /* This indicates whether frames can currently be transmitted with | ||
| 121 | * short preamble (only use this variable during TX at CCK rates) */ | ||
| 122 | u8 short_preamble:1; | ||
| 123 | |||
| 124 | /* This indicates whether protection (e.g. self-CTS) should be used | ||
| 125 | * when transmitting with OFDM modulation */ | ||
| 126 | u8 use_protection:1; | ||
| 127 | }; | ||
| 128 | |||
| 117 | enum { | 129 | enum { |
| 118 | IEEE80211SOFTMAC_AUTH_OPEN_REQUEST = 1, | 130 | IEEE80211SOFTMAC_AUTH_OPEN_REQUEST = 1, |
| 119 | IEEE80211SOFTMAC_AUTH_OPEN_RESPONSE = 2, | 131 | IEEE80211SOFTMAC_AUTH_OPEN_RESPONSE = 2, |
| @@ -156,6 +168,10 @@ struct ieee80211softmac_txrates { | |||
| 156 | #define IEEE80211SOFTMAC_TXRATECHG_MCAST (1 << 2) /* mcast_rate */ | 168 | #define IEEE80211SOFTMAC_TXRATECHG_MCAST (1 << 2) /* mcast_rate */ |
| 157 | #define IEEE80211SOFTMAC_TXRATECHG_MGT_MCAST (1 << 3) /* mgt_mcast_rate */ | 169 | #define IEEE80211SOFTMAC_TXRATECHG_MGT_MCAST (1 << 3) /* mgt_mcast_rate */ |
| 158 | 170 | ||
| 171 | #define IEEE80211SOFTMAC_BSSINFOCHG_RATES (1 << 0) /* supported_rates */ | ||
| 172 | #define IEEE80211SOFTMAC_BSSINFOCHG_SHORT_PREAMBLE (1 << 1) /* short_preamble */ | ||
| 173 | #define IEEE80211SOFTMAC_BSSINFOCHG_PROTECTION (1 << 2) /* use_protection */ | ||
| 174 | |||
| 159 | struct ieee80211softmac_device { | 175 | struct ieee80211softmac_device { |
| 160 | /* 802.11 structure for data stuff */ | 176 | /* 802.11 structure for data stuff */ |
| 161 | struct ieee80211_device *ieee; | 177 | struct ieee80211_device *ieee; |
| @@ -199,10 +215,16 @@ struct ieee80211softmac_device { | |||
| 199 | * The driver just needs to read them. | 215 | * The driver just needs to read them. |
| 200 | */ | 216 | */ |
| 201 | struct ieee80211softmac_txrates txrates; | 217 | struct ieee80211softmac_txrates txrates; |
| 202 | /* If the driver needs to do stuff on TX rate changes, assign this callback. */ | 218 | |
| 219 | /* If the driver needs to do stuff on TX rate changes, assign this | ||
| 220 | * callback. See IEEE80211SOFTMAC_TXRATECHG for change flags. */ | ||
| 203 | void (*txrates_change)(struct net_device *dev, | 221 | void (*txrates_change)(struct net_device *dev, |
| 204 | u32 changes, /* see IEEE80211SOFTMAC_TXRATECHG flags */ | 222 | u32 changes); |
| 205 | const struct ieee80211softmac_txrates *rates_before_change); | 223 | |
| 224 | /* If the driver needs to do stuff when BSS properties change, assign | ||
| 225 | * this callback. see IEEE80211SOFTMAC_BSSINFOCHG for change flags. */ | ||
| 226 | void (*bssinfo_change)(struct net_device *dev, | ||
| 227 | u32 changes); | ||
| 206 | 228 | ||
| 207 | /* private stuff follows */ | 229 | /* private stuff follows */ |
| 208 | /* this lock protects this structure */ | 230 | /* this lock protects this structure */ |
| @@ -215,6 +237,7 @@ struct ieee80211softmac_device { | |||
| 215 | 237 | ||
| 216 | struct ieee80211softmac_scaninfo *scaninfo; | 238 | struct ieee80211softmac_scaninfo *scaninfo; |
| 217 | struct ieee80211softmac_assoc_info associnfo; | 239 | struct ieee80211softmac_assoc_info associnfo; |
| 240 | struct ieee80211softmac_bss_info bssinfo; | ||
| 218 | 241 | ||
| 219 | struct list_head auth_queue; | 242 | struct list_head auth_queue; |
| 220 | struct list_head events; | 243 | struct list_head events; |
| @@ -256,6 +279,14 @@ extern void ieee80211softmac_fragment_lost(struct net_device *dev, | |||
| 256 | * Note that the rates need to be sorted. */ | 279 | * Note that the rates need to be sorted. */ |
| 257 | extern void ieee80211softmac_set_rates(struct net_device *dev, u8 count, u8 *rates); | 280 | extern void ieee80211softmac_set_rates(struct net_device *dev, u8 count, u8 *rates); |
| 258 | 281 | ||
| 282 | /* Finds the highest rate which is: | ||
| 283 | * 1. Present in ri (optionally a basic rate) | ||
| 284 | * 2. Supported by the device | ||
| 285 | * 3. Less than or equal to the user-defined rate | ||
| 286 | */ | ||
| 287 | extern u8 ieee80211softmac_highest_supported_rate(struct ieee80211softmac_device *mac, | ||
| 288 | struct ieee80211softmac_ratesinfo *ri, int basic_only); | ||
| 289 | |||
| 259 | /* Helper function which advises you the rate at which a frame should be | 290 | /* Helper function which advises you the rate at which a frame should be |
| 260 | * transmitted at. */ | 291 | * transmitted at. */ |
| 261 | static inline u8 ieee80211softmac_suggest_txrate(struct ieee80211softmac_device *mac, | 292 | static inline u8 ieee80211softmac_suggest_txrate(struct ieee80211softmac_device *mac, |
| @@ -278,6 +309,24 @@ static inline u8 ieee80211softmac_suggest_txrate(struct ieee80211softmac_device | |||
| 278 | return txrates->mcast_rate; | 309 | return txrates->mcast_rate; |
| 279 | } | 310 | } |
| 280 | 311 | ||
| 312 | /* Helper function which advises you when it is safe to transmit with short | ||
| 313 | * preamble. | ||
| 314 | * You should only call this function when transmitting at CCK rates. */ | ||
| 315 | static inline int ieee80211softmac_short_preamble_ok(struct ieee80211softmac_device *mac, | ||
| 316 | int is_multicast, | ||
| 317 | int is_mgt) | ||
| 318 | { | ||
| 319 | return (is_multicast && is_mgt) ? 0 : mac->bssinfo.short_preamble; | ||
| 320 | } | ||
| 321 | |||
| 322 | /* Helper function which advises you whether protection (e.g. self-CTS) is | ||
| 323 | * needed. 1 = protection needed, 0 = no protection needed | ||
| 324 | * Only use this function when transmitting with OFDM modulation. */ | ||
| 325 | static inline int ieee80211softmac_protection_needed(struct ieee80211softmac_device *mac) | ||
| 326 | { | ||
| 327 | return mac->bssinfo.use_protection; | ||
| 328 | } | ||
| 329 | |||
| 281 | /* Start the SoftMAC. Call this after you initialized the device | 330 | /* Start the SoftMAC. Call this after you initialized the device |
| 282 | * and it is ready to run. | 331 | * and it is ready to run. |
| 283 | */ | 332 | */ |
