Search Linux Wireless

Re: [PATCH] mac80211: Add 802.11h CSA support

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 1/6/2009 11:58 AM, Sujith wrote:
Move to the advertised channel on reception of
a CSA element. This is needed for 802.11h compliance.

Signed-off-by: Sujith <Sujith.Manoharan@xxxxxxxxxxx>
---
v2
--
* Add a new variable to hold the CSA channel
* Use msecs_to_jiffies for calculating expiration time
* Add a check to drop beacons in case of a frequency mismatch

v3
--
* Add a BSSID check when handling CSA action frame

  net/mac80211/ieee80211_i.h |   11 ++++++-
  net/mac80211/iface.c       |    2 +
  net/mac80211/mlme.c        |   13 +++++++
  net/mac80211/rx.c          |   20 +++++++++++
  net/mac80211/spectmgmt.c   |   77 ++++++++++++++++++++++++++++++++++++++++++++
  5 files changed, 122 insertions(+), 1 deletions(-)

...
+void ieee80211_process_chanswitch(struct ieee80211_sub_if_data *sdata,
+				  struct ieee80211_channel_sw_ie *sw_elem,
+				  struct ieee80211_bss *bss)
+{
+	struct ieee80211_channel *new_ch;
+	struct ieee80211_if_sta *ifsta = &sdata->u.sta;
+	int new_freq = ieee80211_channel_to_frequency(sw_elem->new_ch_num);
+
+	/* FIXME: Handle ADHOC later */
+	if (sdata->vif.type != NL80211_IFTYPE_STATION)
+		return;
+
+	if (ifsta->state != IEEE80211_STA_MLME_ASSOCIATED)
+		return;
+
+	if (sdata->local->sw_scanning || sdata->local->hw_scanning)
+		return;
+
May I know why channel switch should not go ahead while it is doing scan?
It lead channel switch fail sometimes.
For example, channel switch count is 10, then it has 10 becaons with channel switch IE in the 1 second, if it is doing a hw scan(time cost is more than 1 second) at that moment, the channel switch of 10 beacons will not be handle, and lead channel switch fail.

Currently it is changed like this in net/mac80211/mlme.c
ieee80211_sta_process_chanswitch(struct ieee80211_sub_if_data *sdata,
...

    if (local->scanning)
        return;
...



[Index of Archives]     [Linux Host AP]     [ATH6KL]     [Linux Wireless Personal Area Network]     [Linux Bluetooth]     [Wireless Regulations]     [Linux Netdev]     [Kernel Newbies]     [Linux Kernel]     [IDE]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite Hiking]     [MIPS Linux]     [ARM Linux]     [Linux RAID]

  Powered by Linux