wifi6 Linux driver - Intel ax201 wifi driver - 4 - firmware

續前篇: intel ax201 pcie/probe 認卡

發生:
no suitable firmware found!
minimum version required: iwlwifi-QuZ-a0-hr-b0-39
maximum version supported: iwlwifi-QuZ-a0-hr-b0-50

Intel 官網上 所下載的  iwlwifi-Qu-48.13675109.0.tgz
並沒有這個 firmware, 但可以從 linux-firmware 這個 github 得到. 

這相關程式是在 
iwl_drv_start() -> iwl_request_firmware() 中

--
IS_ERR() 判斷是看是否這 ptr 值 >= -MAX_ERRNO(4095) , 也就是 0xFFFFF001
這相關的定義在 linux/err.h

這是因為 Linux 內核分配, 0~3G 是 用戶空間, 3G~4G 是 內核空間,
而在這0xFFFF001之後的大小只有 4K 不到, 而一個 page size 至少是 4K.
所以可以用這方式 判斷這個值並非指標值, 而是 error number.

回傳時可以用 ERR_PTR() 直接轉換成 (void *) 指標值即可.
而轉回 errno 也很容易, 可以用 PTR_ERR() 轉回 long 型態即可.

--
這問題並非發生在 iwl_request_firmware 的回傳值, (0)
而是在 callback function, 所以我們會先看到 probe function 做完, 然後才是 callback function 的訊息.

request_firmware_nowait(THIS_MODULE, 1, drv->firmware_name,
       drv->trans->dev,
       GFP_KERNEL, drv, iwl_req_fw_callback);

--

設定 cpu 的 affinity : irq_set_affinity_hint


接下來乾脆先把 fw/ 底下先都換到  kernel 5.4 的 iwlwifi.
解決 compile error 中....


留言

熱門文章