[dpdk-dev] ethdev: add a missing sanity check for nb_tx_desc during txq setup
Commit Message
Add a sanity check for number of tx descriptors requested during tx
queue setup. Return -EINVAL if the number requested does not meet
the tx descriptor requirements of the device.
Fixes: 80a1deb4c77a ("ethdev: add API to retrieve queue information")
Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
---
lib/librte_ether/rte_ethdev.c | 12 ++++++++++++
1 file changed, 12 insertions(+)
Comments
> -----Original Message-----
> From: dev [mailto:dev-bounces@dpdk.org] On Behalf Of Rahul Lakkireddy
> Sent: Friday, November 20, 2015 10:27 AM
> To: dev@dpdk.org
> Cc: Felix Marti; Kumar Sanghvi; Nirranjan Kirubaharan
> Subject: [dpdk-dev] [PATCH] ethdev: add a missing sanity check for nb_tx_desc during txq setup
>
> Add a sanity check for number of tx descriptors requested during tx
> queue setup. Return -EINVAL if the number requested does not meet
> the tx descriptor requirements of the device.
>
> Fixes: 80a1deb4c77a ("ethdev: add API to retrieve queue information")
>
> Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
> Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
> ---
Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Thanks for catching it.
> > Add a sanity check for number of tx descriptors requested during tx
> > queue setup. Return -EINVAL if the number requested does not meet
> > the tx descriptor requirements of the device.
> >
> > Fixes: 80a1deb4c77a ("ethdev: add API to retrieve queue information")
> >
> > Signed-off-by: Rahul Lakkireddy <rahul.lakkireddy@chelsio.com>
> > Signed-off-by: Kumar Sanghvi <kumaras@chelsio.com>
> > ---
>
> Acked-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
> Thanks for catching it.
Applied, thanks
@@ -1342,6 +1342,18 @@ rte_eth_tx_queue_setup(uint8_t port_id, uint16_t tx_queue_id,
rte_eth_dev_info_get(port_id, &dev_info);
+ if (nb_tx_desc > dev_info.tx_desc_lim.nb_max ||
+ nb_tx_desc < dev_info.tx_desc_lim.nb_min ||
+ nb_tx_desc % dev_info.tx_desc_lim.nb_align != 0) {
+ PMD_DEBUG_TRACE("Invalid value for nb_tx_desc(=%hu), "
+ "should be: <= %hu, = %hu, and a product of %hu\n",
+ nb_tx_desc,
+ dev_info.tx_desc_lim.nb_max,
+ dev_info.tx_desc_lim.nb_min,
+ dev_info.tx_desc_lim.nb_align);
+ return -EINVAL;
+ }
+
if (tx_conf == NULL)
tx_conf = &dev_info.default_txconf;