#ifndef _NET_BOND_3AD_H
#define _NET_BOND_3AD_H
#include <asm/byteorder.h>
#include <linux/skbuff.h>
#include <linux/netdevice.h>
#include <linux/if_ether.h>
#define PKT_TYPE_LACPDU …
#define AD_TIMER_INTERVAL …
#define AD_LACP_SLOW …
#define AD_LACP_FAST …
mac_addr_t;
enum { … };
rx_states_t;
periodic_states_t;
mux_states_t;
tx_states_t;
churn_state_t;
pdu_type_t;
bond_marker_subtype_t;
ad_timers_t;
#pragma pack(1)
lacpdu_t;
lacpdu_header_t;
bond_marker_t;
bond_marker_header_t;
#pragma pack()
struct slave;
struct bonding;
struct ad_info;
struct port;
#ifdef __ia64__
#pragma pack(8)
#endif
struct bond_3ad_stats { … };
aggregator_t;
struct port_params { … };
port_t;
struct ad_system { … };
#ifdef __ia64__
#pragma pack()
#endif
#define BOND_AD_INFO(bond) …
#define SLAVE_AD_INFO(slave) …
struct ad_bond_info { … };
struct ad_slave_info { … };
static inline const char *bond_3ad_churn_desc(churn_state_t state)
{ … }
void bond_3ad_initialize(struct bonding *bond);
void bond_3ad_bind_slave(struct slave *slave);
void bond_3ad_unbind_slave(struct slave *slave);
void bond_3ad_state_machine_handler(struct work_struct *);
void bond_3ad_initiate_agg_selection(struct bonding *bond, int timeout);
void bond_3ad_adapter_speed_duplex_changed(struct slave *slave);
void bond_3ad_handle_link_change(struct slave *slave, char link);
int bond_3ad_get_active_agg_info(struct bonding *bond, struct ad_info *ad_info);
int __bond_3ad_get_active_agg_info(struct bonding *bond,
struct ad_info *ad_info);
int bond_3ad_lacpdu_recv(const struct sk_buff *skb, struct bonding *bond,
struct slave *slave);
int bond_3ad_set_carrier(struct bonding *bond);
void bond_3ad_update_lacp_rate(struct bonding *bond);
void bond_3ad_update_ad_actor_settings(struct bonding *bond);
int bond_3ad_stats_fill(struct sk_buff *skb, struct bond_3ad_stats *stats);
size_t bond_3ad_stats_size(void);
#endif