[PATCH 1/2] ibss: fix control freq if IBSS already found
Janusz Dziedzic
janusz.dziedzic
Mon Jan 19 21:16:10 PST 2015
On 19 January 2015 at 16:09, Antonio Quartulli <antonio at meshcoding.com> wrote:
> Hello,
>
> On 19/01/15 10:02, Janusz Dziedzic wrote:
>> If IBSS already found in scan results change
>> requested frequency and disable OBSS scan.
>>
>> Signed-off-by: Janusz Dziedzic <janusz.dziedzic at tieto.com>
>> ---
>> wpa_supplicant/wpa_supplicant.c | 31 ++++++++++++++++++++++++++++---
>> 1 file changed, 28 insertions(+), 3 deletions(-)
>>
>> diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
>> index 000c9ba..56f4c44 100644
>> --- a/wpa_supplicant/wpa_supplicant.c
>> +++ b/wpa_supplicant/wpa_supplicant.c
>> @@ -1650,6 +1650,12 @@ void wpa_supplicant_associate(struct wpa_supplicant *wpa_s,
>> }
>>
>>
>> +static int bss_is_ibss(struct wpa_bss *bss)
>> +{
>> + return ((bss->caps & (IEEE80211_CAP_ESS | IEEE80211_CAP_IBSS)) ==
>> + IEEE80211_CAP_IBSS);
>> +}
>> +
>> void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
>> const struct wpa_ssid *ssid,
>> struct hostapd_freq_params *freq)
>> @@ -1660,17 +1666,36 @@ void ibss_mesh_setup_freq(struct wpa_supplicant *wpa_s,
>> 184, 192 };
>> struct hostapd_channel_data *pri_chan = NULL, *sec_chan = NULL;
>> u8 channel;
>> - int i, chan_idx, ht40 = -1, res;
>> + int i, chan_idx, ht40 = -1, res, obss_scan = 1;
>> unsigned int j;
>>
>> freq->freq = ssid->frequency;
>>
>> + for (i = 0; i < wpa_s->last_scan_res_used; i++) {
>> + struct wpa_bss *bss = wpa_s->last_scan_res[i];
>> +
>> + if (ssid->mode != WPAS_MODE_IBSS)
>> + break;
>> +
>> + if (!bss_is_ibss(bss))
>> + continue;
>> +
>> + if (ssid->ssid_len == bss->ssid_len &&
>> + !memcmp(ssid->ssid, bss->ssid, bss->ssid_len)) {
>> + wpa_printf(MSG_DEBUG, "IBSS already found in scan results, "
>> + "adjust control freq: %d", bss->freq);
>> + freq->freq = bss->freq;
>> + obss_scan = 0;
>> + break;
>> + }
>> + }
>
> What if the user really wanted to start the IBSS on the specify
> frequency rather than joining an already existing cell ?
>
patch 2/2 with fixed freq handle this
BR
Janusz
More information about the Hostap
mailing list