diff options
Diffstat (limited to 'include/net')
| -rw-r--r-- | include/net/ieee80211.h | 9 | ||||
| -rw-r--r-- | include/net/ieee80211softmac.h | 40 | ||||
| -rw-r--r-- | include/net/ieee80211softmac_wx.h | 5 |
3 files changed, 46 insertions, 8 deletions
diff --git a/include/net/ieee80211.h b/include/net/ieee80211.h index d5926bfb1fc9..d5147770ad47 100644 --- a/include/net/ieee80211.h +++ b/include/net/ieee80211.h | |||
| @@ -29,7 +29,7 @@ | |||
| 29 | #include <linux/kernel.h> /* ARRAY_SIZE */ | 29 | #include <linux/kernel.h> /* ARRAY_SIZE */ |
| 30 | #include <linux/wireless.h> | 30 | #include <linux/wireless.h> |
| 31 | 31 | ||
| 32 | #define IEEE80211_VERSION "git-1.1.7" | 32 | #define IEEE80211_VERSION "git-1.1.13" |
| 33 | 33 | ||
| 34 | #define IEEE80211_DATA_LEN 2304 | 34 | #define IEEE80211_DATA_LEN 2304 |
| 35 | /* Maximum size for the MA-UNITDATA primitive, 802.11 standard section | 35 | /* Maximum size for the MA-UNITDATA primitive, 802.11 standard section |
| @@ -104,6 +104,9 @@ | |||
| 104 | #define IEEE80211_SCTL_FRAG 0x000F | 104 | #define IEEE80211_SCTL_FRAG 0x000F |
| 105 | #define IEEE80211_SCTL_SEQ 0xFFF0 | 105 | #define IEEE80211_SCTL_SEQ 0xFFF0 |
| 106 | 106 | ||
| 107 | /* QOS control */ | ||
| 108 | #define IEEE80211_QCTL_TID 0x000F | ||
| 109 | |||
| 107 | /* debug macros */ | 110 | /* debug macros */ |
| 108 | 111 | ||
| 109 | #ifdef CONFIG_IEEE80211_DEBUG | 112 | #ifdef CONFIG_IEEE80211_DEBUG |
| @@ -1075,6 +1078,7 @@ struct ieee80211_device { | |||
| 1075 | 1078 | ||
| 1076 | int (*handle_management) (struct net_device * dev, | 1079 | int (*handle_management) (struct net_device * dev, |
| 1077 | struct ieee80211_network * network, u16 type); | 1080 | struct ieee80211_network * network, u16 type); |
| 1081 | int (*is_qos_active) (struct net_device *dev, struct sk_buff *skb); | ||
| 1078 | 1082 | ||
| 1079 | /* Typical STA methods */ | 1083 | /* Typical STA methods */ |
| 1080 | int (*handle_auth) (struct net_device * dev, | 1084 | int (*handle_auth) (struct net_device * dev, |
| @@ -1243,7 +1247,8 @@ extern int ieee80211_set_encryption(struct ieee80211_device *ieee); | |||
| 1243 | extern int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev); | 1247 | extern int ieee80211_xmit(struct sk_buff *skb, struct net_device *dev); |
| 1244 | extern void ieee80211_txb_free(struct ieee80211_txb *); | 1248 | extern void ieee80211_txb_free(struct ieee80211_txb *); |
| 1245 | extern int ieee80211_tx_frame(struct ieee80211_device *ieee, | 1249 | extern int ieee80211_tx_frame(struct ieee80211_device *ieee, |
| 1246 | struct ieee80211_hdr *frame, int len); | 1250 | struct ieee80211_hdr *frame, int hdr_len, |
| 1251 | int total_len, int encrypt_mpdu); | ||
| 1247 | 1252 | ||
| 1248 | /* ieee80211_rx.c */ | 1253 | /* ieee80211_rx.c */ |
| 1249 | extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, | 1254 | extern int ieee80211_rx(struct ieee80211_device *ieee, struct sk_buff *skb, |
diff --git a/include/net/ieee80211softmac.h b/include/net/ieee80211softmac.h index 052ed596a4e4..7a483ab4022f 100644 --- a/include/net/ieee80211softmac.h +++ b/include/net/ieee80211softmac.h | |||
| @@ -86,6 +86,9 @@ 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; | ||
| 89 | 92 | ||
| 90 | /* some flags. | 93 | /* some flags. |
| 91 | * static_essid is valid if the essid is constant, | 94 | * static_essid is valid if the essid is constant, |
| @@ -132,23 +135,26 @@ enum { | |||
| 132 | struct ieee80211softmac_txrates { | 135 | struct ieee80211softmac_txrates { |
| 133 | /* The Bit-Rate to be used for multicast frames. */ | 136 | /* The Bit-Rate to be used for multicast frames. */ |
| 134 | u8 mcast_rate; | 137 | u8 mcast_rate; |
| 135 | /* The Bit-Rate to be used for multicast fallback | 138 | |
| 136 | * (If the device supports fallback and hardware-retry) | 139 | /* The Bit-Rate to be used for multicast management frames. */ |
| 137 | */ | 140 | u8 mgt_mcast_rate; |
| 138 | u8 mcast_fallback; | 141 | |
| 139 | /* The Bit-Rate to be used for any other (normal) data packet. */ | 142 | /* The Bit-Rate to be used for any other (normal) data packet. */ |
| 140 | u8 default_rate; | 143 | u8 default_rate; |
| 141 | /* The Bit-Rate to be used for default fallback | 144 | /* The Bit-Rate to be used for default fallback |
| 142 | * (If the device supports fallback and hardware-retry) | 145 | * (If the device supports fallback and hardware-retry) |
| 143 | */ | 146 | */ |
| 144 | u8 default_fallback; | 147 | u8 default_fallback; |
| 148 | |||
| 149 | /* This is the rate that the user asked for */ | ||
| 150 | u8 user_rate; | ||
| 145 | }; | 151 | }; |
| 146 | 152 | ||
| 147 | /* Bits for txrates_change callback. */ | 153 | /* Bits for txrates_change callback. */ |
| 148 | #define IEEE80211SOFTMAC_TXRATECHG_DEFAULT (1 << 0) /* default_rate */ | 154 | #define IEEE80211SOFTMAC_TXRATECHG_DEFAULT (1 << 0) /* default_rate */ |
| 149 | #define IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK (1 << 1) /* default_fallback */ | 155 | #define IEEE80211SOFTMAC_TXRATECHG_DEFAULT_FBACK (1 << 1) /* default_fallback */ |
| 150 | #define IEEE80211SOFTMAC_TXRATECHG_MCAST (1 << 2) /* mcast_rate */ | 156 | #define IEEE80211SOFTMAC_TXRATECHG_MCAST (1 << 2) /* mcast_rate */ |
| 151 | #define IEEE80211SOFTMAC_TXRATECHG_MCAST_FBACK (1 << 3) /* mcast_fallback */ | 157 | #define IEEE80211SOFTMAC_TXRATECHG_MGT_MCAST (1 << 3) /* mgt_mcast_rate */ |
| 152 | 158 | ||
| 153 | struct ieee80211softmac_device { | 159 | struct ieee80211softmac_device { |
| 154 | /* 802.11 structure for data stuff */ | 160 | /* 802.11 structure for data stuff */ |
| @@ -250,6 +256,28 @@ extern void ieee80211softmac_fragment_lost(struct net_device *dev, | |||
| 250 | * Note that the rates need to be sorted. */ | 256 | * Note that the rates need to be sorted. */ |
| 251 | extern void ieee80211softmac_set_rates(struct net_device *dev, u8 count, u8 *rates); | 257 | extern void ieee80211softmac_set_rates(struct net_device *dev, u8 count, u8 *rates); |
| 252 | 258 | ||
| 259 | /* Helper function which advises you the rate at which a frame should be | ||
| 260 | * transmitted at. */ | ||
| 261 | static inline u8 ieee80211softmac_suggest_txrate(struct ieee80211softmac_device *mac, | ||
| 262 | int is_multicast, | ||
| 263 | int is_mgt) | ||
| 264 | { | ||
| 265 | struct ieee80211softmac_txrates *txrates = &mac->txrates; | ||
| 266 | |||
| 267 | if (!mac->associated) | ||
| 268 | return txrates->mgt_mcast_rate; | ||
| 269 | |||
| 270 | /* We are associated, sending unicast frame */ | ||
| 271 | if (!is_multicast) | ||
| 272 | return txrates->default_rate; | ||
| 273 | |||
| 274 | /* We are associated, sending multicast frame */ | ||
| 275 | if (is_mgt) | ||
| 276 | return txrates->mgt_mcast_rate; | ||
| 277 | else | ||
| 278 | return txrates->mcast_rate; | ||
| 279 | } | ||
| 280 | |||
| 253 | /* Start the SoftMAC. Call this after you initialized the device | 281 | /* Start the SoftMAC. Call this after you initialized the device |
| 254 | * and it is ready to run. | 282 | * and it is ready to run. |
| 255 | */ | 283 | */ |
| @@ -282,7 +310,7 @@ extern void ieee80211softmac_stop(struct net_device *dev); | |||
| 282 | * - context set to the context data you want passed | 310 | * - context set to the context data you want passed |
| 283 | * The return value is 0, or an error. | 311 | * The return value is 0, or an error. |
| 284 | */ | 312 | */ |
| 285 | typedef void (*notify_function_ptr)(struct net_device *dev, void *context); | 313 | typedef void (*notify_function_ptr)(struct net_device *dev, int event_type, void *context); |
| 286 | 314 | ||
| 287 | #define ieee80211softmac_notify(dev, event, fun, context) ieee80211softmac_notify_gfp(dev, event, fun, context, GFP_KERNEL); | 315 | #define ieee80211softmac_notify(dev, event, fun, context) ieee80211softmac_notify_gfp(dev, event, fun, context, GFP_KERNEL); |
| 288 | #define ieee80211softmac_notify_atomic(dev, event, fun, context) ieee80211softmac_notify_gfp(dev, event, fun, context, GFP_ATOMIC); | 316 | #define ieee80211softmac_notify_atomic(dev, event, fun, context) ieee80211softmac_notify_gfp(dev, event, fun, context, GFP_ATOMIC); |
diff --git a/include/net/ieee80211softmac_wx.h b/include/net/ieee80211softmac_wx.h index 3e0be453ecea..4ee3ad57283f 100644 --- a/include/net/ieee80211softmac_wx.h +++ b/include/net/ieee80211softmac_wx.h | |||
| @@ -91,4 +91,9 @@ ieee80211softmac_wx_get_genie(struct net_device *dev, | |||
| 91 | struct iw_request_info *info, | 91 | struct iw_request_info *info, |
| 92 | union iwreq_data *wrqu, | 92 | union iwreq_data *wrqu, |
| 93 | char *extra); | 93 | char *extra); |
| 94 | extern int | ||
| 95 | ieee80211softmac_wx_set_mlme(struct net_device *dev, | ||
| 96 | struct iw_request_info *info, | ||
| 97 | union iwreq_data *wrqu, | ||
| 98 | char *extra); | ||
| 94 | #endif /* _IEEE80211SOFTMAC_WX */ | 99 | #endif /* _IEEE80211SOFTMAC_WX */ |
