On 25.04.19 09:15, C Smith wrote:
Hi Jan,
Your patch worked somewhat but not completely. It prevents my app from stalling
forever, but I caugh the serial transmission itself stalling on the oscilloscope
for quite a long time. My 72 byte TX packet from the xenomai periodic task gets
cut in half and there is no transmission for 7msec, then the transmission
resumes. (I'll send you a screenshot)
What is driver and application state during that phase? Who is waiting on what?
This will be the key to resolve that issue as I'm not yet seeing another mistake
in the driver.
(Note that I am on xeno 2.6.5 so I merged your 3.x patch above into 16550A.c
manually.)
I'm currently doing a 12 hour test of your patch plus mine. In my patch I check
during every RX interrupt to see if I need to call rt_16550_tx_fill() too. I
know that doesn't work for others but my traffic is full duplex so this test
will tell us something if it works and maybe we can ultimately get the same
behavior without my hack.
Also, I made the /.rx_timeout/.tx_timeout /change Jeff found, and it had the
obvious effect. I can make a patch for xeno 2.6.5 if you want. But I'll point
out that this fix may break peoples code functionally, so it may be a bad idea
to fix it on 2.x. Older code was written with a dependence on a truly different
timeout. It broke my app to fix this because there was suddenly a new unexpected
timeout. What's your policy on this issue?
The 2.6 repo won't be touched anymore, it's officially dead. If course, you can
share your patch on the list in case there are other remaining users.
Jan
--
Siemens AG, Corporate Technology, CT RDA IOT SES-DE
Corporate Competence Center Embedded Linux