For drivers supporting the LSC event, enable it. This allows to test LSC event support.
Add the --no-lsc-interrupt parameter to explicitly disable the link status change interrupt. Signed-off-by: Gaetan Rivet <gaetan.ri...@6wind.com> --- app/test-pmd/parameters.c | 4 ++++ app/test-pmd/testpmd.c | 13 +++++++++++++ app/test-pmd/testpmd.h | 1 + 3 files changed, 18 insertions(+) diff --git a/app/test-pmd/parameters.c b/app/test-pmd/parameters.c index 67d8bf2..89231be 100644 --- a/app/test-pmd/parameters.c +++ b/app/test-pmd/parameters.c @@ -196,6 +196,7 @@ usage(char* progname) " or total packet length.\n"); printf(" --disable-link-check: disable check on link status when " "starting/stopping ports.\n"); + printf(" --no-lsc-interrupt: disable link status change interrupt.\n"); } #ifdef RTE_LIBRTE_CMDLINE @@ -561,6 +562,7 @@ launch_args_parse(int argc, char** argv) { "no-flush-rx", 0, 0, 0 }, { "txpkts", 1, 0, 0 }, { "disable-link-check", 0, 0, 0 }, + { "no-lsc-interrupt", 0, 0, 0 }, { 0, 0, 0, 0 }, }; @@ -978,6 +980,8 @@ launch_args_parse(int argc, char** argv) no_flush_rx = 1; if (!strcmp(lgopts[opt_idx].name, "disable-link-check")) no_link_check = 1; + if (!strcmp(lgopts[opt_idx].name, "no-lsc-interrupt")) + lsc_interrupt = 0; break; case 'h': diff --git a/app/test-pmd/testpmd.c b/app/test-pmd/testpmd.c index f2b67d5..8bd1285 100644 --- a/app/test-pmd/testpmd.c +++ b/app/test-pmd/testpmd.c @@ -263,6 +263,11 @@ uint8_t no_flush_rx = 0; /* flush by default */ uint8_t no_link_check = 0; /* check by default */ /* + * Enable link status change notification + */ +uint8_t lsc_interrupt = 1; /* enabled by default */ + +/* * NIC bypass mode configuration options. */ #ifdef RTE_NIC_BYPASS @@ -1698,6 +1703,9 @@ check_all_ports_link_status(uint32_t port_mask) if (all_ports_up == 1 || count == (MAX_CHECK_TIME - 1)) { print_flag = 1; } + + if (lsc_interrupt) + break; } } @@ -1892,6 +1900,11 @@ init_port_config(void) #ifdef RTE_NIC_BYPASS rte_eth_dev_bypass_init(pid); #endif + + if (lsc_interrupt && + (rte_eth_devices[pid].data->dev_flags & + RTE_ETH_DEV_INTR_LSC)) + port->dev_conf.intr_conf.lsc = 1; } } diff --git a/app/test-pmd/testpmd.h b/app/test-pmd/testpmd.h index e1e4939..77fa7ee 100644 --- a/app/test-pmd/testpmd.h +++ b/app/test-pmd/testpmd.h @@ -305,6 +305,7 @@ extern uint8_t no_flush_rx; /**<set by "--no-flush-rx" parameter */ extern uint8_t mp_anon; /**< set by "--mp-anon" parameter */ extern uint8_t no_link_check; /**<set by "--disable-link-check" parameter */ extern volatile int test_done; /* stop packet forwarding when set to 1. */ +extern uint8_t lsc_interrupt; /**< disabled by "--no-lsc-interrupt" parameter */ #ifdef RTE_NIC_BYPASS extern uint32_t bypass_timeout; /**< Store the NIC bypass watchdog timeout */ -- 2.1.4