summaryrefslogtreecommitdiff
path: root/ofproto
diff options
context:
space:
mode:
authorlic121 <lic121@chinatelecom.cn>2022-05-26 14:25:14 +0000
committerIlya Maximets <i.maximets@ovn.org>2022-06-28 12:06:23 +0200
commit29a2f183543b2d5bdcc958952afdcc55f520ad2d (patch)
tree5a3dc29449ec21f5b9e5848efea66796e96dbaa4 /ofproto
parent509c32765a3218aafc44b036b1fd4e8e6c4d2d51 (diff)
downloadopenvswitch-29a2f183543b2d5bdcc958952afdcc55f520ad2d.tar.gz
ofproto-dpif: Avoid unneccesary backer revalidation.
If lldp didn't change, we are not supposed to trigger backer revalidation. Without this patch, bridge_reconfigure() always trigger udpif revalidator because of lldp. Signed-off-by: lic121 <lic121@chinatelecom.cn> Signed-off-by: Eelco Chaudron <echaudro@redhat.com> Co-authored-by: Eelco Chaudron <echaudro@redhat.com> Acked-by: Paolo Valerio <pvalerio@redhat.com> Signed-off-by: Ilya Maximets <i.maximets@ovn.org>
Diffstat (limited to 'ofproto')
-rw-r--r--ofproto/ofproto-dpif.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c
index 28dcb8f86..f9562dee8 100644
--- a/ofproto/ofproto-dpif.c
+++ b/ofproto/ofproto-dpif.c
@@ -2491,11 +2491,11 @@ set_lldp(struct ofport *ofport_,
{
struct ofport_dpif *ofport = ofport_dpif_cast(ofport_);
struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofport->up.ofproto);
+ bool old_enable = lldp_is_enabled(ofport->lldp);
int error = 0;
- if (cfg) {
+ if (cfg && !smap_is_empty(cfg)) {
if (!ofport->lldp) {
- ofproto->backer->need_revalidate = REV_RECONFIGURE;
ofport->lldp = lldp_create(ofport->up.netdev, ofport_->mtu, cfg);
}
@@ -2507,6 +2507,9 @@ set_lldp(struct ofport *ofport_,
} else if (ofport->lldp) {
lldp_unref(ofport->lldp);
ofport->lldp = NULL;
+ }
+
+ if (lldp_is_enabled(ofport->lldp) != old_enable) {
ofproto->backer->need_revalidate = REV_RECONFIGURE;
}