Commit ada0f863 authored by Joe Perches's avatar Joe Perches Committed by David S. Miller

bonding: Convert memcpy(foo, bar, ETH_ALEN) to ether_addr_copy(foo, bar)

ether_addr_copy is smaller and faster for some architectures.

This relies on a stack frame being at least __aligned(2)
for one use of an Ethernet address on the stack.
Signed-off-by: default avatarJoe Perches <joe@perches.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 2ea24f2e
...@@ -768,11 +768,11 @@ static int ad_lacpdu_send(struct port *port) ...@@ -768,11 +768,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->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN); ether_addr_copy(lacpdu_header->hdr.h_dest, lacpdu_mcast_addr);
/* Note: source address is set to be the member's PERMANENT address, /* Note: source address 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->hdr.h_source, slave->perm_hwaddr, ETH_ALEN); ether_addr_copy(lacpdu_header->hdr.h_source, slave->perm_hwaddr);
lacpdu_header->hdr.h_proto = PKT_TYPE_LACPDU; lacpdu_header->hdr.h_proto = PKT_TYPE_LACPDU;
lacpdu_header->lacpdu = port->lacpdu; lacpdu_header->lacpdu = port->lacpdu;
...@@ -810,11 +810,11 @@ static int ad_marker_send(struct port *port, struct bond_marker *marker) ...@@ -810,11 +810,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->hdr.h_dest, lacpdu_mcast_addr, ETH_ALEN); ether_addr_copy(marker_header->hdr.h_dest, lacpdu_mcast_addr);
/* Note: source address is set to be the member's PERMANENT address, /* Note: source address 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->hdr.h_source, slave->perm_hwaddr, ETH_ALEN); ether_addr_copy(marker_header->hdr.h_source, slave->perm_hwaddr);
marker_header->hdr.h_proto = PKT_TYPE_LACPDU; marker_header->hdr.h_proto = PKT_TYPE_LACPDU;
marker_header->marker = *marker; marker_header->marker = *marker;
......
...@@ -333,7 +333,7 @@ static void rlb_update_entry_from_arp(struct bonding *bond, struct arp_pkt *arp) ...@@ -333,7 +333,7 @@ static void rlb_update_entry_from_arp(struct bonding *bond, struct arp_pkt *arp)
(client_info->ip_dst == arp->ip_src) && (client_info->ip_dst == arp->ip_src) &&
(!ether_addr_equal_64bits(client_info->mac_dst, arp->mac_src))) { (!ether_addr_equal_64bits(client_info->mac_dst, arp->mac_src))) {
/* update the clients MAC address */ /* update the clients MAC address */
memcpy(client_info->mac_dst, arp->mac_src, ETH_ALEN); ether_addr_copy(client_info->mac_dst, arp->mac_src);
client_info->ntt = 1; client_info->ntt = 1;
bond_info->rx_ntt = 1; bond_info->rx_ntt = 1;
} }
...@@ -669,9 +669,9 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon ...@@ -669,9 +669,9 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon
/* the entry is already assigned to this client */ /* the entry is already assigned to this client */
if (!ether_addr_equal_64bits(arp->mac_dst, mac_bcast)) { if (!ether_addr_equal_64bits(arp->mac_dst, mac_bcast)) {
/* update mac address from arp */ /* update mac address from arp */
memcpy(client_info->mac_dst, arp->mac_dst, ETH_ALEN); ether_addr_copy(client_info->mac_dst, arp->mac_dst);
} }
memcpy(client_info->mac_src, arp->mac_src, ETH_ALEN); ether_addr_copy(client_info->mac_src, arp->mac_src);
assigned_slave = client_info->slave; assigned_slave = client_info->slave;
if (assigned_slave) { if (assigned_slave) {
...@@ -711,8 +711,8 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon ...@@ -711,8 +711,8 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon
* will be updated with clients actual unicast mac address * will be updated with clients actual unicast mac address
* upon receiving an arp reply. * upon receiving an arp reply.
*/ */
memcpy(client_info->mac_dst, arp->mac_dst, ETH_ALEN); ether_addr_copy(client_info->mac_dst, arp->mac_dst);
memcpy(client_info->mac_src, arp->mac_src, ETH_ALEN); ether_addr_copy(client_info->mac_src, arp->mac_src);
client_info->slave = assigned_slave; client_info->slave = assigned_slave;
if (!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) { if (!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) {
...@@ -763,7 +763,7 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond) ...@@ -763,7 +763,7 @@ static struct slave *rlb_arp_xmit(struct sk_buff *skb, struct bonding *bond)
*/ */
tx_slave = rlb_choose_channel(skb, bond); tx_slave = rlb_choose_channel(skb, bond);
if (tx_slave) if (tx_slave)
memcpy(arp->mac_src, tx_slave->dev->dev_addr, ETH_ALEN); ether_addr_copy(arp->mac_src, tx_slave->dev->dev_addr);
pr_debug("Server sent ARP Reply packet\n"); pr_debug("Server sent ARP Reply packet\n");
} else if (arp->op_code == htons(ARPOP_REQUEST)) { } else if (arp->op_code == htons(ARPOP_REQUEST)) {
/* Create an entry in the rx_hashtbl for this client as a /* Create an entry in the rx_hashtbl for this client as a
...@@ -1003,8 +1003,8 @@ static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[], ...@@ -1003,8 +1003,8 @@ static void alb_send_lp_vid(struct slave *slave, u8 mac_addr[],
char *data; char *data;
memset(&pkt, 0, size); memset(&pkt, 0, size);
memcpy(pkt.mac_dst, mac_addr, ETH_ALEN); ether_addr_copy(pkt.mac_dst, mac_addr);
memcpy(pkt.mac_src, mac_addr, ETH_ALEN); ether_addr_copy(pkt.mac_src, mac_addr);
pkt.type = cpu_to_be16(ETH_P_LOOP); pkt.type = cpu_to_be16(ETH_P_LOOP);
skb = dev_alloc_skb(size); skb = dev_alloc_skb(size);
...@@ -1086,7 +1086,7 @@ static void alb_swap_mac_addr(struct slave *slave1, struct slave *slave2) ...@@ -1086,7 +1086,7 @@ static void alb_swap_mac_addr(struct slave *slave1, struct slave *slave2)
{ {
u8 tmp_mac_addr[ETH_ALEN]; u8 tmp_mac_addr[ETH_ALEN];
memcpy(tmp_mac_addr, slave1->dev->dev_addr, ETH_ALEN); ether_addr_copy(tmp_mac_addr, slave1->dev->dev_addr);
alb_set_slave_mac_addr(slave1, slave2->dev->dev_addr); alb_set_slave_mac_addr(slave1, slave2->dev->dev_addr);
alb_set_slave_mac_addr(slave2, tmp_mac_addr); alb_set_slave_mac_addr(slave2, tmp_mac_addr);
...@@ -1283,12 +1283,12 @@ static int alb_set_mac_address(struct bonding *bond, void *addr) ...@@ -1283,12 +1283,12 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
bond_for_each_slave(bond, slave, iter) { bond_for_each_slave(bond, slave, iter) {
/* save net_device's current hw address */ /* save net_device's current hw address */
memcpy(tmp_addr, slave->dev->dev_addr, ETH_ALEN); ether_addr_copy(tmp_addr, slave->dev->dev_addr);
res = dev_set_mac_address(slave->dev, addr); res = dev_set_mac_address(slave->dev, addr);
/* restore net_device's hw address */ /* restore net_device's hw address */
memcpy(slave->dev->dev_addr, tmp_addr, ETH_ALEN); ether_addr_copy(slave->dev->dev_addr, tmp_addr);
if (res) if (res)
goto unwind; goto unwind;
...@@ -1304,9 +1304,9 @@ static int alb_set_mac_address(struct bonding *bond, void *addr) ...@@ -1304,9 +1304,9 @@ static int alb_set_mac_address(struct bonding *bond, void *addr)
bond_for_each_slave(bond, rollback_slave, iter) { bond_for_each_slave(bond, rollback_slave, iter) {
if (rollback_slave == slave) if (rollback_slave == slave)
break; break;
memcpy(tmp_addr, rollback_slave->dev->dev_addr, ETH_ALEN); ether_addr_copy(tmp_addr, rollback_slave->dev->dev_addr);
dev_set_mac_address(rollback_slave->dev, &sa); dev_set_mac_address(rollback_slave->dev, &sa);
memcpy(rollback_slave->dev->dev_addr, tmp_addr, ETH_ALEN); ether_addr_copy(rollback_slave->dev->dev_addr, tmp_addr);
} }
return res; return res;
...@@ -1704,14 +1704,14 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave ...@@ -1704,14 +1704,14 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave
struct sockaddr sa; struct sockaddr sa;
u8 tmp_addr[ETH_ALEN]; u8 tmp_addr[ETH_ALEN];
memcpy(tmp_addr, new_slave->dev->dev_addr, ETH_ALEN); ether_addr_copy(tmp_addr, new_slave->dev->dev_addr);
memcpy(sa.sa_data, bond->dev->dev_addr, bond->dev->addr_len); memcpy(sa.sa_data, bond->dev->dev_addr, bond->dev->addr_len);
sa.sa_family = bond->dev->type; sa.sa_family = bond->dev->type;
/* we don't care if it can't change its mac, best effort */ /* we don't care if it can't change its mac, best effort */
dev_set_mac_address(new_slave->dev, &sa); dev_set_mac_address(new_slave->dev, &sa);
memcpy(new_slave->dev->dev_addr, tmp_addr, ETH_ALEN); ether_addr_copy(new_slave->dev->dev_addr, tmp_addr);
} }
/* curr_active_slave must be set before calling alb_swap_mac_addr */ /* curr_active_slave must be set before calling alb_swap_mac_addr */
......
...@@ -673,12 +673,12 @@ static void bond_do_fail_over_mac(struct bonding *bond, ...@@ -673,12 +673,12 @@ static void bond_do_fail_over_mac(struct bonding *bond,
write_unlock_bh(&bond->curr_slave_lock); write_unlock_bh(&bond->curr_slave_lock);
if (old_active) { if (old_active) {
memcpy(tmp_mac, new_active->dev->dev_addr, ETH_ALEN); ether_addr_copy(tmp_mac, new_active->dev->dev_addr);
memcpy(saddr.sa_data, old_active->dev->dev_addr, memcpy(saddr.sa_data, old_active->dev->dev_addr,
ETH_ALEN); ETH_ALEN);
saddr.sa_family = new_active->dev->type; saddr.sa_family = new_active->dev->type;
} else { } else {
memcpy(saddr.sa_data, bond->dev->dev_addr, ETH_ALEN); ether_addr_copy(saddr.sa_data, bond->dev->dev_addr);
saddr.sa_family = bond->dev->type; saddr.sa_family = bond->dev->type;
} }
...@@ -692,7 +692,7 @@ static void bond_do_fail_over_mac(struct bonding *bond, ...@@ -692,7 +692,7 @@ static void bond_do_fail_over_mac(struct bonding *bond,
if (!old_active) if (!old_active)
goto out; goto out;
memcpy(saddr.sa_data, tmp_mac, ETH_ALEN); ether_addr_copy(saddr.sa_data, tmp_mac);
saddr.sa_family = old_active->dev->type; saddr.sa_family = old_active->dev->type;
rv = dev_set_mac_address(old_active->dev, &saddr); rv = dev_set_mac_address(old_active->dev, &saddr);
...@@ -1316,7 +1316,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) ...@@ -1316,7 +1316,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
* that need it, and for restoring it upon release, and then * that need it, and for restoring it upon release, and then
* set it to the master's address * set it to the master's address
*/ */
memcpy(new_slave->perm_hwaddr, slave_dev->dev_addr, ETH_ALEN); ether_addr_copy(new_slave->perm_hwaddr, slave_dev->dev_addr);
if (!bond->params.fail_over_mac || if (!bond->params.fail_over_mac ||
bond->params.mode != BOND_MODE_ACTIVEBACKUP) { bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
...@@ -1587,7 +1587,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev) ...@@ -1587,7 +1587,7 @@ int bond_enslave(struct net_device *bond_dev, struct net_device *slave_dev)
* MAC if this slave's MAC is in use by the bond, or at * MAC if this slave's MAC is in use by the bond, or at
* least print a warning. * least print a warning.
*/ */
memcpy(addr.sa_data, new_slave->perm_hwaddr, ETH_ALEN); ether_addr_copy(addr.sa_data, new_slave->perm_hwaddr);
addr.sa_family = slave_dev->type; addr.sa_family = slave_dev->type;
dev_set_mac_address(slave_dev, &addr); dev_set_mac_address(slave_dev, &addr);
} }
...@@ -1776,7 +1776,7 @@ static int __bond_release_one(struct net_device *bond_dev, ...@@ -1776,7 +1776,7 @@ static int __bond_release_one(struct net_device *bond_dev,
if (bond->params.fail_over_mac != BOND_FOM_ACTIVE || if (bond->params.fail_over_mac != BOND_FOM_ACTIVE ||
bond->params.mode != BOND_MODE_ACTIVEBACKUP) { bond->params.mode != BOND_MODE_ACTIVEBACKUP) {
/* restore original ("permanent") mac address */ /* restore original ("permanent") mac address */
memcpy(addr.sa_data, slave->perm_hwaddr, ETH_ALEN); ether_addr_copy(addr.sa_data, slave->perm_hwaddr);
addr.sa_family = slave_dev->type; addr.sa_family = slave_dev->type;
dev_set_mac_address(slave_dev, &addr); dev_set_mac_address(slave_dev, &addr);
} }
......
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