On Fri, Apr 22, 2016 at 11:09:24AM +0900, Kengo NAKAHARA wrote: > So, I want to introduce new MP-scalable ifnet interface which doesn't > use if_snd queue and directly pass mbuf to lower layers. The interface > is called if_transmit() and the prototype is the following: > int (*if_transmit)(struct ifnet *, struct mbuf *);
Let me try to expand that a bit and you comment on whether it actually reflects your intention. The old interface queueing implementation is based on assumption that restarting transmits after the in-device queue is cheaper than continued requeueing from the network stack. The new interface provides a hook for processing each outgoing packet individually. It can provide the old interface via a generic glue implementation, but it also allows a device more granular control. Most noticably, it can be used to avoid ever getting TXEOF interrupts while the device is actively being used. Joerg