This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] WL1807MOD:在网状网络中无法扫描、因为"保留在通道上"处于活动状态

Guru**** 2416490 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/1212292/wl1807mod-cannot-scan-while-in-mesh-since-remain-on-channel-is-active

器件型号:WL1807MOD

在网状网络模式下启动 wpa_supplicant 后、无法使用如下命令扫描 wifi 网络:

iw dev wlan0_mesh scan

该命令返回:

命令失败:设备或资源繁忙(-16)

这是由于 main.c 中的以下代码块:

	/* fail if there is any role in ROC */
	if (find_first_bit(wl->roc_map, WL12XX_MAX_ROLES) < WL12XX_MAX_ROLES) {
		/* don't allow scanning right now */
		ret = -EBUSY;
		goto out_sleep;
	}
	

这真的是预期行为吗? 据我所知、保持开启通道应该是短暂的;而不是永久的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我们将审核查询并回复给您。

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    谢谢。 目前、我们正在使用此补丁、它似乎可以解决问题:

    --- a/drivers/net/wireless/ti/wlcore/main.c
    +++ b/drivers/net/wireless/ti/wlcore/main.c
    @@ -5144,10 +5237,6 @@ void wlcore_update_inconn_sta(struct wl1271 *wl, struct wl12xx_vif *wlvif,
     		if (WARN_ON(wl_sta && wl_sta->in_connection))
     			return;
     
    -		if (!wlvif->ap_pending_auth_reply &&
    -		    !wlvif->inconn_count)
    -			wlcore_roc_if_possible(wl, wlvif);
    -
     		if (wl_sta) {
     			wl_sta->in_connection = true;
     			wlvif->inconn_count++;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您共享补丁。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    开始网状网络角色后、我能够成功运行扫描。

    我在 k4.19上运行 R8.8版驱动程序。 应用的驱动程序内核补丁: https://git.ti.com/cgit/wilink8-wlan/build-utilites/tree/patches/kernel_patches/4.19.38?h=r8.8

    谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我忘了说、这并不总是发生。 另一个奇怪的情况是,如你所见,调用 wlcore_ROC_if_cossible ()的代码块只能在建立 AP 连接后才被激活。 上面这个值:

    	/* Add station (AP mode) */
    	if (is_ap &&
    	    old_state == IEEE80211_STA_NOTEXIST &&
    	    new_state == IEEE80211_STA_NONE) {
    		ret = wl12xx_sta_add(wl, wlvif, sta);
    		if (ret)
    			return ret;
    
    		wlcore_update_inconn_sta(wl, wlvif, wl_sta, true);
    	}
    	

    连接到 AP 后可以扫描吗? BTW、此代码块被添加到以下提交中:

    commit 426001a6aaffce040226a19ad2795ac26c10f942
    Author: Eliad Peller <eliad@wizery.com>
    Date:   Mon Nov 26 18:05:45 2012 +0200
    
        wlcore: use sta_state-based ROCs for AP mode
        
        Try an opportunistic ROC when a STA is first added and stop the ROC when
        the STA is removed or successfully authenticated. This would ensure we
        don't miss auth/assoc/EAPOL packets during connection
    

    随后修改:

    commit 187e52cc3c9f5ee64136f8b5c4edcb4cf94693e7
    Author: Arik Nemtsov <arik@wizery.com>
    Date:   Tue Sep 17 18:41:20 2013 +0300
    
        wlcore: ROC on AP channel before auth reply
        
        Start a ROC on the AP channel beforing sending the authentication reply
        to a connecting STA. This ROC is held up to 1 second via a timer. If the
        station is authorized and added by mac80211, the ROC is extended until
        the station is fully authorized.
        We make sure not to ROC twice when several stations are connecting in
        parallel and to only release the ROC when both the pending-reply timer
        and the STA-state callbacks do not require it.
    

    这包含在内核3.13及更高版本中。  

    如果我正确理解代码和注释、则目标是暂时添加 ROC。 换句话说、我们最终获得永久 ROC (有时)这一事实表明此代码无法正常运行。 网状站连接可能会被误解为 AP 连接?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您在 WiLink8 DUT 上运行多少个角色? 只是网状? DUT 是否 连接到其他网状节点? 内核版本? 谢谢

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我们有两个角色:AP 和 Mesh。 我们还通过 Wifi STA 和网状网络验证了这一问题。 无论是否与其他网状节点建立了任何连接、都会出现问题。 内核版本5.4.70。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    确定。 我们会审查并回复您。 谢谢