QCA9880/QCA9882 and QCA9070 M.2 SCAN Radio andWiFi Modules In-Depth

As wireless communication systems become increasingly complex, wireless modules are evolving rapidly to meet the demands of different application scenarios. Qualcomm, a leading player in WiFi technologies, has launched a variety of powerful wireless modules. This article focuses on the QCA9070 M.2 SCAN Radio and the QCA9880/QCA9882 WiFi modules, analyzing their architectural roles, technical features, hardware designs, and practical applications to help engineers and product managers better understand their positions within wireless systems.

1. Product Positioning and Design Purpose

QCA9070 M.2 SCAN Radio

The QCA9070 is a specialized SCAN radio module that uses the M.2 interface. It is not designed for data transmission but instead serves functions such as wireless environment scanning, spectrum monitoring, interference detection, and rapid background scanning. These capabilities are often used in enterprise WiFi systems for smart RF management (RRM), automatic channel allocation, and wireless security systems such as WIDS/WIPS.

QCA9880/QCA9882 WiFi Modules

The QCA9880 and QCA9882 are conventional WiFi modules intended for data access. Based on Qualcomm's 802.11ac Wave 1 platform, they support 3x3 and 2x2 MIMO configurations respectively. These modules are commonly used in mid-to-high-end routers, access points, and embedded devices for high-speed WiFi access, hotspot coverage, and point-to-point communications.

2. Technical Specifications and Architectural Differences

FeatureQCA9070 SCAN RadioQCA9880QCA9882
Primary UseWireless scanning, monitoring, interference detectionWiFi access, data transmissionWiFi access, data transmission
Protocol SupportSupports 802.11a/b/g/n/ac (monitoring only)802.11ac Wave 1802.11ac Wave 1
MIMO ConfigurationNot used for MIMO data transfer3x3 MIMO2x2 MIMO
InterfaceM.2 Key A/EMini PCIeMini PCIe
Antenna InterfaceUsually single or 2x2 monitor chains3x32x2
Supported Bands2.4GHz / 5GHz2.4GHz / 5GHz2.4GHz / 5GHz
Special FunctionsBackground scanning, spectrum analysis, WIDS/WIPS monitoringHigh-speed data transferHigh-speed data transfer

3. Hardware Implementation Differences

The QCA9070 uses an M.2 Key A/E interface and a compact form factor, making it ideal for embedded systems or AP boards where it can be used as an auxiliary module to enhance situational awareness. It typically operates in a low-power mode suited for continuous environmental monitoring.

In contrast, the QCA9880 and QCA9882 are standard Mini PCIe modules, with higher power consumption and heat output. They integrate full MAC and PHY components and are designed for high-throughput and stable WiFi connectivity.

4. Typical Application Scenarios

  • QCA9070:

    • RF scanning modules in enterprise wireless controllers
    • Wireless intrusion detection/prevention systems (WIDS/WIPS)
    • Automatic channel planning and load balancing
    • Smart antenna alignment systems
  • QCA9880/QCA9882:

    • Enterprise/home routers and high-performance APs
    • Wireless mesh network nodes
    • Embedded WiFi communication modules
    • High-speed transmission in surveillance and remote streaming systems

5. Conclusion

Although the QCA9070 M.2 SCAN Radio and the QCA9880/QCA9882 modules belong to Qualcomm’s wireless module family, they are built for very different purposes. The QCA9070 focuses on “listening and sensing,” while the QCA9880 and QCA9882 focus on “transmitting and connecting.” For wireless solution designers, intelligently combining scan modules and communication modules can greatly enhance system stability, intelligence, and security.

make[7]: Entering directory '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/qca/src/linux-5.4' CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_defer.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_func_tracker.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_dev.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_event.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_file.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_list.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_lock.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_mc_timer.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_mem.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_crypto.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_module.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_net_if.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_nbuf.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_nbuf_frag.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_perf.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_status.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_threads.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_trace.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_vfs.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_delayed_work.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/src/qdf_flex_mem.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/src/qdf_parse.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/src/qdf_str.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/src/qdf_types.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/src/qdf_platform.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../cmn_dev/utils/nlink/src/wlan_nlink_srv.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/src/qdf_debug_domain.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/src/qdf_tracker.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_debugfs.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_hrtimer.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_time.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/linux/src/qdf_streamfs.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_devcfg.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_vbus_dev.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_notifier.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_devnode.o CC [M] /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.o /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c: In function 'qal_bond_create': /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c:30:9: error: implicit declaration of function 'bond_create_mlo'; did you mean 'bond_create'? [-Werror=implicit-function-declaration] return bond_create_mlo(net, name, (struct mlo_bond_info *)mlo_info); ^~~~~~~~~~~~~~~ bond_create /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c:30:9: error: return makes pointer from integer without a cast [-Werror=int-conversion] return bond_create_mlo(net, name, (struct mlo_bond_info *)mlo_info); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c: In function 'qal_bond_destroy': /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c:56:9: error: implicit declaration of function 'bond_destroy_mlo'; did you mean 'bond_destroy_sysfs'? [-Werror=implicit-function-declaration] return bond_destroy_mlo(bond_dev); ^~~~~~~~~~~~~~~~ bond_destroy_sysfs /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c: In function 'qal_bond_get_mlo_ctx': /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c:64:9: error: implicit declaration of function 'bond_get_mlo_ctx'; did you mean 'qal_bond_get_mlo_ctx'? [-Werror=implicit-function-declaration] return bond_get_mlo_ctx(bond_dev); ^~~~~~~~~~~~~~~~ qal_bond_get_mlo_ctx /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.c:64:9: error: return makes pointer from integer without a cast [-Werror=int-conversion] return bond_get_mlo_ctx(bond_dev); ^~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors scripts/Makefile.build:297: recipe for target '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.o' failed make[9]: *** [/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf/../../component_dev/qal/linux/src/qal_bond.o] Error 1 scripts/Makefile.build:532: recipe for target '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf' failed make[8]: *** [/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux/../../cmn_dev/qdf] Error 2 Makefile:1737: recipe for target '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux' failed make[7]: *** [/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux] Error 2 make[7]: Leaving directory '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/qca/src/linux-5.4' Makefile:70: recipe for target 'all' failed make[6]: *** [all] Error 2 make[6]: Leaving directory '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/os/linux' Makefile:245: recipe for target 'driver_build' failed make[5]: *** [driver_build] Error 2 make[5]: Leaving directory '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1' Makefile:653: recipe for target '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/.built' failed make[4]: *** [/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/build_dir/target-aarch64/linux-ipq95xx_generic/qca-wifi-12.1-unified-profile/qca-wifi-12.1/.built] Error 2 make[4]: Leaving directory '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/qca/feeds/qca/net/qca-wifi' time: package/feeds/qca/qca-wifi/unified-profile/compile#8.90#2.40#11.48 package/Makefile:130: recipe for target 'package/feeds/qca/qca-wifi/compile' failed make[3]: *** [package/feeds/qca/qca-wifi/compile] Error 2 make[3]: Leaving directory '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1' package/Makefile:126: recipe for target '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/staging_dir/target-aarch64/stamp/.package_compile' failed make[2]: *** [/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/staging_dir/target-aarch64/stamp/.package_compile] Error 2 make[2]: Leaving directory '/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1' /home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1/include/toplevel.mk:256: recipe for target 'world' failed make[1]: *** [world] Error 2 make[1]: 离开目录“/home/tp/workfile/be95/iplatform/board/model_qca_wifi7/sdk/12.1” Makefile:298: recipe for target 'world' failed make: *** [world] Error 2 这个报错怎么回事?
10-23
这个报错是 **在编译 QCA WiFi 驱动时出现的编译错误**,具体发生在 `qal_bond.c` 文件中。主要错误信息如下: ``` error: implicit declaration of function 'bond_create_mlo'; did you mean 'bond_create'? error: return makes pointer from integer without a cast ``` --- ## 🔍 错误分析 ### 1. **函数未声明(implicit declaration)** ```c bond_create_mlo bond_destroy_mlo bond_get_mlo_ctx ``` 这些函数在 `qal_bond.c` 中被调用,但编译器没有找到它们的声明或定义。 这说明: - 这些函数可能在某些头文件中未被正确包含。 - 或者对应的实现文件没有被编译进项目。 - 或者这些函数在当前内核版本或 SDK 中不支持。 --- ### 2. **返回值类型不匹配(pointer from integer)** ```c return bond_create_mlo(...); ``` 编译器认为 `bond_create_mlo()` 返回的是一个整数(int),但代码试图把它作为指针返回,说明函数返回类型定义不一致或函数不存在。 --- ## 📌 常见原因 ### ✅ 原因一:SDK 与内核版本不匹配 你正在编译的是 QCA WiFi 驱动(`qca-wifi-12.1-unified-profile`),它依赖 Linux 内核模块(`linux-5.4`)。如果 SDK 中的某些接口(如 MLO bonding)是为更高版本内核设计的,但在 `linux-5.4` 中未实现或接口不一致,就会导致此类错误。 ### ✅ 原因二:缺少必要的补丁或配置 - 可能需要打某些补丁才能启用 MLO(Multi-Link Operation)功能。 - 或者 SDK 的配置没有启用相关功能,导致函数未定义。 ### ✅ 原因三:代码本身有缺陷或版本问题 - 如果你使用的是某个开发分支或未发布的 SDK 版本,可能这些函数尚未实现或存在拼写错误。 - 例如:`bond_create_mlo` 应该是 `bond_create` 的别名或替代函数,但未被正确定义。 --- ## ✅ 解决方案 ### ✅ 方法一:确认 SDK 和内核版本兼容性 - 查看 SDK 文档,确认它是否支持 `linux-5.4`。 - 如果不支持,请更换为 SDK 推荐的 Linux 内核版本(如 `linux-5.10` 或更高)。 ### ✅ 方法二:检查是否启用 MLO 功能 在编译前的配置阶段(如 `make menuconfig` 或 `.config` 文件)中确认是否启用了 MLO 支持: ```ini CONFIG_MLO_SUPPORT=y ``` 如果没有启用,尝试开启后再编译。 ### ✅ 方法三:手动注释或替换未定义函数(临时方案) 如果你暂时不需要 MLO 功能,可以尝试注释掉或替换这些函数调用: #### 示例修改 `qal_bond.c`: ```c // 原代码 return bond_create_mlo(net, name, (struct mlo_bond_info *)mlo_info); // 修改为(仅作测试) return bond_create(net, name, 0); // 使用旧函数替代 ``` ⚠️ 注意:这只是临时绕过错误,可能影响功能。 ### ✅ 方法四:检查补丁或更新 SDK - 确保你使用的是官方发布的稳定版本。 - 检查是否有补丁(patch)需要打到 SDK 中。 - 有时 Gerrit 上会有修复补丁。 --- ## 🧪 如何确认函数是否存在? 你可以搜索整个 SDK 源码目录: ```bash find . -type f -name "*.c" -o -name "*.h" | xargs grep -l "bond_create_mlo" ``` 如果找不到任何定义,说明函数缺失。 --- ## ✅ 总结 | 问题 | 原因 | 解决方法 | |------|------|-----------| | `bond_create_mlo` 未定义 | SDK 与内核版本不匹配 | 更换为兼容的内核 | | 函数未声明 | 头文件缺失或未启用功能 | 检查配置或包含头文件 | | 返回值类型错误 | 函数原型定义不一致 | 查看函数定义或注释临时代码 | | SDK 本身问题 | 代码缺陷或未打补丁 | 更新 SDK 或打补丁 | ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值