Driver load:
====>qcacld:
hdd_driver_load()
wlan_hdd_register_driver()
pld_register_driver()
pld_pcie_register_driver()
=====>cnss2:
// ?????spin_lock_irqsave ??wlan_genoa_pcie.ko??data ?wlan_cnss_core_pcie.ko??
cnss_wlan_register_driver()
cnss_driver_event_post() ====> ?? queue_work(plat_priv->event_wq, &plat_priv->event_work); ??cnss_driver_event_work
cnss_driver_event_work()
cnss_bus_register_driver_hdlr()
cnss_pci_register_driver_hdlr()
cnss_pci_dev_powerup()
cnss_qca6290_powerup()
cnss_pci_start_mhi()
cnss_wlfw_fw_init_done_ind_cb() ---- CNSS_DRIVER_EVENT_FW_READY
cnss_bus_call_driver_probe()
cnss_pci_call_driver_probe() ===> driver_state=23 ??CNSS_DRIVER_LOADING ,??cnss_wlan_driver????
pci_priv->driver_ops->probe ??????????struct cnss_wlan_driver pld_pcie_ops??
pld_pcie_probe????
=======>HDD:
pld_pcie_probe()
wlan_hdd_pld_probe()
hdd_soc_probe()
__hdd_soc_probe()
hdd_context_create() ===> 分配和初始化 HDD context . 主要结构体是 struct hdd_context -hdd shared driver and psoc/device context,供hdd_wlan_startup() - HDD init function初始化使用。
hdd_wlan_startup() ====> HDD init function,启动struct hdd_context hdd_ctx 结构体内容,包括ieee80211,mac_address,phy,等
hdd_wlan_start_modules()
======> HIF:
hdd_hif_open() ====> ??HIF(Host Interface , Abstracts the hardware interface (PCI, USB, SDIO)???????)??
hif_open() ===>hif_bus_open() ??? pci?????
hif_enable()
hif_enable_bus() ===> hif_pci_enable_bus()
hif_hal_attach()
hif_bus_configure() ===> hif_pci_bus_configure() configure the pcie bus
cds_open() ===> Connectivity driver services. All the WLAN SW components should have been opened. This includes
SYS, MAC, SME, WMA and TL.
wma_open()
wmi_unified_attach()
cds_pre_enable()
wma_wait_for_ready_event() ===> FW ready event received
=====> HDD:
hdd_wiphy_init()
wlan_hdd_cfg80211_register()
wiphy_register()
register_netdevice()
========================================
FTM wlan log的控制在 hdd_context_create()函数中,hdd_set_wlan_logging(hdd_ctx);