Raja Mani <rmani@xxxxxxxxxxxxxxxx> writes: > Host memory required for firmware is allocated while handling > wmi service ready event. Right now, wmi service ready is handled > in tasklet context and it calls dma_alloc_coherent() with atomic > flag (GFP_ATOMIC) to allocate memory in host needed for firmware. > The problem is, dma_alloc_coherent() with GFP_ATOMIC fails in > the platform (at least in AP platform) where it has less atomic > pool memory (< 2mb). QCA99X0 requires around 2 MB of host memory > for one card, having additional QCA99X0 card in the same platform > will require similarly amount of memory. So, it's not guaranteed that > all the platform will have enough atomic memory pool. > > Fix this issue, by handling wmi service ready event in workqueue > context and calling dma_alloc_coherent() with GFP_KERNEL. mac80211 work > queue will not be ready at the time of handling wmi service ready. > So, it can't be used to handle wmi service ready. Also, register work > gets scheduled during insmod in existing ath10k_wq and waits for > wmi service ready to completed. Both workqueue can't be used for > this purpose. New auxiliary workqueue is added to handle wmi service > ready. > > Signed-off-by: Raja Mani <rmani@xxxxxxxxxxxxxxxx> I haven't reviewed this yet, but noticed a new warning: drivers/net/wireless/ath/ath10k/wmi.c:3881:6: warning: symbol 'ath10k_wmi_event_service_ready_work' was not declared. Should it be static? -- 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