5 #ifndef RTE_ETH_BOND_8023AD_H_ 6 #define RTE_ETH_BOND_8023AD_H_ 17 #define STATE_LACP_ACTIVE 0x01 18 #define STATE_LACP_SHORT_TIMEOUT 0x02 19 #define STATE_AGGREGATION 0x04 20 #define STATE_SYNCHRONIZATION 0x08 21 #define STATE_COLLECTING 0x10 22 #define STATE_DISTRIBUTING 0x20 24 #define STATE_DEFAULTED 0x40 25 #define STATE_EXPIRED 0x80 27 #define TLV_TYPE_ACTOR_INFORMATION 0x01 28 #define TLV_TYPE_PARTNER_INFORMATION 0x02 29 #define TLV_TYPE_COLLECTOR_INFORMATION 0x03 30 #define TLV_TYPE_TERMINATOR_INFORMATION 0x00 32 #define SLOW_SUBTYPE_LACP 0x01 33 #define SLOW_SUBTYPE_MARKER 0x02 35 #define MARKER_TLV_TYPE_INFO 0x01 36 #define MARKER_TLV_TYPE_RESP 0x02 38 #define SLOW_TX_QUEUE_HW_DEFAULT_SIZE 512 39 #define SLOW_RX_QUEUE_HW_DEFAULT_SIZE 512 41 typedef void (*rte_eth_bond_8023ad_ext_slowrx_fn)(uint16_t member_id,
44 enum rte_bond_8023ad_selection {
50 enum rte_bond_8023ad_agg_selection {
59 uint8_t reserved_119[119];
69 uint16_t system_priority;
71 struct rte_ether_addr system;
75 uint16_t port_priority;
82 uint8_t tlv_type_info;
84 struct port_params port_params;
86 uint8_t reserved_3[3];
92 uint8_t version_number;
94 struct lacpdu_actor_partner_params actor;
95 struct lacpdu_actor_partner_params partner;
97 uint8_t tlv_type_collector_info;
98 uint8_t collector_info_length;
99 uint16_t collector_max_delay;
100 uint8_t reserved_12[12];
102 uint8_t tlv_type_terminator;
103 uint8_t terminator_length;
104 uint8_t reserved_50[50];
110 struct lacpdu lacpdu;
115 uint8_t version_number;
117 uint8_t tlv_type_marker;
119 uint16_t requester_port;
120 struct rte_ether_addr requester_system;
121 uint32_t requester_transaction_id;
122 uint8_t reserved_2[2];
124 uint8_t tlv_type_terminator;
125 uint8_t terminator_length;
126 uint8_t reserved_90[90];
131 struct marker marker;
134 struct rte_eth_bond_8023ad_conf {
135 uint32_t fast_periodic_ms;
136 uint32_t slow_periodic_ms;
137 uint32_t short_timeout_ms;
138 uint32_t long_timeout_ms;
139 uint32_t aggregate_wait_timeout_ms;
140 uint32_t tx_period_ms;
141 uint32_t rx_marker_period_ms;
142 uint32_t update_timeout_ms;
143 rte_eth_bond_8023ad_ext_slowrx_fn slowrx_cb;
144 enum rte_bond_8023ad_agg_selection agg_selection;
147 struct rte_eth_bond_8023ad_member_info {
148 enum rte_bond_8023ad_selection selected;
150 struct port_params actor;
151 uint8_t partner_state;
152 struct port_params partner;
153 uint16_t agg_port_id;
169 rte_eth_bond_8023ad_conf_get(uint16_t port_id,
170 struct rte_eth_bond_8023ad_conf *conf);
184 rte_eth_bond_8023ad_setup(uint16_t port_id,
185 struct rte_eth_bond_8023ad_conf *conf);
200 rte_eth_bond_8023ad_member_info(uint16_t port_id, uint16_t member_id,
201 struct rte_eth_bond_8023ad_member_info *conf);
214 rte_eth_bond_8023ad_ext_collect(uint16_t port_id, uint16_t member_id,
228 rte_eth_bond_8023ad_ext_collect_get(uint16_t port_id, uint16_t member_id);
241 rte_eth_bond_8023ad_ext_distrib(uint16_t port_id, uint16_t member_id,
255 rte_eth_bond_8023ad_ext_distrib_get(uint16_t port_id, uint16_t member_id);
269 rte_eth_bond_8023ad_ext_slowtx(uint16_t port_id, uint16_t member_id,
295 rte_eth_bond_8023ad_dedicated_queues_enable(uint16_t port_id);
312 rte_eth_bond_8023ad_dedicated_queues_disable(uint16_t port_id);
322 rte_eth_bond_8023ad_agg_selection_get(uint16_t port_id);
331 rte_eth_bond_8023ad_agg_selection_set(uint16_t port_id,
332 enum rte_bond_8023ad_agg_selection agg_selection);