]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - net/wireless/core.h
Merge tags 'for-linus' and 'for-next' of git://git.kernel.org/pub/scm/linux/kernel...
[karo-tx-linux.git] / net / wireless / core.h
index 58ca206982feafa7ddfe2c90d4483791e5057cf0..6e809325af3bf090f09fb8fef4356bada3a1beed 100644 (file)
@@ -74,10 +74,9 @@ struct cfg80211_registered_device {
        u32 bss_entries;
        struct cfg80211_scan_request *scan_req; /* protected by RTNL */
        struct sk_buff *scan_msg;
-       struct cfg80211_sched_scan_request __rcu *sched_scan_req;
+       struct list_head sched_scan_req_list;
        unsigned long suspend_at;
        struct work_struct scan_done_wk;
-       struct work_struct sched_scan_results_wk;
 
        struct genl_info *cur_cmd_info;
 
@@ -91,11 +90,15 @@ struct cfg80211_registered_device {
 
        struct cfg80211_coalesce *coalesce;
 
-       spinlock_t destroy_list_lock;
-       struct list_head destroy_list;
        struct work_struct destroy_work;
-
        struct work_struct sched_scan_stop_wk;
+       struct work_struct sched_scan_res_wk;
+
+       struct cfg80211_chan_def radar_chandef;
+       struct work_struct propagate_radar_detect_wk;
+
+       struct cfg80211_chan_def cac_done_chandef;
+       struct work_struct propagate_cac_done_wk;
 
        /* must be last because of the way we do wiphy_priv(),
         * and it should at least be aligned to NETDEV_ALIGN */
@@ -220,23 +223,8 @@ struct cfg80211_event {
        enum cfg80211_event_type type;
 
        union {
-               struct {
-                       u8 bssid[ETH_ALEN];
-                       const u8 *req_ie;
-                       const u8 *resp_ie;
-                       size_t req_ie_len;
-                       size_t resp_ie_len;
-                       struct cfg80211_bss *bss;
-                       int status; /* -1 = failed; 0..65535 = status code */
-                       enum nl80211_timeout_reason timeout_reason;
-               } cr;
-               struct {
-                       const u8 *req_ie;
-                       const u8 *resp_ie;
-                       size_t req_ie_len;
-                       size_t resp_ie_len;
-                       struct cfg80211_bss *bss;
-               } rm;
+               struct cfg80211_connect_resp_params cr;
+               struct cfg80211_roam_info rm;
                struct {
                        const u8 *ie;
                        size_t ie_len;
@@ -267,9 +255,11 @@ struct cfg80211_beacon_registration {
        u32 nlportid;
 };
 
-struct cfg80211_iface_destroy {
-       struct list_head list;
-       u32 nlportid;
+struct cfg80211_cqm_config {
+       u32 rssi_hyst;
+       s32 last_rssi_event_value;
+       int n_rssi_thresholds;
+       s32 rssi_thresholds[0];
 };
 
 void cfg80211_destroy_ifaces(struct cfg80211_registered_device *rdev);
@@ -385,21 +375,16 @@ int cfg80211_connect(struct cfg80211_registered_device *rdev,
                     struct cfg80211_connect_params *connect,
                     struct cfg80211_cached_keys *connkeys,
                     const u8 *prev_bssid);
-void __cfg80211_connect_result(struct net_device *dev, const u8 *bssid,
-                              const u8 *req_ie, size_t req_ie_len,
-                              const u8 *resp_ie, size_t resp_ie_len,
-                              int status, bool wextev,
-                              struct cfg80211_bss *bss,
-                              enum nl80211_timeout_reason timeout_reason);
+void __cfg80211_connect_result(struct net_device *dev,
+                              struct cfg80211_connect_resp_params *params,
+                              bool wextev);
 void __cfg80211_disconnected(struct net_device *dev, const u8 *ie,
                             size_t ie_len, u16 reason, bool from_ap);
 int cfg80211_disconnect(struct cfg80211_registered_device *rdev,
                        struct net_device *dev, u16 reason,
                        bool wextev);
 void __cfg80211_roamed(struct wireless_dev *wdev,
-                      struct cfg80211_bss *bss,
-                      const u8 *req_ie, size_t req_ie_len,
-                      const u8 *resp_ie, size_t resp_ie_len);
+                      struct cfg80211_roam_info *info);
 int cfg80211_mgd_wext_connect(struct cfg80211_registered_device *rdev,
                              struct wireless_dev *wdev);
 void cfg80211_autodisconnect_wk(struct work_struct *work);
@@ -423,13 +408,20 @@ int cfg80211_validate_key_settings(struct cfg80211_registered_device *rdev,
 void __cfg80211_scan_done(struct work_struct *wk);
 void ___cfg80211_scan_done(struct cfg80211_registered_device *rdev,
                           bool send_message);
-void __cfg80211_sched_scan_results(struct work_struct *wk);
+void cfg80211_add_sched_scan_req(struct cfg80211_registered_device *rdev,
+                                struct cfg80211_sched_scan_request *req);
+int cfg80211_sched_scan_req_possible(struct cfg80211_registered_device *rdev,
+                                    bool want_multi);
+void cfg80211_sched_scan_results_wk(struct work_struct *work);
+int cfg80211_stop_sched_scan_req(struct cfg80211_registered_device *rdev,
+                                struct cfg80211_sched_scan_request *req,
+                                bool driver_initiated);
 int __cfg80211_stop_sched_scan(struct cfg80211_registered_device *rdev,
-                              bool driver_initiated);
+                              u64 reqid, bool driver_initiated);
 void cfg80211_upload_connect_keys(struct wireless_dev *wdev);
 int cfg80211_change_iface(struct cfg80211_registered_device *rdev,
                          struct net_device *dev, enum nl80211_iftype ntype,
-                         u32 *flags, struct vif_params *params);
+                         struct vif_params *params);
 void cfg80211_process_rdev_events(struct cfg80211_registered_device *rdev);
 void cfg80211_process_wdev_events(struct wireless_dev *wdev);
 
@@ -459,6 +451,16 @@ unsigned int
 cfg80211_chandef_dfs_cac_time(struct wiphy *wiphy,
                              const struct cfg80211_chan_def *chandef);
 
+void cfg80211_sched_dfs_chan_update(struct cfg80211_registered_device *rdev);
+
+bool cfg80211_any_wiphy_oper_chan(struct wiphy *wiphy,
+                                 struct ieee80211_channel *chan);
+
+bool cfg80211_beaconing_iface_active(struct wireless_dev *wdev);
+
+bool cfg80211_is_sub_chan(struct cfg80211_chan_def *chandef,
+                         struct ieee80211_channel *chan);
+
 static inline unsigned int elapsed_jiffies_msecs(unsigned long start)
 {
        unsigned long end = jiffies;
@@ -512,4 +514,6 @@ void cfg80211_stop_nan(struct cfg80211_registered_device *rdev,
 #define CFG80211_DEV_WARN_ON(cond)     ({bool __r = (cond); __r; })
 #endif
 
+void cfg80211_cqm_config_free(struct wireless_dev *wdev);
+
 #endif /* __NET_WIRELESS_CORE_H */