Commit e727149e authored by Holger Eitzenberger's avatar Holger Eitzenberger Committed by David S. Miller

802.3ad: use standard ethhdr instead of ad_header

802.3ad has its own ethhdr-like structure in the form of an ad_header,
which is at the start of both the LACPDU and marker PDU.  Both are
the same from the struct values, both are packed as well.

It's therefore perfectly fine to replace the ad_header by the ethhdr
and to remove its definition.
Signed-off-by: default avatarHolger Eitzenberger <holger@eitzenberger.org>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent e4ac4320
...@@ -840,13 +840,11 @@ static int ad_lacpdu_send(struct port *port) ...@@ -840,13 +840,11 @@ static int ad_lacpdu_send(struct port *port)
lacpdu_header = (struct lacpdu_header *)skb_put(skb, length); lacpdu_header = (struct lacpdu_header *)skb_put(skb, length);
memcpy(lacpdu_header->ad_header.destination_address.mac_addr_value, memcpy(lacpdu_header->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN);
lacpdu_mcast_addr, ETH_ALEN);
/* Note: source addres is set to be the member's PERMANENT address, /* Note: source addres is set to be the member's PERMANENT address,
because we use it to identify loopback lacpdus in receive. */ because we use it to identify loopback lacpdus in receive. */
memcpy(lacpdu_header->ad_header.source_address.mac_addr_value, memcpy(lacpdu_header->hdr.h_source, slave->perm_hwaddr, ETH_ALEN);
slave->perm_hwaddr, ETH_ALEN); lacpdu_header->hdr.h_proto = PKT_TYPE_LACPDU;
lacpdu_header->ad_header.length_type = PKT_TYPE_LACPDU;
lacpdu_header->lacpdu = port->lacpdu; // struct copy lacpdu_header->lacpdu = port->lacpdu; // struct copy
...@@ -884,13 +882,11 @@ static int ad_marker_send(struct port *port, struct bond_marker *marker) ...@@ -884,13 +882,11 @@ static int ad_marker_send(struct port *port, struct bond_marker *marker)
marker_header = (struct bond_marker_header *)skb_put(skb, length); marker_header = (struct bond_marker_header *)skb_put(skb, length);
memcpy(marker_header->ad_header.destination_address.mac_addr_value, memcpy(marker_header->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN);
lacpdu_mcast_addr, ETH_ALEN);
/* Note: source addres is set to be the member's PERMANENT address, /* Note: source addres is set to be the member's PERMANENT address,
because we use it to identify loopback MARKERs in receive. */ because we use it to identify loopback MARKERs in receive. */
memcpy(marker_header->ad_header.source_address.mac_addr_value, memcpy(marker_header->hdr.h_source, slave->perm_hwaddr, ETH_ALEN);
slave->perm_hwaddr, ETH_ALEN); marker_header->hdr.h_proto = PKT_TYPE_LACPDU;
marker_header->ad_header.length_type = PKT_TYPE_LACPDU;
marker_header->marker = *marker; // struct copy marker_header->marker = *marker; // struct copy
......
...@@ -105,12 +105,6 @@ typedef enum { ...@@ -105,12 +105,6 @@ typedef enum {
#pragma pack(1) #pragma pack(1)
typedef struct ad_header {
struct mac_addr destination_address;
struct mac_addr source_address;
__be16 length_type;
} ad_header_t;
// Link Aggregation Control Protocol(LACP) data unit structure(43.4.2.2 in the 802.3ad standard) // Link Aggregation Control Protocol(LACP) data unit structure(43.4.2.2 in the 802.3ad standard)
typedef struct lacpdu { typedef struct lacpdu {
u8 subtype; // = LACP(= 0x01) u8 subtype; // = LACP(= 0x01)
...@@ -143,7 +137,7 @@ typedef struct lacpdu { ...@@ -143,7 +137,7 @@ typedef struct lacpdu {
} lacpdu_t; } lacpdu_t;
typedef struct lacpdu_header { typedef struct lacpdu_header {
struct ad_header ad_header; struct ethhdr hdr;
struct lacpdu lacpdu; struct lacpdu lacpdu;
} lacpdu_header_t; } lacpdu_header_t;
...@@ -164,7 +158,7 @@ typedef struct bond_marker { ...@@ -164,7 +158,7 @@ typedef struct bond_marker {
} bond_marker_t; } bond_marker_t;
typedef struct bond_marker_header { typedef struct bond_marker_header {
struct ad_header ad_header; struct ethhdr hdr;
struct bond_marker marker; struct bond_marker marker;
} bond_marker_header_t; } bond_marker_header_t;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment