[PATCH] mac80211: fix TKIP IV update
[deliverable/linux.git] / net / mac80211 / ieee80211_i.h
index 28c5d514e6d52a94017ac37bdb57c4a9b15f7668..32d19bbf522c5e7f9040219b98d0b1168bc1816f 100644 (file)
@@ -153,6 +153,8 @@ struct ieee80211_txrx_data {
                        int sent_ps_buffered;
                        int queue;
                        int load;
+                       u32 tkip_iv32;
+                       u16 tkip_iv16;
                } rx;
        } u;
 };
@@ -191,6 +193,8 @@ struct ieee80211_if_ap {
        u8 *beacon_head, *beacon_tail;
        int beacon_head_len, beacon_tail_len;
 
+       struct list_head vlans;
+
        u8 ssid[IEEE80211_MAX_SSID_LEN];
        size_t ssid_len;
        u8 *generic_elem;
@@ -214,7 +218,8 @@ struct ieee80211_if_wds {
 };
 
 struct ieee80211_if_vlan {
-       u8 id;
+       struct ieee80211_sub_if_data *ap;
+       struct list_head list;
 };
 
 /* flags used in struct ieee80211_if_sta.flags */
@@ -277,26 +282,28 @@ struct ieee80211_if_sta {
 };
 
 
+/* flags used in struct ieee80211_sub_if_data.flags */
+#define IEEE80211_SDATA_ALLMULTI       BIT(0)
+#define IEEE80211_SDATA_PROMISC                BIT(1)
+#define IEEE80211_SDATA_USE_PROTECTION BIT(2) /* CTS protect ERP frames */
+/* use short preamble with IEEE 802.11b: this flag is set when the AP or beacon
+ * generator reports that there are no present stations that cannot support short
+ * preambles */
+#define IEEE80211_SDATA_SHORT_PREAMBLE BIT(3)
 struct ieee80211_sub_if_data {
        struct list_head list;
-       unsigned int type;
+       enum ieee80211_if_types type;
 
        struct wireless_dev wdev;
 
+       /* keys */
+       struct list_head key_list;
+
        struct net_device *dev;
        struct ieee80211_local *local;
 
-       int mc_count;
-       unsigned int allmulti:1;
-       unsigned int promisc:1;
-       unsigned int use_protection:1; /* CTS protect ERP frames */
-
-       /* use short preamble with IEEE 802.11b: this flag is set when the AP
-        * or beacon generator reports that there are no present stations that
-        * cannot support short preambles */
-       unsigned int short_preamble:1;
+       unsigned int flags;
 
-       struct net_device_stats stats;
        int drop_unencrypted;
        int eapol; /* 0 = process EAPOL frames as normal data frames,
                    * 1 = send EAPOL frames through wlan#ap to hostapd
@@ -375,7 +382,6 @@ struct ieee80211_sub_if_data {
                        struct dentry *drop_unencrypted;
                        struct dentry *eapol;
                        struct dentry *ieee8021_x;
-                       struct dentry *vlan_id;
                } vlan;
                struct {
                        struct dentry *mode;
@@ -407,6 +413,7 @@ struct ieee80211_local {
        struct net_device *apdev; /* wlan#ap - management frames (hostapd) */
        int open_count;
        int monitors;
+       unsigned int filter_flags; /* FIF_* */
        struct iw_statistics wstats;
        u8 wstats_flags;
        int tx_headroom; /* required headroom for hardware/radiotap */
@@ -461,9 +468,6 @@ struct ieee80211_local {
        struct crypto_blkcipher *wep_tx_tfm;
        struct crypto_blkcipher *wep_rx_tfm;
        u32 wep_iv;
-       int key_tx_rx_threshold; /* number of times any key can be used in TX
-                                 * or RX before generating a rekey
-                                 * notification; 0 = notification disabled. */
 
        int bridge_packets; /* bridge packets between associated stations and
                             * deliver multicast frames both back to wireless
@@ -473,9 +477,8 @@ struct ieee80211_local {
        ieee80211_rx_handler *rx_handlers;
        ieee80211_tx_handler *tx_handlers;
 
-       rwlock_t sub_if_lock; /* Protects sub_if_list. Cannot be taken under
-                              * sta_bss_lock or sta_lock. */
-       struct list_head sub_if_list;
+       struct list_head interfaces;
+
        int sta_scanning;
        int scan_channel_idx;
        enum { SCAN_SET_CHANNEL, SCAN_SEND_PROBE } scan_state;
@@ -549,9 +552,6 @@ struct ieee80211_local {
 #endif /* CONFIG_MAC80211_DEBUG_COUNTERS */
 
 
-       int default_wep_only; /* only default WEP keys are used with this
-                              * interface; this is used to decide when hwaccel
-                              * can be used with default keys */
        int total_ps_buffered; /* total number of all buffered unicast and
                                * multicast packets for power saving stations
                                */
@@ -572,7 +572,6 @@ struct ieee80211_local {
                struct dentry *antenna_sel_tx;
                struct dentry *antenna_sel_rx;
                struct dentry *bridge_packets;
-               struct dentry *key_tx_rx_threshold;
                struct dentry *rts_threshold;
                struct dentry *fragmentation_threshold;
                struct dentry *short_retry_limit;
@@ -721,18 +720,12 @@ void ieee80211_tx_set_iswep(struct ieee80211_txrx_data *tx);
 int ieee80211_if_update_wds(struct net_device *dev, u8 *remote_addr);
 void ieee80211_if_setup(struct net_device *dev);
 void ieee80211_if_mgmt_setup(struct net_device *dev);
-struct net_device_stats *ieee80211_dev_stats(struct net_device *dev);
 struct ieee80211_rate *ieee80211_get_rate(struct ieee80211_local *local,
                                          int phymode, int hwrate);
-void ieee80211_key_threshold_notify(struct net_device *dev,
-                                   struct ieee80211_key *key,
-                                   struct sta_info *sta);
 
 /* ieee80211_ioctl.c */
 extern const struct iw_handler_def ieee80211_iw_handler_def;
 
-void ieee80211_update_default_wep_only(struct ieee80211_local *local);
-
 
 /* Least common multiple of the used rates (in 100 kbps). This is used to
  * calculate rate_inv values for each rate so that only integers are needed. */
@@ -813,14 +806,6 @@ int ieee80211_monitor_start_xmit(struct sk_buff *skb, struct net_device *dev);
 int ieee80211_subif_start_xmit(struct sk_buff *skb, struct net_device *dev);
 int ieee80211_mgmt_start_xmit(struct sk_buff *skb, struct net_device *dev);
 
-/* key handling */
-struct ieee80211_key_conf *
-ieee80211_key_data2conf(struct ieee80211_local *local,
-                       const struct ieee80211_key *data);
-struct ieee80211_key *ieee80211_key_alloc(struct ieee80211_sub_if_data *sdata,
-                                         int idx, size_t key_len, gfp_t flags);
-void ieee80211_key_free(struct ieee80211_key *key);
-
 /* utility functions/constants */
 extern void *mac80211_wiphy_privid; /* for wiphy privid */
 extern const unsigned char rfc1042_header[6];
This page took 0.025475 seconds and 5 git commands to generate.