Setup Rx queue at run time
Setup Rx queue when device is started, perform the check using flow API
Make sure that it is possible to setup a Rx queue when the Ethernet device is started. Perform the check using flow API rules.
Configure the Ethernet device
Change destination MAC to NIC MAC if it is present in pattern
Check for Rx queue runtime setup capability
Setup isolation mode if requested by isolated
Setup the queues that are not in rxq_runtime_setup_ids
Start the device
Stop and start the device again to make sure that the device can be stopped while some of its queues are not set up
Make flow rule attributes with only one "ingress" attribute
Make flow rule pattern by flow_rule_pattern
Prepare template that matches the filter
Prepare template that does not match the filter
Repeat following steps for all rxq_runtime_setup_ids
Check that all previously started queues are able to receive traffic
Validate and create the flow rule that redirects packets that match flow rule pattern to the target queue
Transmit one packet with prepared match template. Check that the packet was recieved on target queue
Transmit one packet with mismatching template. Check that the packet was recieved on default queue. In case of isolated flow - check that the packet appeared on neither target nor default queue
Destroy the flow rule
Setup a queue, add deferred start flag if requested by deferred_start
Restart the device to start all Rx queues that were setup previously except deferred start queues. Also make sure that the current state of the queues does not cause device start and stop failures
Start the queue if it is deferred (deferred_start)
Parameters:
isolated |
Isolated mode toggle |
flow_rule_pattern |
Flow rule |
nb_rxq |
Rx queue count |
rxq_runtime_setup_ids |
Indices of queues that will be setup and started at run time |
deferred_start |
Should the queues that setup at run time be marked as deferred |