include/net/bond_3ad.h

Source file repositories/reference/linux-study-clean/include/net/bond_3ad.h

File Facts

System
Linux kernel
Corpus path
include/net/bond_3ad.h
Extension
.h
Size
9775 bytes
Lines
318
Domain
Networking Core
Bucket
Sockets, Protocols, Packet Path, And Network Policy
Inferred role
Networking Core: implementation source
Status
source implementation candidate

Why This File Exists

Networking stack implementation surface: socket APIs, protocol dispatch, packet flow, routing, filtering, and network namespaces.

Dependency Surface

Detected Declarations

Annotated Snippet

struct bond_3ad_stats {
	atomic64_t lacpdu_rx;
	atomic64_t lacpdu_tx;
	atomic64_t lacpdu_unknown_rx;
	atomic64_t lacpdu_illegal_rx;

	atomic64_t marker_rx;
	atomic64_t marker_tx;
	atomic64_t marker_resp_rx;
	atomic64_t marker_resp_tx;
	atomic64_t marker_unknown_rx;
};

/* aggregator structure(43.4.5 in the 802.3ad standard) */
typedef struct aggregator {
	struct mac_addr aggregator_mac_address;
	u16 aggregator_identifier;
	bool is_individual;
	u16 actor_admin_aggregator_key;
	u16 actor_oper_aggregator_key;
	struct mac_addr partner_system;
	u16 partner_system_priority;
	u16 partner_oper_aggregator_key;
	u16 receive_state;	/* BOOLEAN */
	u16 transmit_state;	/* BOOLEAN */
	struct port *lag_ports;
	/* ****** PRIVATE PARAMETERS ****** */
	struct slave *slave;	/* pointer to the bond slave that this aggregator belongs to */
	u16 is_active;		/* BOOLEAN. Indicates if this aggregator is active */
	u16 num_of_ports;
} aggregator_t;

struct port_params {
	struct mac_addr system;
	u16 system_priority;
	u16 key;
	u16 port_number;
	u16 port_priority;
	u16 port_state;
};

/* port structure(43.4.6 in the 802.3ad standard) */
typedef struct port {
	u16 actor_port_number;
	u16 actor_port_priority;
	struct mac_addr actor_system;	/* This parameter is added here although it is not specified in the standard, just for simplification */
	u16 actor_system_priority;	/* This parameter is added here although it is not specified in the standard, just for simplification */
	u16 actor_port_aggregator_identifier;
	bool ntt;
	u16 actor_admin_port_key;
	u16 actor_oper_port_key;
	u8 actor_admin_port_state;
	u8 actor_oper_port_state;

	struct port_params partner_admin;
	struct port_params partner_oper;

	bool is_enabled;

	/* ****** PRIVATE PARAMETERS ****** */
	u16 sm_vars;		/* all state machines variables for this port */
	rx_states_t sm_rx_state;	/* state machine rx state */
	u16 sm_rx_timer_counter;	/* state machine rx timer counter */
	periodic_states_t sm_periodic_state;	/* state machine periodic state */
	u16 sm_periodic_timer_counter;	/* state machine periodic timer counter */
	mux_states_t sm_mux_state;	/* state machine mux state */
	u16 sm_mux_timer_counter;	/* state machine mux timer counter */
	tx_states_t sm_tx_state;	/* state machine tx state */
	u16 sm_tx_timer_counter;	/* state machine tx timer counter
					 * (always on - enter to transmit
					 *  state 3 time per second)
					 */
	u16 sm_churn_actor_timer_counter;
	u16 sm_churn_partner_timer_counter;
	u32 churn_actor_count;
	u32 churn_partner_count;
	churn_state_t sm_churn_actor_state;
	churn_state_t sm_churn_partner_state;
	struct slave *slave;		/* pointer to the bond slave that this port belongs to */
	struct aggregator __rcu *aggregator;	/* pointer to an aggregator that this port related to */
	struct port *next_port_in_aggregator;	/* Next port on the linked list of the parent aggregator */
	u32 transaction_id;		/* continuous number for identification of Marker PDU's; */
	struct lacpdu lacpdu;		/* the lacpdu that will be sent for this port */
} port_t;

/* system structure */
struct ad_system {
	u16 sys_priority;
	struct mac_addr sys_mac_addr;
};

Annotation

Implementation Notes