Alan Ott wrote: > 1. Most supported devices have only single packet output buffer, so > blocking in the driver is the most straight-forward way to handle it. > The alternative is to make each driver have a workqueue for xmit() (to > lift the blocking out from atomic context). This makes each driver simpler.
It does make following the program flow a little easier, but the difference isn't all that large if you think of it, particularly if you have to wait not only for I/O to finish but also for the device to send the packet. The latter will usually be signaled by some form of interrupt, so you're already in a situation where a callback to the higher layers of the stack would be very natural. > Maybe at some point this will be done. Right now we have a ton of > pressing issues (in my opinion). Agreed on having no shortage of nasty issues :-) And I'd like to echo Dave's comment regarding netdev. Those ieee802154_dev always struck me as peculiar, with flow control just being one issue. And things get worse when you have a complex bus underneath your driver. For example, my USB-using atusb driver (*) has to do a great many things usbnet already does. And any other USB-based WPAN driver would be more or less in the same boat. Of course, one could reinvent that wheel as well and make a usbwpan, but ... :) (*) Sneak preview, still with a number of issues, not only style: https://github.com/wpwrak/ben-wpan-linux/blob/master/drivers/net/ieee802154/atusb.c - Werner -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/