Added support for packet generation in multi-port Arkville implementations. The packet generator is a singleton within the device but is capable of generating packets for any port within one device.
Signed-off-by: John Miller <john.mil...@atomicrules.com> --- drivers/net/ark/ark_ethdev.c | 4 +++- drivers/net/ark/ark_global.h | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/drivers/net/ark/ark_ethdev.c b/drivers/net/ark/ark_ethdev.c index 230a1272e9..980e1a4a3b 100644 --- a/drivers/net/ark/ark_ethdev.c +++ b/drivers/net/ark/ark_ethdev.c @@ -441,6 +441,7 @@ ark_config_device(struct rte_eth_dev *dev) * known state */ ark->start_pg = 0; + ark->pg_running = 0; ark->pg = ark_pktgen_init(ark->pktgen.v, 0, 1); if (ark->pg == NULL) return -1; @@ -562,7 +563,7 @@ eth_ark_dev_start(struct rte_eth_dev *dev) if (ark->start_pg) ark_pktchkr_run(ark->pc); - if (ark->start_pg && (dev->data->port_id == 0)) { + if (ark->start_pg && !ark->pg_running) { pthread_t thread; /* Delay packet generatpr start allow the hardware to be ready @@ -574,6 +575,7 @@ eth_ark_dev_start(struct rte_eth_dev *dev) "starter thread\n"); return -1; } + ark->pg_running = 1; } if (ark->user_ext.dev_start) diff --git a/drivers/net/ark/ark_global.h b/drivers/net/ark/ark_global.h index 49193ac5b3..3c3a712bc8 100644 --- a/drivers/net/ark/ark_global.h +++ b/drivers/net/ark/ark_global.h @@ -107,6 +107,7 @@ struct ark_adapter { /* Pointers to packet generator and checker */ int start_pg; + uint16_t pg_running; ark_pkt_gen_t pg; ark_pkt_chkr_t pc; ark_pkt_dir_t pd; -- 2.25.1