80 uint_t ott_ocount; /* ott_lock */
81 union { /* ott_lock */
82 overlay_target_point_t ott_point;
83 struct overlay_target_dyn {
84 refhash_t *ott_dhash;
85 avl_tree_t ott_tree;
86 } ott_dyn;
87 } ott_u;
88 } overlay_target_t;
89
90 typedef enum overlay_dev_flag {
91 OVERLAY_F_ACTIVATED = 0x01, /* Activate ioctl completed */
92 OVERLAY_F_IN_MUX = 0x02, /* Currently in a mux */
93 OVERLAY_F_IN_TX = 0x04, /* Currently doing tx */
94 OVERLAY_F_IN_RX = 0x08, /* Currently doing rx */
95 OVERLAY_F_IOMASK = 0x0c, /* A mask for rx and tx */
96 OVERLAY_F_MDDROP = 0x10, /* Drop traffic for metadata update */
97 OVERLAY_F_STOPMASK = 0x1e, /* None set when stopping */
98 OVERLAY_F_VARPD = 0x20, /* varpd plugin exists */
99 OVERLAY_F_DEGRADED = 0x40, /* device is degraded */
100 OVERLAY_F_MASK = 0x7f /* mask of everything */
101 } overlay_dev_flag_t;
102
103 typedef struct overlay_dev {
104 kmutex_t odd_lock;
105 kcondvar_t odd_iowait;
106 list_node_t odd_link; /* overlay_dev_lock */
107 mac_handle_t odd_mh; /* RO */
108 overlay_plugin_t *odd_plugin; /* RO */
109 datalink_id_t odd_linkid; /* RO */
110 void *odd_pvoid; /* RO -- only used by plugin */
111 uint_t odd_ref; /* protected by odd_lock */
112 uint_t odd_mtu; /* protected by odd_lock */
113 overlay_dev_flag_t odd_flags; /* protected by odd_lock */
114 uint_t odd_rxcount; /* protected by odd_lock */
115 uint_t odd_txcount; /* protected by odd_lock */
116 overlay_mux_t *odd_mux; /* protected by odd_lock */
117 uint64_t odd_vid; /* RO if active else odd_lock */
118 avl_node_t odd_muxnode; /* managed by mux */
119 overlay_target_t *odd_target; /* See big theory statement */
120 char odd_fmamsg[OVERLAY_STATUS_BUFLEN]; /* odd_lock */
|
80 uint_t ott_ocount; /* ott_lock */
81 union { /* ott_lock */
82 overlay_target_point_t ott_point;
83 struct overlay_target_dyn {
84 refhash_t *ott_dhash;
85 avl_tree_t ott_tree;
86 } ott_dyn;
87 } ott_u;
88 } overlay_target_t;
89
90 typedef enum overlay_dev_flag {
91 OVERLAY_F_ACTIVATED = 0x01, /* Activate ioctl completed */
92 OVERLAY_F_IN_MUX = 0x02, /* Currently in a mux */
93 OVERLAY_F_IN_TX = 0x04, /* Currently doing tx */
94 OVERLAY_F_IN_RX = 0x08, /* Currently doing rx */
95 OVERLAY_F_IOMASK = 0x0c, /* A mask for rx and tx */
96 OVERLAY_F_MDDROP = 0x10, /* Drop traffic for metadata update */
97 OVERLAY_F_STOPMASK = 0x1e, /* None set when stopping */
98 OVERLAY_F_VARPD = 0x20, /* varpd plugin exists */
99 OVERLAY_F_DEGRADED = 0x40, /* device is degraded */
100 OVERLAY_F_TXSTOPPED = 0x80, /* device needs max_tx_update */
101 OVERLAY_F_MASK = 0xff /* mask of everything */
102 } overlay_dev_flag_t;
103
104 typedef struct overlay_dev {
105 kmutex_t odd_lock;
106 kcondvar_t odd_iowait;
107 list_node_t odd_link; /* overlay_dev_lock */
108 mac_handle_t odd_mh; /* RO */
109 overlay_plugin_t *odd_plugin; /* RO */
110 datalink_id_t odd_linkid; /* RO */
111 void *odd_pvoid; /* RO -- only used by plugin */
112 uint_t odd_ref; /* protected by odd_lock */
113 uint_t odd_mtu; /* protected by odd_lock */
114 overlay_dev_flag_t odd_flags; /* protected by odd_lock */
115 uint_t odd_rxcount; /* protected by odd_lock */
116 uint_t odd_txcount; /* protected by odd_lock */
117 overlay_mux_t *odd_mux; /* protected by odd_lock */
118 uint64_t odd_vid; /* RO if active else odd_lock */
119 avl_node_t odd_muxnode; /* managed by mux */
120 overlay_target_t *odd_target; /* See big theory statement */
121 char odd_fmamsg[OVERLAY_STATUS_BUFLEN]; /* odd_lock */
|