On 23/05/18 15:42, Stokes, Ian wrote:
When initialization of the DPDK PMD driver fails (dpdk_eth_dev_init()),
the reconfigure_datapath() function will remove the port from dp_netdev,
and the port is not used.

Now when bridge_reconfigure() is called again, no changes to the previous
failing netdev configuration are detected and therefore the ports gets
added to dp_netdev and used uninitialized. This is causing exceptions...

The fix has two parts to it. First in netdev-dpdk.c we remember if the
DPDK port was started or not, and when calling
netdev_dpdk_reconfigure() we also try re-initialization if the port was
not already active. The second part of the change is in dpif-netdev.c
where it makes sure netdev_reconfigure() is called if the port needs
reconfiguration, as netdev_is_reconf_required() is only true until
netdev_reconfigure() is called (even if it fails).
Thanks for this Eelco. The code LGTM, in terms of back porting I was able to 
re-produce the error it fixes on master, 2.9 and 2.8 so I'll backport it to 
them. However port errors seem to be handled correctly for 2.7 and 2.6 in my 
testing.

Have you seen the same behavior for 2.7 and 2.6 in your testing? We can 
backport to those also if you have but just wanted to confirm.
I only tested this on 2.8 and 2.9, I did not try any release earlier. If you tested 2.6-7 and it handles the port errors correctly, 2.8-9 seems enough to me.

Thanks
Ian

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to