> wcn36xx implements a ring buffer for transmitted frames for each > (high and low priority) DMA channel. The ring buffers are lockless: > new frames are inserted at the head of the queue, while finished > packets are reaped from the tail. > > Unfortunately, the list manipulations are missing any kind of barriers > so are susceptible to various races: for example, a TX completion > handler might read an updated desc->ctrl before the head has actually > advanced, and then null out the ctl->skb pointer while it is still > being used in the TX path. > > Simplify things here by adding a spin lock when traversing the ring. > This change increased stability for me without adding any noticeable > overhead on my platform (xperia z). > > Signed-off-by: Bob Copeland <me@xxxxxxxxxxxxxxx> Thanks, applied to wireless-drivers-next.git. Kalle Valo -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html