* [PATCH 0/3] net,drivers/net: Use ether_addr_equal and ether_addr_equal_64bits @ 2012-05-10 3:04 Joe Perches 2012-05-10 3:04 ` [PATCH 2/3] etherdevice.h: Add ether_addr_equal_64bits Joe Perches ` (2 more replies) 0 siblings, 3 replies; 16+ messages in thread From: Joe Perches @ 2012-05-10 3:04 UTC (permalink / raw) To: David S. Miller, netdev, linux-wireless, ath5k-devel, ath9k-devel Cc: linux-kernel Joe Perches (3): drivers/net: Convert compare_ether_addr to ether_addr_equal etherdevice.h: Add ether_addr_equal_64bits net,drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits drivers/net/bonding/bond_alb.c | 58 ++++++++++---------- drivers/net/bonding/bond_main.c | 2 +- drivers/net/ethernet/amd/depca.c | 3 +- drivers/net/ethernet/cisco/enic/enic_main.c | 12 ++--- drivers/net/ethernet/dec/ewrk3.c | 3 +- drivers/net/ethernet/dec/tulip/de4x5.c | 2 +- drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 5 +- drivers/net/ethernet/sfc/ethtool.c | 2 +- drivers/net/ethernet/sun/sunvnet.c | 2 +- drivers/net/ethernet/tile/tilepro.c | 2 +- drivers/net/ethernet/toshiba/ps3_gelic_wireless.c | 8 ++-- drivers/net/macvlan.c | 7 +-- drivers/net/tun.c | 2 +- drivers/net/wireless/at76c50x-usb.c | 2 +- drivers/net/wireless/ath/ath5k/base.c | 6 +- drivers/net/wireless/ath/ath9k/recv.c | 2 +- drivers/net/wireless/ath/carl9170/rx.c | 2 +- drivers/net/wireless/ipw2x00/libipw_rx.c | 16 +++--- drivers/net/wireless/iwlegacy/3945.c | 4 +- drivers/net/wireless/iwlegacy/4965-mac.c | 2 +- drivers/net/wireless/iwlegacy/common.c | 14 +++--- drivers/net/wireless/iwlwifi/iwl-agn-rx.c | 4 +- drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 8 ++-- drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 6 +- drivers/net/wireless/mwl8k.c | 2 +- drivers/net/wireless/p54/txrx.c | 2 +- drivers/net/wireless/rndis_wlan.c | 12 ++-- drivers/net/wireless/rtlwifi/base.c | 2 +- drivers/net/wireless/rtlwifi/ps.c | 2 +- drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 10 ++-- drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 10 ++-- drivers/net/wireless/rtlwifi/rtl8192de/trx.c | 11 ++-- drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 11 ++-- include/linux/etherdevice.h | 20 +++++++ net/ethernet/eth.c | 5 +- 35 files changed, 140 insertions(+), 121 deletions(-) -- 1.7.8.111.gad25c.dirty ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 2/3] etherdevice.h: Add ether_addr_equal_64bits 2012-05-10 3:04 [PATCH 0/3] net,drivers/net: Use ether_addr_equal and ether_addr_equal_64bits Joe Perches @ 2012-05-10 3:04 ` Joe Perches 2012-05-11 3:35 ` David Miller 2012-05-10 3:04 ` [PATCH 3/3] net,drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits Joe Perches 2012-05-10 3:17 ` [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal Joe Perches 2 siblings, 1 reply; 16+ messages in thread From: Joe Perches @ 2012-05-10 3:04 UTC (permalink / raw) To: David S. Miller, linux-kernel; +Cc: netdev Add an optimized boolean function to check if 2 ethernet addresses are the same. This is to avoid any confusion about compare_ether_addr_64bits returning an unsigned, and not being able to use the compare_ether_addr_64bits function for sorting ala memcmp. Signed-off-by: Joe Perches <joe@perches.com> --- include/linux/etherdevice.h | 20 ++++++++++++++++++++ 1 files changed, 20 insertions(+), 0 deletions(-) diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index f330114..afacf85 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -225,6 +225,26 @@ static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2], } /** + * ether_addr_equal_64bits - Compare two Ethernet addresses + * @addr1: Pointer to an array of 8 bytes + * @addr2: Pointer to an other array of 8 bytes + * + * Compare two ethernet addresses, returns true if equal, false otherwise. + * + * The function doesn't need any conditional branches and possibly uses + * word memory accesses on CPU allowing cheap unaligned memory reads. + * arrays = { byte1, byte2, byte3, byte4, byte6, byte7, pad1, pad2} + * + * Please note that alignment of addr1 & addr2 is only guaranted to be 16 bits. + */ + +static inline bool ether_addr_equal_64bits(const u8 addr1[6+2], + const u8 addr2[6+2]) +{ + return !compare_ether_addr_64bits(addr1, addr2); +} + +/** * is_etherdev_addr - Tell if given Ethernet address belongs to the device. * @dev: Pointer to a device structure * @addr: Pointer to a six-byte array containing the Ethernet address -- 1.7.8.111.gad25c.dirty ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 2/3] etherdevice.h: Add ether_addr_equal_64bits 2012-05-10 3:04 ` [PATCH 2/3] etherdevice.h: Add ether_addr_equal_64bits Joe Perches @ 2012-05-11 3:35 ` David Miller 0 siblings, 0 replies; 16+ messages in thread From: David Miller @ 2012-05-11 3:35 UTC (permalink / raw) To: joe; +Cc: linux-kernel, netdev From: Joe Perches <joe@perches.com> Date: Wed, 9 May 2012 20:04:03 -0700 > Add an optimized boolean function to check if > 2 ethernet addresses are the same. > > This is to avoid any confusion about compare_ether_addr_64bits > returning an unsigned, and not being able to use the > compare_ether_addr_64bits function for sorting ala memcmp. > > Signed-off-by: Joe Perches <joe@perches.com> Applied. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 3/3] net,drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits 2012-05-10 3:04 [PATCH 0/3] net,drivers/net: Use ether_addr_equal and ether_addr_equal_64bits Joe Perches 2012-05-10 3:04 ` [PATCH 2/3] etherdevice.h: Add ether_addr_equal_64bits Joe Perches @ 2012-05-10 3:04 ` Joe Perches 2012-05-11 3:35 ` David Miller 2012-05-10 3:17 ` [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal Joe Perches 2 siblings, 1 reply; 16+ messages in thread From: Joe Perches @ 2012-05-10 3:04 UTC (permalink / raw) To: David S. Miller, Jay Vosburgh, Andy Gospodarek, Patrick McHardy Cc: netdev, linux-kernel Use the new bool function ether_addr_equal_64bits to add some clarity and reduce the likelihood for misuse of compare_ether_addr_64bits for sorting. Done via cocci script: $ cat compare_ether_addr_64bits.cocci @@ expression a,b; @@ - !compare_ether_addr_64bits(a, b) + ether_addr_equal_64bits(a, b) @@ expression a,b; @@ - compare_ether_addr_64bits(a, b) + !ether_addr_equal_64bits(a, b) @@ expression a,b; @@ - !ether_addr_equal_64bits(a, b) == 0 + ether_addr_equal_64bits(a, b) @@ expression a,b; @@ - !ether_addr_equal_64bits(a, b) != 0 + !ether_addr_equal_64bits(a, b) @@ expression a,b; @@ - ether_addr_equal_64bits(a, b) == 0 + !ether_addr_equal_64bits(a, b) @@ expression a,b; @@ - ether_addr_equal_64bits(a, b) != 0 + ether_addr_equal_64bits(a, b) @@ expression a,b; @@ - !!ether_addr_equal_64bits(a, b) + ether_addr_equal_64bits(a, b) Signed-off-by: Joe Perches <joe@perches.com> --- drivers/net/bonding/bond_alb.c | 58 ++++++++++++++++++++-------------------- drivers/net/macvlan.c | 7 ++--- net/ethernet/eth.c | 5 ++- 3 files changed, 35 insertions(+), 35 deletions(-) diff --git a/drivers/net/bonding/bond_alb.c b/drivers/net/bonding/bond_alb.c index 9abfde4..b4f1b4a 100644 --- a/drivers/net/bonding/bond_alb.c +++ b/drivers/net/bonding/bond_alb.c @@ -332,7 +332,7 @@ static void rlb_update_entry_from_arp(struct bonding *bond, struct arp_pkt *arp) if ((client_info->assigned) && (client_info->ip_src == arp->ip_dst) && (client_info->ip_dst == arp->ip_src) && - (compare_ether_addr_64bits(client_info->mac_dst, arp->mac_src))) { + (!ether_addr_equal_64bits(client_info->mac_dst, arp->mac_src))) { /* update the clients MAC address */ memcpy(client_info->mac_dst, arp->mac_src, ETH_ALEN); client_info->ntt = 1; @@ -448,8 +448,8 @@ static void rlb_clear_slave(struct bonding *bond, struct slave *slave) if (assigned_slave) { rx_hash_table[index].slave = assigned_slave; - if (compare_ether_addr_64bits(rx_hash_table[index].mac_dst, - mac_bcast)) { + if (!ether_addr_equal_64bits(rx_hash_table[index].mac_dst, + mac_bcast)) { bond_info->rx_hashtbl[index].ntt = 1; bond_info->rx_ntt = 1; /* A slave has been removed from the @@ -561,7 +561,7 @@ static void rlb_req_update_slave_clients(struct bonding *bond, struct slave *sla client_info = &(bond_info->rx_hashtbl[hash_index]); if ((client_info->slave == slave) && - compare_ether_addr_64bits(client_info->mac_dst, mac_bcast)) { + !ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) { client_info->ntt = 1; ntt = 1; } @@ -600,9 +600,9 @@ static void rlb_req_update_subnet_clients(struct bonding *bond, __be32 src_ip) * unicast mac address. */ if ((client_info->ip_src == src_ip) && - compare_ether_addr_64bits(client_info->slave->dev->dev_addr, - bond->dev->dev_addr) && - compare_ether_addr_64bits(client_info->mac_dst, mac_bcast)) { + !ether_addr_equal_64bits(client_info->slave->dev->dev_addr, + bond->dev->dev_addr) && + !ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) { client_info->ntt = 1; bond_info->rx_ntt = 1; } @@ -629,7 +629,7 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon if ((client_info->ip_src == arp->ip_src) && (client_info->ip_dst == arp->ip_dst)) { /* the entry is already assigned to this client */ - if (compare_ether_addr_64bits(arp->mac_dst, mac_bcast)) { + if (!ether_addr_equal_64bits(arp->mac_dst, mac_bcast)) { /* update mac address from arp */ memcpy(client_info->mac_dst, arp->mac_dst, ETH_ALEN); } @@ -664,7 +664,7 @@ static struct slave *rlb_choose_channel(struct sk_buff *skb, struct bonding *bon memcpy(client_info->mac_dst, arp->mac_dst, ETH_ALEN); client_info->slave = assigned_slave; - if (compare_ether_addr_64bits(client_info->mac_dst, mac_bcast)) { + if (!ether_addr_equal_64bits(client_info->mac_dst, mac_bcast)) { client_info->ntt = 1; bond->alb_info.rx_ntt = 1; } else { @@ -1009,18 +1009,18 @@ static void alb_change_hw_addr_on_detach(struct bonding *bond, struct slave *sla int perm_curr_diff; int perm_bond_diff; - perm_curr_diff = compare_ether_addr_64bits(slave->perm_hwaddr, - slave->dev->dev_addr); - perm_bond_diff = compare_ether_addr_64bits(slave->perm_hwaddr, - bond->dev->dev_addr); + perm_curr_diff = !ether_addr_equal_64bits(slave->perm_hwaddr, + slave->dev->dev_addr); + perm_bond_diff = !ether_addr_equal_64bits(slave->perm_hwaddr, + bond->dev->dev_addr); if (perm_curr_diff && perm_bond_diff) { struct slave *tmp_slave; int i, found = 0; bond_for_each_slave(bond, tmp_slave, i) { - if (!compare_ether_addr_64bits(slave->perm_hwaddr, - tmp_slave->dev->dev_addr)) { + if (ether_addr_equal_64bits(slave->perm_hwaddr, + tmp_slave->dev->dev_addr)) { found = 1; break; } @@ -1074,10 +1074,10 @@ static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slav * check uniqueness of slave's mac address against the other * slaves in the bond. */ - if (compare_ether_addr_64bits(slave->perm_hwaddr, bond->dev->dev_addr)) { + if (!ether_addr_equal_64bits(slave->perm_hwaddr, bond->dev->dev_addr)) { bond_for_each_slave(bond, tmp_slave1, i) { - if (!compare_ether_addr_64bits(tmp_slave1->dev->dev_addr, - slave->dev->dev_addr)) { + if (ether_addr_equal_64bits(tmp_slave1->dev->dev_addr, + slave->dev->dev_addr)) { found = 1; break; } @@ -1099,8 +1099,8 @@ static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slav bond_for_each_slave(bond, tmp_slave1, i) { found = 0; bond_for_each_slave(bond, tmp_slave2, j) { - if (!compare_ether_addr_64bits(tmp_slave1->perm_hwaddr, - tmp_slave2->dev->dev_addr)) { + if (ether_addr_equal_64bits(tmp_slave1->perm_hwaddr, + tmp_slave2->dev->dev_addr)) { found = 1; break; } @@ -1115,8 +1115,8 @@ static int alb_handle_addr_collision_on_attach(struct bonding *bond, struct slav } if (!has_bond_addr) { - if (!compare_ether_addr_64bits(tmp_slave1->dev->dev_addr, - bond->dev->dev_addr)) { + if (ether_addr_equal_64bits(tmp_slave1->dev->dev_addr, + bond->dev->dev_addr)) { has_bond_addr = tmp_slave1; } @@ -1257,7 +1257,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev) case ETH_P_IP: { const struct iphdr *iph = ip_hdr(skb); - if (!compare_ether_addr_64bits(eth_data->h_dest, mac_bcast) || + if (ether_addr_equal_64bits(eth_data->h_dest, mac_bcast) || (iph->daddr == ip_bcast) || (iph->protocol == IPPROTO_IGMP)) { do_tx_balance = 0; @@ -1271,7 +1271,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev) /* IPv6 doesn't really use broadcast mac address, but leave * that here just in case. */ - if (!compare_ether_addr_64bits(eth_data->h_dest, mac_bcast)) { + if (ether_addr_equal_64bits(eth_data->h_dest, mac_bcast)) { do_tx_balance = 0; break; } @@ -1279,7 +1279,7 @@ int bond_alb_xmit(struct sk_buff *skb, struct net_device *bond_dev) /* IPv6 uses all-nodes multicast as an equivalent to * broadcasts in IPv4. */ - if (!compare_ether_addr_64bits(eth_data->h_dest, mac_v6_allmcast)) { + if (ether_addr_equal_64bits(eth_data->h_dest, mac_v6_allmcast)) { do_tx_balance = 0; break; } @@ -1603,8 +1603,8 @@ void bond_alb_handle_active_change(struct bonding *bond, struct slave *new_slave struct slave *tmp_slave; /* find slave that is holding the bond's mac address */ bond_for_each_slave(bond, tmp_slave, i) { - if (!compare_ether_addr_64bits(tmp_slave->dev->dev_addr, - bond->dev->dev_addr)) { + if (ether_addr_equal_64bits(tmp_slave->dev->dev_addr, + bond->dev->dev_addr)) { swap_slave = tmp_slave; break; } @@ -1681,8 +1681,8 @@ int bond_alb_set_mac_address(struct net_device *bond_dev, void *addr) swap_slave = NULL; bond_for_each_slave(bond, slave, i) { - if (!compare_ether_addr_64bits(slave->dev->dev_addr, - bond_dev->dev_addr)) { + if (ether_addr_equal_64bits(slave->dev->dev_addr, + bond_dev->dev_addr)) { swap_slave = slave; break; } diff --git a/drivers/net/macvlan.c b/drivers/net/macvlan.c index 9653ed6..ebacec1 100644 --- a/drivers/net/macvlan.c +++ b/drivers/net/macvlan.c @@ -57,7 +57,7 @@ static struct macvlan_dev *macvlan_hash_lookup(const struct macvlan_port *port, struct hlist_node *n; hlist_for_each_entry_rcu(vlan, n, &port->vlan_hash[addr[5]], hlist) { - if (!compare_ether_addr_64bits(vlan->dev->dev_addr, addr)) + if (ether_addr_equal_64bits(vlan->dev->dev_addr, addr)) return vlan; } return NULL; @@ -96,7 +96,7 @@ static int macvlan_addr_busy(const struct macvlan_port *port, * currently in use by the underlying device or * another macvlan. */ - if (!compare_ether_addr_64bits(port->dev->dev_addr, addr)) + if (ether_addr_equal_64bits(port->dev->dev_addr, addr)) return 1; if (macvlan_hash_lookup(port, addr)) @@ -118,8 +118,7 @@ static int macvlan_broadcast_one(struct sk_buff *skb, return vlan->forward(dev, skb); skb->dev = dev; - if (!compare_ether_addr_64bits(eth->h_dest, - dev->broadcast)) + if (ether_addr_equal_64bits(eth->h_dest, dev->broadcast)) skb->pkt_type = PACKET_BROADCAST; else skb->pkt_type = PACKET_MULTICAST; diff --git a/net/ethernet/eth.c b/net/ethernet/eth.c index 5889a6c..36e5880 100644 --- a/net/ethernet/eth.c +++ b/net/ethernet/eth.c @@ -164,7 +164,7 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) eth = eth_hdr(skb); if (unlikely(is_multicast_ether_addr(eth->h_dest))) { - if (!compare_ether_addr_64bits(eth->h_dest, dev->broadcast)) + if (ether_addr_equal_64bits(eth->h_dest, dev->broadcast)) skb->pkt_type = PACKET_BROADCAST; else skb->pkt_type = PACKET_MULTICAST; @@ -179,7 +179,8 @@ __be16 eth_type_trans(struct sk_buff *skb, struct net_device *dev) */ else if (1 /*dev->flags&IFF_PROMISC */ ) { - if (unlikely(compare_ether_addr_64bits(eth->h_dest, dev->dev_addr))) + if (unlikely(!ether_addr_equal_64bits(eth->h_dest, + dev->dev_addr))) skb->pkt_type = PACKET_OTHERHOST; } -- 1.7.8.111.gad25c.dirty ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 3/3] net,drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits 2012-05-10 3:04 ` [PATCH 3/3] net,drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits Joe Perches @ 2012-05-11 3:35 ` David Miller 2012-05-11 22:21 ` [PATCH net-next] etherdevice: Remove now unused compare_ether_addr_64bits Joe Perches 0 siblings, 1 reply; 16+ messages in thread From: David Miller @ 2012-05-11 3:35 UTC (permalink / raw) To: joe; +Cc: fubar, andy, kaber, netdev, linux-kernel From: Joe Perches <joe@perches.com> Date: Wed, 9 May 2012 20:04:04 -0700 > Use the new bool function ether_addr_equal_64bits to add > some clarity and reduce the likelihood for misuse of > compare_ether_addr_64bits for sorting. > > Done via cocci script: ... > Signed-off-by: Joe Perches <joe@perches.com> Applied. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH net-next] etherdevice: Remove now unused compare_ether_addr_64bits 2012-05-11 3:35 ` David Miller @ 2012-05-11 22:21 ` Joe Perches 2012-05-13 3:35 ` David Miller 0 siblings, 1 reply; 16+ messages in thread From: Joe Perches @ 2012-05-11 22:21 UTC (permalink / raw) To: David Miller; +Cc: netdev, linux-kernel Move and invert the logic from the otherwise unused compare_ether_addr_64bits to ether_addr_equal_64bits. Neaten the logic in is_etherdev_addr. Signed-off-by: Joe Perches <joe@perches.com> --- include/linux/etherdevice.h | 46 ++++++++++++------------------------------ 1 files changed, 13 insertions(+), 33 deletions(-) diff --git a/include/linux/etherdevice.h b/include/linux/etherdevice.h index afacf85..dc85c1d 100644 --- a/include/linux/etherdevice.h +++ b/include/linux/etherdevice.h @@ -193,12 +193,12 @@ static inline unsigned long zap_last_2bytes(unsigned long value) } /** - * compare_ether_addr_64bits - Compare two Ethernet addresses + * ether_addr_equal_64bits - Compare two Ethernet addresses * @addr1: Pointer to an array of 8 bytes * @addr2: Pointer to an other array of 8 bytes * - * Compare two ethernet addresses, returns 0 if equal, non-zero otherwise. - * Unlike memcmp(), it doesn't return a value suitable for sorting. + * Compare two ethernet addresses, returns true if equal, false otherwise. + * * The function doesn't need any conditional branches and possibly uses * word memory accesses on CPU allowing cheap unaligned memory reads. * arrays = { byte1, byte2, byte3, byte4, byte6, byte7, pad1, pad2} @@ -206,45 +206,25 @@ static inline unsigned long zap_last_2bytes(unsigned long value) * Please note that alignment of addr1 & addr2 is only guaranted to be 16 bits. */ -static inline unsigned compare_ether_addr_64bits(const u8 addr1[6+2], - const u8 addr2[6+2]) +static inline bool ether_addr_equal_64bits(const u8 addr1[6+2], + const u8 addr2[6+2]) { #ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS unsigned long fold = ((*(unsigned long *)addr1) ^ (*(unsigned long *)addr2)); if (sizeof(fold) == 8) - return zap_last_2bytes(fold) != 0; + return zap_last_2bytes(fold) == 0; fold |= zap_last_2bytes((*(unsigned long *)(addr1 + 4)) ^ (*(unsigned long *)(addr2 + 4))); - return fold != 0; + return fold == 0; #else - return compare_ether_addr(addr1, addr2); + return ether_addr_equal(addr1, addr2); #endif } /** - * ether_addr_equal_64bits - Compare two Ethernet addresses - * @addr1: Pointer to an array of 8 bytes - * @addr2: Pointer to an other array of 8 bytes - * - * Compare two ethernet addresses, returns true if equal, false otherwise. - * - * The function doesn't need any conditional branches and possibly uses - * word memory accesses on CPU allowing cheap unaligned memory reads. - * arrays = { byte1, byte2, byte3, byte4, byte6, byte7, pad1, pad2} - * - * Please note that alignment of addr1 & addr2 is only guaranted to be 16 bits. - */ - -static inline bool ether_addr_equal_64bits(const u8 addr1[6+2], - const u8 addr2[6+2]) -{ - return !compare_ether_addr_64bits(addr1, addr2); -} - -/** * is_etherdev_addr - Tell if given Ethernet address belongs to the device. * @dev: Pointer to a device structure * @addr: Pointer to a six-byte array containing the Ethernet address @@ -252,23 +232,23 @@ static inline bool ether_addr_equal_64bits(const u8 addr1[6+2], * Compare passed address with all addresses of the device. Return true if the * address if one of the device addresses. * - * Note that this function calls compare_ether_addr_64bits() so take care of + * Note that this function calls ether_addr_equal_64bits() so take care of * the right padding. */ static inline bool is_etherdev_addr(const struct net_device *dev, const u8 addr[6 + 2]) { struct netdev_hw_addr *ha; - int res = 1; + bool res = false; rcu_read_lock(); for_each_dev_addr(dev, ha) { - res = compare_ether_addr_64bits(addr, ha->addr); - if (!res) + res = ether_addr_equal_64bits(addr, ha->addr); + if (res) break; } rcu_read_unlock(); - return !res; + return res; } #endif /* __KERNEL__ */ ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH net-next] etherdevice: Remove now unused compare_ether_addr_64bits 2012-05-11 22:21 ` [PATCH net-next] etherdevice: Remove now unused compare_ether_addr_64bits Joe Perches @ 2012-05-13 3:35 ` David Miller 0 siblings, 0 replies; 16+ messages in thread From: David Miller @ 2012-05-13 3:35 UTC (permalink / raw) To: joe; +Cc: netdev, linux-kernel From: Joe Perches <joe@perches.com> Date: Fri, 11 May 2012 15:21:06 -0700 > Move and invert the logic from the otherwise unused > compare_ether_addr_64bits to ether_addr_equal_64bits. > > Neaten the logic in is_etherdev_addr. > > Signed-off-by: Joe Perches <joe@perches.com> Applied, thanks Joe. ^ permalink raw reply [flat|nested] 16+ messages in thread
* [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal 2012-05-10 3:04 [PATCH 0/3] net,drivers/net: Use ether_addr_equal and ether_addr_equal_64bits Joe Perches 2012-05-10 3:04 ` [PATCH 2/3] etherdevice.h: Add ether_addr_equal_64bits Joe Perches 2012-05-10 3:04 ` [PATCH 3/3] net,drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits Joe Perches @ 2012-05-10 3:17 ` Joe Perches [not found] ` <7c9881a67c52c2f218480b6742155b6d6928122d.1336618708.git.joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org> 2012-05-11 3:35 ` David Miller 2 siblings, 2 replies; 16+ messages in thread From: Joe Perches @ 2012-05-10 3:17 UTC (permalink / raw) To: David S. Miller, linux-kernel Cc: netdev, linux-wireless, ath5k-devel, ath9k-devel Use the new bool function ether_addr_equal to add some clarity and reduce the likelihood for misuse of compare_ether_addr for sorting. Done via cocci script: $ cat compare_ether_addr.cocci @@ expression a,b; @@ - !compare_ether_addr(a, b) + ether_addr_equal(a, b) @@ expression a,b; @@ - compare_ether_addr(a, b) + !ether_addr_equal(a, b) @@ expression a,b; @@ - !ether_addr_equal(a, b) == 0 + ether_addr_equal(a, b) @@ expression a,b; @@ - !ether_addr_equal(a, b) != 0 + !ether_addr_equal(a, b) @@ expression a,b; @@ - ether_addr_equal(a, b) == 0 + !ether_addr_equal(a, b) @@ expression a,b; @@ - ether_addr_equal(a, b) != 0 + ether_addr_equal(a, b) @@ expression a,b; @@ - !!ether_addr_equal(a, b) + ether_addr_equal(a, b) Signed-off-by: Joe Perches <joe@perches.com> --- drivers/net/bonding/bond_main.c | 2 +- drivers/net/ethernet/amd/depca.c | 3 ++- drivers/net/ethernet/cisco/enic/enic_main.c | 12 ++++-------- drivers/net/ethernet/dec/ewrk3.c | 3 ++- drivers/net/ethernet/dec/tulip/de4x5.c | 2 +- drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 5 ++--- drivers/net/ethernet/sfc/ethtool.c | 2 +- drivers/net/ethernet/sun/sunvnet.c | 2 +- drivers/net/ethernet/tile/tilepro.c | 2 +- drivers/net/ethernet/toshiba/ps3_gelic_wireless.c | 8 ++++---- drivers/net/tun.c | 2 +- drivers/net/wireless/at76c50x-usb.c | 2 +- drivers/net/wireless/ath/ath5k/base.c | 6 +++--- drivers/net/wireless/ath/ath9k/recv.c | 2 +- drivers/net/wireless/ath/carl9170/rx.c | 2 +- drivers/net/wireless/ipw2x00/libipw_rx.c | 16 ++++++++-------- drivers/net/wireless/iwlegacy/3945.c | 4 ++-- drivers/net/wireless/iwlegacy/4965-mac.c | 2 +- drivers/net/wireless/iwlegacy/common.c | 14 +++++++------- drivers/net/wireless/iwlwifi/iwl-agn-rx.c | 4 ++-- drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 8 ++++---- drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 6 +++--- drivers/net/wireless/mwl8k.c | 2 +- drivers/net/wireless/p54/txrx.c | 2 +- drivers/net/wireless/rndis_wlan.c | 12 ++++++------ drivers/net/wireless/rtlwifi/base.c | 2 +- drivers/net/wireless/rtlwifi/ps.c | 2 +- drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 10 +++++----- drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 10 +++++----- drivers/net/wireless/rtlwifi/rtl8192de/trx.c | 11 ++++++----- drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 11 ++++++----- 31 files changed, 85 insertions(+), 86 deletions(-) diff --git a/drivers/net/bonding/bond_main.c b/drivers/net/bonding/bond_main.c index 16dbf53..bbb0043 100644 --- a/drivers/net/bonding/bond_main.c +++ b/drivers/net/bonding/bond_main.c @@ -1961,7 +1961,7 @@ int bond_release(struct net_device *bond_dev, struct net_device *slave_dev) write_lock_bh(&bond->lock); if (!bond->params.fail_over_mac) { - if (!compare_ether_addr(bond_dev->dev_addr, slave->perm_hwaddr) && + if (ether_addr_equal(bond_dev->dev_addr, slave->perm_hwaddr) && bond->slave_cnt > 1) pr_warning("%s: Warning: the permanent HWaddr of %s - %pM - is still in use by %s. Set the HWaddr of %s to a different address to avoid conflicts.\n", bond_dev->name, slave_dev->name, diff --git a/drivers/net/ethernet/amd/depca.c b/drivers/net/ethernet/amd/depca.c index 86dd957..7f7b99a 100644 --- a/drivers/net/ethernet/amd/depca.c +++ b/drivers/net/ethernet/amd/depca.c @@ -1079,7 +1079,8 @@ static int depca_rx(struct net_device *dev) } else { lp->pktStats.multicast++; } - } else if (compare_ether_addr(buf, dev->dev_addr) == 0) { + } else if (ether_addr_equal(buf, + dev->dev_addr)) { lp->pktStats.unicast++; } diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c b/drivers/net/ethernet/cisco/enic/enic_main.c index d7ac6c1..8132c78 100644 --- a/drivers/net/ethernet/cisco/enic/enic_main.c +++ b/drivers/net/ethernet/cisco/enic/enic_main.c @@ -944,8 +944,7 @@ static void enic_update_multicast_addr_list(struct enic *enic) for (i = 0; i < enic->mc_count; i++) { for (j = 0; j < mc_count; j++) - if (compare_ether_addr(enic->mc_addr[i], - mc_addr[j]) == 0) + if (ether_addr_equal(enic->mc_addr[i], mc_addr[j])) break; if (j == mc_count) enic_dev_del_addr(enic, enic->mc_addr[i]); @@ -953,8 +952,7 @@ static void enic_update_multicast_addr_list(struct enic *enic) for (i = 0; i < mc_count; i++) { for (j = 0; j < enic->mc_count; j++) - if (compare_ether_addr(mc_addr[i], - enic->mc_addr[j]) == 0) + if (ether_addr_equal(mc_addr[i], enic->mc_addr[j])) break; if (j == enic->mc_count) enic_dev_add_addr(enic, mc_addr[i]); @@ -999,8 +997,7 @@ static void enic_update_unicast_addr_list(struct enic *enic) for (i = 0; i < enic->uc_count; i++) { for (j = 0; j < uc_count; j++) - if (compare_ether_addr(enic->uc_addr[i], - uc_addr[j]) == 0) + if (ether_addr_equal(enic->uc_addr[i], uc_addr[j])) break; if (j == uc_count) enic_dev_del_addr(enic, enic->uc_addr[i]); @@ -1008,8 +1005,7 @@ static void enic_update_unicast_addr_list(struct enic *enic) for (i = 0; i < uc_count; i++) { for (j = 0; j < enic->uc_count; j++) - if (compare_ether_addr(uc_addr[i], - enic->uc_addr[j]) == 0) + if (ether_addr_equal(uc_addr[i], enic->uc_addr[j])) break; if (j == enic->uc_count) enic_dev_add_addr(enic, uc_addr[i]); diff --git a/drivers/net/ethernet/dec/ewrk3.c b/drivers/net/ethernet/dec/ewrk3.c index 1879f84..17ae8c6 100644 --- a/drivers/net/ethernet/dec/ewrk3.c +++ b/drivers/net/ethernet/dec/ewrk3.c @@ -1016,7 +1016,8 @@ static int ewrk3_rx(struct net_device *dev) } else { lp->pktStats.multicast++; } - } else if (compare_ether_addr(p, dev->dev_addr) == 0) { + } else if (ether_addr_equal(p, + dev->dev_addr)) { lp->pktStats.unicast++; } lp->pktStats.bins[0]++; /* Duplicates stats.rx_packets */ diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c b/drivers/net/ethernet/dec/tulip/de4x5.c index 18b106c..d3cd489 100644 --- a/drivers/net/ethernet/dec/tulip/de4x5.c +++ b/drivers/net/ethernet/dec/tulip/de4x5.c @@ -1874,7 +1874,7 @@ de4x5_local_stats(struct net_device *dev, char *buf, int pkt_len) } else { lp->pktStats.multicast++; } - } else if (compare_ether_addr(buf, dev->dev_addr) == 0) { + } else if (ether_addr_equal(buf, dev->dev_addr)) { lp->pktStats.unicast++; } diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c index 5c47135..46e77a2 100644 --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c @@ -1965,7 +1965,7 @@ qlcnic_send_filter(struct qlcnic_adapter *adapter, __le16 vlan_id = 0; u8 hindex; - if (!compare_ether_addr(phdr->h_source, adapter->mac_addr)) + if (ether_addr_equal(phdr->h_source, adapter->mac_addr)) return; if (adapter->fhash.fnum >= adapter->fhash.fmax) @@ -2235,8 +2235,7 @@ qlcnic_xmit_frame(struct sk_buff *skb, struct net_device *netdev) if (adapter->flags & QLCNIC_MACSPOOF) { phdr = (struct ethhdr *)skb->data; - if (compare_ether_addr(phdr->h_source, - adapter->mac_addr)) + if (!ether_addr_equal(phdr->h_source, adapter->mac_addr)) goto drop_packet; } diff --git a/drivers/net/ethernet/sfc/ethtool.c b/drivers/net/ethernet/sfc/ethtool.c index f22f45f..62d4b81 100644 --- a/drivers/net/ethernet/sfc/ethtool.c +++ b/drivers/net/ethernet/sfc/ethtool.c @@ -1023,7 +1023,7 @@ static int efx_ethtool_set_class_rule(struct efx_nic *efx, return -EINVAL; /* Is it a default UC or MC filter? */ - if (!compare_ether_addr(mac_mask->h_dest, mac_addr_mc_mask) && + if (ether_addr_equal(mac_mask->h_dest, mac_addr_mc_mask) && vlan_tag_mask == 0) { if (is_multicast_ether_addr(mac_entry->h_dest)) rc = efx_filter_set_mc_def(&spec); diff --git a/drivers/net/ethernet/sun/sunvnet.c b/drivers/net/ethernet/sun/sunvnet.c index 38e3ae9..a108db3 100644 --- a/drivers/net/ethernet/sun/sunvnet.c +++ b/drivers/net/ethernet/sun/sunvnet.c @@ -618,7 +618,7 @@ struct vnet_port *__tx_port_find(struct vnet *vp, struct sk_buff *skb) struct vnet_port *port; hlist_for_each_entry(port, n, hp, hash) { - if (!compare_ether_addr(port->raddr, skb->data)) + if (ether_addr_equal(port->raddr, skb->data)) return port; } port = NULL; diff --git a/drivers/net/ethernet/tile/tilepro.c b/drivers/net/ethernet/tile/tilepro.c index 3d501ec..96070e9 100644 --- a/drivers/net/ethernet/tile/tilepro.c +++ b/drivers/net/ethernet/tile/tilepro.c @@ -843,7 +843,7 @@ static bool tile_net_poll_aux(struct tile_net_cpu *info, int index) if (!is_multicast_ether_addr(buf)) { /* Filter packets not for our address. */ const u8 *mine = dev->dev_addr; - filter = compare_ether_addr(mine, buf); + filter = !ether_addr_equal(mine, buf); } } diff --git a/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c b/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c index 5c14f82..961c832 100644 --- a/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c +++ b/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c @@ -1590,8 +1590,8 @@ static void gelic_wl_scan_complete_event(struct gelic_wl_info *wl) found = 0; oldest = NULL; list_for_each_entry(target, &wl->network_list, list) { - if (!compare_ether_addr(&target->hwinfo->bssid[2], - &scan_info->bssid[2])) { + if (ether_addr_equal(&target->hwinfo->bssid[2], + &scan_info->bssid[2])) { found = 1; pr_debug("%s: same BBS found scanned list\n", __func__); @@ -1691,8 +1691,8 @@ struct gelic_wl_scan_info *gelic_wl_find_best_bss(struct gelic_wl_info *wl) /* If bss specified, check it only */ if (test_bit(GELIC_WL_STAT_BSSID_SET, &wl->stat)) { - if (!compare_ether_addr(&scan_info->hwinfo->bssid[2], - wl->bssid)) { + if (ether_addr_equal(&scan_info->hwinfo->bssid[2], + wl->bssid)) { best_bss = scan_info; pr_debug("%s: bssid matched\n", __func__); break; diff --git a/drivers/net/tun.c b/drivers/net/tun.c index bb8c72c..987aeef 100644 --- a/drivers/net/tun.c +++ b/drivers/net/tun.c @@ -313,7 +313,7 @@ static int run_filter(struct tap_filter *filter, const struct sk_buff *skb) /* Exact match */ for (i = 0; i < filter->count; i++) - if (!compare_ether_addr(eh->h_dest, filter->addr[i])) + if (ether_addr_equal(eh->h_dest, filter->addr[i])) return 1; /* Inexact match (multicast only) */ diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c index faa8bcb..5ad74c8 100644 --- a/drivers/net/wireless/at76c50x-usb.c +++ b/drivers/net/wireless/at76c50x-usb.c @@ -1751,7 +1751,7 @@ static void at76_mac80211_tx(struct ieee80211_hw *hw, struct sk_buff *skb) * following workaround is necessary. If the TX frame is an * authentication frame extract the bssid and send the CMD_JOIN. */ if (mgmt->frame_control & cpu_to_le16(IEEE80211_STYPE_AUTH)) { - if (compare_ether_addr(priv->bssid, mgmt->bssid)) { + if (!ether_addr_equal(priv->bssid, mgmt->bssid)) { memcpy(priv->bssid, mgmt->bssid, ETH_ALEN); ieee80211_queue_work(hw, &priv->work_join_bssid); dev_kfree_skb_any(skb); diff --git a/drivers/net/wireless/ath/ath5k/base.c b/drivers/net/wireless/ath/ath5k/base.c index 49e3b19..0ba81a6 100644 --- a/drivers/net/wireless/ath/ath5k/base.c +++ b/drivers/net/wireless/ath/ath5k/base.c @@ -462,7 +462,7 @@ void ath5k_vif_iter(void *data, u8 *mac, struct ieee80211_vif *vif) } if (iter_data->need_set_hw_addr && iter_data->hw_macaddr) - if (compare_ether_addr(iter_data->hw_macaddr, mac) == 0) + if (ether_addr_equal(iter_data->hw_macaddr, mac)) iter_data->need_set_hw_addr = false; if (!iter_data->any_assoc) { @@ -1170,7 +1170,7 @@ ath5k_check_ibss_tsf(struct ath5k_hw *ah, struct sk_buff *skb, if (ieee80211_is_beacon(mgmt->frame_control) && le16_to_cpu(mgmt->u.beacon.capab_info) & WLAN_CAPABILITY_IBSS && - compare_ether_addr(mgmt->bssid, common->curbssid) == 0) { + ether_addr_equal(mgmt->bssid, common->curbssid)) { /* * Received an IBSS beacon with the same BSSID. Hardware *must* * have updated the local TSF. We have to work around various @@ -1234,7 +1234,7 @@ ath5k_update_beacon_rssi(struct ath5k_hw *ah, struct sk_buff *skb, int rssi) /* only beacons from our BSSID */ if (!ieee80211_is_beacon(mgmt->frame_control) || - compare_ether_addr(mgmt->bssid, common->curbssid) != 0) + !ether_addr_equal(mgmt->bssid, common->curbssid)) return; ewma_add(&ah->ah_beacon_rssi_avg, rssi); diff --git a/drivers/net/wireless/ath/ath9k/recv.c b/drivers/net/wireless/ath/ath9k/recv.c index 544e549..e1fcc68 100644 --- a/drivers/net/wireless/ath/ath9k/recv.c +++ b/drivers/net/wireless/ath/ath9k/recv.c @@ -1833,7 +1833,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int flush, bool hp) if (ieee80211_is_beacon(hdr->frame_control)) { RX_STAT_INC(rx_beacons); if (!is_zero_ether_addr(common->curbssid) && - !compare_ether_addr(hdr->addr3, common->curbssid)) + ether_addr_equal(hdr->addr3, common->curbssid)) rs.is_mybeacon = true; else rs.is_mybeacon = false; diff --git a/drivers/net/wireless/ath/carl9170/rx.c b/drivers/net/wireless/ath/carl9170/rx.c index dc99030..84b22ee 100644 --- a/drivers/net/wireless/ath/carl9170/rx.c +++ b/drivers/net/wireless/ath/carl9170/rx.c @@ -538,7 +538,7 @@ static void carl9170_ps_beacon(struct ar9170 *ar, void *data, unsigned int len) return; /* and only beacons from the associated BSSID, please */ - if (compare_ether_addr(hdr->addr3, ar->common.curbssid) || + if (!ether_addr_equal(hdr->addr3, ar->common.curbssid) || !ar->common.curaid) return; diff --git a/drivers/net/wireless/ipw2x00/libipw_rx.c b/drivers/net/wireless/ipw2x00/libipw_rx.c index c4955d2..02e0579 100644 --- a/drivers/net/wireless/ipw2x00/libipw_rx.c +++ b/drivers/net/wireless/ipw2x00/libipw_rx.c @@ -77,8 +77,8 @@ static struct libipw_frag_entry *libipw_frag_cache_find(struct if (entry->skb != NULL && entry->seq == seq && (entry->last_frag + 1 == frag || frag == -1) && - !compare_ether_addr(entry->src_addr, src) && - !compare_ether_addr(entry->dst_addr, dst)) + ether_addr_equal(entry->src_addr, src) && + ether_addr_equal(entry->dst_addr, dst)) return entry; } @@ -245,12 +245,12 @@ static int libipw_is_eapol_frame(struct libipw_device *ieee, /* check that the frame is unicast frame to us */ if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == IEEE80211_FCTL_TODS && - !compare_ether_addr(hdr->addr1, dev->dev_addr) && - !compare_ether_addr(hdr->addr3, dev->dev_addr)) { + ether_addr_equal(hdr->addr1, dev->dev_addr) && + ether_addr_equal(hdr->addr3, dev->dev_addr)) { /* ToDS frame with own addr BSSID and DA */ } else if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == IEEE80211_FCTL_FROMDS && - !compare_ether_addr(hdr->addr1, dev->dev_addr)) { + ether_addr_equal(hdr->addr1, dev->dev_addr)) { /* FromDS frame with own addr as DA */ } else return 0; @@ -523,8 +523,8 @@ int libipw_rx(struct libipw_device *ieee, struct sk_buff *skb, if (ieee->iw_mode == IW_MODE_MASTER && !wds && (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == - IEEE80211_FCTL_FROMDS && ieee->stadev - && !compare_ether_addr(hdr->addr2, ieee->assoc_ap_addr)) { + IEEE80211_FCTL_FROMDS && ieee->stadev && + ether_addr_equal(hdr->addr2, ieee->assoc_ap_addr)) { /* Frame from BSSID of the AP for which we are a client */ skb->dev = dev = ieee->stadev; stats = hostap_get_stats(dev); @@ -1468,7 +1468,7 @@ static inline int is_same_network(struct libipw_network *src, * as one network */ return ((src->ssid_len == dst->ssid_len) && (src->channel == dst->channel) && - !compare_ether_addr(src->bssid, dst->bssid) && + ether_addr_equal(src->bssid, dst->bssid) && !memcmp(src->ssid, dst->ssid, src->ssid_len)); } diff --git a/drivers/net/wireless/iwlegacy/3945.c b/drivers/net/wireless/iwlegacy/3945.c index b25c01b..87e5398 100644 --- a/drivers/net/wireless/iwlegacy/3945.c +++ b/drivers/net/wireless/iwlegacy/3945.c @@ -453,10 +453,10 @@ il3945_is_network_packet(struct il_priv *il, struct ieee80211_hdr *header) switch (il->iw_mode) { case NL80211_IFTYPE_ADHOC: /* Header: Dest. | Source | BSSID */ /* packets to our IBSS update information */ - return !compare_ether_addr(header->addr3, il->bssid); + return ether_addr_equal(header->addr3, il->bssid); case NL80211_IFTYPE_STATION: /* Header: Dest. | AP{BSSID} | Source */ /* packets to our IBSS update information */ - return !compare_ether_addr(header->addr2, il->bssid); + return ether_addr_equal(header->addr2, il->bssid); default: return 1; } diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c b/drivers/net/wireless/iwlegacy/4965-mac.c index f2baf94..509301a 100644 --- a/drivers/net/wireless/iwlegacy/4965-mac.c +++ b/drivers/net/wireless/iwlegacy/4965-mac.c @@ -2565,7 +2565,7 @@ il4965_find_station(struct il_priv *il, const u8 *addr) spin_lock_irqsave(&il->sta_lock, flags); for (i = start; i < il->hw_params.max_stations; i++) if (il->stations[i].used && - (!compare_ether_addr(il->stations[i].sta.sta.addr, addr))) { + ether_addr_equal(il->stations[i].sta.sta.addr, addr)) { ret = i; goto out; } diff --git a/drivers/net/wireless/iwlegacy/common.c b/drivers/net/wireless/iwlegacy/common.c index eaf24945..cbf2dc1 100644 --- a/drivers/net/wireless/iwlegacy/common.c +++ b/drivers/net/wireless/iwlegacy/common.c @@ -1896,8 +1896,8 @@ il_prep_station(struct il_priv *il, const u8 *addr, bool is_ap, sta_id = il->hw_params.bcast_id; else for (i = IL_STA_ID; i < il->hw_params.max_stations; i++) { - if (!compare_ether_addr - (il->stations[i].sta.sta.addr, addr)) { + if (ether_addr_equal(il->stations[i].sta.sta.addr, + addr)) { sta_id = i; break; } @@ -1926,7 +1926,7 @@ il_prep_station(struct il_priv *il, const u8 *addr, bool is_ap, if ((il->stations[sta_id].used & IL_STA_DRIVER_ACTIVE) && (il->stations[sta_id].used & IL_STA_UCODE_ACTIVE) && - !compare_ether_addr(il->stations[sta_id].sta.sta.addr, addr)) { + ether_addr_equal(il->stations[sta_id].sta.sta.addr, addr)) { D_ASSOC("STA %d (%pM) already added, not adding again.\n", sta_id, addr); return sta_id; @@ -3744,10 +3744,10 @@ il_full_rxon_required(struct il_priv *il) /* These items are only settable from the full RXON command */ CHK(!il_is_associated(il)); - CHK(compare_ether_addr(staging->bssid_addr, active->bssid_addr)); - CHK(compare_ether_addr(staging->node_addr, active->node_addr)); - CHK(compare_ether_addr - (staging->wlap_bssid_addr, active->wlap_bssid_addr)); + CHK(!ether_addr_equal(staging->bssid_addr, active->bssid_addr)); + CHK(!ether_addr_equal(staging->node_addr, active->node_addr)); + CHK(!ether_addr_equal(staging->wlap_bssid_addr, + active->wlap_bssid_addr)); CHK_NEQ(staging->dev_type, active->dev_type); CHK_NEQ(staging->channel, active->channel); CHK_NEQ(staging->air_propagation, active->air_propagation); diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c index 0c252c5..779f819 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c @@ -779,8 +779,8 @@ static void iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv, */ if (unlikely(ieee80211_is_beacon(fc) && priv->passive_no_rx)) { for_each_context(priv, ctx) { - if (compare_ether_addr(hdr->addr3, - ctx->active.bssid_addr)) + if (!ether_addr_equal(hdr->addr3, + ctx->active.bssid_addr)) continue; iwlagn_lift_passive_no_rx(priv); } diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c index 0f7c444..74fbee6 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c @@ -881,10 +881,10 @@ int iwl_full_rxon_required(struct iwl_priv *priv, /* These items are only settable from the full RXON command */ CHK(!iwl_is_associated_ctx(ctx)); - CHK(compare_ether_addr(staging->bssid_addr, active->bssid_addr)); - CHK(compare_ether_addr(staging->node_addr, active->node_addr)); - CHK(compare_ether_addr(staging->wlap_bssid_addr, - active->wlap_bssid_addr)); + CHK(!ether_addr_equal(staging->bssid_addr, active->bssid_addr)); + CHK(!ether_addr_equal(staging->node_addr, active->node_addr)); + CHK(!ether_addr_equal(staging->wlap_bssid_addr, + active->wlap_bssid_addr)); CHK_NEQ(staging->dev_type, active->dev_type); CHK_NEQ(staging->channel, active->channel); CHK_NEQ(staging->air_propagation, active->air_propagation); diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c index 67e6f1d..b31584e 100644 --- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c +++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c @@ -322,8 +322,8 @@ u8 iwl_prep_station(struct iwl_priv *priv, struct iwl_rxon_context *ctx, sta_id = ctx->bcast_sta_id; else for (i = IWL_STA_ID; i < IWLAGN_STATION_COUNT; i++) { - if (!compare_ether_addr(priv->stations[i].sta.sta.addr, - addr)) { + if (ether_addr_equal(priv->stations[i].sta.sta.addr, + addr)) { sta_id = i; break; } @@ -353,7 +353,7 @@ u8 iwl_prep_station(struct iwl_priv *priv, struct iwl_rxon_context *ctx, if ((priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE) && (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE) && - !compare_ether_addr(priv->stations[sta_id].sta.sta.addr, addr)) { + ether_addr_equal(priv->stations[sta_id].sta.sta.addr, addr)) { IWL_DEBUG_ASSOC(priv, "STA %d (%pM) already added, not " "adding again.\n", sta_id, addr); return sta_id; diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c index e30cc32..cf7bdc6 100644 --- a/drivers/net/wireless/mwl8k.c +++ b/drivers/net/wireless/mwl8k.c @@ -1235,7 +1235,7 @@ mwl8k_capture_bssid(struct mwl8k_priv *priv, struct ieee80211_hdr *wh) { return priv->capture_beacon && ieee80211_is_beacon(wh->frame_control) && - !compare_ether_addr(wh->addr3, priv->capture_bssid); + ether_addr_equal(wh->addr3, priv->capture_bssid); } static inline void mwl8k_save_beacon(struct ieee80211_hw *hw, diff --git a/drivers/net/wireless/p54/txrx.c b/drivers/net/wireless/p54/txrx.c index 7c8f118..82a1cac 100644 --- a/drivers/net/wireless/p54/txrx.c +++ b/drivers/net/wireless/p54/txrx.c @@ -308,7 +308,7 @@ static void p54_pspoll_workaround(struct p54_common *priv, struct sk_buff *skb) return; /* only consider beacons from the associated BSSID */ - if (compare_ether_addr(hdr->addr3, priv->bssid)) + if (!ether_addr_equal(hdr->addr3, priv->bssid)) return; tim = p54_find_ie(skb, WLAN_EID_TIM); diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c index d66e298..dcf0e7e 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c @@ -1801,8 +1801,8 @@ static struct ndis_80211_pmkid *remove_pmkid(struct usbnet *usbdev, count = max_pmkids; for (i = 0; i < count; i++) - if (!compare_ether_addr(pmkids->bssid_info[i].bssid, - pmksa->bssid)) + if (ether_addr_equal(pmkids->bssid_info[i].bssid, + pmksa->bssid)) break; /* pmkid not found */ @@ -1843,8 +1843,8 @@ static struct ndis_80211_pmkid *update_pmkid(struct usbnet *usbdev, /* update with new pmkid */ for (i = 0; i < count; i++) { - if (compare_ether_addr(pmkids->bssid_info[i].bssid, - pmksa->bssid)) + if (!ether_addr_equal(pmkids->bssid_info[i].bssid, + pmksa->bssid)) continue; memcpy(pmkids->bssid_info[i].pmkid, pmksa->pmkid, @@ -2139,7 +2139,7 @@ resize_buf: while (check_bssid_list_item(bssid, bssid_len, buf, len)) { if (rndis_bss_info_update(usbdev, bssid) && match_bssid && matched) { - if (compare_ether_addr(bssid->mac, match_bssid)) + if (!ether_addr_equal(bssid->mac, match_bssid)) *matched = true; } @@ -2531,7 +2531,7 @@ static int rndis_get_station(struct wiphy *wiphy, struct net_device *dev, struct rndis_wlan_private *priv = wiphy_priv(wiphy); struct usbnet *usbdev = priv->usbdev; - if (compare_ether_addr(priv->bssid, mac)) + if (!ether_addr_equal(priv->bssid, mac)) return -ENOENT; rndis_fill_station_info(usbdev, sinfo); diff --git a/drivers/net/wireless/rtlwifi/base.c b/drivers/net/wireless/rtlwifi/base.c index e54488d..f4c852c 100644 --- a/drivers/net/wireless/rtlwifi/base.c +++ b/drivers/net/wireless/rtlwifi/base.c @@ -1460,7 +1460,7 @@ void rtl_recognize_peer(struct ieee80211_hw *hw, u8 *data, unsigned int len) return; /* and only beacons from the associated BSSID, please */ - if (compare_ether_addr(hdr->addr3, rtlpriv->mac80211.bssid)) + if (!ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) return; if (rtl_find_221_ie(hw, data, len)) diff --git a/drivers/net/wireless/rtlwifi/ps.c b/drivers/net/wireless/rtlwifi/ps.c index 5b9c3b5..5ae2664 100644 --- a/drivers/net/wireless/rtlwifi/ps.c +++ b/drivers/net/wireless/rtlwifi/ps.c @@ -480,7 +480,7 @@ void rtl_swlps_beacon(struct ieee80211_hw *hw, void *data, unsigned int len) return; /* and only beacons from the associated BSSID, please */ - if (compare_ether_addr(hdr->addr3, rtlpriv->mac80211.bssid)) + if (!ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) return; rtlpriv->psc.last_beacon = jiffies; diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c index 37b1363..3af874e 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c @@ -508,14 +508,14 @@ static void _rtl92ce_translate_rx_signal_stuff(struct ieee80211_hw *hw, packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && - (!compare_ether_addr(mac->bssid, - (c_fc & IEEE80211_FCTL_TODS) ? - hdr->addr1 : (c_fc & IEEE80211_FCTL_FROMDS) ? - hdr->addr2 : hdr->addr3)) && + ether_addr_equal(mac->bssid, + (c_fc & IEEE80211_FCTL_TODS) ? hdr->addr1 : + (c_fc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : + hdr->addr3) && (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); packet_toself = packet_matchbssid && - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); + ether_addr_equal(praddr, rtlefuse->dev_addr); if (ieee80211_is_beacon(fc)) packet_beacon = true; diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c index 025bdc2..7e91c76 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c @@ -1099,14 +1099,14 @@ void rtl92c_translate_rx_signal_stuff(struct ieee80211_hw *hw, praddr = hdr->addr1; packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && - (!compare_ether_addr(mac->bssid, - (cpu_fc & IEEE80211_FCTL_TODS) ? - hdr->addr1 : (cpu_fc & IEEE80211_FCTL_FROMDS) ? - hdr->addr2 : hdr->addr3)) && + ether_addr_equal(mac->bssid, + (cpu_fc & IEEE80211_FCTL_TODS) ? hdr->addr1 : + (cpu_fc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : + hdr->addr3) && (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); packet_toself = packet_matchbssid && - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); + ether_addr_equal(praddr, rtlefuse->dev_addr); if (ieee80211_is_beacon(fc)) packet_beacon = true; _rtl92c_query_rxphystatus(hw, pstats, pdesc, p_drvinfo, diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c index a7f6126..1666ef7 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c @@ -466,12 +466,13 @@ static void _rtl92de_translate_rx_signal_stuff(struct ieee80211_hw *hw, type = WLAN_FC_GET_TYPE(fc); praddr = hdr->addr1; packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && - (!compare_ether_addr(mac->bssid, (cfc & IEEE80211_FCTL_TODS) ? - hdr->addr1 : (cfc & IEEE80211_FCTL_FROMDS) ? - hdr->addr2 : hdr->addr3)) && (!pstats->hwerror) && - (!pstats->crc) && (!pstats->icv)); + ether_addr_equal(mac->bssid, + (cfc & IEEE80211_FCTL_TODS) ? hdr->addr1 : + (cfc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : + hdr->addr3) && + (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); packet_toself = packet_matchbssid && - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); + ether_addr_equal(praddr, rtlefuse->dev_addr); if (ieee80211_is_beacon(fc)) packet_beacon = true; _rtl92de_query_rxphystatus(hw, pstats, pdesc, p_drvinfo, diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c index 2fd3d13..812b585 100644 --- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c +++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c @@ -492,13 +492,14 @@ static void _rtl92se_translate_rx_signal_stuff(struct ieee80211_hw *hw, praddr = hdr->addr1; packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && - (!compare_ether_addr(mac->bssid, (cfc & IEEE80211_FCTL_TODS) ? - hdr->addr1 : (cfc & IEEE80211_FCTL_FROMDS) ? - hdr->addr2 : hdr->addr3)) && (!pstats->hwerror) && - (!pstats->crc) && (!pstats->icv)); + ether_addr_equal(mac->bssid, + (cfc & IEEE80211_FCTL_TODS) ? hdr->addr1 : + (cfc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : + hdr->addr3) && + (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); packet_toself = packet_matchbssid && - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); + ether_addr_equal(praddr, rtlefuse->dev_addr); if (ieee80211_is_beacon(fc)) packet_beacon = true; -- 1.7.8.111.gad25c.dirty ^ permalink raw reply related [flat|nested] 16+ messages in thread
[parent not found: <7c9881a67c52c2f218480b6742155b6d6928122d.1336618708.git.joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>]
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal [not found] ` <7c9881a67c52c2f218480b6742155b6d6928122d.1336618708.git.joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org> @ 2012-05-10 14:32 ` Jussi Kivilinna 2012-05-10 16:11 ` Joe Perches 2012-05-10 16:30 ` David Miller 0 siblings, 2 replies; 16+ messages in thread From: Jussi Kivilinna @ 2012-05-10 14:32 UTC (permalink / raw) To: Joe Perches Cc: ath5k-devel-xDcbHBWguxEUs3QNXV6qNA, Stanislaw Gruszka, Roopa Prabhu, Nick-juf53994utBLZpfksSYvnA, Wey-Yi Guy, Christian Lamparter, Vasanthakumar Thiagarajan, Andy Gospodarek, Jiri Slaby, Christian-juf53994utBLZpfksSYvnA, Intel-juf53994utBLZpfksSYvnA, Jay Vosburgh, Jouni Malinen, Wireless, Nishank Trivedi, Stanislav Yakovlev, Grant Grundler, Johannes Berg, Sony Chacko, John W. Linville, Chris Metcalf, Ben Hutchings, Balasubramanian, Sol Quoting Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>: > Use the new bool function ether_addr_equal to add > some clarity and reduce the likelihood for misuse > of compare_ether_addr for sorting. > > Done via cocci script: > > $ cat compare_ether_addr.cocci > @@ > expression a,b; > @@ > - !compare_ether_addr(a, b) > + ether_addr_equal(a, b) > > @@ > expression a,b; > @@ > - compare_ether_addr(a, b) > + !ether_addr_equal(a, b) > > @@ > expression a,b; > @@ > - !ether_addr_equal(a, b) == 0 > + ether_addr_equal(a, b) > > @@ > expression a,b; > @@ > - !ether_addr_equal(a, b) != 0 > + !ether_addr_equal(a, b) > > @@ > expression a,b; > @@ > - ether_addr_equal(a, b) == 0 > + !ether_addr_equal(a, b) > > @@ > expression a,b; > @@ > - ether_addr_equal(a, b) != 0 > + ether_addr_equal(a, b) > > @@ > expression a,b; > @@ > - !!ether_addr_equal(a, b) > + ether_addr_equal(a, b) > > Signed-off-by: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org> > --- > drivers/net/bonding/bond_main.c | 2 +- > drivers/net/ethernet/amd/depca.c | 3 ++- > drivers/net/ethernet/cisco/enic/enic_main.c | 12 ++++-------- > drivers/net/ethernet/dec/ewrk3.c | 3 ++- > drivers/net/ethernet/dec/tulip/de4x5.c | 2 +- > drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c | 5 ++--- > drivers/net/ethernet/sfc/ethtool.c | 2 +- > drivers/net/ethernet/sun/sunvnet.c | 2 +- > drivers/net/ethernet/tile/tilepro.c | 2 +- > drivers/net/ethernet/toshiba/ps3_gelic_wireless.c | 8 ++++---- > drivers/net/tun.c | 2 +- > drivers/net/wireless/at76c50x-usb.c | 2 +- > drivers/net/wireless/ath/ath5k/base.c | 6 +++--- > drivers/net/wireless/ath/ath9k/recv.c | 2 +- > drivers/net/wireless/ath/carl9170/rx.c | 2 +- > drivers/net/wireless/ipw2x00/libipw_rx.c | 16 ++++++++-------- > drivers/net/wireless/iwlegacy/3945.c | 4 ++-- > drivers/net/wireless/iwlegacy/4965-mac.c | 2 +- > drivers/net/wireless/iwlegacy/common.c | 14 +++++++------- > drivers/net/wireless/iwlwifi/iwl-agn-rx.c | 4 ++-- > drivers/net/wireless/iwlwifi/iwl-agn-rxon.c | 8 ++++---- > drivers/net/wireless/iwlwifi/iwl-agn-sta.c | 6 +++--- > drivers/net/wireless/mwl8k.c | 2 +- > drivers/net/wireless/p54/txrx.c | 2 +- > drivers/net/wireless/rndis_wlan.c | 12 ++++++------ > drivers/net/wireless/rtlwifi/base.c | 2 +- > drivers/net/wireless/rtlwifi/ps.c | 2 +- > drivers/net/wireless/rtlwifi/rtl8192ce/trx.c | 10 +++++----- > drivers/net/wireless/rtlwifi/rtl8192cu/mac.c | 10 +++++----- > drivers/net/wireless/rtlwifi/rtl8192de/trx.c | 11 ++++++----- > drivers/net/wireless/rtlwifi/rtl8192se/trx.c | 11 ++++++----- > 31 files changed, 85 insertions(+), 86 deletions(-) > > diff --git a/drivers/net/bonding/bond_main.c > b/drivers/net/bonding/bond_main.c > index 16dbf53..bbb0043 100644 > --- a/drivers/net/bonding/bond_main.c > +++ b/drivers/net/bonding/bond_main.c > @@ -1961,7 +1961,7 @@ int bond_release(struct net_device *bond_dev, > struct net_device *slave_dev) > write_lock_bh(&bond->lock); > > if (!bond->params.fail_over_mac) { > - if (!compare_ether_addr(bond_dev->dev_addr, slave->perm_hwaddr) && > + if (ether_addr_equal(bond_dev->dev_addr, slave->perm_hwaddr) && > bond->slave_cnt > 1) > pr_warning("%s: Warning: the permanent HWaddr of %s - %pM - is > still in use by %s. Set the HWaddr of %s to a different address to > avoid conflicts.\n", > bond_dev->name, slave_dev->name, > diff --git a/drivers/net/ethernet/amd/depca.c > b/drivers/net/ethernet/amd/depca.c > index 86dd957..7f7b99a 100644 > --- a/drivers/net/ethernet/amd/depca.c > +++ b/drivers/net/ethernet/amd/depca.c > @@ -1079,7 +1079,8 @@ static int depca_rx(struct net_device *dev) > } else { > lp->pktStats.multicast++; > } > - } else if (compare_ether_addr(buf, dev->dev_addr) == 0) { > + } else if (ether_addr_equal(buf, > + dev->dev_addr)) { > lp->pktStats.unicast++; > } > > diff --git a/drivers/net/ethernet/cisco/enic/enic_main.c > b/drivers/net/ethernet/cisco/enic/enic_main.c > index d7ac6c1..8132c78 100644 > --- a/drivers/net/ethernet/cisco/enic/enic_main.c > +++ b/drivers/net/ethernet/cisco/enic/enic_main.c > @@ -944,8 +944,7 @@ static void > enic_update_multicast_addr_list(struct enic *enic) > > for (i = 0; i < enic->mc_count; i++) { > for (j = 0; j < mc_count; j++) > - if (compare_ether_addr(enic->mc_addr[i], > - mc_addr[j]) == 0) > + if (ether_addr_equal(enic->mc_addr[i], mc_addr[j])) > break; > if (j == mc_count) > enic_dev_del_addr(enic, enic->mc_addr[i]); > @@ -953,8 +952,7 @@ static void > enic_update_multicast_addr_list(struct enic *enic) > > for (i = 0; i < mc_count; i++) { > for (j = 0; j < enic->mc_count; j++) > - if (compare_ether_addr(mc_addr[i], > - enic->mc_addr[j]) == 0) > + if (ether_addr_equal(mc_addr[i], enic->mc_addr[j])) > break; > if (j == enic->mc_count) > enic_dev_add_addr(enic, mc_addr[i]); > @@ -999,8 +997,7 @@ static void enic_update_unicast_addr_list(struct > enic *enic) > > for (i = 0; i < enic->uc_count; i++) { > for (j = 0; j < uc_count; j++) > - if (compare_ether_addr(enic->uc_addr[i], > - uc_addr[j]) == 0) > + if (ether_addr_equal(enic->uc_addr[i], uc_addr[j])) > break; > if (j == uc_count) > enic_dev_del_addr(enic, enic->uc_addr[i]); > @@ -1008,8 +1005,7 @@ static void > enic_update_unicast_addr_list(struct enic *enic) > > for (i = 0; i < uc_count; i++) { > for (j = 0; j < enic->uc_count; j++) > - if (compare_ether_addr(uc_addr[i], > - enic->uc_addr[j]) == 0) > + if (ether_addr_equal(uc_addr[i], enic->uc_addr[j])) > break; > if (j == enic->uc_count) > enic_dev_add_addr(enic, uc_addr[i]); > diff --git a/drivers/net/ethernet/dec/ewrk3.c > b/drivers/net/ethernet/dec/ewrk3.c > index 1879f84..17ae8c6 100644 > --- a/drivers/net/ethernet/dec/ewrk3.c > +++ b/drivers/net/ethernet/dec/ewrk3.c > @@ -1016,7 +1016,8 @@ static int ewrk3_rx(struct net_device *dev) > } else { > lp->pktStats.multicast++; > } > - } else if (compare_ether_addr(p, dev->dev_addr) == 0) { > + } else if (ether_addr_equal(p, > + dev->dev_addr)) { > lp->pktStats.unicast++; > } > lp->pktStats.bins[0]++; /* Duplicates stats.rx_packets */ > diff --git a/drivers/net/ethernet/dec/tulip/de4x5.c > b/drivers/net/ethernet/dec/tulip/de4x5.c > index 18b106c..d3cd489 100644 > --- a/drivers/net/ethernet/dec/tulip/de4x5.c > +++ b/drivers/net/ethernet/dec/tulip/de4x5.c > @@ -1874,7 +1874,7 @@ de4x5_local_stats(struct net_device *dev, char > *buf, int pkt_len) > } else { > lp->pktStats.multicast++; > } > - } else if (compare_ether_addr(buf, dev->dev_addr) == 0) { > + } else if (ether_addr_equal(buf, dev->dev_addr)) { > lp->pktStats.unicast++; > } > > diff --git a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c > b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c > index 5c47135..46e77a2 100644 > --- a/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c > +++ b/drivers/net/ethernet/qlogic/qlcnic/qlcnic_main.c > @@ -1965,7 +1965,7 @@ qlcnic_send_filter(struct qlcnic_adapter *adapter, > __le16 vlan_id = 0; > u8 hindex; > > - if (!compare_ether_addr(phdr->h_source, adapter->mac_addr)) > + if (ether_addr_equal(phdr->h_source, adapter->mac_addr)) > return; > > if (adapter->fhash.fnum >= adapter->fhash.fmax) > @@ -2235,8 +2235,7 @@ qlcnic_xmit_frame(struct sk_buff *skb, struct > net_device *netdev) > > if (adapter->flags & QLCNIC_MACSPOOF) { > phdr = (struct ethhdr *)skb->data; > - if (compare_ether_addr(phdr->h_source, > - adapter->mac_addr)) > + if (!ether_addr_equal(phdr->h_source, adapter->mac_addr)) > goto drop_packet; > } > > diff --git a/drivers/net/ethernet/sfc/ethtool.c > b/drivers/net/ethernet/sfc/ethtool.c > index f22f45f..62d4b81 100644 > --- a/drivers/net/ethernet/sfc/ethtool.c > +++ b/drivers/net/ethernet/sfc/ethtool.c > @@ -1023,7 +1023,7 @@ static int efx_ethtool_set_class_rule(struct > efx_nic *efx, > return -EINVAL; > > /* Is it a default UC or MC filter? */ > - if (!compare_ether_addr(mac_mask->h_dest, mac_addr_mc_mask) && > + if (ether_addr_equal(mac_mask->h_dest, mac_addr_mc_mask) && > vlan_tag_mask == 0) { > if (is_multicast_ether_addr(mac_entry->h_dest)) > rc = efx_filter_set_mc_def(&spec); > diff --git a/drivers/net/ethernet/sun/sunvnet.c > b/drivers/net/ethernet/sun/sunvnet.c > index 38e3ae9..a108db3 100644 > --- a/drivers/net/ethernet/sun/sunvnet.c > +++ b/drivers/net/ethernet/sun/sunvnet.c > @@ -618,7 +618,7 @@ struct vnet_port *__tx_port_find(struct vnet > *vp, struct sk_buff *skb) > struct vnet_port *port; > > hlist_for_each_entry(port, n, hp, hash) { > - if (!compare_ether_addr(port->raddr, skb->data)) > + if (ether_addr_equal(port->raddr, skb->data)) > return port; > } > port = NULL; > diff --git a/drivers/net/ethernet/tile/tilepro.c > b/drivers/net/ethernet/tile/tilepro.c > index 3d501ec..96070e9 100644 > --- a/drivers/net/ethernet/tile/tilepro.c > +++ b/drivers/net/ethernet/tile/tilepro.c > @@ -843,7 +843,7 @@ static bool tile_net_poll_aux(struct > tile_net_cpu *info, int index) > if (!is_multicast_ether_addr(buf)) { > /* Filter packets not for our address. */ > const u8 *mine = dev->dev_addr; > - filter = compare_ether_addr(mine, buf); > + filter = !ether_addr_equal(mine, buf); > } > } > > diff --git a/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c > b/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c > index 5c14f82..961c832 100644 > --- a/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c > +++ b/drivers/net/ethernet/toshiba/ps3_gelic_wireless.c > @@ -1590,8 +1590,8 @@ static void > gelic_wl_scan_complete_event(struct gelic_wl_info *wl) > found = 0; > oldest = NULL; > list_for_each_entry(target, &wl->network_list, list) { > - if (!compare_ether_addr(&target->hwinfo->bssid[2], > - &scan_info->bssid[2])) { > + if (ether_addr_equal(&target->hwinfo->bssid[2], > + &scan_info->bssid[2])) { > found = 1; > pr_debug("%s: same BBS found scanned list\n", > __func__); > @@ -1691,8 +1691,8 @@ struct gelic_wl_scan_info > *gelic_wl_find_best_bss(struct gelic_wl_info *wl) > > /* If bss specified, check it only */ > if (test_bit(GELIC_WL_STAT_BSSID_SET, &wl->stat)) { > - if (!compare_ether_addr(&scan_info->hwinfo->bssid[2], > - wl->bssid)) { > + if (ether_addr_equal(&scan_info->hwinfo->bssid[2], > + wl->bssid)) { > best_bss = scan_info; > pr_debug("%s: bssid matched\n", __func__); > break; > diff --git a/drivers/net/tun.c b/drivers/net/tun.c > index bb8c72c..987aeef 100644 > --- a/drivers/net/tun.c > +++ b/drivers/net/tun.c > @@ -313,7 +313,7 @@ static int run_filter(struct tap_filter *filter, > const struct sk_buff *skb) > > /* Exact match */ > for (i = 0; i < filter->count; i++) > - if (!compare_ether_addr(eh->h_dest, filter->addr[i])) > + if (ether_addr_equal(eh->h_dest, filter->addr[i])) > return 1; > > /* Inexact match (multicast only) */ > diff --git a/drivers/net/wireless/at76c50x-usb.c > b/drivers/net/wireless/at76c50x-usb.c > index faa8bcb..5ad74c8 100644 > --- a/drivers/net/wireless/at76c50x-usb.c > +++ b/drivers/net/wireless/at76c50x-usb.c > @@ -1751,7 +1751,7 @@ static void at76_mac80211_tx(struct > ieee80211_hw *hw, struct sk_buff *skb) > * following workaround is necessary. If the TX frame is an > * authentication frame extract the bssid and send the CMD_JOIN. */ > if (mgmt->frame_control & cpu_to_le16(IEEE80211_STYPE_AUTH)) { > - if (compare_ether_addr(priv->bssid, mgmt->bssid)) { > + if (!ether_addr_equal(priv->bssid, mgmt->bssid)) { > memcpy(priv->bssid, mgmt->bssid, ETH_ALEN); > ieee80211_queue_work(hw, &priv->work_join_bssid); > dev_kfree_skb_any(skb); > diff --git a/drivers/net/wireless/ath/ath5k/base.c > b/drivers/net/wireless/ath/ath5k/base.c > index 49e3b19..0ba81a6 100644 > --- a/drivers/net/wireless/ath/ath5k/base.c > +++ b/drivers/net/wireless/ath/ath5k/base.c > @@ -462,7 +462,7 @@ void ath5k_vif_iter(void *data, u8 *mac, struct > ieee80211_vif *vif) > } > > if (iter_data->need_set_hw_addr && iter_data->hw_macaddr) > - if (compare_ether_addr(iter_data->hw_macaddr, mac) == 0) > + if (ether_addr_equal(iter_data->hw_macaddr, mac)) > iter_data->need_set_hw_addr = false; > > if (!iter_data->any_assoc) { > @@ -1170,7 +1170,7 @@ ath5k_check_ibss_tsf(struct ath5k_hw *ah, > struct sk_buff *skb, > > if (ieee80211_is_beacon(mgmt->frame_control) && > le16_to_cpu(mgmt->u.beacon.capab_info) & WLAN_CAPABILITY_IBSS && > - compare_ether_addr(mgmt->bssid, common->curbssid) == 0) { > + ether_addr_equal(mgmt->bssid, common->curbssid)) { > /* > * Received an IBSS beacon with the same BSSID. Hardware *must* > * have updated the local TSF. We have to work around various > @@ -1234,7 +1234,7 @@ ath5k_update_beacon_rssi(struct ath5k_hw *ah, > struct sk_buff *skb, int rssi) > > /* only beacons from our BSSID */ > if (!ieee80211_is_beacon(mgmt->frame_control) || > - compare_ether_addr(mgmt->bssid, common->curbssid) != 0) > + !ether_addr_equal(mgmt->bssid, common->curbssid)) > return; > > ewma_add(&ah->ah_beacon_rssi_avg, rssi); > diff --git a/drivers/net/wireless/ath/ath9k/recv.c > b/drivers/net/wireless/ath/ath9k/recv.c > index 544e549..e1fcc68 100644 > --- a/drivers/net/wireless/ath/ath9k/recv.c > +++ b/drivers/net/wireless/ath/ath9k/recv.c > @@ -1833,7 +1833,7 @@ int ath_rx_tasklet(struct ath_softc *sc, int > flush, bool hp) > if (ieee80211_is_beacon(hdr->frame_control)) { > RX_STAT_INC(rx_beacons); > if (!is_zero_ether_addr(common->curbssid) && > - !compare_ether_addr(hdr->addr3, common->curbssid)) > + ether_addr_equal(hdr->addr3, common->curbssid)) > rs.is_mybeacon = true; > else > rs.is_mybeacon = false; > diff --git a/drivers/net/wireless/ath/carl9170/rx.c > b/drivers/net/wireless/ath/carl9170/rx.c > index dc99030..84b22ee 100644 > --- a/drivers/net/wireless/ath/carl9170/rx.c > +++ b/drivers/net/wireless/ath/carl9170/rx.c > @@ -538,7 +538,7 @@ static void carl9170_ps_beacon(struct ar9170 > *ar, void *data, unsigned int len) > return; > > /* and only beacons from the associated BSSID, please */ > - if (compare_ether_addr(hdr->addr3, ar->common.curbssid) || > + if (!ether_addr_equal(hdr->addr3, ar->common.curbssid) || > !ar->common.curaid) > return; > > diff --git a/drivers/net/wireless/ipw2x00/libipw_rx.c > b/drivers/net/wireless/ipw2x00/libipw_rx.c > index c4955d2..02e0579 100644 > --- a/drivers/net/wireless/ipw2x00/libipw_rx.c > +++ b/drivers/net/wireless/ipw2x00/libipw_rx.c > @@ -77,8 +77,8 @@ static struct libipw_frag_entry > *libipw_frag_cache_find(struct > > if (entry->skb != NULL && entry->seq == seq && > (entry->last_frag + 1 == frag || frag == -1) && > - !compare_ether_addr(entry->src_addr, src) && > - !compare_ether_addr(entry->dst_addr, dst)) > + ether_addr_equal(entry->src_addr, src) && > + ether_addr_equal(entry->dst_addr, dst)) > return entry; > } > > @@ -245,12 +245,12 @@ static int libipw_is_eapol_frame(struct > libipw_device *ieee, > /* check that the frame is unicast frame to us */ > if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == > IEEE80211_FCTL_TODS && > - !compare_ether_addr(hdr->addr1, dev->dev_addr) && > - !compare_ether_addr(hdr->addr3, dev->dev_addr)) { > + ether_addr_equal(hdr->addr1, dev->dev_addr) && > + ether_addr_equal(hdr->addr3, dev->dev_addr)) { > /* ToDS frame with own addr BSSID and DA */ > } else if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == > IEEE80211_FCTL_FROMDS && > - !compare_ether_addr(hdr->addr1, dev->dev_addr)) { > + ether_addr_equal(hdr->addr1, dev->dev_addr)) { > /* FromDS frame with own addr as DA */ > } else > return 0; > @@ -523,8 +523,8 @@ int libipw_rx(struct libipw_device *ieee, struct > sk_buff *skb, > > if (ieee->iw_mode == IW_MODE_MASTER && !wds && > (fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) == > - IEEE80211_FCTL_FROMDS && ieee->stadev > - && !compare_ether_addr(hdr->addr2, ieee->assoc_ap_addr)) { > + IEEE80211_FCTL_FROMDS && ieee->stadev && > + ether_addr_equal(hdr->addr2, ieee->assoc_ap_addr)) { > /* Frame from BSSID of the AP for which we are a client */ > skb->dev = dev = ieee->stadev; > stats = hostap_get_stats(dev); > @@ -1468,7 +1468,7 @@ static inline int is_same_network(struct > libipw_network *src, > * as one network */ > return ((src->ssid_len == dst->ssid_len) && > (src->channel == dst->channel) && > - !compare_ether_addr(src->bssid, dst->bssid) && > + ether_addr_equal(src->bssid, dst->bssid) && > !memcmp(src->ssid, dst->ssid, src->ssid_len)); > } > > diff --git a/drivers/net/wireless/iwlegacy/3945.c > b/drivers/net/wireless/iwlegacy/3945.c > index b25c01b..87e5398 100644 > --- a/drivers/net/wireless/iwlegacy/3945.c > +++ b/drivers/net/wireless/iwlegacy/3945.c > @@ -453,10 +453,10 @@ il3945_is_network_packet(struct il_priv *il, > struct ieee80211_hdr *header) > switch (il->iw_mode) { > case NL80211_IFTYPE_ADHOC: /* Header: Dest. | Source | BSSID */ > /* packets to our IBSS update information */ > - return !compare_ether_addr(header->addr3, il->bssid); > + return ether_addr_equal(header->addr3, il->bssid); > case NL80211_IFTYPE_STATION: /* Header: Dest. | AP{BSSID} | Source */ > /* packets to our IBSS update information */ > - return !compare_ether_addr(header->addr2, il->bssid); > + return ether_addr_equal(header->addr2, il->bssid); > default: > return 1; > } > diff --git a/drivers/net/wireless/iwlegacy/4965-mac.c > b/drivers/net/wireless/iwlegacy/4965-mac.c > index f2baf94..509301a 100644 > --- a/drivers/net/wireless/iwlegacy/4965-mac.c > +++ b/drivers/net/wireless/iwlegacy/4965-mac.c > @@ -2565,7 +2565,7 @@ il4965_find_station(struct il_priv *il, const u8 *addr) > spin_lock_irqsave(&il->sta_lock, flags); > for (i = start; i < il->hw_params.max_stations; i++) > if (il->stations[i].used && > - (!compare_ether_addr(il->stations[i].sta.sta.addr, addr))) { > + ether_addr_equal(il->stations[i].sta.sta.addr, addr)) { > ret = i; > goto out; > } > diff --git a/drivers/net/wireless/iwlegacy/common.c > b/drivers/net/wireless/iwlegacy/common.c > index eaf24945..cbf2dc1 100644 > --- a/drivers/net/wireless/iwlegacy/common.c > +++ b/drivers/net/wireless/iwlegacy/common.c > @@ -1896,8 +1896,8 @@ il_prep_station(struct il_priv *il, const u8 > *addr, bool is_ap, > sta_id = il->hw_params.bcast_id; > else > for (i = IL_STA_ID; i < il->hw_params.max_stations; i++) { > - if (!compare_ether_addr > - (il->stations[i].sta.sta.addr, addr)) { > + if (ether_addr_equal(il->stations[i].sta.sta.addr, > + addr)) { > sta_id = i; > break; > } > @@ -1926,7 +1926,7 @@ il_prep_station(struct il_priv *il, const u8 > *addr, bool is_ap, > > if ((il->stations[sta_id].used & IL_STA_DRIVER_ACTIVE) && > (il->stations[sta_id].used & IL_STA_UCODE_ACTIVE) && > - !compare_ether_addr(il->stations[sta_id].sta.sta.addr, addr)) { > + ether_addr_equal(il->stations[sta_id].sta.sta.addr, addr)) { > D_ASSOC("STA %d (%pM) already added, not adding again.\n", > sta_id, addr); > return sta_id; > @@ -3744,10 +3744,10 @@ il_full_rxon_required(struct il_priv *il) > > /* These items are only settable from the full RXON command */ > CHK(!il_is_associated(il)); > - CHK(compare_ether_addr(staging->bssid_addr, active->bssid_addr)); > - CHK(compare_ether_addr(staging->node_addr, active->node_addr)); > - CHK(compare_ether_addr > - (staging->wlap_bssid_addr, active->wlap_bssid_addr)); > + CHK(!ether_addr_equal(staging->bssid_addr, active->bssid_addr)); > + CHK(!ether_addr_equal(staging->node_addr, active->node_addr)); > + CHK(!ether_addr_equal(staging->wlap_bssid_addr, > + active->wlap_bssid_addr)); > CHK_NEQ(staging->dev_type, active->dev_type); > CHK_NEQ(staging->channel, active->channel); > CHK_NEQ(staging->air_propagation, active->air_propagation); > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c > b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c > index 0c252c5..779f819 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-agn-rx.c > +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rx.c > @@ -779,8 +779,8 @@ static void > iwlagn_pass_packet_to_mac80211(struct iwl_priv *priv, > */ > if (unlikely(ieee80211_is_beacon(fc) && priv->passive_no_rx)) { > for_each_context(priv, ctx) { > - if (compare_ether_addr(hdr->addr3, > - ctx->active.bssid_addr)) > + if (!ether_addr_equal(hdr->addr3, > + ctx->active.bssid_addr)) > continue; > iwlagn_lift_passive_no_rx(priv); > } > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c > b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c > index 0f7c444..74fbee6 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c > +++ b/drivers/net/wireless/iwlwifi/iwl-agn-rxon.c > @@ -881,10 +881,10 @@ int iwl_full_rxon_required(struct iwl_priv *priv, > > /* These items are only settable from the full RXON command */ > CHK(!iwl_is_associated_ctx(ctx)); > - CHK(compare_ether_addr(staging->bssid_addr, active->bssid_addr)); > - CHK(compare_ether_addr(staging->node_addr, active->node_addr)); > - CHK(compare_ether_addr(staging->wlap_bssid_addr, > - active->wlap_bssid_addr)); > + CHK(!ether_addr_equal(staging->bssid_addr, active->bssid_addr)); > + CHK(!ether_addr_equal(staging->node_addr, active->node_addr)); > + CHK(!ether_addr_equal(staging->wlap_bssid_addr, > + active->wlap_bssid_addr)); > CHK_NEQ(staging->dev_type, active->dev_type); > CHK_NEQ(staging->channel, active->channel); > CHK_NEQ(staging->air_propagation, active->air_propagation); > diff --git a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c > b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c > index 67e6f1d..b31584e 100644 > --- a/drivers/net/wireless/iwlwifi/iwl-agn-sta.c > +++ b/drivers/net/wireless/iwlwifi/iwl-agn-sta.c > @@ -322,8 +322,8 @@ u8 iwl_prep_station(struct iwl_priv *priv, > struct iwl_rxon_context *ctx, > sta_id = ctx->bcast_sta_id; > else > for (i = IWL_STA_ID; i < IWLAGN_STATION_COUNT; i++) { > - if (!compare_ether_addr(priv->stations[i].sta.sta.addr, > - addr)) { > + if (ether_addr_equal(priv->stations[i].sta.sta.addr, > + addr)) { > sta_id = i; > break; > } > @@ -353,7 +353,7 @@ u8 iwl_prep_station(struct iwl_priv *priv, > struct iwl_rxon_context *ctx, > > if ((priv->stations[sta_id].used & IWL_STA_DRIVER_ACTIVE) && > (priv->stations[sta_id].used & IWL_STA_UCODE_ACTIVE) && > - !compare_ether_addr(priv->stations[sta_id].sta.sta.addr, addr)) { > + ether_addr_equal(priv->stations[sta_id].sta.sta.addr, addr)) { > IWL_DEBUG_ASSOC(priv, "STA %d (%pM) already added, not " > "adding again.\n", sta_id, addr); > return sta_id; > diff --git a/drivers/net/wireless/mwl8k.c b/drivers/net/wireless/mwl8k.c > index e30cc32..cf7bdc6 100644 > --- a/drivers/net/wireless/mwl8k.c > +++ b/drivers/net/wireless/mwl8k.c > @@ -1235,7 +1235,7 @@ mwl8k_capture_bssid(struct mwl8k_priv *priv, > struct ieee80211_hdr *wh) > { > return priv->capture_beacon && > ieee80211_is_beacon(wh->frame_control) && > - !compare_ether_addr(wh->addr3, priv->capture_bssid); > + ether_addr_equal(wh->addr3, priv->capture_bssid); > } > > static inline void mwl8k_save_beacon(struct ieee80211_hw *hw, > diff --git a/drivers/net/wireless/p54/txrx.c > b/drivers/net/wireless/p54/txrx.c > index 7c8f118..82a1cac 100644 > --- a/drivers/net/wireless/p54/txrx.c > +++ b/drivers/net/wireless/p54/txrx.c > @@ -308,7 +308,7 @@ static void p54_pspoll_workaround(struct > p54_common *priv, struct sk_buff *skb) > return; > > /* only consider beacons from the associated BSSID */ > - if (compare_ether_addr(hdr->addr3, priv->bssid)) > + if (!ether_addr_equal(hdr->addr3, priv->bssid)) > return; > > tim = p54_find_ie(skb, WLAN_EID_TIM); > diff --git a/drivers/net/wireless/rndis_wlan.c > b/drivers/net/wireless/rndis_wlan.c > index d66e298..dcf0e7e 100644 > --- a/drivers/net/wireless/rndis_wlan.c > +++ b/drivers/net/wireless/rndis_wlan.c > @@ -1801,8 +1801,8 @@ static struct ndis_80211_pmkid > *remove_pmkid(struct usbnet *usbdev, > count = max_pmkids; > > for (i = 0; i < count; i++) > - if (!compare_ether_addr(pmkids->bssid_info[i].bssid, > - pmksa->bssid)) > + if (ether_addr_equal(pmkids->bssid_info[i].bssid, > + pmksa->bssid)) > break; > > /* pmkid not found */ > @@ -1843,8 +1843,8 @@ static struct ndis_80211_pmkid > *update_pmkid(struct usbnet *usbdev, > > /* update with new pmkid */ > for (i = 0; i < count; i++) { > - if (compare_ether_addr(pmkids->bssid_info[i].bssid, > - pmksa->bssid)) > + if (!ether_addr_equal(pmkids->bssid_info[i].bssid, > + pmksa->bssid)) > continue; > > memcpy(pmkids->bssid_info[i].pmkid, pmksa->pmkid, > @@ -2139,7 +2139,7 @@ resize_buf: > while (check_bssid_list_item(bssid, bssid_len, buf, len)) { > if (rndis_bss_info_update(usbdev, bssid) && match_bssid && > matched) { > - if (compare_ether_addr(bssid->mac, match_bssid)) > + if (!ether_addr_equal(bssid->mac, match_bssid)) While reviewing this, noticed that above original code is wrong. It should be !compare_ether_addr. So do I push patch fixing this through wireless-testing althought it will later cause conflict with this patch? -Jussi > *matched = true; > } > > @@ -2531,7 +2531,7 @@ static int rndis_get_station(struct wiphy > *wiphy, struct net_device *dev, > struct rndis_wlan_private *priv = wiphy_priv(wiphy); > struct usbnet *usbdev = priv->usbdev; > > - if (compare_ether_addr(priv->bssid, mac)) > + if (!ether_addr_equal(priv->bssid, mac)) > return -ENOENT; > > rndis_fill_station_info(usbdev, sinfo); > diff --git a/drivers/net/wireless/rtlwifi/base.c > b/drivers/net/wireless/rtlwifi/base.c > index e54488d..f4c852c 100644 > --- a/drivers/net/wireless/rtlwifi/base.c > +++ b/drivers/net/wireless/rtlwifi/base.c > @@ -1460,7 +1460,7 @@ void rtl_recognize_peer(struct ieee80211_hw > *hw, u8 *data, unsigned int len) > return; > > /* and only beacons from the associated BSSID, please */ > - if (compare_ether_addr(hdr->addr3, rtlpriv->mac80211.bssid)) > + if (!ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) > return; > > if (rtl_find_221_ie(hw, data, len)) > diff --git a/drivers/net/wireless/rtlwifi/ps.c > b/drivers/net/wireless/rtlwifi/ps.c > index 5b9c3b5..5ae2664 100644 > --- a/drivers/net/wireless/rtlwifi/ps.c > +++ b/drivers/net/wireless/rtlwifi/ps.c > @@ -480,7 +480,7 @@ void rtl_swlps_beacon(struct ieee80211_hw *hw, > void *data, unsigned int len) > return; > > /* and only beacons from the associated BSSID, please */ > - if (compare_ether_addr(hdr->addr3, rtlpriv->mac80211.bssid)) > + if (!ether_addr_equal(hdr->addr3, rtlpriv->mac80211.bssid)) > return; > > rtlpriv->psc.last_beacon = jiffies; > diff --git a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c > b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c > index 37b1363..3af874e 100644 > --- a/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c > +++ b/drivers/net/wireless/rtlwifi/rtl8192ce/trx.c > @@ -508,14 +508,14 @@ static void > _rtl92ce_translate_rx_signal_stuff(struct ieee80211_hw *hw, > > packet_matchbssid = > ((IEEE80211_FTYPE_CTL != type) && > - (!compare_ether_addr(mac->bssid, > - (c_fc & IEEE80211_FCTL_TODS) ? > - hdr->addr1 : (c_fc & IEEE80211_FCTL_FROMDS) ? > - hdr->addr2 : hdr->addr3)) && > + ether_addr_equal(mac->bssid, > + (c_fc & IEEE80211_FCTL_TODS) ? hdr->addr1 : > + (c_fc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : > + hdr->addr3) && > (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); > > packet_toself = packet_matchbssid && > - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); > + ether_addr_equal(praddr, rtlefuse->dev_addr); > > if (ieee80211_is_beacon(fc)) > packet_beacon = true; > diff --git a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c > b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c > index 025bdc2..7e91c76 100644 > --- a/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c > +++ b/drivers/net/wireless/rtlwifi/rtl8192cu/mac.c > @@ -1099,14 +1099,14 @@ void rtl92c_translate_rx_signal_stuff(struct > ieee80211_hw *hw, > praddr = hdr->addr1; > packet_matchbssid = > ((IEEE80211_FTYPE_CTL != type) && > - (!compare_ether_addr(mac->bssid, > - (cpu_fc & IEEE80211_FCTL_TODS) ? > - hdr->addr1 : (cpu_fc & IEEE80211_FCTL_FROMDS) ? > - hdr->addr2 : hdr->addr3)) && > + ether_addr_equal(mac->bssid, > + (cpu_fc & IEEE80211_FCTL_TODS) ? hdr->addr1 : > + (cpu_fc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : > + hdr->addr3) && > (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); > > packet_toself = packet_matchbssid && > - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); > + ether_addr_equal(praddr, rtlefuse->dev_addr); > if (ieee80211_is_beacon(fc)) > packet_beacon = true; > _rtl92c_query_rxphystatus(hw, pstats, pdesc, p_drvinfo, > diff --git a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c > b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c > index a7f6126..1666ef7 100644 > --- a/drivers/net/wireless/rtlwifi/rtl8192de/trx.c > +++ b/drivers/net/wireless/rtlwifi/rtl8192de/trx.c > @@ -466,12 +466,13 @@ static void > _rtl92de_translate_rx_signal_stuff(struct ieee80211_hw *hw, > type = WLAN_FC_GET_TYPE(fc); > praddr = hdr->addr1; > packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && > - (!compare_ether_addr(mac->bssid, (cfc & IEEE80211_FCTL_TODS) ? > - hdr->addr1 : (cfc & IEEE80211_FCTL_FROMDS) ? > - hdr->addr2 : hdr->addr3)) && (!pstats->hwerror) && > - (!pstats->crc) && (!pstats->icv)); > + ether_addr_equal(mac->bssid, > + (cfc & IEEE80211_FCTL_TODS) ? hdr->addr1 : > + (cfc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : > + hdr->addr3) && > + (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); > packet_toself = packet_matchbssid && > - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); > + ether_addr_equal(praddr, rtlefuse->dev_addr); > if (ieee80211_is_beacon(fc)) > packet_beacon = true; > _rtl92de_query_rxphystatus(hw, pstats, pdesc, p_drvinfo, > diff --git a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c > b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c > index 2fd3d13..812b585 100644 > --- a/drivers/net/wireless/rtlwifi/rtl8192se/trx.c > +++ b/drivers/net/wireless/rtlwifi/rtl8192se/trx.c > @@ -492,13 +492,14 @@ static void > _rtl92se_translate_rx_signal_stuff(struct ieee80211_hw *hw, > praddr = hdr->addr1; > > packet_matchbssid = ((IEEE80211_FTYPE_CTL != type) && > - (!compare_ether_addr(mac->bssid, (cfc & IEEE80211_FCTL_TODS) ? > - hdr->addr1 : (cfc & IEEE80211_FCTL_FROMDS) ? > - hdr->addr2 : hdr->addr3)) && (!pstats->hwerror) && > - (!pstats->crc) && (!pstats->icv)); > + ether_addr_equal(mac->bssid, > + (cfc & IEEE80211_FCTL_TODS) ? hdr->addr1 : > + (cfc & IEEE80211_FCTL_FROMDS) ? hdr->addr2 : > + hdr->addr3) && > + (!pstats->hwerror) && (!pstats->crc) && (!pstats->icv)); > > packet_toself = packet_matchbssid && > - (!compare_ether_addr(praddr, rtlefuse->dev_addr)); > + ether_addr_equal(praddr, rtlefuse->dev_addr); > > if (ieee80211_is_beacon(fc)) > packet_beacon = true; > -- > 1.7.8.111.gad25c.dirty > > > ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal 2012-05-10 14:32 ` Jussi Kivilinna @ 2012-05-10 16:11 ` Joe Perches 2012-05-10 16:33 ` David Miller 2012-05-10 16:30 ` David Miller 1 sibling, 1 reply; 16+ messages in thread From: Joe Perches @ 2012-05-10 16:11 UTC (permalink / raw) To: Jussi Kivilinna Cc: David S. Miller, John W. Linville, netdev, linux-kernel, linux-wireless (cc's trimmed) On Thu, 2012-05-10 at 17:32 +0300, Jussi Kivilinna wrote: > Quoting Joe Perches <joe@perches.com>: > > Use the new bool function ether_addr_equal to add > > some clarity and reduce the likelihood for misuse > > of compare_ether_addr for sorting. [] > > diff --git a/drivers/net/wireless/rndis_wlan.c [] > > @@ -2139,7 +2139,7 @@ resize_buf: > > while (check_bssid_list_item(bssid, bssid_len, buf, len)) { > > if (rndis_bss_info_update(usbdev, bssid) && match_bssid && > > matched) { > > - if (compare_ether_addr(bssid->mac, match_bssid)) > > + if (!ether_addr_equal(bssid->mac, match_bssid)) > > While reviewing this, noticed that above original code is wrong. It > should be !compare_ether_addr. So do I push patch fixing this through > wireless-testing althought it will later cause conflict with this patch? > > -Jussi > > > *matched = true; > > } > > Up to John. Here's the patch I would send against net-next updating the test and the style a little. diff --git a/drivers/net/wireless/rndis_wlan.c b/drivers/net/wireless/rndis_wlan.c index dcf0e7e..29cccc5 100644 --- a/drivers/net/wireless/rndis_wlan.c +++ b/drivers/net/wireless/rndis_wlan.c @@ -2137,11 +2137,10 @@ resize_buf: * received 'num_items' and walking through full bssid buffer instead. */ while (check_bssid_list_item(bssid, bssid_len, buf, len)) { - if (rndis_bss_info_update(usbdev, bssid) && match_bssid && - matched) { - if (!ether_addr_equal(bssid->mac, match_bssid)) - *matched = true; - } + if (rndis_bss_info_update(usbdev, bssid) && + match_bssid && matched && + ether_addr_equal(bssid->mac, match_bssid)) + *matched = true; real_count++; bssid = next_bssid_list_item(bssid, &bssid_len, buf, len); ^ permalink raw reply related [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal 2012-05-10 16:11 ` Joe Perches @ 2012-05-10 16:33 ` David Miller 2012-05-31 12:01 ` Jussi Kivilinna 0 siblings, 1 reply; 16+ messages in thread From: David Miller @ 2012-05-10 16:33 UTC (permalink / raw) To: joe; +Cc: jussi.kivilinna, linville, netdev, linux-kernel, linux-wireless From: Joe Perches <joe@perches.com> Date: Thu, 10 May 2012 09:11:28 -0700 > (cc's trimmed) > > On Thu, 2012-05-10 at 17:32 +0300, Jussi Kivilinna wrote: >> Quoting Joe Perches <joe@perches.com>: >> > Use the new bool function ether_addr_equal to add >> > some clarity and reduce the likelihood for misuse >> > of compare_ether_addr for sorting. > [] >> > diff --git a/drivers/net/wireless/rndis_wlan.c > [] >> > @@ -2139,7 +2139,7 @@ resize_buf: >> > while (check_bssid_list_item(bssid, bssid_len, buf, len)) { >> > if (rndis_bss_info_update(usbdev, bssid) && match_bssid && >> > matched) { >> > - if (compare_ether_addr(bssid->mac, match_bssid)) >> > + if (!ether_addr_equal(bssid->mac, match_bssid)) >> >> While reviewing this, noticed that above original code is wrong. It >> should be !compare_ether_addr. So do I push patch fixing this through >> wireless-testing althought it will later cause conflict with this patch? >> >> -Jussi >> >> > *matched = true; >> > } >> > > > Up to John. > > Here's the patch I would send against net-next > updating the test and the style a little. I think in this specific case it's better to push this one directly through net-next. But yes, it's up to John. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal 2012-05-10 16:33 ` David Miller @ 2012-05-31 12:01 ` Jussi Kivilinna [not found] ` <20120531150124.119853l3a0cbvj40-tzMWlZeEOor1KXRcyAk9cg@public.gmane.org> 0 siblings, 1 reply; 16+ messages in thread From: Jussi Kivilinna @ 2012-05-31 12:01 UTC (permalink / raw) To: David Miller; +Cc: joe, linville, netdev, linux-kernel, linux-wireless Quoting David Miller <davem@davemloft.net>: > From: Joe Perches <joe@perches.com> > Date: Thu, 10 May 2012 09:11:28 -0700 > >> (cc's trimmed) >> >> On Thu, 2012-05-10 at 17:32 +0300, Jussi Kivilinna wrote: >>> Quoting Joe Perches <joe@perches.com>: >>> > Use the new bool function ether_addr_equal to add >>> > some clarity and reduce the likelihood for misuse >>> > of compare_ether_addr for sorting. >> [] >>> > diff --git a/drivers/net/wireless/rndis_wlan.c >> [] >>> > @@ -2139,7 +2139,7 @@ resize_buf: >>> > while (check_bssid_list_item(bssid, bssid_len, buf, len)) { >>> > if (rndis_bss_info_update(usbdev, bssid) && match_bssid && >>> > matched) { >>> > - if (compare_ether_addr(bssid->mac, match_bssid)) >>> > + if (!ether_addr_equal(bssid->mac, match_bssid)) >>> >>> While reviewing this, noticed that above original code is wrong. It >>> should be !compare_ether_addr. So do I push patch fixing this through >>> wireless-testing althought it will later cause conflict with this patch? >>> >>> -Jussi >>> >>> > *matched = true; >>> > } >>> > >> >> Up to John. >> >> Here's the patch I would send against net-next >> updating the test and the style a little. > > I think in this specific case it's better to push this one directly > through net-next. But yes, it's up to John. > It's been some time now, and I think it's ok to wait until wireless-testing has this patch merged and then fix it there. That line/compare was added as response to hardware bug, where bssid-list does not contain BSSID and other information of currently connected AP (spec insists that device must provide this information in the list when connected). Lack bssid-data on current connection then causes WARN_ON somewhere in cfg80211. Workaround was to check if bssid-list returns current bssid and if it does not, manually construct bssid information in other ways. And this workaround worked, with inverse check. Which must mean that when hardware is experiencing the problem, it's actually returning empty bssid-list. Inverse check causes workaround be activated when bssid-list returns only entry, currently connected BSSID. That does not cause problems in itself, just slightly more inaccurate information in scan-list. -Jussi ^ permalink raw reply [flat|nested] 16+ messages in thread
[parent not found: <20120531150124.119853l3a0cbvj40-tzMWlZeEOor1KXRcyAk9cg@public.gmane.org>]
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal [not found] ` <20120531150124.119853l3a0cbvj40-tzMWlZeEOor1KXRcyAk9cg@public.gmane.org> @ 2012-05-31 18:49 ` Joe Perches 0 siblings, 0 replies; 16+ messages in thread From: Joe Perches @ 2012-05-31 18:49 UTC (permalink / raw) To: Jussi Kivilinna Cc: David Miller, linville-2XuSBdqkA4R54TAoqtyWWQ, netdev-u79uwXL29TY76Z2rM5mHXA, linux-kernel-u79uwXL29TY76Z2rM5mHXA, linux-wireless-u79uwXL29TY76Z2rM5mHXA On Thu, 2012-05-31 at 15:01 +0300, Jussi Kivilinna wrote: > Quoting David Miller <davem-fT/PcQaiUtIeIZ0/mPfg9Q@public.gmane.org>: > > From: Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org> > > Date: Thu, 10 May 2012 09:11:28 -0700 > >> On Thu, 2012-05-10 at 17:32 +0300, Jussi Kivilinna wrote: > >>> Quoting Joe Perches <joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org>: > >>> > Use the new bool function ether_addr_equal to add > >>> > some clarity and reduce the likelihood for misuse > >>> > of compare_ether_addr for sorting. > >> [] > >>> > diff --git a/drivers/net/wireless/rndis_wlan.c > >> [] > >>> > @@ -2139,7 +2139,7 @@ resize_buf: > >>> > while (check_bssid_list_item(bssid, bssid_len, buf, len)) { > >>> > if (rndis_bss_info_update(usbdev, bssid) && match_bssid && > >>> > matched) { > >>> > - if (compare_ether_addr(bssid->mac, match_bssid)) > >>> > + if (!ether_addr_equal(bssid->mac, match_bssid)) > >>> > >>> While reviewing this, noticed that above original code is wrong. It > >>> should be !compare_ether_addr. So do I push patch fixing this through > >>> wireless-testing althought it will later cause conflict with this patch? [] > That line/compare was added as response to hardware bug, where bssid-list does > not contain BSSID and other information of currently connected AP > (spec insists > that device must provide this information in the list when connected). Lack > bssid-data on current connection then causes WARN_ON somewhere in cfg80211. > Workaround was to check if bssid-list returns current bssid and if it > does not, > manually construct bssid information in other ways. And this > workaround worked, > with inverse check. Which must mean that when hardware is experiencing the > problem, it's actually returning empty bssid-list. > > Inverse check causes workaround be activated when bssid-list returns only > entry, currently connected BSSID. That does not cause problems in itself, just > slightly more inaccurate information in scan-list. Thanks. That information would be useful in the eventual commit message. cheers, Joe -- To unsubscribe from this list: send the line "unsubscribe linux-wireless" in the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal 2012-05-10 14:32 ` Jussi Kivilinna 2012-05-10 16:11 ` Joe Perches @ 2012-05-10 16:30 ` David Miller 2012-05-10 20:15 ` Jussi Kivilinna 1 sibling, 1 reply; 16+ messages in thread From: David Miller @ 2012-05-10 16:30 UTC (permalink / raw) To: jussi.kivilinna Cc: joe, fubar, andy, benve, roprabhu, neepatel, nistrive, grundler, anirban.chakraborty, sony.chacko, linux-driver, linux-net-drivers, bhutchings, cmetcalf, linville, jirislaby, mickflemm, mcgrof, jouni, vthiagar, senthilb, chunkeey, stas.yakovlev, sgruszka, johannes.berg, wey-yi.w.guy, ilw, buytenh, Larry.Finger, chaoming_li, netdev, linux-kernel, linux-wireless, ath5k-devel, ath9k-devel Never, EVER, quote an entire large patch just to make a comment on one small hunk. I very nearly missed what you had to say because when scrolling through it it appeared as if you made no comments at all. Again, NEVER, EVER, do this. It's extremely anti-social. Edit out the irrelevant quoted content when replying to people, always. ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal 2012-05-10 16:30 ` David Miller @ 2012-05-10 20:15 ` Jussi Kivilinna 0 siblings, 0 replies; 16+ messages in thread From: Jussi Kivilinna @ 2012-05-10 20:15 UTC (permalink / raw) To: David Miller Cc: joe, fubar, andy, benve, roprabhu, neepatel, nistrive, grundler, anirban.chakraborty, sony.chacko, linux-driver, linux-net-drivers, bhutchings, cmetcalf, linville, jirislaby, mickflemm, mcgrof, jouni, vthiagar, senthilb, chunkeey, stas.yakovlev, sgruszka, johannes.berg, wey-yi.w.guy, ilw, buytenh, Larry.Finger, chaoming_li, netdev, linux-kernel, linux-wireless, ath5k-devel, ath9k-devel Quoting David Miller <davem@davemloft.net>: > > Never, EVER, quote an entire large patch just to make a comment > on one small hunk. > > I very nearly missed what you had to say because when scrolling > through it it appeared as if you made no comments at all. > > Again, NEVER, EVER, do this. It's extremely anti-social. Edit out > the irrelevant quoted content when replying to people, always. > I'm sorry. I will not do this again. -Jussi ^ permalink raw reply [flat|nested] 16+ messages in thread
* Re: [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal 2012-05-10 3:17 ` [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal Joe Perches [not found] ` <7c9881a67c52c2f218480b6742155b6d6928122d.1336618708.git.joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org> @ 2012-05-11 3:35 ` David Miller 1 sibling, 0 replies; 16+ messages in thread From: David Miller @ 2012-05-11 3:35 UTC (permalink / raw) To: joe; +Cc: linux-kernel, netdev, linux-wireless, ath5k-devel, ath9k-devel From: Joe Perches <joe@perches.com> Date: Wed, 9 May 2012 20:17:46 -0700 > Use the new bool function ether_addr_equal to add > some clarity and reduce the likelihood for misuse > of compare_ether_addr for sorting. > > Done via cocci script: ... > Signed-off-by: Joe Perches <joe@perches.com> Applied. ^ permalink raw reply [flat|nested] 16+ messages in thread
end of thread, other threads:[~2012-05-31 18:49 UTC | newest] Thread overview: 16+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-05-10 3:04 [PATCH 0/3] net,drivers/net: Use ether_addr_equal and ether_addr_equal_64bits Joe Perches 2012-05-10 3:04 ` [PATCH 2/3] etherdevice.h: Add ether_addr_equal_64bits Joe Perches 2012-05-11 3:35 ` David Miller 2012-05-10 3:04 ` [PATCH 3/3] net,drivers/net: Convert compare_ether_addr_64bits to ether_addr_equal_64bits Joe Perches 2012-05-11 3:35 ` David Miller 2012-05-11 22:21 ` [PATCH net-next] etherdevice: Remove now unused compare_ether_addr_64bits Joe Perches 2012-05-13 3:35 ` David Miller 2012-05-10 3:17 ` [PATCH 1/3] drivers/net: Convert compare_ether_addr to ether_addr_equal Joe Perches [not found] ` <7c9881a67c52c2f218480b6742155b6d6928122d.1336618708.git.joe-6d6DIl74uiNBDgjK7y7TUQ@public.gmane.org> 2012-05-10 14:32 ` Jussi Kivilinna 2012-05-10 16:11 ` Joe Perches 2012-05-10 16:33 ` David Miller 2012-05-31 12:01 ` Jussi Kivilinna [not found] ` <20120531150124.119853l3a0cbvj40-tzMWlZeEOor1KXRcyAk9cg@public.gmane.org> 2012-05-31 18:49 ` Joe Perches 2012-05-10 16:30 ` David Miller 2012-05-10 20:15 ` Jussi Kivilinna 2012-05-11 3:35 ` David Miller
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).