nfsd: move most of nfsfh.h to fs/nfsd
[safe/jmp/linux-2.6] / include / net / cfg80211.h
index 3348c16..3d874c6 100644 (file)
@@ -80,7 +80,6 @@ enum ieee80211_channel_flags {
  * with cfg80211.
  *
  * @center_freq: center frequency in MHz
- * @max_bandwidth: maximum allowed bandwidth for this channel, in MHz
  * @hw_value: hardware-specific value for the channel
  * @flags: channel flags from &enum ieee80211_channel_flags.
  * @orig_flags: channel flags at registration time, used by regulatory
@@ -97,7 +96,6 @@ enum ieee80211_channel_flags {
 struct ieee80211_channel {
        enum ieee80211_band band;
        u16 center_freq;
-       u8 max_bandwidth;
        u16 hw_value;
        u32 flags;
        int max_antenna_gain;
@@ -372,6 +370,10 @@ struct rate_info {
  * @txrate: current unicast bitrate to this station
  * @rx_packets: packets received from this station
  * @tx_packets: packets transmitted to this station
+ * @generation: generation number for nl80211 dumps.
+ *     This number should increase every time the list of stations
+ *     changes, i.e. when a station is added or removed, so that
+ *     userspace can tell whether it got a consistent snapshot.
  */
 struct station_info {
        u32 filled;
@@ -385,6 +387,8 @@ struct station_info {
        struct rate_info txrate;
        u32 rx_packets;
        u32 tx_packets;
+
+       int generation;
 };
 
 /**
@@ -444,6 +448,10 @@ enum mpath_info_flags {
  * @flags: mesh path flags
  * @discovery_timeout: total mesh path discovery timeout, in msecs
  * @discovery_retries: mesh path discovery retries
+ * @generation: generation number for nl80211 dumps.
+ *     This number should increase every time the list of mesh paths
+ *     changes, i.e. when a station is added or removed, so that
+ *     userspace can tell whether it got a consistent snapshot.
  */
 struct mpath_info {
        u32 filled;
@@ -454,6 +462,8 @@ struct mpath_info {
        u32 discovery_timeout;
        u8 discovery_retries;
        u8 flags;
+
+       int generation;
 };
 
 /**
@@ -547,7 +557,6 @@ struct cfg80211_ssid {
 struct cfg80211_scan_request {
        struct cfg80211_ssid *ssids;
        int n_ssids;
-       struct ieee80211_channel **channels;
        u32 n_channels;
        const u8 *ie;
        size_t ie_len;
@@ -556,6 +565,9 @@ struct cfg80211_scan_request {
        struct wiphy *wiphy;
        struct net_device *dev;
        bool aborted;
+
+       /* keep last */
+       struct ieee80211_channel *channels[0];
 };
 
 /**
@@ -1076,6 +1088,10 @@ struct cfg80211_ops {
  *     channels at a later time. This can be used for devices which do not
  *     have calibration information gauranteed for frequencies or settings
  *     outside of its regulatory domain.
+ * @disable_beacon_hints: enable this if your driver needs to ensure that
+ *     passive scan flags and beaconing flags may not be lifted by cfg80211
+ *     due to regulatory beacon hints. For more information on beacon
+ *     hints read the documenation for regulatory_hint_found_beacon()
  * @reg_notifier: the driver's regulatory notification callback
  * @regd: the driver's regulatory domain, if one was requested via
  *     the regulatory_hint() API. This can be used by the driver
@@ -1092,6 +1108,9 @@ struct cfg80211_ops {
  * @net: the network namespace this wiphy currently lives in
  * @netnsok: if set to false, do not allow changing the netns of this
  *     wiphy at all
+ * @ps_default: default for powersave, will be set depending on the
+ *     kernel's default on wiphy_new(), but can be changed by the
+ *     driver if it has a good reason to override the default
  */
 struct wiphy {
        /* assign these fields before you register the wiphy */
@@ -1104,8 +1123,10 @@ struct wiphy {
 
        bool custom_regulatory;
        bool strict_regulatory;
+       bool disable_beacon_hints;
 
        bool netnsok;
+       bool ps_default;
 
        enum cfg80211_signal_type signal_type;
 
@@ -1304,6 +1325,8 @@ struct wireless_dev {
 
        struct mutex mtx;
 
+       struct work_struct cleanup_work;
+
        /* currently used for IBSS and SME - might be rearranged later */
        u8 ssid[IEEE80211_MAX_SSID_LEN];
        u8 ssid_len;
@@ -1330,10 +1353,10 @@ struct wireless_dev {
                struct cfg80211_cached_keys *keys;
                u8 *ie;
                size_t ie_len;
-               u8 bssid[ETH_ALEN];
+               u8 bssid[ETH_ALEN], prev_bssid[ETH_ALEN];
                u8 ssid[IEEE80211_MAX_SSID_LEN];
                s8 default_key, default_mgmt_key;
-               bool ps;
+               bool ps, prev_bssid_valid;
                int ps_timeout;
        } wext;
 #endif
@@ -1514,20 +1537,6 @@ unsigned int cfg80211_classify8021d(struct sk_buff *skb);
 extern int regulatory_hint(struct wiphy *wiphy, const char *alpha2);
 
 /**
- * regulatory_hint_11d - hints a country IE as a regulatory domain
- * @wiphy: the wireless device giving the hint (used only for reporting
- *     conflicts)
- * @country_ie: pointer to the country IE
- * @country_ie_len: length of the country IE
- *
- * We will intersect the rd with the what CRDA tells us should apply
- * for the alpha2 this country IE belongs to, this prevents APs from
- * sending us incorrect or outdated information against a country.
- */
-extern void regulatory_hint_11d(struct wiphy *wiphy,
-                               u8 *country_ie,
-                               u8 country_ie_len);
-/**
  * wiphy_apply_custom_regulatory - apply a custom driver regulatory domain
  * @wiphy: the wireless device we want to process the regulatory domain on
  * @regd: the custom regulatory domain to use for this wiphy
@@ -1595,19 +1604,6 @@ int cfg80211_wext_siwmlme(struct net_device *dev,
 int cfg80211_wext_giwrange(struct net_device *dev,
                           struct iw_request_info *info,
                           struct iw_point *data, char *extra);
-int cfg80211_ibss_wext_siwessid(struct net_device *dev,
-                               struct iw_request_info *info,
-                               struct iw_point *data, char *ssid);
-int cfg80211_ibss_wext_giwessid(struct net_device *dev,
-                               struct iw_request_info *info,
-                               struct iw_point *data, char *ssid);
-
-int cfg80211_mgd_wext_siwessid(struct net_device *dev,
-                              struct iw_request_info *info,
-                              struct iw_point *data, char *ssid);
-int cfg80211_mgd_wext_giwessid(struct net_device *dev,
-                              struct iw_request_info *info,
-                              struct iw_point *data, char *ssid);
 int cfg80211_wext_siwgenie(struct net_device *dev,
                           struct iw_request_info *info,
                           struct iw_point *data, char *extra);
@@ -1624,7 +1620,12 @@ int cfg80211_wext_siwfreq(struct net_device *dev,
 int cfg80211_wext_giwfreq(struct net_device *dev,
                          struct iw_request_info *info,
                          struct iw_freq *freq, char *extra);
-
+int cfg80211_wext_siwessid(struct net_device *dev,
+                          struct iw_request_info *info,
+                          struct iw_point *data, char *ssid);
+int cfg80211_wext_giwessid(struct net_device *dev,
+                          struct iw_request_info *info,
+                          struct iw_point *data, char *ssid);
 int cfg80211_wext_siwrate(struct net_device *dev,
                          struct iw_request_info *info,
                          struct iw_param *rate, char *extra);