netdev: Clean up and refactor packet receive interface.
[openvswitch] / vswitchd / bridge.c
index 6a4ebe58d2741155e9d679f41c92a34229019207..9b70e63cb1346e690753bf19936cacdace4c7f1e 100644 (file)
@@ -859,7 +859,6 @@ bridge_add_ofproto_ports(struct bridge *br)
                 options.name = iface->name;
                 options.type = iface->type;
                 options.args = &args;
-                options.ethertype = NETDEV_ETH_TYPE_NONE;
                 error = netdev_open(&options, &iface->netdev);
             } else {
                 error = netdev_set_config(iface->netdev, &args);
@@ -871,12 +870,6 @@ bridge_add_ofproto_ports(struct bridge *br)
                           iface->name, strerror(error));
             }
 
-            /* Populate stats columns in new Interface rows. */
-            if (iface->netdev && !iface->cfg->mtu) {
-                iface_refresh_stats(iface);
-                iface_refresh_status(iface);
-            }
-
             /* Add the port, if necessary. */
             if (iface->netdev && iface->ofp_port < 0) {
                 uint16_t ofp_port;
@@ -892,6 +885,12 @@ bridge_add_ofproto_ports(struct bridge *br)
                 }
             }
 
+            /* Populate stats columns in new Interface rows. */
+            if (iface->netdev && !iface->cfg->mtu) {
+                iface_refresh_stats(iface);
+                iface_refresh_status(iface);
+            }
+
             /* Delete the iface if  */
             if (iface->netdev && iface->ofp_port >= 0) {
                 VLOG_DBG("bridge %s: interface %s is on port %d",
@@ -925,7 +924,6 @@ bridge_add_ofproto_ports(struct bridge *br)
                 options.name = port->name;
                 options.type = "internal";
                 options.args = NULL;
-                options.ethertype = NETDEV_ETH_TYPE_NONE;
                 error = netdev_open(&options, &netdev);
                 if (!error) {
                     ofproto_port_add(br->ofproto, netdev, NULL);
@@ -2256,6 +2254,11 @@ port_configure_bond(struct port *port, struct bond_settings *s,
                   port->name, port->cfg->bond_mode,
                   bond_mode_to_string(s->balance));
     }
+    if (s->balance == BM_SLB && port->bridge->cfg->n_flood_vlans) {
+        VLOG_WARN("port %s: SLB bonds are incompatible with flood_vlans, "
+                  "please use another bond type or disable flood_vlans",
+                  port->name);
+    }
 
     miimon_interval = atoi(get_port_other_config(port->cfg,
                                                  "bond-miimon-interval", "0"));