47 lines · c
1/* SPDX-License-Identifier: GPL-2.0-only */2/****************************************************************************3 * Driver for Solarflare network controllers and boards4 * Copyright 2018 Solarflare Communications Inc.5 *6 * This program is free software; you can redistribute it and/or modify it7 * under the terms of the GNU General Public License version 2 as published8 * by the Free Software Foundation, incorporated herein by reference.9 */10 11#ifndef EFX_TX_COMMON_H12#define EFX_TX_COMMON_H13 14int efx_probe_tx_queue(struct efx_tx_queue *tx_queue);15void efx_init_tx_queue(struct efx_tx_queue *tx_queue);16void efx_fini_tx_queue(struct efx_tx_queue *tx_queue);17void efx_remove_tx_queue(struct efx_tx_queue *tx_queue);18 19void efx_dequeue_buffer(struct efx_tx_queue *tx_queue,20 struct efx_tx_buffer *buffer,21 unsigned int *pkts_compl,22 unsigned int *bytes_compl,23 unsigned int *efv_pkts_compl);24 25static inline bool efx_tx_buffer_in_use(struct efx_tx_buffer *buffer)26{27 return buffer->len || (buffer->flags & EFX_TX_BUF_OPTION);28}29 30void efx_xmit_done_check_empty(struct efx_tx_queue *tx_queue);31int efx_xmit_done(struct efx_tx_queue *tx_queue, unsigned int index);32 33void efx_enqueue_unwind(struct efx_tx_queue *tx_queue,34 unsigned int insert_count);35 36struct efx_tx_buffer *efx_tx_map_chunk(struct efx_tx_queue *tx_queue,37 dma_addr_t dma_addr, size_t len);38int efx_tx_tso_header_length(struct sk_buff *skb);39int efx_tx_map_data(struct efx_tx_queue *tx_queue, struct sk_buff *skb,40 unsigned int segment_count);41 42unsigned int efx_tx_max_skb_descs(struct efx_nic *efx);43int efx_tx_tso_fallback(struct efx_tx_queue *tx_queue, struct sk_buff *skb);44 45extern bool efx_separate_tx_channels;46#endif47