Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

hsr: Use ether_addr_copy

It's slightly smaller/faster for some architectures.
Make sure def_multicast_addr is __aligned(2)

Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Joe Perches and committed by
David S. Miller
e83abe37 42621fd3

+17 -17
+5 -5
net/hsr/hsr_device.c
··· 209 209 /* Address substitution (IEC62439-3 pp 26, 50): replace mac 210 210 * address of outgoing frame with that of the outgoing slave's. 211 211 */ 212 - memcpy(hsr_ethhdr->ethhdr.h_source, skb->dev->dev_addr, ETH_ALEN); 212 + ether_addr_copy(hsr_ethhdr->ethhdr.h_source, skb->dev->dev_addr); 213 213 214 214 return dev_queue_xmit(skb); 215 215 } ··· 346 346 347 347 /* Payload: MacAddressA */ 348 348 hsr_sp = (typeof(hsr_sp)) skb_put(skb, sizeof(*hsr_sp)); 349 - memcpy(hsr_sp->MacAddressA, hsr_dev->dev_addr, ETH_ALEN); 349 + ether_addr_copy(hsr_sp->MacAddressA, hsr_dev->dev_addr); 350 350 351 351 dev_queue_xmit(skb); 352 352 return; ··· 493 493 494 494 495 495 /* Default multicast address for HSR Supervision frames */ 496 - static const unsigned char def_multicast_addr[ETH_ALEN] = { 496 + static const unsigned char def_multicast_addr[ETH_ALEN] __aligned(2) = { 497 497 0x01, 0x15, 0x4e, 0x00, 0x01, 0x00 498 498 }; 499 499 ··· 519 519 hsr_priv->announce_timer.function = hsr_announce; 520 520 hsr_priv->announce_timer.data = (unsigned long) hsr_priv; 521 521 522 - memcpy(hsr_priv->sup_multicast_addr, def_multicast_addr, ETH_ALEN); 522 + ether_addr_copy(hsr_priv->sup_multicast_addr, def_multicast_addr); 523 523 hsr_priv->sup_multicast_addr[ETH_ALEN - 1] = multicast_spec; 524 524 525 525 /* FIXME: should I modify the value of these? ··· 547 547 hsr_dev->features |= NETIF_F_VLAN_CHALLENGED; 548 548 549 549 /* Set hsr_dev's MAC address to that of mac_slave1 */ 550 - memcpy(hsr_dev->dev_addr, hsr_priv->slave[0]->dev_addr, ETH_ALEN); 550 + ether_addr_copy(hsr_dev->dev_addr, hsr_priv->slave[0]->dev_addr); 551 551 552 552 /* Set required header length */ 553 553 for (i = 0; i < HSR_MAX_SLAVE; i++) {
+10 -10
net/hsr/hsr_framereg.c
··· 108 108 if (!node) 109 109 return -ENOMEM; 110 110 111 - memcpy(node->MacAddressA, addr_a, ETH_ALEN); 112 - memcpy(node->MacAddressB, addr_b, ETH_ALEN); 111 + ether_addr_copy(node->MacAddressA, addr_a); 112 + ether_addr_copy(node->MacAddressB, addr_b); 113 113 114 114 rcu_read_lock(); 115 115 oldnode = list_first_or_null_rcu(self_node_db, ··· 199 199 /* Node is known, but frame was received from an unknown 200 200 * address. Node is PICS_SUBS capable; merge its AddrB. 201 201 */ 202 - memcpy(node->MacAddressB, hsr_ethsup->ethhdr.h_source, ETH_ALEN); 202 + ether_addr_copy(node->MacAddressB, hsr_ethsup->ethhdr.h_source); 203 203 node->AddrB_if = dev_idx; 204 204 return node; 205 205 } ··· 208 208 if (!node) 209 209 return NULL; 210 210 211 - memcpy(node->MacAddressA, hsr_sp->MacAddressA, ETH_ALEN); 212 - memcpy(node->MacAddressB, hsr_ethsup->ethhdr.h_source, ETH_ALEN); 211 + ether_addr_copy(node->MacAddressA, hsr_sp->MacAddressA); 212 + ether_addr_copy(node->MacAddressB, hsr_ethsup->ethhdr.h_source); 213 213 if (!ether_addr_equal(hsr_sp->MacAddressA, hsr_ethsup->ethhdr.h_source)) 214 214 node->AddrB_if = dev_idx; 215 215 else ··· 250 250 rcu_read_lock(); 251 251 node = find_node_by_AddrB(&hsr_priv->node_db, ethhdr->h_source); 252 252 if (node) 253 - memcpy(ethhdr->h_source, node->MacAddressA, ETH_ALEN); 253 + ether_addr_copy(ethhdr->h_source, node->MacAddressA); 254 254 rcu_read_unlock(); 255 255 } 256 256 ··· 272 272 rcu_read_lock(); 273 273 node = find_node_by_AddrA(&hsr_priv->node_db, ethhdr->h_dest); 274 274 if (node && (node->AddrB_if == dev_idx)) 275 - memcpy(ethhdr->h_dest, node->MacAddressB, ETH_ALEN); 275 + ether_addr_copy(ethhdr->h_dest, node->MacAddressB); 276 276 rcu_read_unlock(); 277 277 } 278 278 ··· 428 428 node = list_first_or_null_rcu(&hsr_priv->node_db, 429 429 struct node_entry, mac_list); 430 430 if (node) 431 - memcpy(addr, node->MacAddressA, ETH_ALEN); 431 + ether_addr_copy(addr, node->MacAddressA); 432 432 return node; 433 433 } 434 434 435 435 node = _pos; 436 436 list_for_each_entry_continue_rcu(node, &hsr_priv->node_db, mac_list) { 437 - memcpy(addr, node->MacAddressA, ETH_ALEN); 437 + ether_addr_copy(addr, node->MacAddressA); 438 438 return node; 439 439 } 440 440 ··· 462 462 return -ENOENT; /* No such entry */ 463 463 } 464 464 465 - memcpy(addr_b, node->MacAddressB, ETH_ALEN); 465 + ether_addr_copy(addr_b, node->MacAddressB); 466 466 467 467 tdiff = jiffies - node->time_in[HSR_DEV_SLAVE_A]; 468 468 if (node->time_in_stale[HSR_DEV_SLAVE_A])
+2 -2
net/hsr/hsr_main.c
··· 138 138 break; 139 139 140 140 if (dev == hsr_priv->slave[0]) 141 - memcpy(hsr_priv->dev->dev_addr, 142 - hsr_priv->slave[0]->dev_addr, ETH_ALEN); 141 + ether_addr_copy(hsr_priv->dev->dev_addr, 142 + hsr_priv->slave[0]->dev_addr); 143 143 144 144 /* Make sure we recognize frames from ourselves in hsr_rcv() */ 145 145 res = hsr_create_self_node(&hsr_priv->self_node_db,