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

Reply via email to