diff options
author | Simon Wunderlich <simon.wunderlich@s2003.tu-chemnitz.de> | 2013-07-11 10:09:05 -0400 |
---|---|---|
committer | Johannes Berg <johannes.berg@intel.com> | 2013-08-01 12:30:28 -0400 |
commit | 16ef1fe272332b2f7fd99236017b891db48d9cd6 (patch) | |
tree | 95b7a750ade214349282f1858ac44640890fce9c /include/net/cfg80211.h | |
parent | 7cf1f14ecf1f5025abb0e30e22e8f7ad219fa32e (diff) |
nl80211/cfg80211: add channel switch command
To allow channel switch announcements within beacons, add
the channel switch command to nl80211/cfg80211. This is
implementation is intended for AP and (later) IBSS mode.
Signed-off-by: Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
Signed-off-by: Mathias Kretschmer <mathias.kretschmer@fokus.fraunhofer.de>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/net/cfg80211.h')
-rw-r--r-- | include/net/cfg80211.h | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/include/net/cfg80211.h b/include/net/cfg80211.h index aeaf6dff6e05..b7495c72061c 100644 --- a/include/net/cfg80211.h +++ b/include/net/cfg80211.h | |||
@@ -666,6 +666,30 @@ struct cfg80211_ap_settings { | |||
666 | }; | 666 | }; |
667 | 667 | ||
668 | /** | 668 | /** |
669 | * struct cfg80211_csa_settings - channel switch settings | ||
670 | * | ||
671 | * Used for channel switch | ||
672 | * | ||
673 | * @chandef: defines the channel to use after the switch | ||
674 | * @beacon_csa: beacon data while performing the switch | ||
675 | * @counter_offset_beacon: offset for the counter within the beacon (tail) | ||
676 | * @counter_offset_presp: offset for the counter within the probe response | ||
677 | * @beacon_after: beacon data to be used on the new channel | ||
678 | * @radar_required: whether radar detection is required on the new channel | ||
679 | * @block_tx: whether transmissions should be blocked while changing | ||
680 | * @count: number of beacons until switch | ||
681 | */ | ||
682 | struct cfg80211_csa_settings { | ||
683 | struct cfg80211_chan_def chandef; | ||
684 | struct cfg80211_beacon_data beacon_csa; | ||
685 | u16 counter_offset_beacon, counter_offset_presp; | ||
686 | struct cfg80211_beacon_data beacon_after; | ||
687 | bool radar_required; | ||
688 | bool block_tx; | ||
689 | u8 count; | ||
690 | }; | ||
691 | |||
692 | /** | ||
669 | * enum station_parameters_apply_mask - station parameter values to apply | 693 | * enum station_parameters_apply_mask - station parameter values to apply |
670 | * @STATION_PARAM_APPLY_UAPSD: apply new uAPSD parameters (uapsd_queues, max_sp) | 694 | * @STATION_PARAM_APPLY_UAPSD: apply new uAPSD parameters (uapsd_queues, max_sp) |
671 | * @STATION_PARAM_APPLY_CAPABILITY: apply new capability | 695 | * @STATION_PARAM_APPLY_CAPABILITY: apply new capability |
@@ -2139,6 +2163,8 @@ struct cfg80211_update_ft_ies_params { | |||
2139 | * @crit_proto_stop: Indicates critical protocol no longer needs increased link | 2163 | * @crit_proto_stop: Indicates critical protocol no longer needs increased link |
2140 | * reliability. This operation can not fail. | 2164 | * reliability. This operation can not fail. |
2141 | * @set_coalesce: Set coalesce parameters. | 2165 | * @set_coalesce: Set coalesce parameters. |
2166 | * | ||
2167 | * @channel_switch: initiate channel-switch procedure (with CSA) | ||
2142 | */ | 2168 | */ |
2143 | struct cfg80211_ops { | 2169 | struct cfg80211_ops { |
2144 | int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow); | 2170 | int (*suspend)(struct wiphy *wiphy, struct cfg80211_wowlan *wow); |
@@ -2376,6 +2402,10 @@ struct cfg80211_ops { | |||
2376 | struct wireless_dev *wdev); | 2402 | struct wireless_dev *wdev); |
2377 | int (*set_coalesce)(struct wiphy *wiphy, | 2403 | int (*set_coalesce)(struct wiphy *wiphy, |
2378 | struct cfg80211_coalesce *coalesce); | 2404 | struct cfg80211_coalesce *coalesce); |
2405 | |||
2406 | int (*channel_switch)(struct wiphy *wiphy, | ||
2407 | struct net_device *dev, | ||
2408 | struct cfg80211_csa_settings *params); | ||
2379 | }; | 2409 | }; |
2380 | 2410 | ||
2381 | /* | 2411 | /* |
@@ -2441,6 +2471,8 @@ struct cfg80211_ops { | |||
2441 | * @WIPHY_FLAG_OFFCHAN_TX: Device supports direct off-channel TX. | 2471 | * @WIPHY_FLAG_OFFCHAN_TX: Device supports direct off-channel TX. |
2442 | * @WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL: Device supports remain-on-channel call. | 2472 | * @WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL: Device supports remain-on-channel call. |
2443 | * @WIPHY_FLAG_SUPPORTS_5_10_MHZ: Device supports 5 MHz and 10 MHz channels. | 2473 | * @WIPHY_FLAG_SUPPORTS_5_10_MHZ: Device supports 5 MHz and 10 MHz channels. |
2474 | * @WIPHY_FLAG_HAS_CHANNEL_SWITCH: Device supports channel switch in | ||
2475 | * beaconing mode (AP, IBSS, Mesh, ...). | ||
2444 | */ | 2476 | */ |
2445 | enum wiphy_flags { | 2477 | enum wiphy_flags { |
2446 | WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0), | 2478 | WIPHY_FLAG_CUSTOM_REGULATORY = BIT(0), |
@@ -2465,6 +2497,7 @@ enum wiphy_flags { | |||
2465 | WIPHY_FLAG_OFFCHAN_TX = BIT(20), | 2497 | WIPHY_FLAG_OFFCHAN_TX = BIT(20), |
2466 | WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL = BIT(21), | 2498 | WIPHY_FLAG_HAS_REMAIN_ON_CHANNEL = BIT(21), |
2467 | WIPHY_FLAG_SUPPORTS_5_10_MHZ = BIT(22), | 2499 | WIPHY_FLAG_SUPPORTS_5_10_MHZ = BIT(22), |
2500 | WIPHY_FLAG_HAS_CHANNEL_SWITCH = BIT(23), | ||
2468 | }; | 2501 | }; |
2469 | 2502 | ||
2470 | /** | 2503 | /** |