summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/sys/aggr_lacp.h
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/uts/common/sys/aggr_lacp.h')
-rw-r--r--usr/src/uts/common/sys/aggr_lacp.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/usr/src/uts/common/sys/aggr_lacp.h b/usr/src/uts/common/sys/aggr_lacp.h
index ebcc07cb12..ef8c7408ac 100644
--- a/usr/src/uts/common/sys/aggr_lacp.h
+++ b/usr/src/uts/common/sys/aggr_lacp.h
@@ -157,8 +157,6 @@ typedef struct Agg {
aggr_lacp_timer_t PeriodicTimer; /* AGGR_LACP_{LONG,SHORT} */
uint64_t TimeOfLastOperChange; /* Time in state */
boolean_t ready; /* Ready_N for all ports TRUE */
-
- krwlock_t gl_lock;
} Agg_t;
/*
@@ -192,6 +190,19 @@ typedef struct state_machine {
} state_machine_t;
/*
+ * The following three flags are set when specific timer is timed out; used
+ * by the LACP timer handler thread.
+ */
+#define LACP_PERIODIC_TIMEOUT 0x01
+#define LACP_WAIT_WHILE_TIMEOUT 0x02
+#define LACP_CURRENT_WHILE_TIMEOUT 0x04
+/*
+ * Set when the port is being deleted; used to inform the LACP timer handler
+ * thread to exit.
+ */
+#define LACP_THREAD_EXIT 0x08
+
+/*
* 802.3ad Variables associated with each port (section 43.4.7)
*/
typedef struct aggr_lacp_port {
@@ -228,6 +239,10 @@ typedef struct aggr_lacp_port {
lacp_timer_t current_while_timer;
lacp_timer_t periodic_timer;
lacp_timer_t wait_while_timer;
+ uint32_t lacp_timer_bits;
+ kthread_t *lacp_timer_thread;
+ kmutex_t lacp_timer_lock;
+ kcondvar_t lacp_timer_cv;
hrtime_t time;
} aggr_lacp_port_t;