Michal Kazior <michal.kazior@xxxxxxxxx> writes: > Workers may not call into a sleepable function > (e.g. mutex_lock). Since ath10k workers can run > for a very long time it is necessary to explicitly > allow process rescheduling in case there's no > preemption. > > This fixes some issues with system freezes, hangs, > watchdogs being triggered, userspace being > unresponsive on slow host machines under heavy > load. I consider this more as a workaround as a real fix. Would NAPI be a proper fix for issues like this? NAPI support was removed from mac80211 six months ago, but I guess we could try to get it back if we have a good reason: http://marc.info/?l=linux-wireless&m=136204135907491 > --- a/drivers/net/wireless/ath/ath10k/htt_rx.c > +++ b/drivers/net/wireless/ath/ath10k/htt_rx.c > @@ -1229,6 +1229,10 @@ static void ath10k_htt_rx_work(struct work_struct *work) > break; > > ath10k_htt_rx_process_skb(htt->ar, skb); > + > +#ifndef CONFIG_PREEMPT > + cond_resched(); > +#endif Why the #ifndef? Why should we not call cond_resched() when PREEMPT is enabled? Does something negative happen then? -- 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