Skip to content

Commit

Permalink
app/testpmd: revert softnic integration in CLI thread
Browse files Browse the repository at this point in the history
This patch reverts the testpmd CLI prompt routine modifications done
in order to support softnic.
The reason of doing so is due to testpmd abnormal exit observed on
several setups caused by the softnic modifications to this routine,
for example: When running testpmd with tap interface
(testpmd
 -n 4 --vdev=net_tap0,iface=tap0,remote=eth1 -- --burst=64
 --mbcache=512 -i --nb-cores=7 --rxq=2 --txq=2 --txd=512
 --rxd=512 --port-topology=chained --forward-mode=rxonly)
testpmd crashes seconds after presenting its prompt with the following
error:
  testpmd> PANIC in prompt():
  CLI poll error (-1)

  Thread 1 "testpmd" received signal SIGABRT, Aborted.
  0x00007ffff668e0d0 in raise () from /lib64/libc.so.6
  (gdb) bt
  #0  0x00007ffff668e0d0 in raise () from /lib64/libc.so.6
  #1  0x00007ffff668f6b1 in abort () from /lib64/libc.so.6
  #2  0x0000000000468027 in __rte_panic ()
  #3  0x00000000004876ed in prompt ()
  #4  0x000000000046dffc in main ()

When running testpmd with bare-metal device
(testpmd -n 4 --socket-mem=1024,1024 -w 04:00.0  --
 --burst=64 --mbcache=512 -i --nb-cores=7
 --rxq=64 --txq=4 --txd=16 --rxd=16)
and pressing CTRL+D right after testpmd prompt is presented then
the program crashes while presenting the same messages as above.

Needless to say that this behavior is not observed when using the
previous CLI prompt routine.

Fixes: 0ad778b ("app/testpmd: rework softnic forward mode")

Signed-off-by: Moti Haimovsky <motih@mellanox.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Aaron Conole <aconole@redhat.com>
  • Loading branch information
haimoti authored and tmonjalo committed Jul 26, 2018
1 parent d1c3ab2 commit 08791ea
Showing 1 changed file with 2 additions and 40 deletions.
42 changes: 2 additions & 40 deletions app/test-pmd/cmdline.c
Original file line number Diff line number Diff line change
Expand Up @@ -69,9 +69,6 @@
#ifdef RTE_LIBRTE_I40E_PMD
#include <rte_pmd_i40e.h>
#endif
#ifdef RTE_LIBRTE_PMD_SOFTNIC
#include <rte_eth_softnic.h>
#endif
#ifdef RTE_LIBRTE_BNXT_PMD
#include <rte_pmd_bnxt.h>
#endif
Expand Down Expand Up @@ -17896,50 +17893,15 @@ cmdline_read_from_file(const char *filename)
void
prompt(void)
{
int status;

/* initialize non-constant commands */
cmd_set_fwd_mode_init();
cmd_set_fwd_retry_mode_init();

#if defined RTE_LIBRTE_PMD_SOFTNIC
portid_t softnic_portid, pid;
uint8_t softnic_enable = 0;

if (strcmp(cur_fwd_eng->fwd_mode_name, "softnic") == 0) {
RTE_ETH_FOREACH_DEV(pid) {
struct rte_port *port = &ports[pid];
const char *driver = port->dev_info.driver_name;

if (strcmp(driver, "net_softnic") == 0) {
softnic_portid = pid;
softnic_enable = 1;
break;
}
}
}
#endif

testpmd_cl = cmdline_stdin_new(main_ctx, "testpmd> ");
if (testpmd_cl == NULL)
return;

for (;;) {
status = cmdline_poll(testpmd_cl);
if (status < 0)
rte_panic("CLI poll error (%" PRId32 ")\n", status);
else if (status == RDLINE_EXITED) {
cmdline_stdin_exit(testpmd_cl);
rte_exit(0, "\n");
}

#if defined RTE_LIBRTE_PMD_SOFTNIC

if ((softnic_enable == 1) &&
(strcmp(cur_fwd_eng->fwd_mode_name, "softnic") == 0))
rte_pmd_softnic_manage(softnic_portid);
#endif
}
cmdline_interact(testpmd_cl);
cmdline_stdin_exit(testpmd_cl);
}

void
Expand Down

0 comments on commit 08791ea

Please sign in to comment.