<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Hi Jouni,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I notice that when I terminate the hostapd process, hostapd quit with some error messages as below:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779885.766019: mgmt::action cb<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">^C1354779913.212527: Signal 2 received - terminating<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.212810: wpa_driver_nl80211_set_key: ifindex=13 alg=0 addr=0x10089480 key_idx=0 set_tx=1 seq_len=0 key_len=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.212860: addr=a0:0b:ba:b6:c0:fe<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.212997: Removing station a0:0b:ba:b6:c0:fe<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213044: ath1: AP-STA-DISCONNECTED a0:0b:ba:b6:c0:fe<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213282: hostapd_ht_operation_update current operation mode=0x4<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213315: hostapd_ht_operation_update new operation mode=0x4 changes=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213488: wpa_driver_nl80211_set_key: ifindex=13 alg=0 addr=0x10087940 key_idx=0 set_tx=1 seq_len=0 key_len=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213531: addr=ec:17:2f:cd:11:d7<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213625: Removing station ec:17:2f:cd:11:d7<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213667: ath1: AP-STA-DISCONNECTED ec:17:2f:cd:11:d7<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213900: hostapd_ht_operation_update current operation mode=0x4<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.213933: hostapd_ht_operation_update new operation mode=0x4 changes=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.214104: wpa_driver_nl80211_set_key: ifindex=13 alg=0 addr=0x10087670 key_idx=0 set_tx=1 seq_len=0 key_len=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.214147: addr=9c:4e:36:36:b5:9c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.214241: Removing station 9c:4e:36:36:b5:9c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.214285: ath1: AP-STA-DISCONNECTED 9c:4e:36:36:b5:9c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.214454: hostapd_ht_operation_update current operation mode=0x4<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.214484: hostapd_ht_operation_update new operation mode=0x4 changes=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.214556: nl80211: Set beacon (beacon_set=1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215102: wpa_driver_nl80211_set_key: ifindex=13 alg=0 addr=0x100873e0 key_idx=0 set_tx=1 seq_len=0 key_len=0<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215147: addr=38:59:f9:e4:a6:75<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215241: Removing station 38:59:f9:e4:a6:75<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215292: ath1: AP-STA-DISCONNECTED 38:59:f9:e4:a6:75<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215482: hostapd_ht_operation_update current operation mode=0x4<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215514: hostapd_ht_operation_update new operation mode=0x0 changes=1<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215581: nl80211: Set beacon (beacon_set=1)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.215889: Flushing old station entries<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.216002: Deauthenticate all stations<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.216185: Control interface directory not empty - leaving it behind<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.216245: nl80211: Remove interface ifindex=90<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.473584: netlink: Operstate: linkmode=0, operstate=6<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779913.476658: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.476869: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.476903: nl80211: Try mode change after setting interface down<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.476929: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.477008: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.578444: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.578632: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.680081: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.680274: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.781662: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.781835: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.883312: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.883520: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.984819: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779913.984993: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.086417: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.086606: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.188074: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.188275: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.289882: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.290084: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.391457: nl80211: Set mode ifindex 13 iftype 2 (STATION)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:red">1354779914.391644: nl80211: Failed to set interface 13 to mode 2: -16 (Device or resource busy)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">1354779914.492049: </span><span style="color:red">nl80211: Interface mode change to 2 from 3 failed</span><span style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I traced this issue and found that they are output from wpa_driver_nl80211_set_mode() in wpa_driver_nl80211_deinit(), at last called by hostapd_interface_deinit_free().<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">the kernel API cfg80211_change_iface() deal with this NL80211_CMD_SET_INTERFACE command, but return -EBUSY since the device is still in the bridge,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">cfg80211: src/net/wireless/util.c<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">783 int cfg80211_change_iface(struct cfg80211_registered_device *rdev,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">784 struct net_device *dev, enum nl80211_iftype ntype,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">785 u32 *flags, struct vif_params *params)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">786 {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">800 /* if it's part of a bridge, reject changing type to station/ibss */<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">801 if (br_port_exists(dev) &&<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">802 (ntype == NL80211_IFTYPE_ADHOC ||<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">803 ntype == NL80211_IFTYPE_STATION ||<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">804 ntype == NL80211_IFTYPE_P2P_CLIENT))<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">805 return -EBUSY;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">872 }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">I notice that we have tried to delete this interface from the bridge in wpa_driver_nl80211_deinit(),<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2612 static void wpa_driver_nl80211_deinit(void *priv)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2613 {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2624 if (bss->added_if_into_bridge) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2625 if (linux_br_del_if(drv->global->ioctl_sock, bss->brname,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2626 bss->ifname) < 0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2627 wpa_printf(MSG_INFO, "nl80211: Failed to remove "<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2628 "interface %s from bridge %s: %s",<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2629 bss->ifname, bss->brname, strerror(errno));<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2630 }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">…<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">2682 }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">But I trace that the bss->added_if_into_bridge is always 0, so the interface still in the bridge. What I fix to make it correct is set bss->added_if_into_bridge to 1 when we check the bridge,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">==== a/hostapd/1.0/src/drivers/driver_nl80211.c#2 - b/hostapd/1.0/src/drivers/driver_nl80211.c ====<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">6559 static int i802_check_bridge(struct wpa_driver_nl80211_data *drv,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">6560 struct i802_bss *bss,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">6561 const char *brname, const char *ifname)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">=============<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">6584c6584,6585<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">< if (os_strcmp(in_br, brname) == 0)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">---<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">> if (os_strcmp(in_br, brname) == 0) {<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">> bss->added_if_into_bridge = 1;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">6585a6587<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D">> }<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal">Now this issue has been gone when we quit hostapd, do you think this is right?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">- Felix<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
</body>
</html>