From e4562c78c0c5cb1a4080765925209fd23b8bc389 Mon Sep 17 00:00:00 2001 From: Christian Ehrhardt Date: Thu, 18 May 2017 13:12:50 +0200 Subject: Add thunderx (LP: #1691659) To make arm support useful on more devices add, enable and fix thunderx networking - that is the nicvf pmd (LP: #1691659) Change-Id: I17f1d6d63d31df05f1af09054ffddcb478c54dd3 Signed-off-by: Christian Ehrhardt --- ...t-thunderx-fix-stats-access-out-of-bounds.patch | 67 ++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 debian/patches/nicvf-0008-net-thunderx-fix-stats-access-out-of-bounds.patch (limited to 'debian/patches/nicvf-0008-net-thunderx-fix-stats-access-out-of-bounds.patch') diff --git a/debian/patches/nicvf-0008-net-thunderx-fix-stats-access-out-of-bounds.patch b/debian/patches/nicvf-0008-net-thunderx-fix-stats-access-out-of-bounds.patch new file mode 100644 index 00000000..cd26df57 --- /dev/null +++ b/debian/patches/nicvf-0008-net-thunderx-fix-stats-access-out-of-bounds.patch @@ -0,0 +1,67 @@ +From 695cd416ce6c02d7a20108765573936998b2dbf0 Mon Sep 17 00:00:00 2001 +From: Marcin Wilk +Date: Tue, 11 Apr 2017 14:35:13 +0200 +Subject: [PATCH] net/thunderx: fix stats access out of bounds + +Trying to assign more queues to stats struct break only from one loop +when the maximum size is reached. Outside loop iteration is continued. +This leads to access an array out of bounds. + +Fixes: 21e3fb0050b9 ("net/thunderx: add final bits for secondary queue support") +Cc: stable@dpdk.org + +Signed-off-by: Marcin Wilk +Acked-by: Jerin Jacob +--- + drivers/net/thunderx/nicvf_ethdev.c | 8 ++++---- + 1 file changed, 4 insertions(+), 4 deletions(-) + +Origin: http://dpdk.org/browse/dpdk/commit/?id=695cd416ce6c02d7a20108765573936998b2dbf0 +Original-Author: Marcin Wilk +Bug-Ubuntu: https://bugs.launchpad.net/ubuntu/+source/dpdk/+bug/1691659 +Author: Christian Ehrhardt +Last-Update: 2017-05-18 + +diff --git a/drivers/net/thunderx/nicvf_ethdev.c b/drivers/net/thunderx/nicvf_ethdev.c +index b0b9c3b..36ff94f 100644 +--- a/drivers/net/thunderx/nicvf_ethdev.c ++++ b/drivers/net/thunderx/nicvf_ethdev.c +@@ -258,7 +258,7 @@ nicvf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) + + /* Reading per RX ring stats */ + for (qidx = rx_start; qidx <= rx_end; qidx++) { +- if (qidx == RTE_ETHDEV_QUEUE_STAT_CNTRS) ++ if (qidx >= RTE_ETHDEV_QUEUE_STAT_CNTRS) + break; + + nicvf_hw_get_rx_qstats(nic, &rx_qstats, qidx); +@@ -271,7 +271,7 @@ nicvf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) + + /* Reading per TX ring stats */ + for (qidx = tx_start; qidx <= tx_end; qidx++) { +- if (qidx == RTE_ETHDEV_QUEUE_STAT_CNTRS) ++ if (qidx >= RTE_ETHDEV_QUEUE_STAT_CNTRS) + break; + + nicvf_hw_get_tx_qstats(nic, &tx_qstats, qidx); +@@ -290,7 +290,7 @@ nicvf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) + + /* Reading per RX ring stats */ + for (qidx = rx_start; qidx <= rx_end; qidx++) { +- if (qidx == RTE_ETHDEV_QUEUE_STAT_CNTRS) ++ if (qidx >= RTE_ETHDEV_QUEUE_STAT_CNTRS) + break; + + nicvf_hw_get_rx_qstats(snic, &rx_qstats, +@@ -303,7 +303,7 @@ nicvf_dev_stats_get(struct rte_eth_dev *dev, struct rte_eth_stats *stats) + nicvf_tx_range(dev, snic, &tx_start, &tx_end); + /* Reading per TX ring stats */ + for (qidx = tx_start; qidx <= tx_end; qidx++) { +- if (qidx == RTE_ETHDEV_QUEUE_STAT_CNTRS) ++ if (qidx >= RTE_ETHDEV_QUEUE_STAT_CNTRS) + break; + + nicvf_hw_get_tx_qstats(snic, &tx_qstats, +-- +2.7.4 + -- cgit 1.2.3-korg