[PATCH] P2P: Enable 40MHz support for p2p group addition

Rajkumar Manoharan rmanohar at qca.qualcomm.com
Wed Jul 11 06:37:23 EDT 2012


On Wed, Jul 11, 2012 at 12:18:05PM +0300, Arik Nemtsov wrote:
> On Tue, Jul 10, 2012 at 1:08 PM, Rajkumar Manoharan
> <rmanohar at qca.qualcomm.com> wrote:
> > Add optional "ht40" argument for p2p_group_add command to enable 40MHz
> > in 5GHz band. This could configure secondary channel, when 11n support
> > was enabled and if the HW supports 40MHz channel width.
> >
> > Signed-hostap: Rajkumar Manoharan <rmanohar at qca.qualcomm.com>
> > ---
> >  wpa_supplicant/ap.c                         | 64 +++++++++++++++++++++++++++++
> >  wpa_supplicant/config.h                     |  1 +
> >  wpa_supplicant/ctrl_iface.c                 | 19 +++++----
> >  wpa_supplicant/dbus/dbus_new_handlers_p2p.c |  2 +-
> >  wpa_supplicant/p2p_supplicant.c             | 16 ++++----
> >  wpa_supplicant/p2p_supplicant.h             |  4 +-
> >  wpa_supplicant/wpa_cli.c                    | 19 ++++-----
> >  7 files changed, 97 insertions(+), 28 deletions(-)
> >
> > diff --git a/wpa_supplicant/ap.c b/wpa_supplicant/ap.c
> > index f9e0045..394784a 100644
> > --- a/wpa_supplicant/ap.c
> > +++ b/wpa_supplicant/ap.c
> > @@ -40,6 +40,57 @@
> >  static void wpas_wps_ap_pin_timeout(void *eloop_data, void *user_ctx);
> >  #endif /* CONFIG_WPS */
> >
> > +#ifdef CONFIG_IEEE80211N
> > +static int wpas_choose_ht40_sec_chan(struct hostapd_hw_modes *mode,
> > +                                    struct hostapd_config *conf,
> > +                                    int secondary_channel)
> > +{
> > +       int sec_chan, ok, j, first;
> > +       int allowed[] = { 36, 44, 52, 60, 100, 108, 116, 124, 132, 149, 157,
> > +                         184, 192 };
> > +       size_t k;
> > +
> > +       sec_chan = conf->channel + secondary_channel * 4;
> > +
> > +       /* Verify that HT40 secondary channel is an allowed 20 MHz
> > +        * channel */
> > +       ok = 0;
> > +       for (j = 0; j < mode->num_channels; j++) {
> > +               struct hostapd_channel_data *chan = &mode->channels[j];
> > +               if (!(chan->flag & HOSTAPD_CHAN_DISABLED) &&
> > +                   chan->chan == sec_chan) {
> > +                       ok = 1;
> > +                       break;
> > +               }
> 
> Shouldn't you be using global->p2p->channels instead of
> mode->channels? These are pre-checked in wpas_p2p_setup_channels().
> Also shouldn't HOSTAPD_CHAN_HT40PLUS/MINUS be checked here?
> 
Hmm. I followed hostap function ieee80211n_allowed_ht40_channel_pair
for secondary channel selection.
> > +       }
> > +       if (!ok) {
> > +               wpa_printf(MSG_ERROR, "HT40 secondary channel %d not allowed",
> > +                          sec_chan);
> > +               return 0;
> 
> This will always print an error for the sec=-1 case, since sec=1 was
> tried (and failed). Or am I missing something?
>
I will correct the debug level and message.

-Rajkumar


More information about the HostAP mailing list