Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dpif-netdev: Avoid infinite re-addition of misconfigured ports.
Infinite re-addition of failed ports happens if the device in userspace datapath has a linux network interface and it's not able to be configured. For example, if the first reconfiguration fails because of misconfiguration or bad initial device state. In current code victims are afxdp ports and the Mellanox NIC ports opened by the DPDK due to their bifurcated drivers (It's unlikely for usual netdev-linux ports to fail). The root cause: Every change in the state of the network interface of a linux kernel device generates if-notifier event and if-notifier event triggers the OVS code to re-apply the configuration of ports, i.e. add broken ports back. The most obvious part is that dpif-netdev changes the device flags before trying to configure it: 1. add_port() 2. set_flags() --> if-notifier event 3. reconfigure() --> port removal from the datapath due to misconfiguration or any other issue in the underlying device. 4. setting flags back --> another if-notifier event. 5. There was new if-notifier event? yes --> re-apply all settings. --> goto step 1. Easy way to reproduce is to add afxdp port with n_rxq=N, where N is bigger than device supports. This patch fixes the most obvious case for this issue by moving enabling of a promisc mode later to the place where we already know that device could be added to datapath without errors, i.e. after its first successful reconfiguration. Reported-at: https://mail.openvswitch.org/pipermail/ovs-dev/2019-September/363038.html Signed-off-by: Ilya Maximets <i.maximets@ovn.org> Signed-off-by: 0-day Robot <robot@bytheb.org>
- Loading branch information