diff options
author | Johannes Berg <johannes.berg@intel.com> | 2012-11-08 15:25:48 -0500 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2012-11-26 06:42:58 -0500 |
commit | 683b6d3b31a51956ea540df00abb0b78894924c1 (patch) | |
tree | 558e0f316b56368ab259755cb4eeaeb40331853d /include/net/cfg80211.h | |
parent | fe4b31810c06cc6518fb193efb9b3c3289b55832 (diff) |
cfg80211: pass a channel definition struct
Instead of passing a channel pointer and channel type
to all functions and driver methods, pass a new channel
definition struct. Right now, this struct contains just
the control channel and channel type, but for VHT this
will change.
Also, add a small inline cfg80211_get_chandef_type() so
that drivers don't need to use the _type field of the
new structure all the time, which will change.
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r-- | include/net/cfg80211.h | 65 |
1 files changed, 35 insertions, 30 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index 1effe0682d28..86f777af79e8 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -306,6 +306,23 @@ struct key_params { | |||
306 | }; | 306 | }; |
307 | 307 | ||
308 | /** | 308 | /** |
309 | * struct cfg80211_chan_def - channel definition | ||
310 | * @chan: the (control) channel | ||
311 | * @_type: the channel type, don't use this field, | ||
312 | * use cfg80211_get_chandef_type() if needed. | ||
313 | */ | ||
314 | struct cfg80211_chan_def { | ||
315 | struct ieee80211_channel *chan; | ||
316 | enum nl80211_channel_type _type; | ||
317 | }; | ||
318 | |||
319 | static inline enum nl80211_channel_type | ||
320 | cfg80211_get_chandef_type(const struct cfg80211_chan_def *chandef) | ||
321 | { | ||
322 | return chandef->_type; | ||
323 | } | ||
324 | |||
325 | /** | ||
309 | * enum survey_info_flags - survey information flags | 326 | * enum survey_info_flags - survey information flags |
310 | * | 327 | * |
311 | * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in | 328 | * @SURVEY_INFO_NOISE_DBM: noise (in dBm) was filled in |
@@ -426,8 +443,7 @@ struct cfg80211_beacon_data { | |||
426 | * | 443 | * |
427 | * Used to configure an AP interface. | 444 | * Used to configure an AP interface. |
428 | * | 445 | * |
429 | * @channel: the channel to start the AP on | 446 | * @chandef: defines the channel to use |
430 | * @channel_type: the channel type to use | ||
431 | * @beacon: beacon data | 447 | * @beacon: beacon data |
432 | * @beacon_interval: beacon interval | 448 | * @beacon_interval: beacon interval |
433 | * @dtim_period: DTIM period | 449 | * @dtim_period: DTIM period |
@@ -441,8 +457,7 @@ struct cfg80211_beacon_data { | |||
441 | * @inactivity_timeout: time in seconds to determine station's inactivity. | 457 | * @inactivity_timeout: time in seconds to determine station's inactivity. |
442 | */ | 458 | */ |
443 | struct cfg80211_ap_settings { | 459 | struct cfg80211_ap_settings { |
444 | struct ieee80211_channel *channel; | 460 | struct cfg80211_chan_def chandef; |
445 | enum nl80211_channel_type channel_type; | ||
446 | 461 | ||
447 | struct cfg80211_beacon_data beacon; | 462 | struct cfg80211_beacon_data beacon; |
448 | 463 | ||
@@ -909,8 +924,7 @@ struct mesh_config { | |||
909 | 924 | ||
910 | /** | 925 | /** |
911 | * struct mesh_setup - 802.11s mesh setup configuration | 926 | * struct mesh_setup - 802.11s mesh setup configuration |
912 | * @channel: the channel to start the mesh network on | 927 | * @chandef: defines the channel to use |
913 | * @channel_type: the channel type to use | ||
914 | * @mesh_id: the mesh ID | 928 | * @mesh_id: the mesh ID |
915 | * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes | 929 | * @mesh_id_len: length of the mesh ID, at least 1 and at most 32 bytes |
916 | * @sync_method: which synchronization method to use | 930 | * @sync_method: which synchronization method to use |
@@ -925,8 +939,7 @@ struct mesh_config { | |||
925 | * These parameters are fixed when the mesh is created. | 939 | * These parameters are fixed when the mesh is created. |
926 | */ | 940 | */ |
927 | struct mesh_setup { | 941 | struct mesh_setup { |
928 | struct ieee80211_channel *channel; | 942 | struct cfg80211_chan_def chandef; |
929 | enum nl80211_channel_type channel_type; | ||
930 | const u8 *mesh_id; | 943 | const u8 *mesh_id; |
931 | u8 mesh_id_len; | 944 | u8 mesh_id_len; |
932 | u8 sync_method; | 945 | u8 sync_method; |
@@ -1266,8 +1279,7 @@ struct cfg80211_disassoc_request { | |||
1266 | * @ssid_len: The length of the SSID, will always be non-zero. | 1279 | * @ssid_len: The length of the SSID, will always be non-zero. |
1267 | * @bssid: Fixed BSSID requested, maybe be %NULL, if set do not | 1280 | * @bssid: Fixed BSSID requested, maybe be %NULL, if set do not |
1268 | * search for IBSSs with a different BSSID. | 1281 | * search for IBSSs with a different BSSID. |
1269 | * @channel: The channel to use if no IBSS can be found to join. | 1282 | * @chandef: defines the channel to use if no other IBSS to join can be found |
1270 | * @channel_type: channel type (HT mode) | ||
1271 | * @channel_fixed: The channel should be fixed -- do not search for | 1283 | * @channel_fixed: The channel should be fixed -- do not search for |
1272 | * IBSSs to join on other channels. | 1284 | * IBSSs to join on other channels. |
1273 | * @ie: information element(s) to include in the beacon | 1285 | * @ie: information element(s) to include in the beacon |
@@ -1285,8 +1297,7 @@ struct cfg80211_disassoc_request { | |||
1285 | struct cfg80211_ibss_params { | 1297 | struct cfg80211_ibss_params { |
1286 | u8 *ssid; | 1298 | u8 *ssid; |
1287 | u8 *bssid; | 1299 | u8 *bssid; |
1288 | struct ieee80211_channel *channel; | 1300 | struct cfg80211_chan_def chandef; |
1289 | enum nl80211_channel_type channel_type; | ||
1290 | u8 *ie; | 1301 | u8 *ie; |
1291 | u8 ssid_len, ie_len; | 1302 | u8 ssid_len, ie_len; |
1292 | u16 beacon_interval; | 1303 | u16 beacon_interval; |
@@ -1728,8 +1739,7 @@ struct cfg80211_ops { | |||
1728 | struct ieee80211_channel *chan); | 1739 | struct ieee80211_channel *chan); |
1729 | 1740 | ||
1730 | int (*set_monitor_channel)(struct wiphy *wiphy, | 1741 | int (*set_monitor_channel)(struct wiphy *wiphy, |
1731 | struct ieee80211_channel *chan, | 1742 | struct cfg80211_chan_def *chandef); |
1732 | enum nl80211_channel_type channel_type); | ||
1733 | 1743 | ||
1734 | int (*scan)(struct wiphy *wiphy, | 1744 | int (*scan)(struct wiphy *wiphy, |
1735 | struct cfg80211_scan_request *request); | 1745 | struct cfg80211_scan_request *request); |
@@ -1855,10 +1865,9 @@ struct cfg80211_ops { | |||
1855 | void (*get_et_strings)(struct wiphy *wiphy, struct net_device *dev, | 1865 | void (*get_et_strings)(struct wiphy *wiphy, struct net_device *dev, |
1856 | u32 sset, u8 *data); | 1866 | u32 sset, u8 *data); |
1857 | 1867 | ||
1858 | struct ieee80211_channel * | 1868 | int (*get_channel)(struct wiphy *wiphy, |
1859 | (*get_channel)(struct wiphy *wiphy, | ||
1860 | struct wireless_dev *wdev, | 1869 | struct wireless_dev *wdev, |
1861 | enum nl80211_channel_type *type); | 1870 | struct cfg80211_chan_def *chandef); |
1862 | 1871 | ||
1863 | int (*start_p2p_device)(struct wiphy *wiphy, | 1872 | int (*start_p2p_device)(struct wiphy *wiphy, |
1864 | struct wireless_dev *wdev); | 1873 | struct wireless_dev *wdev); |
@@ -2466,8 +2475,7 @@ struct wireless_dev { | |||
2466 | spinlock_t event_lock; | 2475 | spinlock_t event_lock; |
2467 | 2476 | ||
2468 | struct cfg80211_internal_bss *current_bss; /* associated / joined */ | 2477 | struct cfg80211_internal_bss *current_bss; /* associated / joined */ |
2469 | struct ieee80211_channel *preset_chan; | 2478 | struct cfg80211_chan_def preset_chandef; |
2470 | enum nl80211_channel_type preset_chantype; | ||
2471 | 2479 | ||
2472 | /* for AP and mesh channel tracking */ | 2480 | /* for AP and mesh channel tracking */ |
2473 | struct ieee80211_channel *channel; | 2481 | struct ieee80211_channel *channel; |
@@ -3563,28 +3571,25 @@ void cfg80211_report_obss_beacon(struct wiphy *wiphy, | |||
3563 | int freq, int sig_dbm); | 3571 | int freq, int sig_dbm); |
3564 | 3572 | ||
3565 | /** | 3573 | /** |
3566 | * cfg80211_can_beacon_sec_chan - test if ht40 on extension channel can be used | 3574 | * cfg80211_reg_can_beacon - check if beaconing is allowed |
3567 | * @wiphy: the wiphy | 3575 | * @wiphy: the wiphy |
3568 | * @chan: main channel | 3576 | * @chandef: the channel definition |
3569 | * @channel_type: HT mode | ||
3570 | * | 3577 | * |
3571 | * This function returns true if there is no secondary channel or the secondary | 3578 | * This function returns true if there is no secondary channel or the secondary |
3572 | * channel can be used for beaconing (i.e. is not a radar channel etc.) | 3579 | * channel(s) can be used for beaconing (i.e. is not a radar channel etc.) |
3573 | */ | 3580 | */ |
3574 | bool cfg80211_can_beacon_sec_chan(struct wiphy *wiphy, | 3581 | bool cfg80211_reg_can_beacon(struct wiphy *wiphy, |
3575 | struct ieee80211_channel *chan, | 3582 | struct cfg80211_chan_def *chandef); |
3576 | enum nl80211_channel_type channel_type); | ||
3577 | 3583 | ||
3578 | /* | 3584 | /* |
3579 | * cfg80211_ch_switch_notify - update wdev channel and notify userspace | 3585 | * cfg80211_ch_switch_notify - update wdev channel and notify userspace |
3580 | * @dev: the device which switched channels | 3586 | * @dev: the device which switched channels |
3581 | * @freq: new channel frequency (in MHz) | 3587 | * @chandef: the new channel definition |
3582 | * @type: channel type | ||
3583 | * | 3588 | * |
3584 | * Acquires wdev_lock, so must only be called from sleepable driver context! | 3589 | * Acquires wdev_lock, so must only be called from sleepable driver context! |
3585 | */ | 3590 | */ |
3586 | void cfg80211_ch_switch_notify(struct net_device *dev, int freq, | 3591 | void cfg80211_ch_switch_notify(struct net_device *dev, |
3587 | enum nl80211_channel_type type); | 3592 | struct cfg80211_chan_def *chandef); |
3588 | 3593 | ||
3589 | /* | 3594 | /* |
3590 | * cfg80211_tdls_oper_request - request userspace to perform TDLS operation | 3595 | * cfg80211_tdls_oper_request - request userspace to perform TDLS operation |