summaryrefslogtreecommitdiff
path: root/datapath
diff options
context:
space:
mode:
authorIlya Maximets <i.maximets@ovn.org>2020-03-25 00:50:45 +0100
committerWilliam Tu <u9012063@gmail.com>2020-03-25 13:35:00 -0700
commitf598f46212d698f091408abd6ff6905a16980169 (patch)
tree66381c49feb66cc8ca0d275f897e38c750e000ad /datapath
parentedc2055a2bf73258d5731a8f8853397190348b04 (diff)
downloadopenvswitch-f598f46212d698f091408abd6ff6905a16980169.tar.gz
dpif-netdev: Force port reconfiguration to change dynamic_txqs.
In case number of polling threads goes from exact number of Tx queues in port to higher value while set_tx_multiq() not implemented or not requesting reconfiguration, port will not be reconfigured and datapath will continue using static Tx queue ids leading to crash. Ex.: Assuming that port p0 supports up to 4 Tx queues and doesn't support set_tx_multiq() method. For example, netdev-afxdp could be the case, because it could have multiple Tx queues, but doesn't have set_tx_multiq() implementation because number of Tx queues always equals to number of Rx queues. 1. Configuring pmd-cpu-mask to have 3 pmd threads. 2. Adding port p0 to OVS. At this point wanted_txqs = 4 (3 for pmd threads + 1 for non-pmd). Port reconfigured to have 4 Tx queues successfully. dynamic_txqs = (4 < 4) = false; 3. Configuring pmd-cpu-mask to have 10 pmd threads. At this point wanted_txqs = 11 (10 for pmd threads + 1 for non-pmd). Since set_tx_multiq() is not implemented, netdev doesn't request reconfiguration and 'dynamic_txqs' remains in 'false' state. 4. Since 'dynamic_txqs == false', dpif-netdev uses static Tx queue ids that are in range [0, 10] while device only supports 4 leading to unwanted behavior and crashes. Fix that by marking for reconfiguration all the ports that will likely change their 'dynamic_txqs' value. It looks like the issue could be reproduced only with afxdp ports, because all other non-dpdk ports ignores Tx queue ids and dpdk ports requests for reconfiguration on set_tx_multiq(). Reported-by: William Tu <u9012063@gmail.com> Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2020-March/368364.html Fixes: e32971b8ddb4 ("dpif-netdev: Centralized threads and queues handling code.") Acked-by: Kevin Traynor <ktraynor@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org> Signed-off-by: William Tu <u9012063@gmail.com>
Diffstat (limited to 'datapath')
0 files changed, 0 insertions, 0 deletions