--- zzzz-none-000/linux-4.4.60/include/net/bonding.h 2017-04-08 07:53:53.000000000 +0000 +++ scorpion-7490-727/linux-4.4.60/include/net/bonding.h 2021-02-04 17:41:59.000000000 +0000 @@ -29,6 +29,7 @@ #include #include #include +#include #define BOND_MAX_ARP_TARGETS 16 @@ -86,6 +87,8 @@ #define bond_for_each_slave_rcu(bond, pos, iter) \ netdev_for_each_lower_private_rcu((bond)->dev, pos, iter) +extern struct bond_cb __rcu *bond_cb; + #ifdef CONFIG_NET_POLL_CONTROLLER extern atomic_t netpoll_block_tx; @@ -225,6 +228,7 @@ u32 rr_tx_counter; struct ad_bond_info ad_info; struct alb_bond_info alb_info; + struct l2da_bond_info l2da_info; struct bond_params params; struct workqueue_struct *wq; struct delayed_work mii_work; @@ -238,7 +242,22 @@ struct dentry *debug_dir; #endif /* CONFIG_DEBUG_FS */ struct rtnl_link_stats64 bond_stats; + u32 id; +}; + +#pragma pack(1) +struct arp_pkt { + __be16 hw_addr_space; + __be16 prot_addr_space; + u8 hw_addr_len; + u8 prot_addr_len; + __be16 op_code; + u8 mac_src[ETH_ALEN]; /* sender hardware address */ + __be32 ip_src; /* sender IP address */ + u8 mac_dst[ETH_ALEN]; /* target hardware address */ + __be32 ip_dst; /* target IP address */ }; +#pragma pack() #define bond_slave_get_rcu(dev) \ ((struct slave *) rcu_dereference(dev->rx_handler_data)) @@ -281,6 +300,11 @@ BOND_MODE(bond) == BOND_MODE_ALB; } +static inline bool bond_is_l2da(const struct bonding *bond) +{ + return bond->params.mode == BOND_MODE_L2DA; +} + static inline bool bond_is_nondyn_tlb(const struct bonding *bond) { return (BOND_MODE(bond) == BOND_MODE_TLB) && @@ -566,6 +590,11 @@ int level); int bond_update_slave_arr(struct bonding *bond, struct slave *skipslave); void bond_slave_arr_work_rearm(struct bonding *bond, unsigned long delay); +uint32_t bond_xmit_hash_without_skb(uint8_t *src_mac, uint8_t *dst_mac, + void *psrc, void *pdst, uint16_t protocol, + struct net_device *bond_dev, + __be16 *layer4hdr); +void bond_notify_l2da(uint8_t *slave_mac_addr); #ifdef CONFIG_PROC_FS void bond_create_proc_entry(struct bonding *bond);