[dpdk-stable] [PATCH 18.08 v2] net/softnic: fix undefined dev info fields

Jasvinder Singh jasvinder.singh at intel.com
Thu Nov 29 16:00:50 CET 2018


[backported from upstream commit 66cdfd67c5178ae5028aaf76fe500b61acfe313f]

The memcpy operation overwrites the device info fields set
by ethdev API and leaves the device field undefined.
Thus, replaces memcpy by only updating the required fields
at the driver layer.

error log: testpmd> show port info 1

**** Infos for port 1  ****
MAC address: 00:00:00:00:00:00
Device name: net_softnic0

Segmentation fault.
port_infos_display (port_id=1) at /dpdk/app/test-pmd/config.c:418
if (dev_info.device->devargs && dev_info.device->devargs->args)

Fixes: cc6d421574fe ("net/softnic: add softnic PMD")

Signed-off-by: Jasvinder Singh <jasvinder.singh at intel.com>
Reviewed-by: Ferruh Yigit <ferruh.yigit at intel.com>
---
v2 
- add commit id to commit message

 drivers/net/softnic/rte_eth_softnic.c | 21 +++------------------
 1 file changed, 3 insertions(+), 18 deletions(-)

diff --git a/drivers/net/softnic/rte_eth_softnic.c b/drivers/net/softnic/rte_eth_softnic.c
index 3e47c2f98..45a2922b7 100644
--- a/drivers/net/softnic/rte_eth_softnic.c
+++ b/drivers/net/softnic/rte_eth_softnic.c
@@ -79,28 +79,13 @@ static const char *pmd_valid_args[] = {
 	NULL
 };
 
-static const struct rte_eth_dev_info pmd_dev_info = {
-	.min_rx_bufsize = 0,
-	.max_rx_pktlen = UINT32_MAX,
-	.max_rx_queues = UINT16_MAX,
-	.max_tx_queues = UINT16_MAX,
-	.rx_desc_lim = {
-		.nb_max = UINT16_MAX,
-		.nb_min = 0,
-		.nb_align = 1,
-	},
-	.tx_desc_lim = {
-		.nb_max = UINT16_MAX,
-		.nb_min = 0,
-		.nb_align = 1,
-	},
-};
-
 static void
 pmd_dev_infos_get(struct rte_eth_dev *dev __rte_unused,
 	struct rte_eth_dev_info *dev_info)
 {
-	memcpy(dev_info, &pmd_dev_info, sizeof(*dev_info));
+	dev_info->max_rx_pktlen = UINT32_MAX;
+	dev_info->max_rx_queues = UINT16_MAX;
+	dev_info->max_tx_queues = UINT16_MAX;
 }
 
 static int
-- 
2.17.1



More information about the stable mailing list