>> ? Udev has been the standard way to service kernel firmware requests for
>> quite some time. The relevant bit is in
>> /lib/udev/rules.d/50-firmware.rules .
> Ok so that must be working on my laptop (automatically, i didn't
> configure anything) but failing on my desktop.
>
>> However, udevd is only started after the kernel is loaded, and therefore
>> will only load firmware for drivers which are built as modules.
> I tried compiling as a module, and it still failed. I'll go back and
> verify I haven't made a mistake, then check firmware.rules.
>

it does not actually matter how you configured the driver -- built-in kernel or
as module: everytime when driver operates the device, it checks whether firmware
is loaded. if it does not or the firmware is not preloaded at kernel build time
as a blob, the driver requests for firmware. the request is a generated kernel
event which is handled in userspace by udev. the udev daemon processes event
using mentioned above rule. the rule is trivial -- it starts a firmware loader
utility (/lib/udev/firmware) with parameters passed within the event: device
name and firmware file path. appropriate status is returned back to kernel and
dispatched to the driver

in your case the status is -2 (ENOENT) so it could be problem with either
firmware blob file or firmware loader itself. functionality of
/lib/udev/firmware is controlled by USE=extras. did you installed udev with
"extras" support?

again, firmware load is udev responsibility. you may diagnose all the stuff
enabling udev debug output in /etc/udev/udev.conf

finally i confirm that r8169 driver works fine on my notebook with 2.6.39 kernel

Reply via email to