Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 122940
b: refs/heads/master
c: e4ac432
h: refs/heads/master
v: v3
  • Loading branch information
Holger Eitzenberger authored and David S. Miller committed Dec 26, 2008
1 parent 75bc7df commit 7a707b5
Show file tree
Hide file tree
Showing 3 changed files with 15 additions and 12 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 7addeef6b15c9b7cffaaf40ec5b5b0940145ec16
refs/heads/master: e4ac43200fd6b8b8de3b487e74e74d3742f70d79
24 changes: 14 additions & 10 deletions trunk/drivers/net/bonding/bond_3ad.c
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,8 @@ static struct mac_addr null_mac_addr = {{0, 0, 0, 0, 0, 0}};
static u16 ad_ticks_per_sec;
static const int ad_delta_in_ticks = (AD_TIMER_INTERVAL * HZ) / 1000;

static const u8 lacpdu_mcast_addr[ETH_ALEN] = MULTICAST_LACPDU_ADDR;

// ================= main 802.3ad protocol functions ==================
static int ad_lacpdu_send(struct port *port);
static int ad_marker_send(struct port *port, struct bond_marker *marker);
Expand Down Expand Up @@ -824,7 +826,6 @@ static int ad_lacpdu_send(struct port *port)
struct sk_buff *skb;
struct lacpdu_header *lacpdu_header;
int length = sizeof(struct lacpdu_header);
struct mac_addr lacpdu_multicast_address = AD_MULTICAST_LACPDU_ADDR;

skb = dev_alloc_skb(length);
if (!skb) {
Expand All @@ -839,10 +840,12 @@ static int ad_lacpdu_send(struct port *port)

lacpdu_header = (struct lacpdu_header *)skb_put(skb, length);

lacpdu_header->ad_header.destination_address = lacpdu_multicast_address;
/* Note: source addres is set to be the member's PERMANENT address, because we use it
to identify loopback lacpdus in receive. */
lacpdu_header->ad_header.source_address = *((struct mac_addr *)(slave->perm_hwaddr));
memcpy(lacpdu_header->ad_header.destination_address.mac_addr_value,
lacpdu_mcast_addr, ETH_ALEN);
/* Note: source addres is set to be the member's PERMANENT address,
because we use it to identify loopback lacpdus in receive. */
memcpy(lacpdu_header->ad_header.source_address.mac_addr_value,
slave->perm_hwaddr, ETH_ALEN);
lacpdu_header->ad_header.length_type = PKT_TYPE_LACPDU;

lacpdu_header->lacpdu = port->lacpdu; // struct copy
Expand All @@ -866,7 +869,6 @@ static int ad_marker_send(struct port *port, struct bond_marker *marker)
struct sk_buff *skb;
struct bond_marker_header *marker_header;
int length = sizeof(struct bond_marker_header);
struct mac_addr lacpdu_multicast_address = AD_MULTICAST_LACPDU_ADDR;

skb = dev_alloc_skb(length + 16);
if (!skb) {
Expand All @@ -882,10 +884,12 @@ static int ad_marker_send(struct port *port, struct bond_marker *marker)

marker_header = (struct bond_marker_header *)skb_put(skb, length);

marker_header->ad_header.destination_address = lacpdu_multicast_address;
/* Note: source addres is set to be the member's PERMANENT address, because we use it
to identify loopback MARKERs in receive. */
marker_header->ad_header.source_address = *((struct mac_addr *)(slave->perm_hwaddr));
memcpy(marker_header->ad_header.destination_address.mac_addr_value,
lacpdu_mcast_addr, ETH_ALEN);
/* Note: source addres is set to be the member's PERMANENT address,
because we use it to identify loopback MARKERs in receive. */
memcpy(marker_header->ad_header.source_address.mac_addr_value,
slave->perm_hwaddr, ETH_ALEN);
marker_header->ad_header.length_type = PKT_TYPE_LACPDU;

marker_header->marker = *marker; // struct copy
Expand Down
1 change: 0 additions & 1 deletion trunk/drivers/net/bonding/bond_3ad.h
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@
#define AD_TIMER_INTERVAL 100 /*msec*/

#define MULTICAST_LACPDU_ADDR {0x01, 0x80, 0xC2, 0x00, 0x00, 0x02}
#define AD_MULTICAST_LACPDU_ADDR {MULTICAST_LACPDU_ADDR}

#define AD_LACP_SLOW 0
#define AD_LACP_FAST 1
Expand Down

0 comments on commit 7a707b5

Please sign in to comment.