[dpdk-dev] [RFC]lib/ethdev: fix data type in tc_rxq and tc_txq

humin (Q) humin29 at huawei.com
Tue Aug 18 03:43:24 CEST 2020


Dear all:
Are there any suggestions for this patch?


在 2020/8/7 20:33, humin (Q) 写道:
> Currently, base and nb_queue in the tc_rxq and tc_txq information
> of queue and TC mapping on both TX and RX paths are uint8_t.
> The structure is as follows:
> 
> struct rte_eth_dcb_tc_queue_mapping {
>      /** rx queues assigned to tc per Pool */
>      struct {
>          uint8_t base;
>          uint8_t nb_queue;
>      } tc_rxq[ETH_MAX_VMDQ_POOL][ETH_DCB_NUM_TCS];
>      /** rx queues assigned to tc per Pool */
>      struct {
>          uint8_t base;
>          uint8_t nb_queue;
>      } tc_txq[ETH_MAX_VMDQ_POOL][ETH_DCB_NUM_TCS];
> };
> 
> However, these datas will be truncated when queue number under a TC
> is greater than 256. So it is necessay for data type of base and
> nb_queue to change from uint8_t to uint16_t.
> 
> 
> [RFC]lib/ethdev: fix rx/tx queue stats mapping API
> 
> Currently, only statistics of rx/tx queues with queue_id less than
> RTE_ETHDEV_QUEUE_STAT_CNTRS can be displayed. If there is a certain
> application scenario that it needs to use 256 or more than 256 queues
> and display all statistics of rx/tx queue. At this moment, we have to
> change the macro to be equaled to the queue number.
> 
> However, modifying the macro to be greater than 256 will trigger
> many errors and warnings from test-pmd, PMD driver and librte_ethdev
> during compiling dpdk project. But it is possible and permited that
> rx/tx queue number is greater than 256 and all statistics of rx/tx
> queue need to be displayed. In addition, the data type of rx/tx queue
> number in rte_eth_dev_configure API is 'uint16_t'. So It is unreasonable
> to use the 'uint8_t' type for variables that control which per-queue
> statistics can be displayed.
> 
> In these modifications, related API in /lib/librte_ethdev/rte_ethdev.c
> is as follows:
> static int
> -set_queue_stats_mapping(uint16_t port_id, uint16_t queue_id, uint8_t 
> stat_idx,
> +set_queue_stats_mapping(uint16_t port_id, uint16_t queue_id, uint16_t 
> stat_idx,
>                  uint8_t is_rx)
> int
>   rte_eth_dev_set_tx_queue_stats_mapping(uint16_t port_id, uint16_t 
> tx_queue_id,
> -               uint8_t stat_idx)
> +               uint16_t stat_idx)
> 
> int
>   rte_eth_dev_set_rx_queue_stats_mapping(uint16_t port_id, uint16_t 
> rx_queue_id,
> -               uint8_t stat_idx)
> +               uint16_t stat_idx)



More information about the dev mailing list