[PATCH 1/2] supplicant: do not change iftype for static AP interface
    Avinash Patil 
    avinashapatil at gmail.com
       
    Tue Aug  5 03:19:46 EDT 2014
    
    
  
Some devices have limitations which do not allow changing virtual interface
mode from AP to station or vice versa. To work around this, check if such
AP interface is not dynamic. If such an interface is enumarated,
just set ifmode to AP & avoid setting nlmode to default station mode.
Signed-off-by: Avinash Patil <avinashapatil at gmail.com>
---
 src/drivers/driver_nl80211.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/src/drivers/driver_nl80211.c b/src/drivers/driver_nl80211.c
index aa2cd04..0c8717f 100644
--- a/src/drivers/driver_nl80211.c
+++ b/src/drivers/driver_nl80211.c
@@ -238,6 +238,7 @@ struct i802_bss {
        int freq;
        int bandwidth;
        int if_dynamic;
+       u8 static_ap;
        void *ctx;
        struct nl_handle *nl_preq, *nl_mgmt;
@@ -4752,6 +4753,9 @@ wpa_driver_nl80211_finish_drv_init(struct
wpa_driver_nl80211_data *drv,
        bss->if_dynamic = bss->if_dynamic || drv->global->if_add_wdevid_set;
        drv->global->if_add_wdevid_set = 0;
+       if (!bss->if_dynamic && nl80211_get_ifmode(bss) == NL80211_IFTYPE_AP)
+               bss->static_ap = 1;
+
        if (wpa_driver_nl80211_capa(drv))
                return -1;
@@ -4767,7 +4771,7 @@ wpa_driver_nl80211_finish_drv_init(struct
wpa_driver_nl80211_data *drv,
        if (first && nl80211_get_ifmode(bss) == NL80211_IFTYPE_AP)
                drv->start_mode_ap = 1;
-       if (drv->hostapd)
+       if (drv->hostapd || (bss->static_ap))
                nlmode = NL80211_IFTYPE_AP;
        else if (bss->if_dynamic)
                nlmode = nl80211_get_ifmode(bss);
-- 
1.8.1.4
    
    
More information about the HostAP
mailing list