
STATUS_BUFFER_DONE tlv written in first word for a status buffer indicates that DMA is done for that status ring entry. In existing implementation, for a status ring entry if STATUS_BUFFER_DONE tlv is not written by HW, we poll on to status ring entry until DMA is done by HW. During lmac reset it may happnen that HW will not write STATUS_BUFFER_DONE tlv in status buffer, in that case we end up polling infinitely leading to backpressure on monitor status ring. As per MAC team's suggestion, when HP + 1 entry is peeked and if DMA is not done and if HP + 2 entry's DMA done is set, replenish HP + 1 entry and start processing in next interrupt. If HP + 2 entry's DMA done is not set, poll onto HP + 1 entry DMA done to be set. CRs-Fixed: 2740988 Change-Id: Ieef667f0bb4a47e74fc320c93243c637409f47f0
The below qca6290 and qca8074 folder has c files defining functions and structures to hold target specific definitions to handle differences between chips with respect to hal. Please ensure changes get applied to all platform specific files if the fixes are generic and applicable to all the folders. qca6290 hal_6290_rx.c - rx related target specific function hal_6290_srng_table.c - holds hw srng table and hal hw reg offsets array hal_6290_tx.c - tx related target specific function qca8074 hal_8074_rx.c - rx related target specific function hal_8074_srng_table.c - holds hw srng table and hal hw reg offsets array hal_8074_tx.c - tx related target specific function