>> We "read-and-clear" RXDP on hw_nic_reset (actually we do that for any
>> pending register writes -we need to ensure that all pending register
>> writes are complete by doing a DMA register read, docs suggest RXDP
>> and that's what we are doing on nic_reset, we need to change that
>> comment-) and restore it on ath5k_reset but RXDP/TXDP pointers
>> according to docs should stay unaffected by warm resets and RXDP is
>> not reported as read and clear (it shouldn't be because we read it on
>> rx_tasklet and we still have rx) so we don't need to re-initialize
>> them (eg. we should remove hw_set_rxdp from ath5k_rx_start when called
>> by ath5k_reset) . On the other hand MadWiFi/ath reinitialize rxdp and
>> i remember that some binary driver i checked (Mikrotik or ubnt) also
>> saves and restores TXDP pointers on hw_reset. So i don't know who is
>> wright, docs or other drivers...

I just did a debug session with Robert and RXDP is NULL after reset. So 
it needs to be set again. Furthermore, there's a mistake here :

- We printed RXDP just after ath5k_rx_stop / before ath5k_rx_start
- In the first case, it happens that the first descriptor has the Done 
bit set and RXDP is indeed pointing to the second descriptor
- In the second case, what we do in ath5k_rx_start is that we clear the 
Done bit and then we set RXDP to the first descriptor again.

So, i see too mistake :
- we should set RXDP to the first "not done" descriptor
- we should not reset "Done" descriptor

However, I don't see how it could trigger the bug Robert mentioned.

Thoughts?

Regards,
Benoit
_______________________________________________
ath5k-devel mailing list
ath5k-devel@lists.ath5k.org
https://lists.ath5k.org/mailman/listinfo/ath5k-devel

Reply via email to