]> pilppa.org Git - linux-2.6-omap-h63xx.git/blobdiff - include/net/cfg80211.h
Linux 2.6.28-rc2
[linux-2.6-omap-h63xx.git] / include / net / cfg80211.h
index e00750836ba5f8d2debf434015fa9869d19bab28..0e85ec39b6380de904efe8c2ac0c89b3cb6f12e0 100644 (file)
@@ -152,6 +152,7 @@ struct station_parameters {
        u16 aid;
        u8 supported_rates_len;
        u8 plink_action;
+       struct ieee80211_ht_cap *ht_capa;
 };
 
 /**
@@ -268,6 +269,83 @@ struct mpath_info {
        u8 flags;
 };
 
+/**
+ * struct bss_parameters - BSS parameters
+ *
+ * Used to change BSS parameters (mainly for AP mode).
+ *
+ * @use_cts_prot: Whether to use CTS protection
+ *     (0 = no, 1 = yes, -1 = do not change)
+ * @use_short_preamble: Whether the use of short preambles is allowed
+ *     (0 = no, 1 = yes, -1 = do not change)
+ * @use_short_slot_time: Whether the use of short slot time is allowed
+ *     (0 = no, 1 = yes, -1 = do not change)
+ */
+struct bss_parameters {
+       int use_cts_prot;
+       int use_short_preamble;
+       int use_short_slot_time;
+};
+
+/**
+ * enum reg_set_by - Indicates who is trying to set the regulatory domain
+ * @REGDOM_SET_BY_INIT: regulatory domain was set by initialization. We will be
+ *     using a static world regulatory domain by default.
+ * @REGDOM_SET_BY_CORE: Core queried CRDA for a dynamic world regulatory domain.
+ * @REGDOM_SET_BY_USER: User asked the wireless core to set the
+ *     regulatory domain.
+ * @REGDOM_SET_BY_DRIVER: a wireless drivers has hinted to the wireless core
+ *     it thinks its knows the regulatory domain we should be in.
+ * @REGDOM_SET_BY_COUNTRY_IE: the wireless core has received an 802.11 country
+ *     information element with regulatory information it thinks we
+ *     should consider.
+ */
+enum reg_set_by {
+       REGDOM_SET_BY_INIT,
+       REGDOM_SET_BY_CORE,
+       REGDOM_SET_BY_USER,
+       REGDOM_SET_BY_DRIVER,
+       REGDOM_SET_BY_COUNTRY_IE,
+};
+
+struct ieee80211_freq_range {
+       u32 start_freq_khz;
+       u32 end_freq_khz;
+       u32 max_bandwidth_khz;
+};
+
+struct ieee80211_power_rule {
+       u32 max_antenna_gain;
+       u32 max_eirp;
+};
+
+struct ieee80211_reg_rule {
+       struct ieee80211_freq_range freq_range;
+       struct ieee80211_power_rule power_rule;
+       u32 flags;
+};
+
+struct ieee80211_regdomain {
+       u32 n_reg_rules;
+       char alpha2[2];
+       struct ieee80211_reg_rule reg_rules[];
+};
+
+#define MHZ_TO_KHZ(freq) (freq * 1000)
+#define KHZ_TO_MHZ(freq) (freq / 1000)
+#define DBI_TO_MBI(gain) (gain * 100)
+#define MBI_TO_DBI(gain) (gain / 100)
+#define DBM_TO_MBM(gain) (gain * 100)
+#define MBM_TO_DBM(gain) (gain / 100)
+
+#define REG_RULE(start, end, bw, gain, eirp, reg_flags) { \
+       .freq_range.start_freq_khz = (start) * 1000, \
+       .freq_range.end_freq_khz = (end) * 1000, \
+       .freq_range.max_bandwidth_khz = (bw) * 1000, \
+       .power_rule.max_antenna_gain = (gain) * 100, \
+       .power_rule.max_eirp = (eirp) * 100, \
+       .flags = reg_flags, \
+       }
 
 /* from net/wireless.h */
 struct wiphy;
@@ -285,11 +363,13 @@ struct wiphy;
  * wireless extensions but this is subject to reevaluation as soon as this
  * code is used more widely and we have a first user without wext.
  *
- * @add_virtual_intf: create a new virtual interface with the given name
+ * @add_virtual_intf: create a new virtual interface with the given name,
+ *     must set the struct wireless_dev's iftype.
  *
  * @del_virtual_intf: remove the virtual interface determined by ifindex.
  *
- * @change_virtual_intf: change type of virtual interface
+ * @change_virtual_intf: change type/configuration of virtual interface,
+ *     keep the struct wireless_dev's iftype updated.
  *
  * @add_key: add a key with the given parameters. @mac_addr will be %NULL
  *     when adding a group key.
@@ -318,6 +398,8 @@ struct wiphy;
  * @change_station: Modify a given station.
  *
  * @set_mesh_cfg: set mesh parameters (by now, just mesh id)
+ *
+ * @change_bss: Modify parameters for a given BSS.
  */
 struct cfg80211_ops {
        int     (*add_virtual_intf)(struct wiphy *wiphy, char *name,
@@ -370,6 +452,9 @@ struct cfg80211_ops {
        int     (*dump_mpath)(struct wiphy *wiphy, struct net_device *dev,
                               int idx, u8 *dst, u8 *next_hop,
                               struct mpath_info *pinfo);
+
+       int     (*change_bss)(struct wiphy *wiphy, struct net_device *dev,
+                             struct bss_parameters *params);
 };
 
 #endif /* __NET_CFG80211_H */