tech-net archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

RFC: new ifnet MP-scalable sending interface



Hi,

Currently, network interfaces does IFQ_ENQUEUE() and then call
ifp->if_start() in the packet sending process. "IFQ_ENQUEUE() +
ifp->if_start()" processing is already MP-safe, however it is not
MP-scalable because of IFQ_LOCK in IFQ_ENQUEUE() and IFQ_DEQUEUE().

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 *);

At first, this interface must be used by network device driver to support
TX multiqueue so that it doesn't bottleneck bridge(4) MP-scalable.
I think this interface might also be used by virtual network interfaces
such as gif(4).

Here is the patch.
    http://www.netbsd.org/~knakahara/if-transmit/if-transmit.patch

Does anyone have any comments? Any comments are welcome.


Thanks,

-- 
//////////////////////////////////////////////////////////////////////
Internet Initiative Japan Inc.

Device Engineering Section,
IoT Platform Development Department,
Network Division,
Technology Unit

Kengo NAKAHARA <k-nakahara%iij.ad.jp@localhost>


Home | Main Index | Thread Index | Old Index