]> git.baikalelectronics.ru Git - kernel.git/commit
[PATCH] iseries_veth: Simplify full-queue handling
authorMichael Ellerman <michael@ellerman.id.au>
Thu, 1 Sep 2005 01:29:18 +0000 (11:29 +1000)
committerJeff Garzik <jgarzik@pobox.com>
Thu, 1 Sep 2005 02:42:45 +0000 (22:42 -0400)
commitdc4474c00ba40d2b83828d080c210cf5a60bbd95
treee2d90bb9d07454266ebc9fe36901aa97305c15e0
parent329246247974517562469ac147b20f73806fdb1b
[PATCH] iseries_veth: Simplify full-queue handling

The iseries_veth driver often has multiple netdevices sending packets over
a single connection to another LPAR. If the bandwidth to the other LPAR is
exceeded, all the netdevices must have their queues stopped.

The current code achieves this by queueing one incoming skb on the
per-netdevice port structure. When the connection is able to send more packets
we iterate through the port structs and flush any packet that is queued,
as well as restarting the associated netdevice's queue.

This arrangement makes less sense now that we have per-connection TX timers,
rather than the per-netdevice generic TX timer.

The new code simply detects when one of the connections is full, and stops
the queue of all associated netdevices. Then when a packet is acked on that
connection (ie. there is space again) all the queues are woken up.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Jeff Garzik <jgarzik@pobox.com>
drivers/net/iseries_veth.c