wifi6 Linux driver - Intel ax201 wifi driver - 2 - pcie/drv.c 認卡

繼 前篇 Dell Inspiron 7490 安裝 Linux kernel


接下來來玩 Intel ax201 Linux wifi driver
可以參考之前寫的這篇 - Intel ax201

https://www.intel.com/content/www/us/en/support/articles/000005511/network-and-io/wireless-networking.html

1. Firmware:
https://wireless.wiki.kernel.org/_media/en/users/drivers/iwlwifi/iwlwifi-qu-48.13675109.0.tgz

copy 到 /lib/firmware 底下即可

2. Driver

4.14 附的是 2016 年的, 還沒有支援 ax 201, 官網建議用 Linux v5.2 以上的.
下載了 Linux v5.4 source code, 在 drivers//net/wireless/intel 底下有 iwlwifi,
也正好 這台 目前只能用 v4.15 以前的 Linux kernel, 剛好可以用來比對學習.

====

一天一小步 pcie/drv.c 認卡

lspci -k 時可以看到

    00:14.3 Network controller: Intel Corporation Device 02f0
                 Subsystem: Intel Corporation Device 4070

在 pcie/drv.c 中
struct pci_device_id iwl_hw_card_ids
{IWL_PCI_DEVICE(0x02F0, 0x4070, iwl_ax201_cfg_quz_hr)},


而 iwl_ax201_cfg_quz_hr 定義在 cfg/22000.c
這方式倒值得學習, 每個 IC 設定 cfg, 宣告在各自 cfg/ 的 .c 檔案

所以得加入檔案, 並在 Makefile 也加入

iwlwifi-$(CONFIG_IWLMVM) += cfg/7000.o cfg/8000.o cfg/9000.o cfg/a000.o cfg/22000.o

( 可以檢查一下 /usr/src/linux-4.14.156/.confg
  應該CONFIG_IWLMVM=m )

接下來可以在 /usr/src/linux-4.14.156 下, 打 sudo make modules
並開始修 compile error

...

修完後保險起見, 可以做 sudo make modules_install
也可以不做, 直接 rmmod iwlwifi ; 然後 insmod 新的 iwlwifi.ko file. 

--
(1) DRV_DESCRIPTION
我們可以修改這行內容, 這樣 insmod 就會先看到是否是自己修改的
iwl-drv.c

#define DRV_DESCRIPTION    "Intel(R) Wireless WiFi driver for Linux - 20191129-1"

(2) 我們可以在 pcie/drv.c::iwl_pci_probe() 一開始, 加入
      pr_info("%s enter\n", __func__);
     執行如果認到卡, 整個程式會從  iwl_pci_probe() 開始跑起. 


一樣 同上 make modules 編譯, 在該 iwlwifi 目錄下會產生 iwlwifi.ko
rmmod iwlwifi / insmod iwlwifi.ko 來執行

另外注意, 如果出現
iwlwifi: Unknown symbol ieee80211_channel_to_frequency (err 0)
iwlwifi: Unknown symbol ieee80211_hdrlen (err 0) 
表示 cfg80211 module 還沒載入, 可以執行
modprobe cfg80211

--
執行結果: 

Intel(R) Wireless WiFi driver for Linux - 20191129-1
Copyright(c) 2003- 2015 Intel Corporation
iwlwifi: iwl_pci_probe Enter
iwlwifi 0000:00:14.3: enabling device (0000 -> 0002)

不過如預期的後面在 probe 出現 bug 了, 應該還有些變數還沒整合進來. 

BUG: Unable to handle Kernel NULL pointer deference at ...
IP: iwl_trans_pcie_alloc+0xf7/0xc60 [iwlwifi]

接續: https://njiot.blogspot.com/2019/12/wifi6-linux-driver-intel-ax201-wifi.html





留言

熱門文章