On 09/14/2015 09:56 AM, rhubarbpieguy@xxxxxxxxx wrote:
I'm attempting to load iwlwifi-3160 firmware. It works only if I build the following drivers as modules. Intel Wireless WiFi Next Gen AGN - Wireless-N/Advanced-N/Ultimate Intel Wireless WiFi MVM Firmware Support If I compile them into the kernel the firmware is not found. This is my first experience with firmware. Does firmware require drivers built as modules? I see nothing at https://wireless.wiki.kernel.org/en/users/drivers/iwlwifi stating modules must be used.
No, having firmware does not require the driver to be a module; however, user space may cause a problem.
To load firmware, the user-space portions needed to read a file must be running. If the driver is a module *not in the initrd image*, then one is assured that a file can be loaded as those routines were used to get the driver file. For the case where the driver is built-in, it is possible for a synchronous request_firmware() call to timeout before user space is ready to deliver the file. The safe way is to request an asynchronous load of at least the first firmware file using request_firmware_nowait(). When the load completes, the callback routine will set a completion event with all other operations held until that event is set.
Note that iwlwifi is correctly coded. It does load a second firmware file synchronously, but only after the first one is available.
The built-in driver will also fail unless the dependent drivers are also built in, but the kernel build process should take care of that.
The bottom line is that I do not know why your system is failing. It should work. (TM) :)
Larry -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html