/* SPDX-License-Identifier: BSD-3-Clause
*
- * Copyright (c) 2016-2018 Solarflare Communications Inc.
- * All rights reserved.
+ * Copyright(c) 2019-2020 Xilinx, Inc.
+ * Copyright(c) 2016-2019 Solarflare Communications Inc.
*
* This software was jointly developed between OKTET Labs (under contract
* for Solarflare) and Solarflare Communications, Inc.
#define _SFC_TX_H
#include <rte_mbuf.h>
-#include <rte_ethdev.h>
+#include <ethdev_driver.h>
#include "efx.h"
};
/**
- * Transmit queue control information. Not used on datapath.
- * Allocated on the socket specified on the queue setup.
+ * Transmit queue control primary process-only information.
+ * Not used on datapath.
*/
struct sfc_txq {
- unsigned int state;
unsigned int hw_index;
struct sfc_evq *evq;
efsys_mem_t mem;
- struct sfc_dp_txq *dp;
efx_txq_t *common;
- unsigned int free_thresh;
- unsigned int flags;
};
-static inline unsigned int
-sfc_txq_sw_index_by_hw_index(unsigned int hw_index)
-{
- return hw_index;
-}
-
-static inline unsigned int
-sfc_txq_sw_index(const struct sfc_txq *txq)
-{
- return sfc_txq_sw_index_by_hw_index(txq->hw_index);
-}
-
struct sfc_txq *sfc_txq_by_dp_txq(const struct sfc_dp_txq *dp_txq);
/**
}
struct sfc_txq_info {
+ unsigned int state;
unsigned int entries;
- struct sfc_txq *txq;
+ struct sfc_dp_txq *dp;
boolean_t deferred_start;
boolean_t deferred_started;
+ unsigned int free_thresh;
+ uint64_t offloads;
};
+struct sfc_txq_info *sfc_txq_info_by_dp_txq(const struct sfc_dp_txq *dp_txq);
+
int sfc_tx_configure(struct sfc_adapter *sa);
void sfc_tx_close(struct sfc_adapter *sa);
const struct rte_eth_txconf *tx_conf);
void sfc_tx_qfini(struct sfc_adapter *sa, unsigned int sw_index);
-void sfc_tx_qflush_done(struct sfc_txq *txq);
+void sfc_tx_qflush_done(struct sfc_txq_info *txq_info);
int sfc_tx_qstart(struct sfc_adapter *sa, unsigned int sw_index);
void sfc_tx_qstop(struct sfc_adapter *sa, unsigned int sw_index);
int sfc_tx_start(struct sfc_adapter *sa);
void sfc_tx_stop(struct sfc_adapter *sa);
uint64_t sfc_tx_get_dev_offload_caps(struct sfc_adapter *sa);
+uint64_t sfc_tx_get_queue_offload_caps(struct sfc_adapter *sa);
/* From 'sfc_tso.c' */
int sfc_efx_tso_alloc_tsoh_objs(struct sfc_efx_tx_sw_desc *sw_ring,