James Carlson 已写入:

>As part of investigating the troubles behind CR 6764186, Pengcheng
>Chen found that dladm_wlan_scan can wipe out a connected interface
>rather unexpectedly.
>
>The current dladm_wlan_scan() code does this before starting the scan:
>
>       status = do_get_linkstatus(linkid, &wl_status, sizeof (wl_status));
>
>and then this after completion:
>
>       if (wl_status != WL_CONNECTED) {
>               status = do_get_linkstatus(linkid, &wl_status,
>                   sizeof (&wl_status));
>               if (status != DLADM_STATUS_OK)
>                       goto done;
>               if (wl_status == WL_CONNECTED)
>                       (void) do_disconnect(linkid, buf, sizeof (buf));
>
>Variations on this logic appear to have been in the code since the
>very first integration as part of PSARC 2007/140.  The effect of this
>code is that if we become connected while the scan is running, we
>immediately disconnect after the scan is done.
>  
>
I guess these codes is tend to fix some automatic connection issue
on some old drivers when the first integration. Those old drivers
may connect to a AP automatically after scan complete.

>What isn't clear is why the code needs to do this.  The questions this
>brings up are:
>
>  - What was the original purpose of this code?  Does anyone remember?
>    I can't seem to find a CR related to this code.
>
>  - Do (or should) the wireless drivers support running a scan at the
>    same time that connect is requested?  If not, then whose
>    responsibility should it be to ensure serialization of these
>    operations?
>  
>
Yes, when a scan is running, if connect is requested, the "scan"
will be canceled, and "connect" will be executed.

See ieee80211_cancel_scan() of net80211 kernel module.

--
Quaker

>Any hints or pointers welcome.
>
>  
>

_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to