diff options
author | Alex Maftei (amaftei) <amaftei@solarflare.com> | 2020-01-10 13:27:50 +0000 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2020-01-10 11:24:37 -0800 |
commit | 88f7df35ceac7bdd4db33ceefcb1fe0b90112cda (patch) | |
tree | 5937e1dbbd5482dbd9ccea539cd52f30e6f2b141 /drivers/net/ethernet/sfc/tx_common.c | |
parent | sfc: move some ethtool code (diff) | |
download | linux-dev-88f7df35ceac7bdd4db33ceefcb1fe0b90112cda.tar.xz linux-dev-88f7df35ceac7bdd4db33ceefcb1fe0b90112cda.zip |
sfc: move a couple more functions
Signed-off-by: Alexandru-Mihai Maftei <amaftei@solarflare.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/ethernet/sfc/tx_common.c')
-rw-r--r-- | drivers/net/ethernet/sfc/tx_common.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/ethernet/sfc/tx_common.c b/drivers/net/ethernet/sfc/tx_common.c index 0ce699ecae5a..b1571e9789d0 100644 --- a/drivers/net/ethernet/sfc/tx_common.c +++ b/drivers/net/ethernet/sfc/tx_common.c @@ -267,6 +267,24 @@ void efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index) } } +/* Remove buffers put into a tx_queue for the current packet. + * None of the buffers must have an skb attached. + */ +void efx_enqueue_unwind(struct efx_tx_queue *tx_queue, + unsigned int insert_count) +{ + struct efx_tx_buffer *buffer; + unsigned int bytes_compl = 0; + unsigned int pkts_compl = 0; + + /* Work backwards until we hit the original insert pointer value */ + while (tx_queue->insert_count != insert_count) { + --tx_queue->insert_count; + buffer = __efx_tx_queue_get_insert_buffer(tx_queue); + efx_dequeue_buffer(tx_queue, buffer, &pkts_compl, &bytes_compl); + } +} + struct efx_tx_buffer *efx_tx_map_chunk(struct efx_tx_queue *tx_queue, dma_addr_t dma_addr, size_t len) { |