Hi everyone: i'm trying to migrate the ath5k to VxWorks 6.7. The target is to realize the basic rx & tx function on the VxWorks, with the Atheros AR5414a card.
Now, the card can be successfully initialized and i can send or receive 10 packets. The problem is, i found that it only can receive about 20 packets, and then it will stop the rx. i added the logMsg() in the ath5k_tasklet_rx() and proc_rx_status() functions(in the VxWorks, i use the jobqueue instead of the tasklet mechanism in Linux). And i found that after receiving about 20 packets, it would be failed when checking the "done" bit of the rx descriptor again and again(sometimes just once, sometimes up to 30+ times). except the rxdp check failure, it also would be failed at the position of "bail if HW is still using self-linked descriptor" , again and again, too. i compared the different of the performance, between the ath5k under Linux and my migration code under the Vxworks. I found that, under Linux, it wil deal with just one packet in one tasklet after a RXOK interrupt, as follow: intr | ath5k_tasklet_rx | (in the while loop) deal with the packet and meet a "rxdp bail" | another intr or tasklet But in the VxWorks, it will deal couples of packets in one tasklet(a job in the job queue, exactly), as follow: intr, intr, intr(about 20 intrs, if send 100 packets) | ath5k_tasklet_rx | (in the while loop) deal with the packet deal with the packet deal with the packet .........(about 30 packets received if send 100 packets) and meet a "done" bit not set, or a "rxdp bail" | stopped I guess that in the VxWorks, the job queue is scheduled much slowly than the tasklet under Linux. So couples of interrupts come before the first schedule of job queue happened. And when they met a "done" bit not set or a "rxdp bail", the while() loop break, while no interrupt to make the job(ath5k_tasklet_rx) scheduled. So i added the "self schedule" in the ath5k_tasklet_rx, but no positive. So can anyone give any suggestions? And any discussion will be appreciated. Thank you very much! BTW: i disabled the cache under the VxWorks because i doubted that it was introduced by cache problem while doing the DMA issues. -- Best wishes Jack.B
_______________________________________________ ath5k-devel mailing list ath5k-devel@lists.ath5k.org https://lists.ath5k.org/mailman/listinfo/ath5k-devel