diff mbox

Extend channel list restriction for ACS

Message ID CAOtFK_XANjW6Z4AB8domDDz31EjbtO3No25YVdM8YtEM4HnPNA@mail.gmail.com
State Changes Requested
Headers show

Commit Message

Adrien Decostre Jan. 7, 2015, 12:18 p.m. UTC
Dear all,

The patch below extend the possibility to define channel list
restriction for automatic channel selection (ACS) to the case DFS
support is not enabled.

Best regards


From a4b1378661dc5f8de47ac47af8f020cd20f6bd4d Mon Sep 17 00:00:00 2001
From: Adrien Decostre <ad.decostre@gmail.com>
Date: Wed, 7 Jan 2015 13:03:04 +0100
Subject: [PATCH] add the possibility to define a subset of channels used by
 the ACS engine when not operating on DFS channels

---
 src/ap/acs.c |   21 ++++++++++++++++++++-
 1 file changed, 20 insertions(+), 1 deletion(-)

        struct hostapd_iface *iface)
@@ -467,6 +481,9 @@ static void acs_survey_all_chans_intereference_factor(
                if (!acs_usable_chan(chan))
                        continue;

+               if (!is_in_chanlist(iface, chan))
+                       continue;
+
                wpa_printf(MSG_DEBUG, "ACS: Survey analysis for
channel %d (%d MHz)",
                           chan->chan, chan->freq);

@@ -542,7 +559,9 @@ acs_find_ideal_chan(struct hostapd_iface *iface)

                if (chan->flag & HOSTAPD_CHAN_DISABLED)
                        continue;
-
+
+               if (!is_in_chanlist(iface, chan))
+                       continue;

                /* HT40 on 5 GHz has a limited set of primary channels as per
                 * 11n Annex J */
--
1.7.9.5

Comments

Jouni Malinen Jan. 10, 2015, 11:19 a.m. UTC | #1
On Wed, Jan 07, 2015 at 01:18:20PM +0100, Adrien Decostre wrote:
> The patch below extend the possibility to define channel list
> restriction for automatic channel selection (ACS) to the case DFS
> support is not enabled.

This seems reasonable. Could you please also update hostapd/hostapd.conf
documentation for chanlist to indicate that it is used for ACS even
without DFS? Please also read the top level CONTRIBUTIONS file and
re-send the patch with Signed-off-by: line added to the commit message
as described there so that I can apply this to the repository.
diff mbox

Patch

diff --git a/src/ap/acs.c b/src/ap/acs.c
index 97cf26f..21d932e 100644
--- a/src/ap/acs.c
+++ b/src/ap/acs.c
@@ -454,6 +454,20 @@  static int acs_usable_chan(struct
hostapd_channel_data *chan)
        return 1;
 }

+static int is_in_chanlist(struct hostapd_iface *iface,
+                          struct hostapd_channel_data *chan)
+{
+        int *entry;
+
+        if (!iface->conf->chanlist)
+                return 1;
+
+        for (entry = iface->conf->chanlist; *entry != -1; entry++) {
+                if (*entry == chan->chan)
+                        return 1;
+        }
+        return 0;
+}

 static void acs_survey_all_chans_intereference_factor(