diff options
author | David Daney <ddaney@caviumnetworks.com> | 2010-02-16 02:06:47 +0300 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2010-02-27 14:53:30 +0300 |
commit | 4898c560103fb8075c10a8e9d70e0ca26873075e (patch) | |
tree | 9d2122e65326bef1b8bde2ce089c4e47e9e5c2ae /drivers/staging/octeon/ethernet-tx.h | |
parent | 86568dc41e8c7edcf6d014a64d143536d24b6a5d (diff) | |
download | linux-4898c560103fb8075c10a8e9d70e0ca26873075e.tar.xz |
Staging: Octeon: Free transmit SKBs in a timely manner
If we wait for the once-per-second cleanup to free transmit SKBs,
sockets with small transmit buffer sizes might spend most of their
time blocked waiting for the cleanup.
Normally we do a cleanup for each transmitted packet. We add a
watchdog type timer so that we also schedule a timeout for 150uS after
a packet is transmitted. The watchdog is reset for each transmitted
packet, so for high packet rates, it never expires. At these high
rates, the cleanups are done for each packet so the extra watchdog
initiated cleanups are neither needed nor triggered.
Signed-off-by: David Daney <ddaney@caviumnetworks.com>
To: linux-mips@linux-mips.org
To: netdev@vger.kernel.org
To: gregkh@suse.de
Cc: Eric Dumazet <eric.dumazet@gmail.com>
Patchwork: http://patchwork.linux-mips.org/patch/968/
Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This version has spelling and comment changes based on feedback from
Eric Dumazet.
Diffstat (limited to 'drivers/staging/octeon/ethernet-tx.h')
-rw-r--r-- | drivers/staging/octeon/ethernet-tx.h | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/drivers/staging/octeon/ethernet-tx.h b/drivers/staging/octeon/ethernet-tx.h index b628d8c8421d..547680c6c371 100644 --- a/drivers/staging/octeon/ethernet-tx.h +++ b/drivers/staging/octeon/ethernet-tx.h @@ -29,6 +29,6 @@ int cvm_oct_xmit(struct sk_buff *skb, struct net_device *dev); int cvm_oct_xmit_pow(struct sk_buff *skb, struct net_device *dev); int cvm_oct_transmit_qos(struct net_device *dev, void *work_queue_entry, int do_free, int qos); -void cvm_oct_tx_shutdown(struct net_device *dev); -void cvm_oct_free_tx_skbs(struct octeon_ethernet *priv); -enum hrtimer_restart cvm_oct_restart_tx(struct hrtimer *timer); +void cvm_oct_tx_initialize(void); +void cvm_oct_tx_shutdown(void); +void cvm_oct_tx_shutdown_dev(struct net_device *dev); |