[PATCH] Android: Skip explicit conf_p2p_dev loading for main interface
Dmitry Shmidt
dimitrysh
Fri Oct 3 10:50:42 PDT 2014
On Fri, Oct 3, 2014 at 8:03 AM, Jouni Malinen <j at w1.fi> wrote:
> On Wed, Sep 24, 2014 at 10:38:31AM -0700, Dmitry Shmidt wrote:
>> It will be loaded later for Non-netdev p2p interface.
>
>> diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
>> @@ -3509,7 +3509,9 @@ static int wpa_supplicant_init_iface(struct wpa_supplicant *wpa_s,
>> #ifdef CONFIG_P2P
>> wpa_s->conf_p2p_dev = os_rel2abs_path(iface->conf_p2p_dev);
>> +#ifndef ANDROID_P2P
>> wpa_config_read(wpa_s->conf_p2p_dev, wpa_s->conf);
>> +#endif
>> #endif /* CONFIG_P2P */
>
> I'm not sure I've ever fully understood how this -m argument would be
> used. Anyway, this does not look correct. While going through the
> implementation, I could not understand why conf_p2p_dev is added on top
> of the per-interface configuration (wpa_s->confname) rather than using
> conf_p2p_dev to replace wpa_s->confname. I've never used this -m
> argument myself, so don't know what may or may not work if this is done.
> Anyway, the following changes would look much simpler way of doing this
> (and the still pending item of different configuration method would
> likely be even cleaner).
>
>
> diff --git a/wpa_supplicant/main.c b/wpa_supplicant/main.c
> index d2e839d..e596468 100644
> --- a/wpa_supplicant/main.c
> +++ b/wpa_supplicant/main.c
> @@ -331,7 +331,8 @@ int main(int argc, char *argv[])
> if (wpa_s->global->p2p == NULL &&
> (wpa_s->drv_flags &
> WPA_DRIVER_FLAGS_DEDICATED_P2P_DEVICE) &&
> - wpas_p2p_add_p2pdev_interface(wpa_s) < 0)
> + wpas_p2p_add_p2pdev_interface(wpa_s, iface->conf_p2p_dev) <
> + 0)
> exitcode = -1;
> #endif /* CONFIG_P2P */
> }
> diff --git a/wpa_supplicant/p2p_supplicant.c b/wpa_supplicant/p2p_supplicant.c
> index 1189a6d..70a6382 100644
> --- a/wpa_supplicant/p2p_supplicant.c
> +++ b/wpa_supplicant/p2p_supplicant.c
> @@ -3786,7 +3786,8 @@ static void wpas_p2p_debug_print(void *ctx, int level, const char *msg)
> }
>
>
> -int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s)
> +int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s,
> + const char *conf_p2p_dev)
> {
> struct wpa_interface iface;
> struct wpa_supplicant *p2pdev_wpa_s;
> @@ -3817,8 +3818,8 @@ int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s)
> * If a P2P Device configuration file was given, use it as the interface
> * configuration file (instead of using parent's configuration file.
> */
> - if (wpa_s->conf_p2p_dev) {
> - iface.confname = wpa_s->conf_p2p_dev;
> + if (conf_p2p_dev) {
> + iface.confname = conf_p2p_dev;
> iface.ctrl_interface = NULL;
> } else {
> iface.confname = wpa_s->confname;
> diff --git a/wpa_supplicant/p2p_supplicant.h b/wpa_supplicant/p2p_supplicant.h
> index 841d6df..b61d57f 100644
> --- a/wpa_supplicant/p2p_supplicant.h
> +++ b/wpa_supplicant/p2p_supplicant.h
> @@ -16,7 +16,8 @@ struct p2p_peer_info;
> struct p2p_channels;
> struct wps_event_fail;
>
> -int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s);
> +int wpas_p2p_add_p2pdev_interface(struct wpa_supplicant *wpa_s,
> + const char *conf_p2p_dev);
> struct wpa_supplicant * wpas_get_p2p_go_iface(struct wpa_supplicant *wpa_s,
> const u8 *ssid, size_t ssid_len);
> struct wpa_supplicant * wpas_get_p2p_client_iface(struct wpa_supplicant *wpa_s,
> diff --git a/wpa_supplicant/wpa_supplicant.c b/wpa_supplicant/wpa_supplicant.c
> index 3f60d2b..30d5540 100644
> --- a/wpa_supplicant/wpa_supplicant.c
> +++ b/wpa_supplicant/wpa_supplicant.c
> @@ -403,11 +403,6 @@ static void wpa_supplicant_cleanup(struct wpa_supplicant *wpa_s)
> os_free(wpa_s->confanother);
> wpa_s->confanother = NULL;
>
> -#ifdef CONFIG_P2P
> - os_free(wpa_s->conf_p2p_dev);
> - wpa_s->conf_p2p_dev = NULL;
> -#endif /* CONFIG_P2P */
> -
> wpa_sm_set_eapol(wpa_s->wpa, NULL);
> eapol_sm_deinit(wpa_s->eapol);
> wpa_s->eapol = NULL;
> @@ -3653,11 +3648,6 @@ static int wpa_supplicant_init_iface(struct wpa_supplicant *wpa_s,
> wpa_s->confanother = os_rel2abs_path(iface->confanother);
> wpa_config_read(wpa_s->confanother, wpa_s->conf);
>
> -#ifdef CONFIG_P2P
> - wpa_s->conf_p2p_dev = os_rel2abs_path(iface->conf_p2p_dev);
> - wpa_config_read(wpa_s->conf_p2p_dev, wpa_s->conf);
> -#endif /* CONFIG_P2P */
> -
> /*
> * Override ctrl_interface and driver_param if set on command
> * line.
> diff --git a/wpa_supplicant/wpa_supplicant_i.h b/wpa_supplicant/wpa_supplicant_i.h
> index f941923..f375486 100644
> --- a/wpa_supplicant/wpa_supplicant_i.h
> +++ b/wpa_supplicant/wpa_supplicant_i.h
> @@ -67,7 +67,7 @@ struct wpa_interface {
>
> #ifdef CONFIG_P2P
> /**
> - * conf_p2p_dev - Additional configuration file used to hold the
> + * conf_p2p_dev - Configuration file used to hold the
> * P2P Device configuration parameters.
> *
> * This can also be %NULL. In such a case, if a P2P Device dedicated
> @@ -408,10 +408,6 @@ struct wpa_supplicant {
> char *confname;
> char *confanother;
>
> -#ifdef CONFIG_P2P
> - char *conf_p2p_dev;
> -#endif /* CONFIG_P2P */
> -
> struct wpa_config *conf;
> int countermeasures;
> struct os_reltime last_michael_mic_error;
>
> --
> Jouni Malinen PGP id EFC895FA
This patch works for me, thanks!
More information about the Hostap
mailing list