BestComm BD tasks, buffer done flag question
From: Roman Fietze <hidden>
Date: 2010-03-19 08:15:59
Hello, I'm using Grant's platform SCLPC/BestComm driver to transfer data from an FPGA (to disk). Very often I get a negative result from bcom_buffer_done because BCOM_BD_READY is not set. When searching for a solution I found this mail from Rob Broersen talking about a similar promlem in the MPC5200's FEC interrupt handler: http://www.mail-archive.com/linuxppc-dev@lists.ozlabs.org/msg16324.html When I now do something ugly like if (!bcom_buffer_done(lpbfifo->bcom_cur_task)) mdelay(1); /* retry */ if (!bcom_buffer_done(lpbfifo->bcom_cur_task)) { ERROR!!! return IRQ_HANDLED; } HANDLE BD in the ISR I always succeed, even in the cases where the first check fails and I call the mdelay. Before that I very often ran into the ERROR!!! case and my transfer "failed". Is there a better solution? Does the FEC interrupt handler really work fine as it is right now? I ask, because when I assume that there would be just one active DB (as it always is with the SCLPC platform driver) this one would evt. stall if there wasn't a second interrupt causing the loop to handle it in this second interrupt. Roman =2D-=20 Roman Fietze Telemotive AG B=FCro M=FChlhausen Breitwiesen 73347 M=FChlhausen Tel.: +49(0)7335/18493-45 http://www.telemotive.de