[OpenWrt-Devel] Why OpenWrt sucks?

Zefir Kurtisi zefir.kurtisi at neratec.com
Tue Mar 10 05:22:48 EDT 2015

On 03/09/2015 11:28 PM, David Lang wrote:
> On Mon, 9 Mar 2015, José Vázquez wrote:
>> OpenWRT is a linux distro oriented to networking so the kernel and
>> drivers are important, but you must not forget that the init process
>> (procd and related after AA) is one of the cores of this distro and
>> makes it work. The most relevant packages are oriented to networking,
>> but with the feeds you can make anything that you want, making it very
>> versatile.
>> Also we must take in mind that OpenWRT works with GPL drivers and code
>> (only few are proprietary); I think that one of the main advantages of
>> use them is that anybody can contribute, and IMHO, are easy to
>> maintain.
>> One of the performance penalties come with the network drivers: while
>> proprietary drivers are tightly coupled with the hardware, the drivers
>> developed by OpenWRT guys and collaborators should not be so
>> "complicated" because when the kernel version is changed they can
>> generate a lot of problems and headaches, while more "generic" drivers
>> do not take advantage of all the hardware features, overloading the
>> cpu with tasks that in stock firmwares are managed by specific
>> subsystems that are faster for those specific tasks.
> there is no reason why the open drivers need to be slower than the proprietary
> ones. History has shown that with sufficient information, the open drivers end up
> being as fast, or faster than the proprietary ones. But it does take time and
> cooperation with the manufacturer to do this with the latest hardware.
At least for ath9k I can confirm that - if there is a performance disadvantage to
the closed source reference driver at all - it is not because it is closed or
keeps information secret. In fact, beside some very specific functions not useful
for the common user, all relevant information from the reference driver already
found its way into ath9k.

With that, if there is a performance gap, it is because of the difference in
architecture. Compared to the mac80211-ath9k combo, QCA's reference drivers are
almost monolithic (ok, there is a mac and a hal, but with as much cross-layer
optimizations as possible) and that is where you gain some speed percentage.

This gives at least two sources for optimization for the reference driver: 1) save
inter-layer processing overhead (passing commands from hostapd directly to HW is
cheaper than passing it through 4 layers), and 2) vastly reduce locking when you
are in full control of concurrency.

Depending on the chip architecture used, the second factor is good for up to 10%
of performance gap - which still is a low price for having a generalized
multi-layer architecture with maximum flexibility over a highly optimized specialist.

> Open drivers can be modified along with the kernel to take advantage of the newest
> features in the kernel. Proprietary drivers are either written for one specific
> kernel, or with a shim layer that limits how well the driver can work with future
> kernels.
> David Lang
> _______________________________________________
> openwrt-devel mailing list
> openwrt-devel at lists.openwrt.org
> https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel
openwrt-devel mailing list
openwrt-devel at lists.openwrt.org

More information about the openwrt-devel mailing list