当前位置: 首页 > news >正文

RTL8852bs 初始化流程

梳理了 RTL8852bs wifi 驱动的加载流程. 方便熟悉代码逻辑和超找需要的功能.
我看了所有的代码,但是还是没有找到是哪里设置的AP模式.

rtw_dev_probe()
|---> sdio_dvobj_init()|---> devobj_init()|---> atomic_set()|---> sdio_init()|---> sdio_claim_host()/* 3 1. init SDIO bus */|---> mmc_claim_host()|---> sdio_enable_func()|---> mmc_io_rw_direct()|---> sdio_set_block_size()|---> mmc_io_rw_direct()|---> fail---> sdio_release_host()|---> rtw_reset_continual_io_error()|---> ATOMIC_SET()	|---> fail---> devobj_deinit()
|---> devobj_trx_resource_init()|---> rtw_init_lite_xmit_resource()|---> _rtw_init_queue()   /* init lite_xmit_buf */ /* Init lite xmit extension buff */ /* init xmit_urb */|---> rtw_zvmalloc()|---> _rtw_init_listhead()|---> rtw_list_insert_tail()|---> rtw_init_lite_recv_resource()|---> _rtw_init_queue()   /* init int_in_buf */ /* Init int_in_urb */ |---> rtw_zvmalloc()|---> _rtw_init_listhead()|---> rtw_list_insert_tail()|---> rtw_init_recv_priv()|---> _rtw_init_sema()|---> _rtw_init_queue()|---> rtw_os_recv_resource_init()|---> rtw_zvmalloc()|---> _rtw_init_listhead()|---> rtw_list_insert_tail()|---> rtw_os_recv_resource_alloc()|---> rtw_intf_init_recv_priv()|---> rtw_init_cmd_priv()|---> init_completion()|---> init_completion()|---> INIT_LIST_HEAD()|---> spin_lock_init()
|---> rtw_hw_init()|---> rtw_phl_init()|---> _os_mem_alloc()|---> _os_mem_set()|---> phl_regulation_init()|---> _os_spinlock_init()  --- 这些都是空函数,不知道有没有影响|---> phl_regu_policy_init()|---> _os_spinlock(); --- 这些都是空函数,不知道有没有影响|---> _regu_policy_5g_bp_init()|---> _reset_regu_policy_5g_bp()|---> _update_cntry_prop_5g_bp("CN")|---> _update_cntry_prop_5g_bp("IL")|---> _os_spinunlock(); --- 这些都是空函数,不知道有没有影响|---> phl_com_init()|---> _os_mem_alloc()|---> phl_sw_cap_init()|---> _os_spinlock_init()|---> phl_chsw_ofld_info_init()|---> phl_fw_init()|---> phl_chaninfo_init()|---> _phl_com_init_rssi_stat()|---> _phl_com_init_ppdu_sts()|---> _os_spinlock_init()|---> phl_txpwr_regu_info_init() |---> phl_hci_init()|---> _os_mem_alloc()|---> phl_set_hci_ops()|---> phl_get_hci_type()|---> phl_hook_trx_ops_pci()|---> or phl_hook_trx_ops_usb()|---> or phl_hook_trx_ops_sdio()|---> _phl_hci_ops_check();|---> phl_twt_init()|---> _os_mem_alloc()|---> _os_mem_set()|---> pq_init()|---> phl_acs_info_init()|---> _os_mem_alloc()|---> _os_mem_set()|---> rtw_hal_init()|---> _os_mem_alloc()|---> hal_init_io_priv() fail ---> hal_deinit_io_priv()|---> rtw_hal_mac_init() fail ---> rtw_hal_mac_deinit()|---> hal_set_ops()|---> rtw_hal_efuse_init() fail ---> rtw_hal_efuse_deinit()|---> rtw_hal_bb_init() fail ---> rtw_hal_bb_deinit()|---> rtw_hal_rf_init() fail ---> rtw_hal_rf_deinit()|---> rtw_hal_btc_init() fail ---> rtw_hal_btc_deinit()|---> hal_bcn_init()|---> fail ---> _os_mem_free()|---> rtw_hal_hci_cfg()|---> hal_get_ops()|---> rtw_hal_read_chip_info()/* 3 6. read efuse/eeprom data */|---> hal_get_ops()|---> rtw_hal_var_init()|---> rtw_hal_set_default_var()|---> hal_csi_init()|---> hal_bf_init()|---> hal_snd_obj_init()|---> phl_var_init()|---> return RTW_PHL_STATUS_SUCCESS; -- 空函数,直接返回成功|---> phl_mr_ctrl_init()|---> rtw_hal_get_halcom()|---> _os_spinlock_init()|---> _phl_band_ctrl_init()|---> _phl_role_bk_module_init()|---> _os_mem_set()|---> pq_init()|---> rtw_phl_mcc_init()|---> phl_module_init()|---> phl_msg_hub_init() ---> phl_msg_hub_deinit()|---> phl_wow_mdl_init() ---> phl_wow_mdl_deinit()|---> phl_pkt_ofld_init() ---> phl_pkt_ofld_deinit()|---> phl_test_module_init()|---> phl_p2pps_init() ---> phl_p2pps_deinit()|---> phl_disp_eng_init() ---> phl_disp_eng_deinit()|---> phl_register_background_module_entry()|---> phl_ecsa_ctrl_init()|---> phl_macid_ctrl_init()|---> rtw_hal_get_halcom()|---> _os_spinlock_init()|---> phl_stainfo_ctrl_init()|---> phl_to_sta_ctrl()|---> _os_mem_alloc()|---> pq_init()|---> _phl_stainfo_init()|---> phl_stainfo_enqueue()|---> fail ---> phl_stainfo_ctrl_deinit()|---> phl_mld_ctrl_init()|---> phl_to_mld_ctrl()|---> _os_mem_alloc()|---> pq_init()|---> _phl_mld_init()|---> phl_mld_enqueue()|---> fail ---> phl_mld_ctrl_deinit()|---> rtw_core_update_default_setting()/*init sw cap from registary*/|---> GET_PHL_INFO()|---> rtw_phl_log_level_cfg()  -- debug 等级|---> rtw_load_phy_file_path()|---> BW_MODE_2G()|---> BW_MODE_5G()|---> is_supported_5g()|---> is_supported_6g()|---> rtw_max()|---> ch_width_to_bw_cap()|---> rtw_phl_pcie_trx_mit_cfg() -- bs用不上,be用|---> rtw_phl_led_set_ctrl_mode()|---> rtw_phl_cap_pre_config() /* sw & hw cap*/|---> rtw_hal_fw_cap_pre_config()|---> rtw_hal_bus_cap_pre_config()|---> _hal_bus_cap_pre_decision()|---> rtw_phl_init_ppdu_sts_para()|---> /* Forced disable PSTS for DATA frame, to avoid unknown performance issue */|---> rtw_phl_trx_alloc()|---> phl_datapath_init()|---> fail ---> phl_datapath_deinit()|---> rtw_core_set_phl_ops()   -- ops 赋值|---> rx_process = rtw_core_rx_process;|---> tx_recycle = rtw_core_tx_recycle;|---> indicate_wake_rsn = rtw_core_wow_handle_wake_up_rsn;|---> wow_handle_sec_info_update = rtw_update_gtk_ofld_info;|---> set_rf_state = rtw_core_set_ips_state;|---> issue_null_data = rtw_core_issu_null_data;|---> os_query_local_buf = rtw_os_query_local_buf;|---> os_return_local_buf = rtw_os_return_local_buf;|---> tx_power_tbl_loaded = rtw_core_tx_power_tbl_loaded;|---> rtw_core_register_phl_msg()|---> core_handler_phl_msg()|---> rtw_phl_msg_hub_register_recver()|---> rtw_phl_msg_hub_update_recver_mask()|---> rtw_phl_preload()|---> rtw_hal_preload()|---> phl_datapath_reset()|---> rtw_phl_final_cap_decision()|---> rtw_hal_final_cap_decision()|---> rtw_core_register_mr_config()|---> rtw_phl_mr_ops_init()|---> phlcom_to_mr_ctrl|---> rtw_phl_mcc_init_ops|---> rtw_core_register_p2pps_ops()|---> rtw_phl_p2pps_init_ops()|---> phl_to_p2pps_info()|---> rtw_core_set_ecsa_ops()|---> rtw_phl_ecsa_init_ops()|---> rtw_dump_rfe_type()|---> RTW_INFO("RFE Type: %d\n");|---> rtw_phl_watchdog_init()|---> _os_init_timer()|---> fail ---> rtw_hw_deinit()
|---> rtw_sdio_primary_adapter_init()  -- 只有bs有,这是sdio的,be不用这个函数|---> rtw_zvmalloc()|==== dbg_rtw_zvmalloc((sz), MSTAT_TYPE_VIR, __FUNCTION__, __LINE__)|---> rtw_load_registry()  // struct registry_priv {} 参数定义在这里 drivers/net/wireless/realtek/rtl8852bs/include/drv_types.h|---> chip_version|---> rfintfs|---> lbkmode|---> network_mode  -- 设置模式, 可能和AP有关|---> _rtw_memcpy  -- SSID|---> band|---> channel|---> wireless_mode|---> band_type|---> rtw_init_drv_sw() /* 3 7. init driver common data */|---> rtw_init_default_value()|---> rtw_init_hal_com_default_value()|---> rtw_init_cmd_priv() fail ---> rtw_free_cmd_priv()|---> rtw_init_evt_priv() fail ---> rtw_free_evt_priv()|---> rtw_init_mlme_priv()|---> init_mlme_ext_priv()  fail ---> free_mlme_ext_priv() rtw_free_mlme_priv()|---> _rtw_init_xmit_priv() fail ---> _rtw_free_xmit_priv()|---> _rtw_init_recv_priv() fail ---> _rtw_free_recv_priv()|---> _rtw_init_sta_priv()|---> rtw_init_bcmc_stainfo()|---> rtw_init_pwrctrl_priv()|---> rtw_hal_dm_init()|---> rtw_hw_get_mac_addr() /* get mac addr */|---> rtw_hw_get_mac_addr()|---> rtw_macaddr_cfg() /* set mac addr */|---> ether_addr_copy()|---> is_broadcast_ether_addr()|---> is_zero_ether_addr()|---> of_get_property()|---> eth_random_addr()|---> fail ---> rtw_vmfree()
|---> rtw_adapter_link_init()|---> init_adapter_link()|---> rtw_zvmalloc()|---> rtw_init_link_default_value()|---> rtw_init_link_mlme_priv()|---> rtw_init_link_mlme_ext_priv()|---> fail ---> rtw_vmfree()|--->  fail ---> rtw_adapter_link_deinit()
|---> devobj_data_init()|---> dev_set_drv_stopped() /*init*/|---> ATOMIC_SET(&dvobj->bDriverStopped, _TRUE);|---> dev_clr_hw_start() /* init */|---> ATOMIC_SET(&dvobj->hw_start, _FALSE);|---> rtw_rfctl_init() /*init data of dvobj*/|---> dvobj_to_regsty()|---> dvobj_to_rfctl()|---> dvobj_get_primary_adapter()|---> rtw_rfctl_get_band_and_bw_bmp()|---> rtw_rfctl_addl_ch_disable_conf_init()|---> rtw_regd_req_list_init()|---> rtw_rfctl_cis_init()|---> rtw_rfctl_dfs_init()|---> rtw_chset_init()|---> rtw_rfctl_op_class_pref_init()|---> devobj_decide_init_chplan()|---> dvobj_to_rfctl()|---> GET_PHL_COM()|---> rtw_rfctl_decide_init_chplan() /*Use hardware(efuse), driver parameter(registry) and default channel plan*	to decide which one should be used.*/|---> rtw_get_chplan_from_country()|---> rtw_is_channel_plan_6g_valid()|---> dvobj_to_regsty()|---> rtw_get_chplan_worldwide()|---> rtw_chplan_rtk_priv_domain_code_get_country_chplan()|---> rtw_regd_req_list_insert()|---> rtw_rfctl_regd_status_init_by_req()|---> rtw_edcca_mode_update()|---> edcca_mode_5g 赋值|---> edcca_mode_6g 赋值|---> rtw_edcca_mode_update_by_regd_reqs()|---> rtw_edcca_hal_update()|---> rtw_rfctl_chset_apply_regulatory()|---> band_to_band_cap()|---> rtw_rfctl_is_excl_chs()|---> rtw_rfctl_chset_apply_regd_reqs()|---> rtw_rfctl_reg_allow_beacon_hint()|---> rtw_chinfo_allow_beacon_hint()|---> op_class_pref_apply_regulatory()|---> RFCTL_REG_EN_11AC()|---> rtw_rfctl_get_reg_max_txpwr_mbm()|---> rtw_get_center_ch_by_band()|---> rtw_get_op_chs_by_bcch_bw()|---> rtw_chset_search_bch()|---> init_channel_list()|---> adapter_to_rfctl()|---> adapter_to_regsty()|---> adapter_to_chset()|---> rtw_chset_search_ch()|---> REGSTY_IS_BW_5G_SUPPORT()|---> rtw_hw_cap_init()|---> GET_HAL_SPEC()|---> GET_PHL_COM()|---> dvobj_get_primary_adapter()|---> rtw_min()|---> RTW_ENABLE_FUNC(DF_RX_BIT)|---> ATOMIC_READ|---> df &= ~(func_bit);|---> ATOMIC_SET|---> RTW_ENABLE_FUNC(DF_TX_BIT)
|---> rtw_os_ndevs_init()|---> rtw_os_ndevs_alloc()|---> rtw_cfg80211_dev_res_alloc()|---> rtw_os_ndev_alloc()|---> fail ---> rtw_os_ndev_free()|---> fail ---> rtw_cfg80211_dev_res_free()|---> rtw_os_ndevs_register()|---> dvobj_to_regsty()|---> rtw_cfg80211_dev_res_register()|---> rtw_os_ndev_register()  : wlan0 |---> fail ---> rtw_os_ndev_unregister()|---> fail ---> rtw_os_ndevs_free()
|---> rtw_init_link_capab()|---> init_link_capab_from_adapter()|---> GET_LINK()|---> _rtw_memcpy()|---> is_supported_5g()|---> is_supported_6g()
|---> rtw_sdio_alloc_irq()|---> dvobj_to_sdio()|---> sdio_claim_host()|---> sdio_claim_irq()|---> sdio_release_host()
|---> init_adapter_link()|---> rtw_zvmalloc()|---> adapter_mac_addr()|---> _rtw_memcpy()|---> rtw_init_link_default_value()|---> rtw_init_link_mlme_priv()|---> rtw_init_link_mlme_ext_priv()

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • PLM选型指南:如何选择适合自己企业的系统?
  • 解析capl文件生成XML Test Module对应的xml工具
  • Python面试题:结合Python技术,讲解如何使用OpenCV进行图像处理与计算机视觉任务
  • 平安养老险陕西分公司:反保险欺诈案例(二)——打击保险欺诈,守护金融安全
  • 跨境电商做独立站你需要考虑的几个问题
  • 在线考试系统产品源码功能架构与技术解析
  • IDEA报错无效的目标发行版:17
  • c#中的正则表达式和日期的使用(超全)
  • spring的三级缓存与源码分析--解决循环依赖
  • 内衣洗衣机怎么选?五款超耐用内衣洗衣机推荐!
  • 金牌挑战——奥运知识大比拼
  • 【C语言】程序环境,预处理,编译,汇编,链接详细介绍,其中预处理阶段重点讲解
  • 全球汽车用MEMS加速度计市场规划预测:未来六年CAGR为2.8%
  • STM32ADC
  • Java中的抽象类和接口区别
  • 【译】理解JavaScript:new 关键字
  • Android系统模拟器绘制实现概述
  • CoolViewPager:即刻刷新,自定义边缘效果颜色,双向自动循环,内置垂直切换效果,想要的都在这里...
  • Create React App 使用
  • ES6 ...操作符
  • java第三方包学习之lombok
  • jquery cookie
  • mac修复ab及siege安装
  • MySQL几个简单SQL的优化
  • nodejs调试方法
  • npx命令介绍
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 分布式事物理论与实践
  • 聊聊hikari连接池的leakDetectionThreshold
  • 突破自己的技术思维
  • 为视图添加丝滑的水波纹
  • 以太坊客户端Geth命令参数详解
  • Java总结 - String - 这篇请使劲喷我
  • 翻译 | The Principles of OOD 面向对象设计原则
  • ​ 轻量应用服务器:亚马逊云科技打造全球领先的云计算解决方案
  • ​Kaggle X光肺炎检测比赛第二名方案解析 | CVPR 2020 Workshop
  • ​ssh免密码登录设置及问题总结
  • ​第20课 在Android Native开发中加入新的C++类
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • # Panda3d 碰撞检测系统介绍
  • # 计算机视觉入门
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • (1)bark-ml
  • (2015)JS ES6 必知的十个 特性
  • (6)【Python/机器学习/深度学习】Machine-Learning模型与算法应用—使用Adaboost建模及工作环境下的数据分析整理
  • (ZT)薛涌:谈贫说富
  • (三)uboot源码分析
  • (十三)MipMap
  • (五十)第 7 章 图(有向图的十字链表存储)
  • (转)ABI是什么
  • (自用)gtest单元测试
  • *** 2003