From: Dan Williams <dcbw@redhat.com>
To: Jouni Malinen <j@w1.fi>
Cc: linux-wireless@vger.kernel.org
Subject: Re: [RFC] mac80211: Disable requests for new scans in AP mode
Date: Tue, 09 Dec 2008 12:40:10 -0500 [thread overview]
Message-ID: <1228844410.17539.1.camel@localhost.localdomain> (raw)
In-Reply-To: <20081209145722.GA2285@jm.kir.nu>
On Tue, 2008-12-09 at 16:57 +0200, Jouni Malinen wrote:
> AP mode operations are seriously affected if mac80211 runs through a
> multi-second scan while the AP is trying to send Beacon frames on the
> operation channel. While this could be implemented in a way that does
> not cause too many problems, it is not very simple and will require
> synchronization with Beacon frame scheduling in the drivers (scan one
> channel at a time between Beacon frames). Furthermore, such scanning
> takes quite a bit longer time and existing userspace applications
> would be likely to timeout while waiting for the results.
>
> For now, just refuse requests for new scans (SIOCSIWSCAN) when in AP
> mode. In practice, this moves the rejection from iwl* drivers into
> mac80211 to make it apply to every mac80211-based driver.
>
> This issue shows up in associated stations getting disconnected when
> something (e.g., Network Manager) requests a scan while the interface
> is in AP mode. When doing this continuously (e.g., NM does it every 60
> seconds), the network gets close to useless.
Every 120 seconds usually (it uses a simple backoff algorithm), but
yeah, this is a good thing to do. You probably want to make NM ignore
the device if you're configuring it as an AP though, since obviously NM
shouldn't be driving an AP mode interface.
Dan
> Signed-off-by: Jouni Malinen <jouni.malinen@atheros.com>
>
>
> Index: wireless-testing/drivers/net/wireless/iwlwifi/iwl-agn.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl-agn.c 2008-12-09 16:27:49.000000000 +0200
> +++ wireless-testing/drivers/net/wireless/iwlwifi/iwl-agn.c 2008-12-09 16:31:25.000000000 +0200
> @@ -2972,12 +2972,6 @@ static int iwl_mac_hw_scan(struct ieee80
> goto out_unlock;
> }
>
> - if (priv->iw_mode == NL80211_IFTYPE_AP) { /* APs don't scan */
> - ret = -EIO;
> - IWL_ERROR("ERROR: APs don't scan\n");
> - goto out_unlock;
> - }
> -
> /* We don't schedule scan within next_scan_jiffies period.
> * Avoid scanning during possible EAPOL exchange, return
> * success immediately.
> Index: wireless-testing/drivers/net/wireless/iwlwifi/iwl3945-base.c
> ===================================================================
> --- wireless-testing.orig/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-12-09 16:34:51.000000000 +0200
> +++ wireless-testing/drivers/net/wireless/iwlwifi/iwl3945-base.c 2008-12-09 16:35:14.000000000 +0200
> @@ -2105,11 +2105,6 @@ static void iwl3945_setup_rxon_timing(st
>
> static int iwl3945_scan_initiate(struct iwl3945_priv *priv)
> {
> - if (priv->iw_mode == NL80211_IFTYPE_AP) {
> - IWL_ERROR("APs don't scan.\n");
> - return 0;
> - }
> -
> if (!iwl3945_is_ready_rf(priv)) {
> IWL_DEBUG_SCAN("Aborting scan due to not ready.\n");
> return -EIO;
> @@ -6991,12 +6986,6 @@ static int iwl3945_mac_hw_scan(struct ie
> goto out_unlock;
> }
>
> - if (priv->iw_mode == NL80211_IFTYPE_AP) { /* APs don't scan */
> - rc = -EIO;
> - IWL_ERROR("ERROR: APs don't scan\n");
> - goto out_unlock;
> - }
> -
> /* we don't schedule scan within next_scan_jiffies period */
> if (priv->next_scan_jiffies &&
> time_after(priv->next_scan_jiffies, jiffies)) {
> Index: wireless-testing/net/mac80211/wext.c
> ===================================================================
> --- wireless-testing.orig/net/mac80211/wext.c 2008-12-09 16:31:01.000000000 +0200
> +++ wireless-testing/net/mac80211/wext.c 2008-12-09 16:31:13.000000000 +0200
> @@ -418,8 +418,7 @@ static int ieee80211_ioctl_siwscan(struc
>
> if (sdata->vif.type != NL80211_IFTYPE_STATION &&
> sdata->vif.type != NL80211_IFTYPE_ADHOC &&
> - sdata->vif.type != NL80211_IFTYPE_MESH_POINT &&
> - sdata->vif.type != NL80211_IFTYPE_AP)
> + sdata->vif.type != NL80211_IFTYPE_MESH_POINT)
> return -EOPNOTSUPP;
>
> /* if SSID was specified explicitly then use that */
>
next prev parent reply other threads:[~2008-12-09 17:40 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-12-09 14:57 [RFC] mac80211: Disable requests for new scans in AP mode Jouni Malinen
2008-12-09 15:10 ` Johannes Berg
2008-12-09 17:40 ` Dan Williams [this message]
2008-12-09 19:33 ` Jouni Malinen
2008-12-09 20:07 ` Dan Williams
2008-12-09 21:11 ` Johannes Berg
2008-12-09 21:12 ` Johannes Berg
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1228844410.17539.1.camel@localhost.localdomain \
--to=dcbw@redhat.com \
--cc=j@w1.fi \
--cc=linux-wireless@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox