>> 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