I have a custom i.MX28 board with a SDIO wifi chip attached. Using iperf I noticed a much lower data throughput on Linux mainline 4.7 (5Mbit/sec) compared to the legacy vendor Kernel 2.6.35 (20Mbit/sec).
I think, the difference is that legacy Linux implements a polling mode, you can find it by the reference ENGR0015175 which is missing in the mainline kernel.
I know that mainline Linux is not officially supported, however the vendor kernel did not receive any updates for several years!
Please be so kind and add this missing feature to mainline Linux :smileyhappy:.
I got the PIO mode working for the mxs-mmc driver. For this I ported the PIO code from the vendor kernel and removed the usage of the DMA engine entirely.
Testing network bandwidth with iperf, I get about ~10Mbit/sec with PIO mode compared to ~6.5Mbit/sec with DMA mode for UDP and about ~6.5Mbit/sec compared to ~4.5Mbit/sec with DMA mode for TCP.
Hello Jörg Krause,
I would suggest looking at the kernels available for the i.MX28 as part of the Community BSP (link below). This BSP is maintained by the community and it is part of the Yocto Project so it gets updated with some regularity. Please note that this BSP is not officially supported by NXP but you may raise questions in the Community.
Many thanks for the link to the community BSP. Unfortunately, this BSP does not have the optimization, too.
Sadly, it looks like NXP leaves the maintenance for the i.MX28 completely to the community.