Jeff Garzik wrote:
James Ketrenos wrote:
Given the API mac80211 exposes, and how the stack operates, I don't
see how using ifsta->work as the workqueue allows the driver to no
longer evaluate the potential for deadlocks and races.
For the operations in the workqueue, they are obviously serialized.
And the inverse is also true -- operations not on the workqueue are not serialized. The driver must handle both.
To make the most use of the processing and power resources available,
you must execute in parallel.
That's some impressive English parsing, but clearly wrong on the face of
it.
If you have N cores on a CPU and more than one is up, but only one gets to do anything because you've serialized everything onto a single workqueue, you are wasting CPU resources. When you waste CPU resources you decrease system efficiency and increase power consumption.
If you have N cores and only one is up, then the scheduler can decide to run serially if it wants, or wake up a core, or do whatever it wants. The driver certainly shouldn't dictate policy and force everything to run serially.
The Linus mantra cited is about MINIMALIZATION. When you say "to
make the most use of..." you are MAXIMIZING something that need not be
maximized.
I'm really not following what your point is here. In an attempt to twist my words, you're now saying we shouldn't maximize system efficiency.
As repeated many times, there is no NEED to execute this slow path stuff
in parallel.
I must have missed the thread where you said that many times, let alone where you proved that there is no benefit or need to running "this slow path stuff" (however you are defining that to be) in parallel.
A driver should not be written in a way which suppresses the kernel's ability to optimize execution by forcing serialization of disjointed operations through a single workqueue.
James
-
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