2016-08-25 11:26:52

by Lobachevskii Vitalii

[permalink] [raw]
Subject: rtl8192ce

Hello,

The RTL8192CE device seems to work fine without any firmware, so you may
make it fully optional, removing dependency on FW_LOADER. Of course that
require some patching, but if I understood the driver internals
correctly, simple complete(&rtlpriv->firmware_loading_complete); would
be enough when firmware loading machinery is unavailable, that is, when
request_firmware_nowait returns -EINVAL (currently that may only happen
in improperly configured or patched kernels, like Linux-libre; see
attached messages for more information)

Of course I will try to fix Linux-libre “deblobbing” technique, as it
should never break anything that may work without a firmware. But
anyway, if a device and its driver may work without a certain kernel
feature, that feature should not be selected, I think.

Lobachevskii Vitalii


Attachments:
Attached Message (1.29 kB)
Attached Message (3.42 kB)
Download all attachments

2016-08-25 15:00:17

by Larry Finger

[permalink] [raw]
Subject: Re: rtl8192ce

On 08/25/2016 08:17 AM, Jes Sorensen wrote:
> Lobachevskii Vitalii <[email protected]> writes:
>> Hello,
>>
>> The RTL8192CE device seems to work fine without any firmware, so you may
>> make it fully optional, removing dependency on FW_LOADER. Of course that
>> require some patching, but if I understood the driver internals
>> correctly, simple complete(&rtlpriv->firmware_loading_complete); would
>> be enough when firmware loading machinery is unavailable, that is, when
>> request_firmware_nowait returns -EINVAL (currently that may only happen
>> in improperly configured or patched kernels, like Linux-libre; see
>> attached messages for more information)
>>
>> Of course I will try to fix Linux-libre “deblobbing” technique, as it
>> should never break anything that may work without a firmware. But
>> anyway, if a device and its driver may work without a certain kernel
>> feature, that feature should not be selected, I think.
>
> The realtek devices all require firmwere to operate correctly,
> including the 8192c series. There are a bunch of commands flying back
> and forth between the driver and the firmware.
>
> If your device happens to work without loading the firmware then you
> have an old firmware blob loaded.
>
> At least this is the case for the USB version of the device, and I find
> it highly unlikely the PCIe version is any different.
>
> Trying to remove the firmware loading error is just plain silly.

I have not bothered my Realtek contacts with such a question, but I have a
plausible explanation. If an RTL8192CE functions without loading external
firmware, it is because the device has minimal function built in the default
firmware. Mostly this rudimentary firmware is used to boot the device and to
download the firmware for complex wireless communication. Rudimentary wifi
functions would be needed for wake-on-lan operations. The fact that Realtek has
never implemented WOL for the 8192C chips is highly suggestive that they do not
function very well in that capacity.

If the RTL8192CE actually runs without loading external firmware, then I am
quite sure that it will be restricted to 802.11g at the most, and more likely
802.11b. If it handles any 802.11n capabilities, then that firmware will
certainly not have any of the bug fixes applied to the firmware since the
earliest release.

You are certainly allowed to configure your system any way you want, but please
do not send any such "fixes" to the kernel sources. They will NEVER be accepted!

Configuring a kernel without firmware loading capacity is indeed silly.

Larry

2016-08-25 15:13:46

by Jes Sorensen

[permalink] [raw]
Subject: Re: rtl8192ce

Larry Finger <[email protected]> writes:
> On 08/25/2016 08:17 AM, Jes Sorensen wrote:
>> Lobachevskii Vitalii <[email protected]> writes:
>> The realtek devices all require firmwere to operate correctly,
>> including the 8192c series. There are a bunch of commands flying back
>> and forth between the driver and the firmware.
>>
>> If your device happens to work without loading the firmware then you
>> have an old firmware blob loaded.
>>
>> At least this is the case for the USB version of the device, and I find
>> it highly unlikely the PCIe version is any different.
>>
>> Trying to remove the firmware loading error is just plain silly.
>
> I have not bothered my Realtek contacts with such a question, but I
> have a plausible explanation. If an RTL8192CE functions without
> loading external firmware, it is because the device has minimal
> function built in the default firmware. Mostly this rudimentary
> firmware is used to boot the device and to download the firmware for
> complex wireless communication. Rudimentary wifi functions would be
> needed for wake-on-lan operations. The fact that Realtek has never
> implemented WOL for the 8192C chips is highly suggestive that they do
> not function very well in that capacity.
>
> If the RTL8192CE actually runs without loading external firmware, then
> I am quite sure that it will be restricted to 802.11g at the most, and
> more likely 802.11b. If it handles any 802.11n capabilities, then that
> firmware will certainly not have any of the bug fixes applied to the
> firmware since the earliest release.
>
> You are certainly allowed to configure your system any way you want,
> but please do not send any such "fixes" to the kernel sources. They
> will NEVER be accepted!
>
> Configuring a kernel without firmware loading capacity is indeed silly.

Makes perfect sense, but as you also correctly point out, it means the
device actually is running some firmware, but we have no idea what state
or version it is. Trying to run a device with this level of firmware is
both risky and makes it hard to rely on correct operation.

Of course it also makes this whole ostrich process even more pointless,
since the device is in fact running firmware - pretending it isn't is
just silly.

One more thing, yes you can apply this patch to your own degraded
kernel, but if you ship it, kindle remove ALL email addresses of any
driver authors in it. None of us wants to waste our time on bug reports
because of this.

If you truly want to run your system without firmware, I hear there are
great bargains for NE2000 and 3c501 cards on ebay :)

Jes

2016-08-25 13:33:07

by Jes Sorensen

[permalink] [raw]
Subject: Re: rtl8192ce

Lobachevskii Vitalii <[email protected]> writes:
> Hello,
>
> The RTL8192CE device seems to work fine without any firmware, so you may
> make it fully optional, removing dependency on FW_LOADER. Of course that
> require some patching, but if I understood the driver internals
> correctly, simple complete(&rtlpriv->firmware_loading_complete); would
> be enough when firmware loading machinery is unavailable, that is, when
> request_firmware_nowait returns -EINVAL (currently that may only happen
> in improperly configured or patched kernels, like Linux-libre; see
> attached messages for more information)
>
> Of course I will try to fix Linux-libre “deblobbing” technique, as it
> should never break anything that may work without a firmware. But
> anyway, if a device and its driver may work without a certain kernel
> feature, that feature should not be selected, I think.

The realtek devices all require firmwere to operate correctly,
including the 8192c series. There are a bunch of commands flying back
and forth between the driver and the firmware.

If your device happens to work without loading the firmware then you
have an old firmware blob loaded.

At least this is the case for the USB version of the device, and I find
it highly unlikely the PCIe version is any different.

Trying to remove the firmware loading error is just plain silly.

Jes