[dpdk-dev] [PATCH v9 2/4] net/ice: cleanup Tx buffers
Ferruh Yigit
ferruh.yigit at intel.com
Tue Jan 14 13:40:36 CET 2020
On 1/13/2020 9:57 AM, Chenxu Di wrote:
> Add support to the ice driver for the API rte_eth_tx_done_cleanup
> to force free consumed buffers on Tx ring.
>
> Signed-off-by: Chenxu Di <chenxux.di at intel.com>
<...>
> +static int
> +ice_tx_done_cleanup_vec(struct ice_tx_queue *txq __rte_unused,
> + uint32_t free_cnt __rte_unused)
> +{
> + return -ENOTSUP;
> +}
> +
> +static int
> +ice_tx_done_cleanup_simple(struct ice_tx_queue *txq,
> + uint32_t free_cnt)
> +{
> + int i, n, cnt;
> +
> + if (free_cnt == 0 || free_cnt > txq->nb_tx_desc)
> + free_cnt = txq->nb_tx_desc;
> +
> + cnt = free_cnt - free_cnt % txq->tx_rs_thresh;
> +
> + for (i = 0; i < cnt; i += n) {
> + if (txq->nb_tx_desc - txq->nb_tx_free < txq->tx_rs_thresh)
> + break;
> +
> + n = ice_tx_free_bufs(txq);
> +
> + if (n == 0)
> + break;
> + }
> +
> + return i;
> +}
> +
> +int
> +ice_tx_done_cleanup(void *txq, uint32_t free_cnt)
> +{
> + struct ice_tx_queue *q = (struct ice_tx_queue *)txq;
> + struct rte_eth_dev *dev = &rte_eth_devices[q->port_id];
> + struct ice_adapter *ad =
> + ICE_DEV_PRIVATE_TO_ADAPTER(dev->data->dev_private);
> +
> +#ifdef RTE_ARCH_X86
> + if (ad->tx_vec_allowed)
> + return ice_tx_done_cleanup_vec(q, free_cnt);
> +#endif
Hi Chenxu,
This is causing build error for non x86 builds [1], wrapping the
'ice_tx_done_cleanup_vec()' with #ifdef can solve the error, but instead why not
remove the #ifdef completely.
Would the 'tx_vec_allowed' be set when it is non x86, I think it shouldn't, IF
so #ifdef can go away.
[1]
.../dpdk/drivers/net/ice/ice_rxtx.c:2709:1: error: ‘ice_tx_done_cleanup_vec’
defined but not used [-Werror=unused-function]
ice_tx_done_cleanup_vec(struct ice_tx_queue *txq __rte_unused,
^~~~~~~~~~~~~~~~~~~~~~~
More information about the dev
mailing list