Hi Wenxuan, > -----Original Message----- > From: Wu, WenxuanX <[email protected]> > Sent: Friday, March 4, 2022 10:37 AM > To: Yang, Qiming <[email protected]>; Zhang, Qi Z > <[email protected]>; Li, Xiaoyun <[email protected]>; Singh, Aman > Deep <[email protected]>; Zhang, Yuying > <[email protected]> > Cc: [email protected] > Subject: [PATCH v2] app/testpmd : fix testpmd quit error > > From: wenxuan wu <[email protected]> > > When testpmd use func get_eth_dev_info() while related resource had been > released. > > Change the logic of func port_is_bonding_slave, this func > eth_dev_info_get_print_err while pf is released would result in this error. > Use ports instead to avoid this bug. > > Fixes: 0a0821bcf312 ("app/testpmd: remove most uses of internal ethdev > array") > Cc: [email protected] > > Signed-off-by: wenxuan wu <[email protected]> > --- > app/test-pmd/testpmd.c | 12 +----------- > 1 file changed, 1 insertion(+), 11 deletions(-) > > diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index > e1da961311..37038c9183 100644 > --- a/app/test-pmd/testpmd.c > +++ b/app/test-pmd/testpmd.c > @@ -3824,19 +3824,9 @@ void clear_port_slave_flag(portid_t slave_pid) > uint8_t port_is_bonding_slave(portid_t slave_pid) { > struct rte_port *port; > - struct rte_eth_dev_info dev_info; > - int ret; > > port = &ports[slave_pid]; > - ret = eth_dev_info_get_print_err(slave_pid, &dev_info); > - if (ret != 0) { > - TESTPMD_LOG(ERR, > - "Failed to get device info for port id %d," > - "cannot determine if the port is a bonded slave", > - slave_pid); > - return 0; > - } > - if ((*dev_info.dev_flags & RTE_ETH_DEV_BONDED_SLAVE) || (port- > >slave_flag == 1)) > + if ((*port->dev_info.dev_flags & RTE_ETH_DEV_BONDED_SLAVE) || > +(port->slave_flag == 1))
Is port->dev_info.dev_flags updated in time when the bonding status changes? It may use eth_dev_info_get_print_err() to update dev_info of port. > return 1; > return 0; > } > -- > 2.25.1

