[dpdk-dev] ethdev: add a missing sanity check for nb_tx_desc during txq setup

Message ID 1448015197-30094-1-git-send-email-rahul.lakkireddy@chelsio.com (mailing list archive)
State Accepted, archived
Headers

Commit Message

Rahul Lakkireddy Nov. 20, 2015, 10:26 a.m. UTC
  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

Ananyev, Konstantin Nov. 20, 2015, 10:38 a.m. UTC | #1
> -----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.
  
Thomas Monjalon Nov. 23, 2015, 10:38 p.m. UTC | #2
> > 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
  

Patch

diff --git a/lib/librte_ether/rte_ethdev.c b/lib/librte_ether/rte_ethdev.c
index b19ac9a..dfd6c0b 100644
--- a/lib/librte_ether/rte_ethdev.c
+++ b/lib/librte_ether/rte_ethdev.c
@@ -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;