From c1613a72a7ef5443319a868879804bb53714068d Mon Sep 17 00:00:00 2001 From: Steve Shin Date: Fri, 30 Mar 2018 00:40:40 -0700 Subject: dpdk: fix crash due to incorrect xd->flags value with slave's link toggling xd->flags is set incorrectly when a slave link is down in bonded interface mode. This can result in VPP crash when data traffic flows to the interface. Change-Id: Ideb9f5231db1211e8452c52fde646d681310c951 Signed-off-by: Steve Shin --- src/plugins/dpdk/device/common.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/dpdk/device/common.c b/src/plugins/dpdk/device/common.c index e8f33cf22e0..3f113aaf22f 100644 --- a/src/plugins/dpdk/device/common.c +++ b/src/plugins/dpdk/device/common.c @@ -280,8 +280,11 @@ dpdk_port_state_callback_inline (dpdk_portid_t port_id, vl_api_force_rpc_call_main_thread (garp_na_proc_callback, (u8 *) & bd_port, sizeof (uword)); } - xd->flags |= link_up ? - DPDK_DEVICE_FLAG_BOND_SLAVE_UP : ~DPDK_DEVICE_FLAG_BOND_SLAVE_UP; + + if (link_up) + xd->flags |= DPDK_DEVICE_FLAG_BOND_SLAVE_UP; + else + xd->flags &= ~DPDK_DEVICE_FLAG_BOND_SLAVE_UP; } else /* Should not happen as callback not setup for "normal" links */ { -- cgit 1.2.3-korg