net/mrvl: switch to the new Tx offload API
Since the old Tx offload API was depracated update the driver to use the latest one. Signed-off-by: Tomasz Duszynski <tdu@semihalf.com>
This commit is contained in:
parent
82c4f93279
commit
7d8f6c20cc
@ -100,6 +100,10 @@
|
||||
DEV_RX_OFFLOAD_CRC_STRIP | \
|
||||
DEV_RX_OFFLOAD_CHECKSUM)
|
||||
|
||||
/** Port Tx offloads capabilities */
|
||||
#define MRVL_TX_OFFLOADS (DEV_TX_OFFLOAD_IPV4_CKSUM | \
|
||||
DEV_TX_OFFLOAD_UDP_CKSUM | \
|
||||
DEV_TX_OFFLOAD_TCP_CKSUM)
|
||||
|
||||
static const char * const valid_args[] = {
|
||||
MRVL_IFACE_NAME_ARG,
|
||||
@ -1134,9 +1138,8 @@ mrvl_dev_infos_get(struct rte_eth_dev *dev __rte_unused,
|
||||
info->rx_offload_capa = MRVL_RX_OFFLOADS;
|
||||
info->rx_queue_offload_capa = MRVL_RX_OFFLOADS;
|
||||
|
||||
info->tx_offload_capa = DEV_TX_OFFLOAD_IPV4_CKSUM |
|
||||
DEV_TX_OFFLOAD_UDP_CKSUM |
|
||||
DEV_TX_OFFLOAD_TCP_CKSUM;
|
||||
info->tx_offload_capa = MRVL_TX_OFFLOADS;
|
||||
info->tx_queue_offload_capa = MRVL_TX_OFFLOADS;
|
||||
|
||||
info->flow_type_rss_offloads = ETH_RSS_IPV4 |
|
||||
ETH_RSS_NONFRAG_IPV4_TCP |
|
||||
@ -1476,6 +1479,42 @@ mrvl_rx_queue_release(void *rxq)
|
||||
rte_free(q);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check whether requested tx queue offloads match port offloads.
|
||||
*
|
||||
* @param
|
||||
* dev Pointer to the device.
|
||||
* @param
|
||||
* requested Bitmap of the requested offloads.
|
||||
*
|
||||
* @return
|
||||
* 1 if requested offloads are okay, 0 otherwise.
|
||||
*/
|
||||
static int
|
||||
mrvl_tx_queue_offloads_okay(struct rte_eth_dev *dev, uint64_t requested)
|
||||
{
|
||||
uint64_t mandatory = dev->data->dev_conf.txmode.offloads;
|
||||
uint64_t supported = MRVL_TX_OFFLOADS;
|
||||
uint64_t unsupported = requested & ~supported;
|
||||
uint64_t missing = mandatory & ~requested;
|
||||
|
||||
if (unsupported) {
|
||||
RTE_LOG(ERR, PMD, "Some Rx offloads are not supported. "
|
||||
"Requested 0x%" PRIx64 " supported 0x%" PRIx64 ".\n",
|
||||
requested, supported);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (missing) {
|
||||
RTE_LOG(ERR, PMD, "Some Rx offloads are missing. "
|
||||
"Requested 0x%" PRIx64 " missing 0x%" PRIx64 ".\n",
|
||||
requested, missing);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* DPDK callback to configure the transmit queue.
|
||||
*
|
||||
@ -1488,7 +1527,7 @@ mrvl_rx_queue_release(void *rxq)
|
||||
* @param socket
|
||||
* NUMA socket on which memory must be allocated.
|
||||
* @param conf
|
||||
* Thresholds parameters (unused).
|
||||
* Thresholds parameters.
|
||||
*
|
||||
* @return
|
||||
* 0 on success, negative error value otherwise.
|
||||
@ -1496,11 +1535,14 @@ mrvl_rx_queue_release(void *rxq)
|
||||
static int
|
||||
mrvl_tx_queue_setup(struct rte_eth_dev *dev, uint16_t idx, uint16_t desc,
|
||||
unsigned int socket,
|
||||
const struct rte_eth_txconf *conf __rte_unused)
|
||||
const struct rte_eth_txconf *conf)
|
||||
{
|
||||
struct mrvl_priv *priv = dev->data->dev_private;
|
||||
struct mrvl_txq *txq;
|
||||
|
||||
if (!mrvl_tx_queue_offloads_okay(dev, conf->offloads))
|
||||
return -ENOTSUP;
|
||||
|
||||
if (dev->data->tx_queues[idx]) {
|
||||
rte_free(dev->data->tx_queues[idx]);
|
||||
dev->data->tx_queues[idx] = NULL;
|
||||
|
Loading…
Reference in New Issue
Block a user