iwlwifi(AC9260)移植总结

因为项目需求,要将产品的wifi型号由AC8265升级为AC9260。我们当前项目平台的内核版本为3.9.109,而AC9260要求的最低内核版本为3.14.04。于是我下载了一个3.14的长期支持版本--3.14.79,准备基于这个版本把iwlwifi模块移植到3.9内核上。

下面是移植过程中记录的一些细节:

1. 相关文件

(1)9260的固件

        iwlwifi-9260-th-b0-jf-b0-34.ucode

(2)iwlwifi数据结构涉及到的相关头文件

        kernel/include/net/cfg80211.h

        kernel/include/linux/ieee80211.h

        kernel/include/net/mac80211.h

        kernel/include/uapi/linux/nl80211.h

        kernel/include/linux/skbuff.h

(3)网络子系统相关文件

        kernel/net/mac80211/agg-rx.c

        kernel/net/mac80211/mlme.c

        kernel/net/wireless/nl80211.c

        kernel/net/mac80211/rx.c

(4)iwlwifi驱动模块

        kernel/drivers/net/wireless/intel/iwlwifi/*

 

2. 移植方法

        刚开始移植的时候,想过几种方式。先试过直接升级整个网络子系统,后来发现涉及到数据结构变化太大,修改的地方太多,工作量巨大,因此放弃了这种方式。

        后来想着先将头文件数据结构差别部分同步完,这样iwlwifi驱动模块就可以成功编译。这种方式虽然可行,但是仍然不是最简化的方式,因为和网络子系统相关的头文件数据结构很多,有些iwlwifi用到了,有些没有用到。

        为了进一步减少移植工作量,在同步数据结构的时候进行了更有针对性的移植。比较数据结构有差异的时候,先搜索iwlwifi是否用到了这个数据结构,如果有用到,就移植过去,如果没有用到就跳过。另外,网络子系统交互流程有些变化,旧版本和新版本的处理方式其实都可以生效,只是过程有些变化。

(1)关于数据结构定义

        新旧版本往往结构体成员、枚举变量成员的名称或者成员个数不一样,移植的时候需要遵循以下原则:

        a. 求同存异

        当旧版本和新版本表示同一个意思的成员变量名称不一样时,为了兼容现有版本的驱动和适用新版本驱动,旧版本名称应保持不变,然后新增适用于新版本的名称。这样的话,成员变量会变多,虽然有些变量在功能上可能重复了,但是兼容性更好了。

        b. 以少服多

        当某个变量是子系统多处共用的,而当前模块使用的名称不一致。并且该子系统全局变量值的改变又影响当前移植模块的处理结果,那么应该将移植的当前模块中所有该不一致变量名称替换为子系统所使用的变量名。

(2)关于函数接口

        当新旧版本函数接口参数不一致时,可以先定义新函数接口以保持参数一致,然后在新接口里面使用旧接口的内容,这样就可以规避数据格式(参数个数、参数类型、参数格式等)不一致导致的编译不通过问题。

       

 

根据引用内容,您在Ubuntu 18.04上遇到了iwlwifi问题。iwlwifi是Intel无线网卡的驱动程序。根据引用\[1\]中的描述,您在Ubuntu 18.04的桌面右上角下拉菜单中没有找到Wifi设置参数选项,并且在设置中Wi-Fi模块提示找不到wifi适配器。 为了解决这个问题,您可以尝试以下步骤: 1. 首先,根据引用\[2\]中的描述,您可以下载并安装最新的内核。使用以下命令升级内核: ``` sudo dpkg -i linux-* ``` 2. 接下来,您可以尝试安装无线网卡驱动。根据引用\[2\]中的描述,您可以使用以下命令下载驱动: ``` git clone https://github.com/intel/backport-iwlwifi.git ``` 3. 进入下载好的文件夹,并执行以下命令进行配置、编译和安装: ``` cd backport-iwlwifi sudo make defconfig-iwlwifi-public sudo make sudo make install ``` 4. 最后,您还可以尝试更新Linux固件。使用以下命令克隆固件库: ``` git clone git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git ``` 请注意,这些步骤仅供参考,并且可能因系统配置和硬件差异而有所不同。如果问题仍然存在,建议您查阅相关的技术文档或咨询技术支持以获取更详细的帮助。 #### 引用[.reference_title] - *1* *3* [安装Ubuntu18.04后没有WIFI参数设置图标,无法连接wifi](https://blog.csdn.net/m0_68158707/article/details/130720017)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [ubuntu18.04安装网卡驱动](https://blog.csdn.net/qq_44957977/article/details/127318439)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值