[dpdk-dev] [PATCH] ixgbe: add TX queue number check

Qiu, Michael michael.qiu at intel.com
Tue Mar 22 09:42:24 CET 2016


On 3/22/2016 4:10 PM, Wenzhuo Lu wrote:
> Ixgbe supports at most 128 TX queues. But in none VT nor DCB mode
> the queues 64 ~ 127 should not be used. Ixgbe doesn't do any check
> about that. If a queue larger than 64 is used, the TX packets will
> be dropped silently. It's hard to debug.
> This check is added to forbid using queue number larger than 64
> during device configuration, so the user can know the problem as
> early as possible.
>
> Signed-off-by: Wenzhuo Lu <wenzhuo.lu at intel.com>
> Reported-by: Antonio Fischetti <antonio.fischetti at intel.com>
> ---

Acked-by: Michael Qiu <michael.qiu at intel.com>

>  drivers/net/ixgbe/ixgbe_ethdev.c | 11 ++++++++++-
>  drivers/net/ixgbe/ixgbe_ethdev.h |  1 +
>  2 files changed, 11 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.c b/drivers/net/ixgbe/ixgbe_ethdev.c
> index 5371720..dd6d00e 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.c
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.c
> @@ -1862,7 +1862,7 @@ ixgbe_check_mq_mode(struct rte_eth_dev *dev)
>  {
>  	struct rte_eth_conf *dev_conf = &dev->data->dev_conf;
>  	uint16_t nb_rx_q = dev->data->nb_rx_queues;
> -	uint16_t nb_tx_q = dev->data->nb_rx_queues;
> +	uint16_t nb_tx_q = dev->data->nb_tx_queues;
>  
>  	if (RTE_ETH_DEV_SRIOV(dev).active != 0) {
>  		/* check multi-queue mode */
> @@ -2002,6 +2002,15 @@ ixgbe_check_mq_mode(struct rte_eth_dev *dev)
>  				return -EINVAL;
>  			}
>  		}
> +
> +		if (dev_conf->txmode.mq_mode == ETH_MQ_TX_NONE) {
> +			if (nb_tx_q > IXGBE_NONE_VT_DCB_MAX_TXQ_NB) {
> +				PMD_INIT_LOG(ERR,
> +					     "None VT nor DCB, nb_tx_q > %d.",
> +					     IXGBE_NONE_VT_DCB_MAX_TXQ_NB);
> +				return -EINVAL;
> +			}
> +		}
>  	}
>  	return 0;
>  }
> diff --git a/drivers/net/ixgbe/ixgbe_ethdev.h b/drivers/net/ixgbe/ixgbe_ethdev.h
> index 5c3aa16..50ee73f 100644
> --- a/drivers/net/ixgbe/ixgbe_ethdev.h
> +++ b/drivers/net/ixgbe/ixgbe_ethdev.h
> @@ -61,6 +61,7 @@
>  #define IXGBE_MAX_RX_QUEUE_NUM	128
>  #define IXGBE_VMDQ_DCB_NB_QUEUES     IXGBE_MAX_RX_QUEUE_NUM
>  #define IXGBE_DCB_NB_QUEUES          IXGBE_MAX_RX_QUEUE_NUM
> +#define IXGBE_NONE_VT_DCB_MAX_TXQ_NB 64
>  
>  #ifndef NBBY
>  #define NBBY	8	/* number of bits in a byte */



More information about the dev mailing list