Freescale iMX6 throughput problem description:
Test driver version: 1.88.10(make flag: dhd-cdc-sdmmc-gpl-debug for debug driver and dhd-cdc-sdmmc-gpl for release driver)
Test firmware version: 5.90.192.26.2 for BCM4330/ 6.10.58.74 for BCM4334
Test platform: Freescale iMX6(kernel 3.0.35)/x86 PC(kernel 3.2.47)(For comparison to iMX6 with the same driver source code)
Test SDIO clock rate: 20/40MHz
Test EVB: BCM4330(For comparison to BCM4334 with the same driver source code), BCM4334
Test application: iperf
Test command: "iperf -s" for Rx and "iperf -c 192.168.0.xxx -t 30 -i2" for Tx
Results comment:
Comparing to BCM4330 or BCM4334 on x86 PC, BCM4334 on iMX6 throughput test results present an abnormally low performance with TCP/IP Error found from Wifi sniffer at RX mode.
Test results(in shielding room):
20MHz SDIO clock rate:
HOST | Chip/Driver type | Direction | BCM4334 Throughput | BCM4330 Throughput | ||
/release | /debug | /release | /debug | |||
x86 PC | BCM4330/release | Tx | 24 |
| 20.1 |
|
Freescale iMX6 | BCM4330/release | 0.8 | 31.9 | 32.3 | 32.1 | |
x86 | BCM4330/release | Rx | 26.5 |
| 27.1 |
|
Freescale iMX6 | BCM4330/release | *TCP/IP Error | 7.76 | 33 | 33 |
HOST | Chip/Driver type | Direction | BCM4334 Throughput | BCM4330 Throughput | ||
/release | /debug | /release | /debug | |||
x86 PC | BCM4330/release | Tx | 24 |
| 20.1 |
|
BCM4330/release | Rx | 26.5 |
| 27.1 |
| |
Freescale iMX6 | BCM4330/release | Tx | 0.8 | 31.9 | 32.3 | 32.1 |
BCM4330/release | Rx | *TCP/IP Error | 7.76 | 33 | 33 |
40MHz SDIO clock rate:
HOST | Chip/Driver type | Direction | BCM4334 Throughput | BCM4330 Throughput | ||
/release | /debug | /release | /debug | |||
x86 PC | BCM4330/release | Tx | 43.4 |
| 40.2 |
|
Freescale iMX6 | BCM4330/release | 0.7 | 12.1 | 42.1 | 42.1 | |
x86 | BCM4330/release | Rx | 45.7 |
| 39.8 |
|
Freescale iMX6 | BCM4330/release | *TCP/IP Error | 7.9 | 41.7 | 41.5 |
HOST | Chip/Driver type | Direction | BCM4334 Throughput | BCM4330 Throughput | ||
/release | /debug | /release | /debug | |||
x86 PC | BCM4330/release | Tx | 43.4 |
| 40.2 |
|
BCM4330/release | Rx | 45.7 |
| 39.8 |
| |
Freescale iMX6 | BCM4330/release | Tx | 0.7 | 12.1 | 42.1 | 42.1 |
BCM4330/release | Rx | *TCP/IP Error | 7.9 | 41.7 | 41.5 |
*TCP/IP Error: TCP/IP connection hand-shaking can't be completed by firmware.
MMC host driver debug message catching
The MMC host driver debug messages for release and debug version on PC and iMX6 with 20MHz clock rate are catched. Please refer to attached file.
File name and envrionment:
1. x86_dmesg_rel
a.BCM4334
b.BCM release driver
c.20MHz SDIO clock rate
d.x86 PC
2. x86_dmesg_debug
a.BCM4334
b.BCM debug driver
c.20MHz SDIO clock rate
d.x86 PC
3. arm_dmesg_rel
a.BCM4334
b.BCM release driver
c.20MHz SDIO clock rate
d.Freescale iMX6
4. arm_dmesg_debug
a.BCM4334
b.BCM debug driver
c.20MHz SDIO clock rate
d.Freescale iMX6
Original Attachment has been moved to: arm_dmesg_rel.txt.zip
Original Attachment has been moved to: 4330_arm_dmesg_debug.zip
Original Attachment has been moved to: arm_dmesg_debug.txt.zip
Original Attachment has been moved to: x86_dmesg_rel.txt.zip
Original Attachment has been moved to: x86_dmesg_debug.txt.zip
Hi, MaxTsai and Yising Kong,
Thanks for your reply. These days, I tried using out-of-band irq as the SDIO_HOST_WAKE and the BCM4334 throughput become much better. Furthermore, when I use some other modules with the same driver, error message in sdio_irq.c, "
printk(KERN_DEBUG "%s: error %d reading SDIO_CCCR_INTx\n", will be triggered continuously. Do you have any suggestion or method to debug the error on SDIO irq?
hi Johnny,
You have a IRQ handler to handle the out-of-band irq from BCM4334, right?
If so, the SDIO IRQ should be disable without sdio_claim_irq.
The following is a reference.
http://permalink.gmane.org/gmane.linux.kernel.wireless.general/89892
Regards,
Max
Hi, MaxTsai,
Thanks for your reply. Here I summarize the test results listed following:
1. BCM4334
Not using out-of-band irq from BCM4334 -> Abnormally low throughput.
Using out-of-band irq from BCM4334 -> Normal throughput.
2. BCM4330
Not using out-of-band irq from BCM4334 -> Normal throughput
3. BCM43241
Not using out-of-band irq from BCM4334 -> Normal throughput but keep triggering "printk(KERN_DEBUG "%s: error %d reading SDIO_CCCR_INTx\n".
Thus, I would like to check if the SDIO IRQ functionality in mmc host driver works fine or not? Do you have any suggestion or method to debug the error on SDIO IRQ in mmc host driver?
Best regards,
Johnny.
You can enable debug message of MMC. For example, add "#define DEBUG" into drivers/mmc/core/core.c or other drivers/mmc/core/*.c, and enable "CONFIG_MMC_DEBUG".
By the way, does BCM4334 & BCM43241 need SDIO clock always on, to generate SDIO interrupt?
If so, the following patch to disable SD clock gated is for refernce.
Disable SD clock gated off for i.MX6
Also, BCM4334 or BCM43241 work by SDIO2 or SDIO3? Kernel 3.0.35 didn't support SDIO3 well.
Regards,
Max
Dear Max,
I got the same error message when BCM4334 detached, like "dhdsdio_dpc: failed backplane access over SDIO, halting operation". The worse is we cannot reattach BCM4334 successful after that. Problem with BCM4334 Wifi on i.MX6 Do you think diable the SDIO clock gated is a help? Of course, I will give it a try and feedback tomorrow.
Thanks
Paul
Hi, MaxTsai,
Thanks for your reply. The throughput of BCM4334 becom normal after keeping outputing SDIO clock.
Best regards,
Johnny.
hi Johnny,
I didn't get the point. Is my understanding correct below?
1. Are you using Freescale i.MX6 reference board (like i.MX6Q SabreSD)?
2. BCM4330 and BCM4334 are SDIO module, so you are testing by the SD slot of Freescale reference board?
3. For BCM4334 with Freescale reference board, there is RX TCP error and low throughput of TX.
4. For BCM4330 with Freescale reference board, the performance is good.
Regards,
Max
Hi, MaxTsai,
Your four comment is what we want to express. About your question, here is my comment.
1. We are using Freescale i.MX6 reference board SDP(iMX6q with touch panel).
2. We are using mmc1 sdio port on i.MX6 reference board SDP.
Best regards,
Johnny.
Can I have arm_dmesg_debug log of BCM4330?
Hi, MaxTsai,
I have upload "arm_dmesg_debug log of BCM4330" named 4330_arm_dmesg_debug attached to main article. Please check it.
Best regards,
Johnny.
hi Johnny,
I find no error message or cues from HOST MMC driver, but I see the message from BCM4334 driver.
There is no this kind message from BCM4330 driver. Suggest you debug from BCM4334 driver.
--
max@max-desktop:~/samba/tmp/WiFi$ gr dhd 01129640088083_arm_dmesg_rel.txt
3493:<4>DHD: dongle ram size is set to 524288(orig 524288) at 0x0
6455:<4>dhd_wlfc_init(): successfully enabled bdcv2 tlv signaling, 79
8127:@<4>dhdsdio_dpc: failed backplane access over SDIO, halting operation !
max@max-desktop:~/samba/tmp/WiFi$ gr dhd 01129640088099_arm_dmesg_debug.txt
3861:<4>DHD: dongle ram size is set to 524288(orig 524288) at 0x0
3989:<4>dhd_attach(): thread:dhd_watchdog_thread:cd0 started
3990:<4>dhd_attach(): thread:dhd_dpc:cd1 started
3991:<4>dhd_attach(): thread:dhd_sysioc:cd2 started
6872:<4>dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
7013:<4>dhd_bus_init: enable 0x06, ready 0x06 (waited 0us)
7750:<4>dhd_wlfc_init(): successfully enabled bdcv2 tlv signaling, 79
14757:<4>dhdsdio_dpc: failed backplane access over SDIO, halting operation
14758:<4>dhd_detach(): thread:dhd_sysioc:cd2 terminated OK
14759:<4>dhd_detach(): thread:dhd_watchdog_thread:cd0 terminated OK
14760:<4>dhd_detach(): thread:dhd_dpc:cd1 terminated OK
---
Regards,
Max
Hi, MaxTsai,
Thanks for your reply. I found the error message, "dhdsdio_dpc: failed backplane access over SDIO, halting operation" appears when Broadcom Wifi driver will be removed and this message showing no matter I use x86/PC or arm/iMX6q. Do you have any comment on this test report and debug messages? Or, any other method to analyze this problem?
Best regards,
Johnny.
Johnny
Does Max's explanation help you in resolving your issue? If yes, please click Correct Answer/Helpful Answer, otherwise please keep exchanging emails with him. We would like to close the discussion if no activity in 3 days.
Thanks,
Yixing
hi Johnny,
I only see "dhdsdio_dpc: failed backplane access over SDIO, halting operation" from the log files for BCM4334, and it does occur before terminating dhd driver. No cues from SDIO host driver, to debug by WiFi driver above SDIO host driver is a workable way. To check if there is resend event, or if any error/warning event from WiFi driver. That should help.
Regards,
Max
BTW, according to your test result, BCM4334 debug version gets better performance than release version. Can you check if there is different configuration of driver debug mode?
Hi, MaxTsai,
I will upload "arm_dmesg:debug" log of BCM4330 later. On the other hand, i have compare the difference between release and debug drivers and found that debug driver will read Wifichip firmware message through SDIO periodically.
Best regards,
Johnny.