Merge 'master' into 'next'.
[sliver-openvswitch.git] / lib / bond.h
index 1e8ea7e..fe58792 100644 (file)
@@ -24,7 +24,6 @@
 #include "tag.h"
 
 struct flow;
-struct lacp_slave_settings;
 struct netdev;
 struct ofpbuf;
 
@@ -51,6 +50,7 @@ const char *bond_detect_mode_to_string(enum bond_detect_mode);
 /* Configuration for a bond as a whole. */
 struct bond_settings {
     char *name;                 /* Bond's name, for log messages. */
+    uint32_t basis;             /* Flow hashing basis. */
 
     /* Balancing configuration. */
     enum bond_mode balance;
@@ -64,9 +64,6 @@ struct bond_settings {
 
     /* Legacy compatibility. */
     bool fake_iface;            /* Update fake stats for netdev 'name'? */
-
-    /* LACP. */
-    struct lacp_settings *lacp; /* NULL to disable LACP. */
 };
 
 /* Program startup. */
@@ -77,13 +74,18 @@ struct bond *bond_create(const struct bond_settings *);
 void bond_destroy(struct bond *);
 
 bool bond_reconfigure(struct bond *, const struct bond_settings *);
-void bond_slave_register(struct bond *, void *slave_, struct netdev *,
-                         const struct lacp_slave_settings *);
+void bond_slave_register(struct bond *, void *slave_,
+                         uint32_t stable_id, struct netdev *);
+void bond_slave_set_netdev(struct bond *, void *slave_, struct netdev *);
 void bond_slave_unregister(struct bond *, const void *slave);
 
-void bond_run(struct bond *, struct tag_set *);
+void bond_run(struct bond *, struct tag_set *, bool lacp_negotiated);
 void bond_wait(struct bond *);
 
+/* LACP. */
+void bond_slave_set_lacp_may_enable(struct bond *, void *slave_,
+                                    bool may_enable);
+
 /* Special MAC learning support for SLB bonding. */
 bool bond_should_send_learning_packets(struct bond *);
 int bond_send_learning_packet(struct bond *,
@@ -101,8 +103,6 @@ enum bond_verdict bond_check_admissibility(struct bond *, const void *slave_,
                                            tag_type *);
 void *bond_choose_output_slave(struct bond *,
                                const struct flow *, uint16_t vlan, tag_type *);
-void bond_process_lacp(struct bond *, void *slave,
-                       const struct ofpbuf *packet);
 
 /* Rebalancing. */
 void bond_account(struct bond *, const struct flow *, uint16_t vlan,