[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