在这篇文章中,我们将讨论高通 WLAN 驱动程序中的对象管理器模块(Object Manager)。

代码位置如下:
https://github.com/WANG-Guangxin/wlan-driver/tree/5113495b16420b49004c444715d2daae2066e7dc/qca-wifi-host-cmn/umac/cmn_services/obj_mgr

主要数据结构

在整个 WLAN 驱动程序中,对象管理器模块主要负责管理 3 个对象:

  1. psoc(Physical System on Chip)
  2. pdev(Physical Device)
  3. vdev(Virtual Device)

他们之间的关系如下已经在开篇图中有所展示。

在全局的 wlan_objmgr_global 对象中包括了有一个 psoc 的指针数组,在每个psoc 对象中又包括了一个 soc_objmgr 对象,这个对象中包括了一个 pdev 的指针数组,和一个 vdev 的指针数组。

每一个 pdev 对象中又包括了一个 pdev_objmgr 对象,这个对象中包括了一个 psoc 的指针,指向了当前 pdev 对象所属的 psoc 对象。

每一个 vdev 对象中又包括了一个 vdev_objmgr 对象,这个对象中包括了一个 pdev 的指针,指向了当前 vdev 对象所属的 pdev 对象。

在整个 WLAN 驱动程序中,几乎所有的配置、状态信息都会附加在这些对象上来进行管理。