diff options
| author | Chun-Yeow Yeoh <yeohchunyeow@cozybit.com> | 2013-10-14 22:08:27 -0400 |
|---|---|---|
| committer | Johannes Berg <johannes.berg@intel.com> | 2013-10-28 10:05:28 -0400 |
| commit | 8f2535b92d685c68db4bc699dd78462a646f6ef9 (patch) | |
| tree | e64579c3dfc09f81fbf47f2a76d316721a4da2e3 /include/linux | |
| parent | c0f17eb9b2d4d322c099a0700437209149224583 (diff) | |
mac80211: process the CSA frame for mesh accordingly
Process the CSA frame according to the procedures define in IEEE Std
802.11-2012 section 10.9.8.4.3 as follow:
* The mesh channel switch parameters element (MCSP) must be availabe.
* If the MCSP's TTL is 1, drop the frame but still process the CSA.
* If the MCSP's precedence value is less than or equal to the current
precedence value, drop the frame and do not process the CSA.
* The CSA frame is forwarded after TTL is decremented by 1 and the
initiator field is set to 0. Transmit restrict field and others
are maintained as is.
* No beacon or probe response frame are handled here.
Also, introduce the debug message used for mesh CSA purpose.
Signed-off-by: Chun-Yeow Yeoh <yeohchunyeow@cozybit.com>
Signed-off-by: Johannes Berg <johannes.berg@intel.com>
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/ieee80211.h | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/include/linux/ieee80211.h b/include/linux/ieee80211.h index 7c1e1ebc0e23..8c3b26a21574 100644 --- a/include/linux/ieee80211.h +++ b/include/linux/ieee80211.h | |||
| @@ -697,6 +697,18 @@ struct ieee80211_sec_chan_offs_ie { | |||
| 697 | } __packed; | 697 | } __packed; |
| 698 | 698 | ||
| 699 | /** | 699 | /** |
| 700 | * struct ieee80211_mesh_chansw_params_ie - mesh channel switch parameters IE | ||
| 701 | * | ||
| 702 | * This structure represents the "Mesh Channel Switch Paramters element" | ||
| 703 | */ | ||
| 704 | struct ieee80211_mesh_chansw_params_ie { | ||
| 705 | u8 mesh_ttl; | ||
| 706 | u8 mesh_flags; | ||
| 707 | __le16 mesh_reason; | ||
| 708 | __le16 mesh_pre_value; | ||
| 709 | } __packed; | ||
| 710 | |||
| 711 | /** | ||
| 700 | * struct ieee80211_wide_bw_chansw_ie - wide bandwidth channel switch IE | 712 | * struct ieee80211_wide_bw_chansw_ie - wide bandwidth channel switch IE |
| 701 | */ | 713 | */ |
| 702 | struct ieee80211_wide_bw_chansw_ie { | 714 | struct ieee80211_wide_bw_chansw_ie { |
| @@ -751,6 +763,14 @@ enum mesh_config_capab_flags { | |||
| 751 | }; | 763 | }; |
| 752 | 764 | ||
| 753 | /** | 765 | /** |
| 766 | * mesh channel switch parameters element's flag indicator | ||
| 767 | * | ||
| 768 | */ | ||
| 769 | #define WLAN_EID_CHAN_SWITCH_PARAM_TX_RESTRICT BIT(0) | ||
| 770 | #define WLAN_EID_CHAN_SWITCH_PARAM_INITIATOR BIT(1) | ||
| 771 | #define WLAN_EID_CHAN_SWITCH_PARAM_REASON BIT(2) | ||
| 772 | |||
| 773 | /** | ||
| 754 | * struct ieee80211_rann_ie | 774 | * struct ieee80211_rann_ie |
| 755 | * | 775 | * |
| 756 | * This structure refers to "Root Announcement information element" | 776 | * This structure refers to "Root Announcement information element" |
