]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/net/ieee80211.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/bunk/trivial
[linux-2.6-omap-h63xx.git] / include / net / ieee80211.h
index 4a1340b8341ce1c24f601f085aecf6b97e58cd14..cde2f4f4f501775d968a343d75ec8a2b0859c7e5 100644 (file)
@@ -29,7 +29,7 @@
 #include <linux/kernel.h>      /* ARRAY_SIZE */
 #include <linux/wireless.h>
 
-#define IEEE80211_VERSION "git-1.1.5"
+#define IEEE80211_VERSION "git-1.1.7"
 
 #define IEEE80211_DATA_LEN             2304
 /* Maximum size for the MA-UNITDATA primitive, 802.11 standard section
@@ -603,17 +603,21 @@ struct ieee80211_auth {
        __le16 algorithm;
        __le16 transaction;
        __le16 status;
+       /* challenge */
        struct ieee80211_info_element info_element[0];
 } __attribute__ ((packed));
 
 struct ieee80211_disassoc {
        struct ieee80211_hdr_3addr header;
-       __le16 reason_code;
-       struct ieee80211_info_element info_element[0];
+       __le16 reason;
 } __attribute__ ((packed));
 
+/* Alias deauth for disassoc */
+#define ieee80211_deauth ieee80211_disassoc
+
 struct ieee80211_probe_request {
        struct ieee80211_hdr_3addr header;
+       /* SSID, supported rates */
        struct ieee80211_info_element info_element[0];
 } __attribute__ ((packed));
 
@@ -622,6 +626,8 @@ struct ieee80211_probe_response {
        u32 time_stamp[2];
        __le16 beacon_interval;
        __le16 capability;
+       /* SSID, supported rates, FH params, DS params,
+        * CF params, IBSS params, TIM (if beacon), RSN */
        struct ieee80211_info_element info_element[0];
 } __attribute__ ((packed));
 
@@ -632,6 +638,7 @@ struct ieee80211_assoc_request {
        struct ieee80211_hdr_3addr header;
        __le16 capability;
        __le16 listen_interval;
+       /* SSID, supported rates, RSN */
        struct ieee80211_info_element info_element[0];
 } __attribute__ ((packed));
 
@@ -648,7 +655,8 @@ struct ieee80211_assoc_response {
        __le16 capability;
        __le16 status;
        __le16 aid;
-       struct ieee80211_info_element info_element[0];  /* supported rates */
+       /* supported rates */
+       struct ieee80211_info_element info_element[0];
 } __attribute__ ((packed));
 
 struct ieee80211_txb {
@@ -808,7 +816,7 @@ enum {
 };
 
 struct ieee80211_channel {
-       u16 freq;
+       u32 freq;
        u8 channel;
        u8 flags;
        u8 max_power;
@@ -862,12 +870,12 @@ struct ieee80211_device {
        int host_mc_decrypt;
 
        int host_open_frag;
+       int host_build_iv;
        int ieee802_1x;         /* is IEEE 802.1X used */
 
        /* WPA data */
        int wpa_enabled;
        int drop_unencrypted;
-       int tkip_countermeasures;
        int privacy_invoked;
        size_t wpa_ie_len;
        u8 *wpa_ie;
@@ -914,6 +922,8 @@ struct ieee80211_device {
        /* Typical STA methods */
        int (*handle_auth) (struct net_device * dev,
                            struct ieee80211_auth * auth);
+       int (*handle_deauth) (struct net_device * dev,
+                             struct ieee80211_auth * auth);
        int (*handle_disassoc) (struct net_device * dev,
                                struct ieee80211_disassoc * assoc);
        int (*handle_beacon) (struct net_device * dev,
@@ -1032,7 +1042,35 @@ static inline u8 *ieee80211_get_payload(struct ieee80211_hdr *hdr)
        case IEEE80211_4ADDR_LEN:
                return ((struct ieee80211_hdr_4addr *)hdr)->payload;
        }
+       return NULL;
+}
+
+static inline int ieee80211_is_ofdm_rate(u8 rate)
+{
+       switch (rate & ~IEEE80211_BASIC_RATE_MASK) {
+       case IEEE80211_OFDM_RATE_6MB:
+       case IEEE80211_OFDM_RATE_9MB:
+       case IEEE80211_OFDM_RATE_12MB:
+       case IEEE80211_OFDM_RATE_18MB:
+       case IEEE80211_OFDM_RATE_24MB:
+       case IEEE80211_OFDM_RATE_36MB:
+       case IEEE80211_OFDM_RATE_48MB:
+       case IEEE80211_OFDM_RATE_54MB:
+               return 1;
+       }
+       return 0;
+}
 
+static inline int ieee80211_is_cck_rate(u8 rate)
+{
+       switch (rate & ~IEEE80211_BASIC_RATE_MASK) {
+       case IEEE80211_CCK_RATE_1MB:
+       case IEEE80211_CCK_RATE_2MB:
+       case IEEE80211_CCK_RATE_5MB:
+       case IEEE80211_CCK_RATE_11MB:
+               return 1;
+       }
+       return 0;
 }
 
 /* ieee80211.c */