]> git.baikalelectronics.ru Git - kernel.git/commit
Merge branch 'ndo_xmit_flush'
authorDavid S. Miller <davem@davemloft.net>
Mon, 25 Aug 2014 06:02:53 +0000 (23:02 -0700)
committerDavid S. Miller <davem@davemloft.net>
Mon, 25 Aug 2014 06:02:53 +0000 (23:02 -0700)
commite090c4f907da139979cad1b222a6c0b5a471be32
treec38c0439f002092e03a52fc0743d429c7d6dfbc1
parent1b6b15595296024b6d6fd67b48c2c3b32dc02ddd
parent83a3cb693313954f9b4d9280418dd33a9d44db65
Merge branch 'ndo_xmit_flush'

Basic deferred TX queue flushing infrastructure.

Over time, and specifically and more recently at the Networking
Workshop during Kernel SUmmit in Chicago, we have discussed the idea
of having some way to optimize transmits of multiple TX packets at
a time.

There are several areas of overhead that could be amortized with such
schemes.  One has to do with locking and transactional overhead, the
other has to do with device specific costs.

This patch set here is more aimed at device specific costs.

Typically a device queues up a packet in the TX queue and then has to
do something to have the device start processing that new entry.
Sometimes this is composed of doing an MMIO write to a "tail"
register, and in other cases it can involve something as expensive as
a hypervisor call.

The basic setup defined here is that when the driver supports deferred
TX queue flushing, ndo_start_xmit should no longer perform that
operation.  Instead a new operation, ndo_xmit_flush, should do it.

I have converted IGB and virtio_net as example initial users.  The IGB
conversion is tested, virtio_net is not but it does compile :-)

All ndo_start_xmit call sites have been abstracted behind a new helper
called netdev_start_xmit().

This just adds the infrastructure, it does not actually add any
instances of actually doing multiple ndo_start_xmit calls per
ndo_xmit_flush invocation.

Signed-off-by: David S. Miller <davem@davemloft.net>