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.

[参考译文] WL1835MOD:数据包丢失问题

Guru**** 2502205 points


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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/929148/wl1835mod-packet-loss-problem

器件型号:WL1835MOD
Thread 中讨论的其他器件:WL1835WL1271

 

我们目前正在使用“无线 BeagleBone Black”测试和评估自己,然后才采用 wl1835芯片组。

测试环境如下所示。 我们以每秒10兆位的速度对距离约50cm 的1450字节的数据包进行了单向通信测试、网状模式下只有两个无线 BeagleBone Black 集。 测试程序是一个类似“iperf”的性能测试程序。

 

问题是、即使在短距离内信号强度为-30dBm 或更高的情况下、仍然存在大约10e-5的持续数据包丢失。

我们可以检查在发生数据包丢失时是否存在 WL18xx FW 不是 TX_SUCCESS 返回。(请参阅下面的 driver/net/wireless/ti/wl18xx/tx.c 代码)

 

当然、在2.4GHz 无线电信道环境中、带内频率信道上还有其他 AP 和干扰信号。

但是、假设 wl1835 MAC/PHY 中的 CSMA-CA 冲突避免和重新传输机制正常工作、则很难理解丢包的数量。

 

 

 

 我们目前怀疑 MAC 层重新传输是否正常工作。

 

 我们不确定 wl1835驱动程序的 max_TX_retries 参数( /drivers/net/wireless/ti/wl18xx/main.c Tx 的参数之一)是否意味着 CSMA-CA MAC 中继限制。 但我们假设它是、并进行了一些测试。

 

 当通过将 max_TX_retries 参数更改为100 (驱动程序的默认值为100)来测量数据包丢失率时、我们发现数据包丢失率随着 max_TX_retries 值的减小而增加。  

 但是、当将 max_TX_retries 增大到200时、数据包丢失率与100相同。  

 

 我们还尝试增加 CW_MIN / CW_max 参数、但没有任何变化。

 

 

我们的问题如下:

 

1.是否在 WL1835固件中应用了 MAC 层重传机制?

 

2.如果应用了 max_TX_retries 参数,是否可以在 Linux WL18xx 驱动程序的 main.c 中设置,以定义 MAC 层重发重试次数?

 

3.除了 max_TX_retries 外,还有任何参数可以改善数据包丢失率问题吗?

 

4.在哪里可以找到一些说明 WL1835芯片组配置文件中定义的参数的文档? 示例) max_TX_retries

 

5、在哪里可以找到可从 WL1835 DebugFS 中读取的固件统计信息列表说明? (/sys/kernel/debug/ieeee80211/phys0/wlcore/wl18xx/fw_stats 文件夹)

 

我们附加了一些 TX_SUCCESS 检查相关代码、这些代码可在 wl18xx 驱动程序代码中找到、我们修改的 max_TX_retries 变量的位置以及 DebugFS 参数列表。

 

内核版本是  4.19.94.

 

drivers/net/wireless/ti/wl18xx/tx.c   第91行

----------------------------------------

静态空 wl18xx_TX_COMPLETE_PACKET (struct wl1271 *WL、u8 TX_STAT_BYTE)

77{

78  结构 ieee80211_TX_INFO *INFO;

79  struct sk_buff *skb;

80  int id = TX_STAT_BYTE 和 WL18XX_TX_STATUS_DESC_ID_MASK;

81  bool TX_SUCCESS;

82  结构 wl1271_TX_HW_DEScr * TX_DESC;

83.

--------

90  /*零位表示 Tx 成功*/

91  TX_SUCCESS =!(TX_STAT_BYTE 和 BIT (WL18XX_TX_STATUS_STAT_BIT_IDX));

 

 

  max_TX_retries 的位置

/drivers/net/wireless/ti/wl18xx/main.c  第309~行

--------------------------------------

                    .max_TX_retries = 100、

                    .ap_aging _ period = 300、

                    tid_conf_count = 4、

                    tid_conf ={

                               [CONF_TX_AC_BE]={

                                          .queue_id  = CONF_TX_AC_be、

                                          .cannel_type = CONF_CHANGE_TYPE_EDCF、

                                          TSID     = CONF_TX_AC_be、

                                          .ps_scheme  = CONF_PS_Pscheme_legacy、

                                          .ack_policy = CONF_ACK_policy_legacy、

                                          .apsd_conf  ={0、0}、

                               }、

                               [CONF_TX_AC_BK]={

                                          .queue_id  = CONF_TX_AC_BK、

                                          .cannel_type = CONF_CHANGE_TYPE_EDCF、

                                          TSID     = CONF_TX_AC_BK、

                                          .ps_scheme  = CONF_PS_Pscheme_legacy、

                                          .ack_policy = CONF_ACK_policy_legacy、

                                          .apsd_conf  ={0、0}、

 

--------------------------------------

 

 

 

 

DebugFS WL1835 固件统计信息

 

aggr_size_rx_size           RX_FILTER_DUP_FILTER

aggr_size_tx_agg_len          RX_FILTER_IBSS_FILTER

aggr_size_TX_AGG_RATE         RX_FILTER_max_arp_queue_dep

CALIB_CALIB_COUNT           RX_FILTER_MC_FILTER

CALIB_FAIL_COUNT            RX_FILTER_protection_filter

CLEAR_FW_STATS             RX_RATE RX_FRAes_PER_RARates

dfs_num_for_radar_detections      RX_RX_BEAST_EARLY_TERM

diversion_num_for_packets_per_ant   rx_rx_cmplt

diversion_total_num_for_togetes    rx_rx_cmplt_task

ERROR_BAR_RETRY            RX_RX_Defrag

ERROR_BURST_MISMATCH          RX_Rx_dufrag_end

ERROR_elp_while NVIC_PENDING      RX_RX_DONE

ERROR_elp_while RX_exchange        RX_RX_LOAD_FRAME

ERROR_elp_while TX           RX_RX_HDR_溢出

error_elp_while TX_exchange        RX_RX_OUT_OUT_OUT_OUT_mpdu_nodes

ERROR_ERROR_FRAME_CTRL         RX_RX_phy_HDR

ERROR_ERROR_FRAME_RAME_TING_Protection Rx_PRE_complt

ERROR_ERROR_FRAME_NON_CTRL       RX_RX_RTS_TIMEOUT

ERROR_Null FRAME_CTS_START       RX_RX_TIMEOUT

ERROR_null 帧_TX_START       RX_RX_TIMEOUT_WA

ERROR_num_FRAME_CTS_nul_flid      RX_RX_TKIP_replays

ERROR_Rx_cmplt_db_overflow_cnt    Rx_Rx_XFR

ERROR_Rx_DELOW_FRAME_Len      Thermal adc_source_unexpected

ERROR_tbc_exchange 不匹配        Thermal;false;IRQ

ERROR_TX_ABORT_FAILURE         热力_IRQ_THR_HIGH

ERROR_TX_RESUE_FAILURE        热力_IRQ_THR_LOW

ISR_IRQ                散热_TX_RESUME

流水线_dec_packet_in         散热_TX_STOP

流水线_dec_packet_in_fifo_full   TX_frag_Bad_mblk_num

流水线_dec_packet_out        TX_frag_cache_hit

流水线_碎片整理_至_ rx_xfer_swi    TX_frag_cache_d怀念

流水线_enc_rx_stat_fifo_int     TX_frag_called

流水线_enc_tx_stat_fifo_int     TX_FRAG_FAILED

流水线_hs_TX_STAT_Fifo_int      TX_frag_init_called

流水线_流水线_ fifo_full      TX_FRAG_IN_PROCESS_called

流水线_后_处理_ swi         TX_frag_key_not _ found

流水线_pre_proc_swi         tx_frag_mpdu_alloc_failed

流水线_pre_to _dufrag_swi       TX_frag_need_fragment

流水线_Rx_complete_stat_fifo_int  TX_FRAG_TKIP_called

流水线_秒_ frag_swi         TX_TX_BURST_programmed

PWR_ap_sleep_active_conf        TX_TX_cfe1

PWR_AP_SLEEP_COUNTER          TX_TX_cfe2

PWR_AP_SLEEP_USER_conf         TX_TX_cmplt

PWR_CONNECT_OUT_OW_SYNC       TX_TX_DATA_STREGed

PWR_CONT_怀念_BCND_Spread       TX_TX_DATA_programmed

PWR_MISSING_BCN_cnt          TX_TX_DONE_DATA

PWR_rcvd_awarn_bcn_cnt        TX_TX_DONE_INT_TEMPLATE

PWR_rcvd_bcn_cnt           TX_TX_DONE_TEMPLATE

PWR_SLEEP_CYCLE 平均值          TX_TX_EXAC

PWR_SLEEP_percent           TX_TX_EXP_EXPIR期

PWR_SLEEP_TIME_avg           TX_TX_EXACT_PENDING

PWR_SLEEP_TIME_COUNT          TX_TX_prepared_descs

漫游_RSSI_level           TX_TX_RETRY 数据

Rx_decrype_key_not _found        TX_TX_RETRY PER_RATE

RX_dufrag_called            TX_TX_RETRY 模板

RX_dufrag_decrype_failed        TX_TX_START_DATA

RX_dfrag_init_called         TX_TX_START_FW_gen

RX_dfrag_in_process_called      TX_TX_START_INT_TEMPLATES

RX_dufrag_need_decrypt         TX_TX_START_Null_FRAME

RX_dufrag_need_defrag         TX_TX_Starts

RX_dfrag_TKIP_called         TX_TX_START_TEMPLATES

RX_FILTER_accum_arp_pend_Requests  TX_TX_STOP

RX_FILTER_ARP_FILTER          TX_TX_TEMPLICE_STREDED

RX_FILTER_BEAST_FILTER        TX_TX_TEMPLICE_PROGRADED

RX_FILTER_DATA_FILTER

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

    您好!  

    您能否向我们提供您正在使用的固件版本? 以下 E2E 还详细介绍了将 WiLink8驱动程序的 R8.7SP3版本集成到 Linux 主机平台所需的步骤。 请告诉我们这些程序是否已经实施。 以下 E2E 详细介绍了网状网络和构建过程所需的补丁。  

    https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/t/870138

    此致、  

    Sudharshan K N

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

    您好!

    我们使用的固件版本如下所示。

    [64.879877] wlcore:PHY 固件版本:版本8.2.0.242
    [64.980132] wlcore:固件已启动(版本8.9.0.0.79)

    我们已通过您提供的链接应用了固件更新和内核补丁、但我们遇到的问题没有改变。


    Kim