Test-Label: iol-testing Test-Status: WARNING http://dpdk.org/patch/116098 _apply patch failure_ Submitter: Naga Harish K S V Date: Thursday, September 08 2022 17:12:42 Applied on: CommitID:4aee6110bb10b0225fa9562f2e48af233a9058a1 Apply patch set 116098-116100 failed: Checking patch lib/eventdev/eventdev_pmd.h... error: while searching for: typedef int (*eventdev_eth_tx_adapter_instance_get_t) (uint16_t eth_dev_id, uint16_t tx_queue_id, uint8_t *txa_inst_id); /** Event device operations function pointer table */ struct eventdev_ops { error: patch failed: lib/eventdev/eventdev_pmd.h:1294 error: while searching for: /**< Reset eth Tx adapter statistics */ eventdev_eth_tx_adapter_instance_get_t eth_tx_adapter_instance_get; /**< Get Tx adapter instance id for Tx queue */ eventdev_selftest dev_selftest; /**< Start eventdev Selftest */ error: patch failed: lib/eventdev/eventdev_pmd.h:1409 Checking patch lib/eventdev/rte_event_eth_tx_adapter.c... error: while searching for: #define txa_dev_instance_get(id) \ txa_evdev(id)->dev_ops->eth_tx_adapter_instance_get #define RTE_EVENT_ETH_TX_ADAPTER_ID_VALID_OR_ERR_RET(id, retval) \ do { \ if (!txa_valid_id(id)) { \ error: patch failed: lib/eventdev/rte_event_eth_tx_adapter.c:47 Hunk #2 succeeded at 88 (offset -12 lines). Hunk #3 succeeded at 525 (offset -40 lines). Hunk #4 succeeded at 539 (offset -40 lines). Hunk #5 succeeded at 577 (offset -40 lines). Hunk #6 succeeded at 642 (offset -40 lines). Hunk #7 succeeded at 838 (offset -40 lines). Hunk #8 succeeded at 857 (offset -40 lines). Hunk #9 succeeded at 916 (offset -40 lines). error: while searching for: return -EINVAL; } error: patch failed: lib/eventdev/rte_event_eth_tx_adapter.c:1320 Checking patch lib/eventdev/rte_event_eth_tx_adapter.h... error: while searching for: * - rte_event_eth_tx_adapter_event_port_get() * - rte_event_eth_tx_adapter_service_id_get() * - rte_event_eth_tx_adapter_instance_get() * * The application creates the adapter using * rte_event_eth_tx_adapter_create() or rte_event_eth_tx_adapter_create_ext(). error: patch failed: lib/eventdev/rte_event_eth_tx_adapter.h:35 error: while searching for: rte_event_eth_tx_adapter_instance_get(uint16_t eth_dev_id, uint16_t tx_queue_id, uint8_t *txa_inst_id); #ifdef __cplusplus } error: patch failed: lib/eventdev/rte_event_eth_tx_adapter.h:446 Checking patch lib/eventdev/version.map... error: while searching for: # added in 22.11 rte_event_eth_rx_adapter_instance_get; rte_event_eth_tx_adapter_instance_get; }; INTERNAL { error: patch failed: lib/eventdev/version.map:116 Applying patch lib/eventdev/eventdev_pmd.h with 2 rejects... Rejected hunk #1. Rejected hunk #2. Applying patch lib/eventdev/rte_event_eth_tx_adapter.c with 2 rejects... Rejected hunk #1. Hunk #2 applied cleanly. Hunk #3 applied cleanly. Hunk #4 applied cleanly. Hunk #5 applied cleanly. Hunk #6 applied cleanly. Hunk #7 applied cleanly. Hunk #8 applied cleanly. Hunk #9 applied cleanly. Rejected hunk #10. Applying patch lib/eventdev/rte_event_eth_tx_adapter.h with 2 rejects... Rejected hunk #1. Rejected hunk #2. Applying patch lib/eventdev/version.map with 1 reject... Rejected hunk #1. diff a/lib/eventdev/eventdev_pmd.h b/lib/eventdev/eventdev_pmd.h (rejected hunks) @@ -1294,6 +1294,43 @@ typedef int (*eventdev_eth_tx_adapter_stats_reset_t)(uint8_t id, typedef int (*eventdev_eth_tx_adapter_instance_get_t) (uint16_t eth_dev_id, uint16_t tx_queue_id, uint8_t *txa_inst_id); +/** + * Start a Tx queue that is assigned to TX adapter instance + * + * @param id + * Adapter identifier + * + * @param eth_dev_id + * Port identifier of Ethernet device + * + * @param tx_queue_id + * Ethernet device TX queue index + * + * @return + * - 0: Success + * - <0: Error code on failure + */ +typedef int (*eventdev_eth_tx_adapter_queue_start) + (uint8_t id, uint16_t eth_dev_id, uint16_t tx_queue_id); + +/** + * Stop a Tx queue that is assigned to TX adapter instance + * + * @param id + * Adapter identifier + * + * @param eth_dev_id + * Port identifier of Ethernet device + * + * @param tx_queue_id + * Ethernet device TX queue index + * + * @return + * - 0: Success + * - <0: Error code on failure + */ +typedef int (*eventdev_eth_tx_adapter_queue_stop) + (uint8_t id, uint16_t eth_dev_id, uint16_t tx_queue_id); /** Event device operations function pointer table */ struct eventdev_ops { @@ -1409,6 +1446,10 @@ struct eventdev_ops { /**< Reset eth Tx adapter statistics */ eventdev_eth_tx_adapter_instance_get_t eth_tx_adapter_instance_get; /**< Get Tx adapter instance id for Tx queue */ + eventdev_eth_tx_adapter_queue_start eth_tx_adapter_queue_start; + /**< Start Tx queue assigned to Tx adapter instance */ + eventdev_eth_tx_adapter_queue_stop eth_tx_adapter_queue_stop; + /**< Stop Tx queue assigned to Tx adapter instance */ eventdev_selftest dev_selftest; /**< Start eventdev Selftest */ diff a/lib/eventdev/rte_event_eth_tx_adapter.c b/lib/eventdev/rte_event_eth_tx_adapter.c (rejected hunks) @@ -47,6 +47,12 @@ #define txa_dev_instance_get(id) \ txa_evdev(id)->dev_ops->eth_tx_adapter_instance_get +#define txa_dev_queue_start(id) \ + txa_evdev(id)->dev_ops->eth_tx_adapter_queue_start + +#define txa_dev_queue_stop(id) \ + txa_evdev(id)->dev_ops->eth_tx_adapter_queue_stop + #define RTE_EVENT_ETH_TX_ADAPTER_ID_VALID_OR_ERR_RET(id, retval) \ do { \ if (!txa_valid_id(id)) { \ @@ -1320,3 +1348,80 @@ rte_event_eth_tx_adapter_instance_get(uint16_t eth_dev_id, return -EINVAL; } + +static int +txa_queue_state_set(uint16_t eth_dev_id, uint16_t tx_queue_id, bool state) +{ + struct txa_service_data *txa; + struct txa_service_queue_info *tqi; + uint8_t txa_inst_id; + int ret; + uint32_t caps = 0; + + /* Below API already does validation of input parameters. + * Hence skipping the validation here. + */ + ret = rte_event_eth_tx_adapter_instance_get(eth_dev_id, + tx_queue_id, + &txa_inst_id); + if (ret < 0) + return -EINVAL; + + TXA_CHECK_OR_ERR_RET(txa_inst_id); + + txa = txa_service_id_to_data(txa_inst_id); + ret = rte_event_eth_tx_adapter_caps_get(txa->eventdev_id, + eth_dev_id, + &caps); + if (state == true) { + if (caps & RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT) { + ret = txa_dev_queue_start(txa_inst_id) ? + txa_dev_queue_start(txa_inst_id)(txa_inst_id, + eth_dev_id, + tx_queue_id) + : -EINVAL; + if (ret == 0) + return ret; + } + rte_spinlock_lock(&txa->tx_lock); + tqi = txa_service_queue(txa, eth_dev_id, tx_queue_id); + if (unlikely(tqi == NULL || !tqi->added)) { + rte_spinlock_unlock(&txa->tx_lock); + return -EINVAL; + } + tqi->stopped = false; + rte_spinlock_unlock(&txa->tx_lock); + } else { + if (caps & RTE_EVENT_ETH_TX_ADAPTER_CAP_INTERNAL_PORT) { + ret = txa_dev_queue_stop(txa_inst_id) ? + txa_dev_queue_stop(txa_inst_id)(txa_inst_id, + eth_dev_id, + tx_queue_id) + : -EINVAL; + if (ret == 0) + return ret; + } + rte_spinlock_lock(&txa->tx_lock); + tqi = txa_service_queue(txa, eth_dev_id, tx_queue_id); + if (unlikely(tqi == NULL || !tqi->added)) { + rte_spinlock_unlock(&txa->tx_lock); + return -EINVAL; + } + txa_txq_buffer_drain(tqi); + tqi->stopped = true; + rte_spinlock_unlock(&txa->tx_lock); + } + return 0; +} + +int +rte_event_eth_tx_adapter_queue_start(uint16_t eth_dev_id, uint16_t tx_queue_id) +{ + return txa_queue_state_set(eth_dev_id, tx_queue_id, true); +} + +int +rte_event_eth_tx_adapter_queue_stop(uint16_t eth_dev_id, uint16_t tx_queue_id) +{ + return txa_queue_state_set(eth_dev_id, tx_queue_id, false); +} diff a/lib/eventdev/rte_event_eth_tx_adapter.h b/lib/eventdev/rte_event_eth_tx_adapter.h (rejected hunks) @@ -35,6 +35,8 @@ * - rte_event_eth_tx_adapter_event_port_get() * - rte_event_eth_tx_adapter_service_id_get() * - rte_event_eth_tx_adapter_instance_get() + * - rte_event_eth_tx_adapter_queue_start() + * - rte_event_eth_tx_adapter_queue_stop() * * The application creates the adapter using * rte_event_eth_tx_adapter_create() or rte_event_eth_tx_adapter_create_ext(). @@ -446,6 +448,43 @@ int rte_event_eth_tx_adapter_instance_get(uint16_t eth_dev_id, uint16_t tx_queue_id, uint8_t *txa_inst_id); +/** + * Enables the Tx Adapter to start enqueueing packets to the + * Tx queue. + * + * This function is provided so that the application can + * resuming enqueueing events that reference packets for + * after calling + * rte_event_eth_tx_adapter_queue_stop() + * + * @param eth_dev_id + * Port identifier of Ethernet device. + * @param tx_queue_id + * Ethernet device transmit queue index. + * @return + * - 0: Success + * - <0: Error code on failure + */ +__rte_experimental +int +rte_event_eth_tx_adapter_queue_start(uint16_t eth_dev_id, uint16_t tx_queue_id); + +/** + * Stops the Tx Adapter from transmitting any mbufs to the + * . The Tx Adapter also frees any mbufs + * that it may have buffered for this queue. + * + * @param eth_dev_id + * Port identifier of Ethernet device. + * @param tx_queue_id + * Ethernet device transmit queue index. + * @return + * - 0: Success + * - <0: Error code on failure + */ +__rte_experimental +int +rte_event_eth_tx_adapter_queue_stop(uint16_t eth_dev_id, uint16_t tx_queue_id); #ifdef __cplusplus } diff a/lib/eventdev/version.map b/lib/eventdev/version.map (rejected hunks) @@ -116,6 +116,8 @@ EXPERIMENTAL { # added in 22.11 rte_event_eth_rx_adapter_instance_get; rte_event_eth_tx_adapter_instance_get; + rte_event_eth_tx_adapter_queue_start; + rte_event_eth_tx_adapter_queue_stop; }; INTERNAL { Checking patch app/test/test_event_eth_tx_adapter.c... Hunk #1 succeeded at 638 (offset -73 lines). error: while searching for: tx_adapter_service), TEST_CASE_ST(tx_adapter_create, tx_adapter_free, tx_adapter_instance_get), TEST_CASE_ST(NULL, NULL, tx_adapter_dynamic_device), TEST_CASES_END() /**< NULL terminate unit test array */ } error: patch failed: app/test/test_event_eth_tx_adapter.c:770 Applying patch app/test/test_event_eth_tx_adapter.c with 1 reject... Hunk #1 applied cleanly. Rejected hunk #2. diff a/app/test/test_event_eth_tx_adapter.c b/app/test/test_event_eth_tx_adapter.c (rejected hunks) @@ -770,6 +854,8 @@ static struct unit_test_suite event_eth_tx_tests = { tx_adapter_service), TEST_CASE_ST(tx_adapter_create, tx_adapter_free, tx_adapter_instance_get), + TEST_CASE_ST(tx_adapter_create, tx_adapter_free, + tx_adapter_queue_start_stop), TEST_CASE_ST(NULL, NULL, tx_adapter_dynamic_device), TEST_CASES_END() /**< NULL terminate unit test array */ } Checking patch doc/guides/rel_notes/release_22_11.rst... error: while searching for: ethernet device id and Rx queue index. Added ``rte_event_eth_tx_adapter_instance_get`` to get the Tx adapter instance id for specified ethernet device id and Tx queue index. .. This section should contain new features added in this release. Sample format: error: patch failed: doc/guides/rel_notes/release_22_11.rst:29 Applying patch doc/guides/rel_notes/release_22_11.rst with 1 reject... Rejected hunk #1. diff a/doc/guides/rel_notes/release_22_11.rst b/doc/guides/rel_notes/release_22_11.rst (rejected hunks) @@ -29,6 +29,10 @@ New Features ethernet device id and Rx queue index. Added ``rte_event_eth_tx_adapter_instance_get`` to get the Tx adapter instance id for specified ethernet device id and Tx queue index. + Added ``rte_event_eth_tx_adapter_queue_start`` to start enqueueing packets to the Tx queue by + Tx adapter. + Added ``rte_event_eth_tx_adapter_queue_start`` to stop the Tx Adapter from transmitting any + mbufs to the Tx_queue. .. This section should contain new features added in this release. Sample format: https://lab.dpdk.org/results/dashboard/patchsets/23455/ UNH-IOL DPDK Community Lab