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:
Tomasz Duszynski 2018-01-23 09:46:15 +01:00 committed by Ferruh Yigit
parent 82c4f93279
commit 7d8f6c20cc

View File

@ -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;