Deferred start RX queue test

Deferred start of random RX queue and checking that it works properly

Make sure that if we use deferred start on randomly chosen queue, then this queue actually will not receive packets until we do it manually

  1. Prepare n_rxq RX queues and set deffered flag randomly

  2. Initialise the port in order to obtain RSS capabilities

  3. Check maximum number of Rx queues

  4. Prepare desired RSS hash configuration

  5. Lead the ethdev to state TEST_ETHDEV_CONFIGURED

  6. Start the Ethernet device

  7. Retrieve information about chosen RX queue and make sure that the rx_deferred_start flag is set Ignore this check if rx_queue_info_get function is not supported

  8. Prepare tmpl for test

  9. Establish effective RSS hash configuration

  10. Get RSS Redirection Table. If the corresponding RPC is not supported, use default Redirection Table

  11. Change tmpl to be sure that packet will be received on the deferred_queue queue using Redirection Table and RSS hash configuration

  12. Ensure that interface is UP on Tester side

  13. Transmit and sniff packet from tst_if

  14. Try to receive packets on deferred_queue queue Check that iut_port hasn't received any packets on deferred_queue queue

  15. Start deferred_queue RX queue

  16. Check that the deferred_queue RX queue have no packets received

  17. Transmit and sniff packet from tst_if

  18. Receive packet on deferred_queue queue

  19. If the packet has not hit the target queue, consider symmetric RSS hash. Change the template so that it will produce a packet hitting the target queue in terms of symmetric hash. Then try to send and capture it again.

  20. Check that the received packet matches the sent one from tst_if

  21. Stop deferred_queue RX queue

  22. Retrieve information about RX queue and make sure that the rx_deferred_start flag is set after stopping deferred_queue RX queue Ignore this check if rx_queue_info_get function is not supported

Parameters:

tmpl

Traffic template

n_rxq

The number of RX queues