aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/net/bonding/bond_3ad.c61
1 files changed, 12 insertions, 49 deletions
diff --git a/drivers/net/bonding/bond_3ad.c b/drivers/net/bonding/bond_3ad.c
index 85cba316d1ea..ef46a968004e 100644
--- a/drivers/net/bonding/bond_3ad.c
+++ b/drivers/net/bonding/bond_3ad.c
@@ -107,7 +107,6 @@ static void ad_agg_selection_logic(struct aggregator *aggregator);
107static void ad_clear_agg(struct aggregator *aggregator); 107static void ad_clear_agg(struct aggregator *aggregator);
108static void ad_initialize_agg(struct aggregator *aggregator); 108static void ad_initialize_agg(struct aggregator *aggregator);
109static void ad_initialize_port(struct port *port, int lacp_fast); 109static void ad_initialize_port(struct port *port, int lacp_fast);
110static void ad_initialize_lacpdu(struct lacpdu *Lacpdu);
111static void ad_enable_collecting_distributing(struct port *port); 110static void ad_enable_collecting_distributing(struct port *port);
112static void ad_disable_collecting_distributing(struct port *port); 111static void ad_disable_collecting_distributing(struct port *port);
113static void ad_marker_info_received(struct bond_marker *marker_info, struct port *port); 112static void ad_marker_info_received(struct bond_marker *marker_info, struct port *port);
@@ -1659,6 +1658,17 @@ static void ad_initialize_port(struct port *port, int lacp_fast)
1659 .port_priority = 0xff, 1658 .port_priority = 0xff,
1660 .port_state = 1, 1659 .port_state = 1,
1661 }; 1660 };
1661 static const struct lacpdu lacpdu = {
1662 .subtype = 0x01,
1663 .version_number = 0x01,
1664 .tlv_type_actor_info = 0x01,
1665 .actor_information_length = 0x14,
1666 .tlv_type_partner_info = 0x02,
1667 .partner_information_length = 0x14,
1668 .tlv_type_collector_info = 0x03,
1669 .collector_information_length = 0x10,
1670 .collector_max_delay = htons(AD_COLLECTOR_MAX_DELAY),
1671 };
1662 1672
1663 if (port) { 1673 if (port) {
1664 port->actor_port_number = 1; 1674 port->actor_port_number = 1;
@@ -1695,7 +1705,7 @@ static void ad_initialize_port(struct port *port, int lacp_fast)
1695 port->next_port_in_aggregator = NULL; 1705 port->next_port_in_aggregator = NULL;
1696 port->transaction_id = 0; 1706 port->transaction_id = 0;
1697 1707
1698 ad_initialize_lacpdu(&(port->lacpdu)); 1708 memcpy(&port->lacpdu, &lacpdu, sizeof(lacpdu));
1699 } 1709 }
1700} 1710}
1701 1711
@@ -1804,53 +1814,6 @@ static void ad_marker_response_received(struct bond_marker *marker,
1804 // DO NOTHING, SINCE WE DECIDED NOT TO IMPLEMENT THIS FEATURE FOR NOW 1814 // DO NOTHING, SINCE WE DECIDED NOT TO IMPLEMENT THIS FEATURE FOR NOW
1805} 1815}
1806 1816
1807/**
1808 * ad_initialize_lacpdu - initialize a given lacpdu structure
1809 * @lacpdu: lacpdu structure to initialize
1810 *
1811 */
1812static void ad_initialize_lacpdu(struct lacpdu *lacpdu)
1813{
1814 u16 index;
1815
1816 // initialize lacpdu data
1817 lacpdu->subtype = 0x01;
1818 lacpdu->version_number = 0x01;
1819 lacpdu->tlv_type_actor_info = 0x01;
1820 lacpdu->actor_information_length = 0x14;
1821 // lacpdu->actor_system_priority updated on send
1822 // lacpdu->actor_system updated on send
1823 // lacpdu->actor_key updated on send
1824 // lacpdu->actor_port_priority updated on send
1825 // lacpdu->actor_port updated on send
1826 // lacpdu->actor_state updated on send
1827 lacpdu->tlv_type_partner_info = 0x02;
1828 lacpdu->partner_information_length = 0x14;
1829 for (index=0; index<=2; index++) {
1830 lacpdu->reserved_3_1[index]=0;
1831 }
1832 // lacpdu->partner_system_priority updated on send
1833 // lacpdu->partner_system updated on send
1834 // lacpdu->partner_key updated on send
1835 // lacpdu->partner_port_priority updated on send
1836 // lacpdu->partner_port updated on send
1837 // lacpdu->partner_state updated on send
1838 for (index=0; index<=2; index++) {
1839 lacpdu->reserved_3_2[index]=0;
1840 }
1841 lacpdu->tlv_type_collector_info = 0x03;
1842 lacpdu->collector_information_length= 0x10;
1843 lacpdu->collector_max_delay = htons(AD_COLLECTOR_MAX_DELAY);
1844 for (index=0; index<=11; index++) {
1845 lacpdu->reserved_12[index]=0;
1846 }
1847 lacpdu->tlv_type_terminator = 0x00;
1848 lacpdu->terminator_length = 0;
1849 for (index=0; index<=49; index++) {
1850 lacpdu->reserved_50[index]=0;
1851 }
1852}
1853
1854////////////////////////////////////////////////////////////////////////////////////// 1817//////////////////////////////////////////////////////////////////////////////////////
1855// ================= AD exported functions to the main bonding code ================== 1818// ================= AD exported functions to the main bonding code ==================
1856////////////////////////////////////////////////////////////////////////////////////// 1819//////////////////////////////////////////////////////////////////////////////////////