I have a problem with FEC on a custom board with cpu imx6q.
The problem is occured after upgrading the kernel from imx git kernel 3.10.17 to 3.10.31 or 3.10.53 .
FEC throughput at small packets(64Bytes) increased nearly %50 after kernel upgrade, so I want to use the new kernel for the performance reasons.
My problem is :
Under heavy traffic at 64 bytes packets, after a while the fec stops receiveing packets. The transmit seems ok. The only interrupts are MII. There is no RXF interupts.
There is no any error on by examinig error registers.
When I looked at the RDAR register it is 0, means FEC stops putting frames to rings beacuse all the rings seems to be full, indeed they are not full.
If I manually set RDAR bit to 1 the receive operations starts to operate.
I looked the patches from 3.10.17 to 3.10.31 but couldnt find any reason why I dont see the problem at kernel version 3.10.17.
Any help is appreciated.
Best regards.
Hi Sedat
seems similar problem was repoerted on
also one can look at ethernet tuning on
About Gigabit Ethernet performance gap between Android&Linux
Best regards
igor
Hi Igor,
Thank you very much for the links.
I will look at them.
Best regards.
I'd suggest looking at newer versions of the relevant files in both Freescale and Mainline trees.
There may be a patch that explicitly mentions and fixes this problem.
There must be some change that explains the "50% higher data rate" that is linked to (or the direct cause of) your problem.
I looked through the tree for one of the 3.14 branches and came across this. I don't know if this patch went in before or after the version you're using, but this is the sort of thing I'd look for:
linux-2.6-imx.git - Freescale i.MX Linux Tree
This patch fixes "a NAPI race condition that results in lost interrupts" and doesn't seem to be in 3.10.53 at least.
That may not be it but is the sort of thing I'd look for, preferably in a complete download of Freescale's tree so you can check the patches to "fec.c" (or whatever file is causing problems) at every release.
Other drivers have had problems with the multiple cores running the driver code. Can you run as a single core or bind the FEC to a single core and see if the problem goes away?
Tom
Hi Tom,
Thank you very much for your reply. Instead of applying patches one by one I will backport the complete fec driver from latest imx kernel to my kernel 3.10.17.
After I complete the test i will write the results here.
And also i was confused about which git tree to use boundry devices or freescale imx git. They seems different at least for fec driver.
Best regards.