forked from Minki/linux
Merge branch 'addr_compare'
Ding Tianhong says: ==================== slight optimization of addr compare for some modules Joe Perches add ether_addr_equal_unaligned to test if possibly unaligned to u16 Ethernet addresses are equal. If CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is set, this uses the slightly faster generic routine ether_addr_equal, otherwise this uses memcmp. So I use the recently added and possibly more efficient ether_addr_equal_unaligned to instead of memcmp for slight optimization. v2: Because a lot of places are already using 16b aligned MAC address for both operands, so use the ether_addr_equal to instead of ether_addr_equal_unaligned.Thanks for Joe, Alex and Antonio's opinions. Also remove the patch for bridge. v3: According Joe's suggestion, the patch (net: slight optimization of addr compare for some modules) should be broken into several patches, and it will be good to review for maintainers. So I will send rest of the patches for first step, and next step, I will seperate the netdev patch and send them by another patchset for net-next. also fix some changelog. v3.5 Change some style for patch 8 and patch 13. Thanks for Sergei's suggestion. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
commit
539c89cfdb
@ -52,6 +52,7 @@
|
||||
#include <asm/io.h>
|
||||
#include <asm/uaccess.h>
|
||||
#include <linux/atomic.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include "nicstar.h"
|
||||
#ifdef CONFIG_ATM_NICSTAR_USE_SUNI
|
||||
#include "suni.h"
|
||||
@ -781,8 +782,7 @@ static int ns_init_card(int i, struct pci_dev *pcidev)
|
||||
if (mac[i] == NULL || !mac_pton(mac[i], card->atmdev->esi)) {
|
||||
nicstar_read_eprom(card->membase, NICSTAR_EPROM_MAC_ADDR_OFFSET,
|
||||
card->atmdev->esi, 6);
|
||||
if (memcmp(card->atmdev->esi, "\x00\x00\x00\x00\x00\x00", 6) ==
|
||||
0) {
|
||||
if (ether_addr_equal(card->atmdev->esi, "\x00\x00\x00\x00\x00\x00")) {
|
||||
nicstar_read_eprom(card->membase,
|
||||
NICSTAR_EPROM_MAC_ADDR_OFFSET_ALT,
|
||||
card->atmdev->esi, 6);
|
||||
|
@ -1354,8 +1354,7 @@ static int nes_addr_resolve_neigh(struct nes_vnic *nesvnic, u32 dst_ip, int arpi
|
||||
neigh->ha, ntohl(rt->rt_gateway));
|
||||
|
||||
if (arpindex >= 0) {
|
||||
if (!memcmp(nesadapter->arp_table[arpindex].mac_addr,
|
||||
neigh->ha, ETH_ALEN)) {
|
||||
if (ether_addr_equal(nesadapter->arp_table[arpindex].mac_addr, neigh->ha)) {
|
||||
/* Mac address same as in nes_arp_table */
|
||||
goto out;
|
||||
}
|
||||
|
@ -1371,7 +1371,7 @@ isdn_net_type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||
eth = eth_hdr(skb);
|
||||
|
||||
if (*eth->h_dest & 1) {
|
||||
if (memcmp(eth->h_dest, dev->broadcast, ETH_ALEN) == 0)
|
||||
if (ether_addr_equal(eth->h_dest, dev->broadcast))
|
||||
skb->pkt_type = PACKET_BROADCAST;
|
||||
else
|
||||
skb->pkt_type = PACKET_MULTICAST;
|
||||
@ -1382,7 +1382,7 @@ isdn_net_type_trans(struct sk_buff *skb, struct net_device *dev)
|
||||
*/
|
||||
|
||||
else if (dev->flags & (IFF_PROMISC /*| IFF_ALLMULTI*/)) {
|
||||
if (memcmp(eth->h_dest, dev->dev_addr, ETH_ALEN))
|
||||
if (!ether_addr_equal(eth->h_dest, dev->dev_addr))
|
||||
skb->pkt_type = PACKET_OTHERHOST;
|
||||
}
|
||||
if (ntohs(eth->h_proto) >= ETH_P_802_3_MIN)
|
||||
|
@ -179,7 +179,7 @@ static __be16 dvb_net_eth_type_trans(struct sk_buff *skb,
|
||||
eth = eth_hdr(skb);
|
||||
|
||||
if (*eth->h_dest & 1) {
|
||||
if(memcmp(eth->h_dest,dev->broadcast, ETH_ALEN)==0)
|
||||
if(ether_addr_equal(eth->h_dest,dev->broadcast))
|
||||
skb->pkt_type=PACKET_BROADCAST;
|
||||
else
|
||||
skb->pkt_type=PACKET_MULTICAST;
|
||||
@ -674,11 +674,13 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
|
||||
if (priv->rx_mode != RX_MODE_PROMISC) {
|
||||
if (priv->ule_skb->data[0] & 0x01) {
|
||||
/* multicast or broadcast */
|
||||
if (memcmp(priv->ule_skb->data, bc_addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(priv->ule_skb->data, bc_addr)) {
|
||||
/* multicast */
|
||||
if (priv->rx_mode == RX_MODE_MULTI) {
|
||||
int i;
|
||||
for(i = 0; i < priv->multi_num && memcmp(priv->ule_skb->data, priv->multi_macs[i], ETH_ALEN); i++)
|
||||
for(i = 0; i < priv->multi_num &&
|
||||
!ether_addr_equal(priv->ule_skb->data,
|
||||
priv->multi_macs[i]); i++)
|
||||
;
|
||||
if (i == priv->multi_num)
|
||||
drop = 1;
|
||||
@ -688,7 +690,7 @@ static void dvb_net_ule( struct net_device *dev, const u8 *buf, size_t buf_len )
|
||||
}
|
||||
/* else: broadcast */
|
||||
}
|
||||
else if (memcmp(priv->ule_skb->data, dev->dev_addr, ETH_ALEN))
|
||||
else if (!ether_addr_equal(priv->ule_skb->data, dev->dev_addr))
|
||||
drop = 1;
|
||||
/* else: destination address matches the MAC address of our receiver device */
|
||||
}
|
||||
|
@ -1668,7 +1668,7 @@ pcnet32_probe1(unsigned long ioaddr, int shared, struct pci_dev *pdev)
|
||||
for (i = 0; i < ETH_ALEN; i++)
|
||||
promaddr[i] = inb(ioaddr + i);
|
||||
|
||||
if (memcmp(promaddr, dev->dev_addr, ETH_ALEN) ||
|
||||
if (!ether_addr_equal(promaddr, dev->dev_addr) ||
|
||||
!is_valid_ether_addr(dev->dev_addr)) {
|
||||
if (is_valid_ether_addr(promaddr)) {
|
||||
if (pcnet32_debug & NETIF_MSG_PROBE) {
|
||||
|
@ -3122,7 +3122,8 @@ static void atl1_remove(struct pci_dev *pdev)
|
||||
* from the BIOS during POST. If we've been messing with the MAC
|
||||
* address, we need to save the permanent one.
|
||||
*/
|
||||
if (memcmp(adapter->hw.mac_addr, adapter->hw.perm_mac_addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal_unaligned(adapter->hw.mac_addr,
|
||||
adapter->hw.perm_mac_addr)) {
|
||||
memcpy(adapter->hw.mac_addr, adapter->hw.perm_mac_addr,
|
||||
ETH_ALEN);
|
||||
atl1_set_mac_addr(&adapter->hw);
|
||||
|
@ -435,11 +435,6 @@ static void hw_add_addr_in_hash(struct ucc_geth_private *ugeth,
|
||||
QE_CR_PROTOCOL_ETHERNET, 0);
|
||||
}
|
||||
|
||||
static inline int compare_addr(u8 **addr1, u8 **addr2)
|
||||
{
|
||||
return memcmp(addr1, addr2, ETH_ALEN);
|
||||
}
|
||||
|
||||
#ifdef DEBUG
|
||||
static void get_statistics(struct ucc_geth_private *ugeth,
|
||||
struct ucc_geth_tx_firmware_statistics *
|
||||
|
@ -208,7 +208,7 @@ static int bpq_rcv(struct sk_buff *skb, struct net_device *dev, struct packet_ty
|
||||
eth = eth_hdr(skb);
|
||||
|
||||
if (!(bpq->acpt_addr[0] & 0x01) &&
|
||||
memcmp(eth->h_source, bpq->acpt_addr, ETH_ALEN))
|
||||
!ether_addr_equal(eth->h_source, bpq->acpt_addr))
|
||||
goto drop_unlock;
|
||||
|
||||
if (skb_cow(skb, sizeof(struct ethhdr)))
|
||||
|
@ -131,12 +131,12 @@ static inline struct pppoe_net *pppoe_pernet(struct net *net)
|
||||
|
||||
static inline int cmp_2_addr(struct pppoe_addr *a, struct pppoe_addr *b)
|
||||
{
|
||||
return a->sid == b->sid && !memcmp(a->remote, b->remote, ETH_ALEN);
|
||||
return a->sid == b->sid && ether_addr_equal(a->remote, b->remote);
|
||||
}
|
||||
|
||||
static inline int cmp_addr(struct pppoe_addr *a, __be16 sid, char *addr)
|
||||
{
|
||||
return a->sid == sid && !memcmp(a->remote, addr, ETH_ALEN);
|
||||
return a->sid == sid && ether_addr_equal(a->remote, addr);
|
||||
}
|
||||
|
||||
#if 8 % PPPOE_HASH_BITS
|
||||
|
@ -1314,7 +1314,7 @@ static void adm8211_bss_info_changed(struct ieee80211_hw *dev,
|
||||
if (!(changes & BSS_CHANGED_BSSID))
|
||||
return;
|
||||
|
||||
if (memcmp(conf->bssid, priv->bssid, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(conf->bssid, priv->bssid)) {
|
||||
adm8211_set_bssid(dev, conf->bssid);
|
||||
memcpy(priv->bssid, conf->bssid, ETH_ALEN);
|
||||
}
|
||||
|
@ -1243,7 +1243,7 @@ bool brcmf_p2p_scan_finding_common_channel(struct brcmf_cfg80211_info *cfg,
|
||||
IEEE80211_P2P_ATTR_DEVICE_ID,
|
||||
p2p_dev_addr, sizeof(p2p_dev_addr));
|
||||
if ((err >= 0) &&
|
||||
(!memcmp(p2p_dev_addr, afx_hdl->tx_dst_addr, ETH_ALEN))) {
|
||||
(ether_addr_equal(p2p_dev_addr, afx_hdl->tx_dst_addr))) {
|
||||
if (!bi->ctl_ch) {
|
||||
ch.chspec = le16_to_cpu(bi->chanspec);
|
||||
cfg->d11inf.decchspec(&ch);
|
||||
@ -1380,8 +1380,7 @@ int brcmf_p2p_notify_action_frame_rx(struct brcmf_if *ifp,
|
||||
(brcmf_p2p_gon_req_collision(p2p, (u8 *)e->addr))) {
|
||||
if (test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL,
|
||||
&p2p->status) &&
|
||||
(memcmp(afx_hdl->tx_dst_addr, e->addr,
|
||||
ETH_ALEN) == 0)) {
|
||||
(ether_addr_equal(afx_hdl->tx_dst_addr, e->addr))) {
|
||||
afx_hdl->peer_chan = ch.chnum;
|
||||
brcmf_dbg(INFO, "GON request: Peer found, channel=%d\n",
|
||||
afx_hdl->peer_chan);
|
||||
@ -1865,7 +1864,7 @@ s32 brcmf_p2p_notify_rx_mgmt_p2p_probereq(struct brcmf_if *ifp,
|
||||
cfg->d11inf.decchspec(&ch);
|
||||
|
||||
if (test_bit(BRCMF_P2P_STATUS_FINDING_COMMON_CHANNEL, &p2p->status) &&
|
||||
(memcmp(afx_hdl->tx_dst_addr, e->addr, ETH_ALEN) == 0)) {
|
||||
(ether_addr_equal(afx_hdl->tx_dst_addr, e->addr))) {
|
||||
afx_hdl->peer_chan = ch.chnum;
|
||||
brcmf_dbg(INFO, "PROBE REQUEST: Peer found, channel=%d\n",
|
||||
afx_hdl->peer_chan);
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include <linux/sched.h>
|
||||
#include <linux/firmware.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/etherdevice.h>
|
||||
|
||||
#include "cw1200.h"
|
||||
#include "sta.h"
|
||||
@ -555,8 +556,8 @@ u64 cw1200_prepare_multicast(struct ieee80211_hw *hw,
|
||||
pr_debug("[STA] multicast: %pM\n", ha->addr);
|
||||
memcpy(&priv->multicast_filter.macaddrs[count],
|
||||
ha->addr, ETH_ALEN);
|
||||
if (memcmp(ha->addr, broadcast_ipv4, ETH_ALEN) &&
|
||||
memcmp(ha->addr, broadcast_ipv6, ETH_ALEN))
|
||||
if (!ether_addr_equal(ha->addr, broadcast_ipv4) &&
|
||||
!ether_addr_equal(ha->addr, broadcast_ipv6))
|
||||
priv->has_multicast_subscription = true;
|
||||
count++;
|
||||
}
|
||||
|
@ -1166,8 +1166,7 @@ void cw1200_rx_cb(struct cw1200_common *priv,
|
||||
return;
|
||||
} else if (ieee80211_is_beacon(frame->frame_control) &&
|
||||
!arg->status && priv->vif &&
|
||||
!memcmp(ieee80211_get_SA(frame), priv->vif->bss_conf.bssid,
|
||||
ETH_ALEN)) {
|
||||
ether_addr_equal(ieee80211_get_SA(frame), priv->vif->bss_conf.bssid)) {
|
||||
const u8 *tim_ie;
|
||||
u8 *ies = ((struct ieee80211_mgmt *)
|
||||
(skb->data))->u.beacon.variable;
|
||||
|
@ -563,7 +563,7 @@ hostap_rx_frame_wds(local_info_t *local, struct ieee80211_hdr *hdr, u16 fc,
|
||||
|
||||
/* Possible WDS frame: either IEEE 802.11 compliant (if FromDS)
|
||||
* or own non-standard frame with 4th address after payload */
|
||||
if (memcmp(hdr->addr1, local->dev->dev_addr, ETH_ALEN) != 0 &&
|
||||
if (!ether_addr_equal(hdr->addr1, local->dev->dev_addr) &&
|
||||
(hdr->addr1[0] != 0xff || hdr->addr1[1] != 0xff ||
|
||||
hdr->addr1[2] != 0xff || hdr->addr1[3] != 0xff ||
|
||||
hdr->addr1[4] != 0xff || hdr->addr1[5] != 0xff)) {
|
||||
@ -622,12 +622,12 @@ static int hostap_is_eapol_frame(local_info_t *local, struct sk_buff *skb)
|
||||
/* check that the frame is unicast frame to us */
|
||||
if ((fc & (IEEE80211_FCTL_TODS | IEEE80211_FCTL_FROMDS)) ==
|
||||
IEEE80211_FCTL_TODS &&
|
||||
memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0 &&
|
||||
memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN) == 0) {
|
||||
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 &&
|
||||
memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0) {
|
||||
ether_addr_equal(hdr->addr1, dev->dev_addr)) {
|
||||
/* FromDS frame with own addr as DA */
|
||||
} else
|
||||
return 0;
|
||||
|
@ -1,5 +1,6 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/etherdevice.h>
|
||||
|
||||
#include "hostap_80211.h"
|
||||
#include "hostap_common.h"
|
||||
@ -103,8 +104,7 @@ netdev_tx_t hostap_data_start_xmit(struct sk_buff *skb,
|
||||
return NETDEV_TX_OK;
|
||||
} else if (local->iw_mode == IW_MODE_INFRA &&
|
||||
(local->wds_type & HOSTAP_WDS_AP_CLIENT) &&
|
||||
memcmp(skb->data + ETH_ALEN, dev->dev_addr,
|
||||
ETH_ALEN) != 0) {
|
||||
!ether_addr_equal(skb->data + ETH_ALEN, dev->dev_addr)) {
|
||||
/* AP client mode: send frames with foreign src addr
|
||||
* using 4-addr WDS frames */
|
||||
use_wds = WDS_COMPLIANT_FRAME;
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <linux/slab.h>
|
||||
#include <linux/export.h>
|
||||
#include <linux/moduleparam.h>
|
||||
#include <linux/etherdevice.h>
|
||||
|
||||
#include "hostap_wlan.h"
|
||||
#include "hostap.h"
|
||||
@ -106,13 +107,12 @@ static void ap_sta_hash_del(struct ap_data *ap, struct sta_info *sta)
|
||||
|
||||
s = ap->sta_hash[STA_HASH(sta->addr)];
|
||||
if (s == NULL) return;
|
||||
if (memcmp(s->addr, sta->addr, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(s->addr, sta->addr)) {
|
||||
ap->sta_hash[STA_HASH(sta->addr)] = s->hnext;
|
||||
return;
|
||||
}
|
||||
|
||||
while (s->hnext != NULL && memcmp(s->hnext->addr, sta->addr, ETH_ALEN)
|
||||
!= 0)
|
||||
while (s->hnext != NULL && !ether_addr_equal(s->hnext->addr, sta->addr))
|
||||
s = s->hnext;
|
||||
if (s->hnext != NULL)
|
||||
s->hnext = s->hnext->hnext;
|
||||
@ -435,7 +435,7 @@ int ap_control_del_mac(struct mac_restrictions *mac_restrictions, u8 *mac)
|
||||
ptr != &mac_restrictions->mac_list; ptr = ptr->next) {
|
||||
entry = list_entry(ptr, struct mac_entry, list);
|
||||
|
||||
if (memcmp(entry->addr, mac, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(entry->addr, mac)) {
|
||||
list_del(ptr);
|
||||
kfree(entry);
|
||||
mac_restrictions->entries--;
|
||||
@ -459,7 +459,7 @@ static int ap_control_mac_deny(struct mac_restrictions *mac_restrictions,
|
||||
|
||||
spin_lock_bh(&mac_restrictions->lock);
|
||||
list_for_each_entry(entry, &mac_restrictions->mac_list, list) {
|
||||
if (memcmp(entry->addr, mac, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(entry->addr, mac)) {
|
||||
found = 1;
|
||||
break;
|
||||
}
|
||||
@ -957,7 +957,7 @@ static struct sta_info* ap_get_sta(struct ap_data *ap, u8 *sta)
|
||||
struct sta_info *s;
|
||||
|
||||
s = ap->sta_hash[STA_HASH(sta)];
|
||||
while (s != NULL && memcmp(s->addr, sta, ETH_ALEN) != 0)
|
||||
while (s != NULL && !ether_addr_equal(s->addr, sta))
|
||||
s = s->hnext;
|
||||
return s;
|
||||
}
|
||||
@ -1391,7 +1391,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
|
||||
status_code = __le16_to_cpu(*pos);
|
||||
pos++;
|
||||
|
||||
if (memcmp(dev->dev_addr, hdr->addr2, ETH_ALEN) == 0 ||
|
||||
if (ether_addr_equal(dev->dev_addr, hdr->addr2) ||
|
||||
ap_control_mac_deny(&ap->mac_restrictions, hdr->addr2)) {
|
||||
txt = "authentication denied";
|
||||
resp = WLAN_STATUS_UNSPECIFIED_FAILURE;
|
||||
@ -1935,7 +1935,7 @@ static void handle_pspoll(local_info_t *local,
|
||||
PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=%pM, TA=%pM PWRMGT=%d\n",
|
||||
hdr->addr1, hdr->addr2, !!ieee80211_has_pm(hdr->frame_control));
|
||||
|
||||
if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(hdr->addr1, dev->dev_addr)) {
|
||||
PDEBUG(DEBUG_AP,
|
||||
"handle_pspoll - addr1(BSSID)=%pM not own MAC\n",
|
||||
hdr->addr1);
|
||||
@ -2230,7 +2230,7 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(hdr->addr1, dev->dev_addr)) {
|
||||
PDEBUG(DEBUG_AP, "handle_ap_item - addr1(BSSID)=%pM"
|
||||
" not own MAC\n", hdr->addr1);
|
||||
goto done;
|
||||
@ -2267,13 +2267,13 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb,
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(hdr->addr1, dev->dev_addr)) {
|
||||
PDEBUG(DEBUG_AP, "handle_ap_item - addr1(DA)=%pM"
|
||||
" not own MAC\n", hdr->addr1);
|
||||
goto done;
|
||||
}
|
||||
|
||||
if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(hdr->addr3, dev->dev_addr)) {
|
||||
PDEBUG(DEBUG_AP, "handle_ap_item - addr3(BSSID)=%pM"
|
||||
" not own MAC\n", hdr->addr3);
|
||||
goto done;
|
||||
@ -3035,7 +3035,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
|
||||
if (!wds) {
|
||||
/* FromDS frame - not for us; probably
|
||||
* broadcast/multicast in another BSS - drop */
|
||||
if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(hdr->addr1, dev->dev_addr)) {
|
||||
printk(KERN_DEBUG "Odd.. FromDS packet "
|
||||
"received with own BSSID\n");
|
||||
hostap_dump_rx_80211(dev->name, skb, rx_stats);
|
||||
@ -3044,7 +3044,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
|
||||
goto out;
|
||||
}
|
||||
} else if (stype == IEEE80211_STYPE_NULLFUNC && sta == NULL &&
|
||||
memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN) == 0) {
|
||||
ether_addr_equal(hdr->addr1, dev->dev_addr)) {
|
||||
|
||||
if (local->hostapd) {
|
||||
prism2_rx_80211(local->apdev, skb, rx_stats,
|
||||
@ -3073,7 +3073,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
|
||||
/* If BSSID (Addr3) is foreign, this frame is a normal
|
||||
* broadcast frame from an IBSS network. Drop it silently.
|
||||
* If BSSID is own, report the dropping of this frame. */
|
||||
if (memcmp(hdr->addr3, dev->dev_addr, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(hdr->addr3, dev->dev_addr)) {
|
||||
printk(KERN_DEBUG "%s: dropped received packet from %pM"
|
||||
" with no ToDS flag "
|
||||
"(type=0x%02x, subtype=0x%02x)\n", dev->name,
|
||||
|
@ -2175,7 +2175,7 @@ static void hostap_tx_callback(local_info_t *local,
|
||||
struct hostap_tx_callback_info *cb;
|
||||
|
||||
/* Make sure that frame was from us. */
|
||||
if (memcmp(txdesc->addr2, local->dev->dev_addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(txdesc->addr2, local->dev->dev_addr)) {
|
||||
printk(KERN_DEBUG "%s: TX callback - foreign frame\n",
|
||||
local->dev->name);
|
||||
return;
|
||||
|
@ -655,7 +655,7 @@ static int hostap_join_ap(struct net_device *dev)
|
||||
if (!local->last_scan_results)
|
||||
break;
|
||||
entry = &local->last_scan_results[i];
|
||||
if (memcmp(local->preferred_ap, entry->bssid, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(local->preferred_ap, entry->bssid)) {
|
||||
req.channel = entry->chid;
|
||||
break;
|
||||
}
|
||||
@ -1978,7 +1978,7 @@ static inline int prism2_translate_scan(local_info_t *local,
|
||||
list_for_each(ptr, &local->bss_list) {
|
||||
struct hostap_bss_info *bss;
|
||||
bss = list_entry(ptr, struct hostap_bss_info, list);
|
||||
if (memcmp(bss->bssid, scan->bssid, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(bss->bssid, scan->bssid)) {
|
||||
bss->included = 1;
|
||||
current_ev = __prism2_translate_scan(
|
||||
local, info, scan, bss, current_ev,
|
||||
|
@ -155,8 +155,7 @@ int prism2_wds_add(local_info_t *local, u8 *remote_addr,
|
||||
|
||||
if (prism2_wds_special_addr(iface->u.wds.remote_addr))
|
||||
empty = iface;
|
||||
else if (memcmp(iface->u.wds.remote_addr, remote_addr,
|
||||
ETH_ALEN) == 0) {
|
||||
else if (ether_addr_equal(iface->u.wds.remote_addr, remote_addr)) {
|
||||
match = iface;
|
||||
break;
|
||||
}
|
||||
@ -214,8 +213,7 @@ int prism2_wds_del(local_info_t *local, u8 *remote_addr,
|
||||
if (iface->type != HOSTAP_INTERFACE_WDS)
|
||||
continue;
|
||||
|
||||
if (memcmp(iface->u.wds.remote_addr, remote_addr,
|
||||
ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(iface->u.wds.remote_addr, remote_addr)) {
|
||||
selected = iface;
|
||||
break;
|
||||
}
|
||||
@ -1085,7 +1083,7 @@ int prism2_sta_deauth(local_info_t *local, u16 reason)
|
||||
|
||||
if (local->iw_mode != IW_MODE_INFRA ||
|
||||
is_zero_ether_addr(local->bssid) ||
|
||||
memcmp(local->bssid, "\x44\x44\x44\x44\x44\x44", ETH_ALEN) == 0)
|
||||
ether_addr_equal(local->bssid, "\x44\x44\x44\x44\x44\x44"))
|
||||
return 0;
|
||||
|
||||
ret = prism2_sta_send_mgmt(local, local->bssid, IEEE80211_STYPE_DEAUTH,
|
||||
|
@ -3012,7 +3012,7 @@ static void ipw_remove_current_network(struct ipw_priv *priv)
|
||||
spin_lock_irqsave(&priv->ieee->lock, flags);
|
||||
list_for_each_safe(element, safe, &priv->ieee->network_list) {
|
||||
network = list_entry(element, struct libipw_network, list);
|
||||
if (!memcmp(network->bssid, priv->bssid, ETH_ALEN)) {
|
||||
if (ether_addr_equal(network->bssid, priv->bssid)) {
|
||||
list_del(element);
|
||||
list_add_tail(&network->list,
|
||||
&priv->ieee->network_free_list);
|
||||
@ -3921,7 +3921,7 @@ static u8 ipw_add_station(struct ipw_priv *priv, u8 * bssid)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < priv->num_stations; i++) {
|
||||
if (!memcmp(priv->stations[i], bssid, ETH_ALEN)) {
|
||||
if (ether_addr_equal(priv->stations[i], bssid)) {
|
||||
/* Another node is active in network */
|
||||
priv->missed_adhoc_beacons = 0;
|
||||
if (!(priv->config & CFG_STATIC_CHANNEL))
|
||||
@ -3953,7 +3953,7 @@ static u8 ipw_find_station(struct ipw_priv *priv, u8 * bssid)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < priv->num_stations; i++)
|
||||
if (!memcmp(priv->stations[i], bssid, ETH_ALEN))
|
||||
if (ether_addr_equal(priv->stations[i], bssid))
|
||||
return i;
|
||||
|
||||
return IPW_INVALID_STATION;
|
||||
@ -5622,7 +5622,7 @@ static int ipw_find_adhoc_network(struct ipw_priv *priv,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!memcmp(network->bssid, priv->bssid, ETH_ALEN)) {
|
||||
if (ether_addr_equal(network->bssid, priv->bssid)) {
|
||||
IPW_DEBUG_MERGE("Network '%s (%pM)' excluded "
|
||||
"because of the same BSSID match: %pM"
|
||||
".\n", print_ssid(ssid, network->ssid,
|
||||
@ -5849,7 +5849,7 @@ static int ipw_best_network(struct ipw_priv *priv,
|
||||
}
|
||||
|
||||
if ((priv->config & CFG_STATIC_BSSID) &&
|
||||
memcmp(network->bssid, priv->bssid, ETH_ALEN)) {
|
||||
!ether_addr_equal(network->bssid, priv->bssid)) {
|
||||
IPW_DEBUG_ASSOC("Network '%s (%pM)' excluded "
|
||||
"because of BSSID mismatch: %pM.\n",
|
||||
print_ssid(ssid, network->ssid,
|
||||
@ -6988,7 +6988,7 @@ static int ipw_qos_handle_probe_response(struct ipw_priv *priv,
|
||||
}
|
||||
if ((priv->status & STATUS_ASSOCIATED) &&
|
||||
(priv->ieee->iw_mode == IW_MODE_ADHOC) && (active_network == 0)) {
|
||||
if (memcmp(network->bssid, priv->bssid, ETH_ALEN))
|
||||
if (!ether_addr_equal(network->bssid, priv->bssid))
|
||||
if (network->capability & WLAN_CAPABILITY_IBSS)
|
||||
if ((network->ssid_len ==
|
||||
priv->assoc_network->ssid_len) &&
|
||||
@ -8210,29 +8210,29 @@ static int is_network_packet(struct ipw_priv *priv,
|
||||
switch (priv->ieee->iw_mode) {
|
||||
case IW_MODE_ADHOC: /* Header: Dest. | Source | BSSID */
|
||||
/* packets from our adapter are dropped (echo) */
|
||||
if (!memcmp(header->addr2, priv->net_dev->dev_addr, ETH_ALEN))
|
||||
if (ether_addr_equal(header->addr2, priv->net_dev->dev_addr))
|
||||
return 0;
|
||||
|
||||
/* {broad,multi}cast packets to our BSSID go through */
|
||||
if (is_multicast_ether_addr(header->addr1))
|
||||
return !memcmp(header->addr3, priv->bssid, ETH_ALEN);
|
||||
return ether_addr_equal(header->addr3, priv->bssid);
|
||||
|
||||
/* packets to our adapter go through */
|
||||
return !memcmp(header->addr1, priv->net_dev->dev_addr,
|
||||
ETH_ALEN);
|
||||
return ether_addr_equal(header->addr1,
|
||||
priv->net_dev->dev_addr);
|
||||
|
||||
case IW_MODE_INFRA: /* Header: Dest. | BSSID | Source */
|
||||
/* packets from our adapter are dropped (echo) */
|
||||
if (!memcmp(header->addr3, priv->net_dev->dev_addr, ETH_ALEN))
|
||||
if (ether_addr_equal(header->addr3, priv->net_dev->dev_addr))
|
||||
return 0;
|
||||
|
||||
/* {broad,multi}cast packets to our BSS go through */
|
||||
if (is_multicast_ether_addr(header->addr1))
|
||||
return !memcmp(header->addr2, priv->bssid, ETH_ALEN);
|
||||
return ether_addr_equal(header->addr2, priv->bssid);
|
||||
|
||||
/* packets to our adapter go through */
|
||||
return !memcmp(header->addr1, priv->net_dev->dev_addr,
|
||||
ETH_ALEN);
|
||||
return ether_addr_equal(header->addr1,
|
||||
priv->net_dev->dev_addr);
|
||||
}
|
||||
|
||||
return 1;
|
||||
@ -8260,7 +8260,7 @@ static int is_duplicate_packet(struct ipw_priv *priv,
|
||||
list_for_each(p, &priv->ibss_mac_hash[index]) {
|
||||
entry =
|
||||
list_entry(p, struct ipw_ibss_seq, list);
|
||||
if (!memcmp(entry->mac, mac, ETH_ALEN))
|
||||
if (ether_addr_equal(entry->mac, mac))
|
||||
break;
|
||||
}
|
||||
if (p == &priv->ibss_mac_hash[index]) {
|
||||
@ -8329,7 +8329,7 @@ static void ipw_handle_mgmt_packet(struct ipw_priv *priv,
|
||||
IEEE80211_STYPE_PROBE_RESP) ||
|
||||
(WLAN_FC_GET_STYPE(le16_to_cpu(header->frame_ctl)) ==
|
||||
IEEE80211_STYPE_BEACON))) {
|
||||
if (!memcmp(header->addr3, priv->bssid, ETH_ALEN))
|
||||
if (ether_addr_equal(header->addr3, priv->bssid))
|
||||
ipw_add_station(priv, header->addr2);
|
||||
}
|
||||
|
||||
@ -9045,7 +9045,7 @@ static int ipw_wx_set_wap(struct net_device *dev,
|
||||
}
|
||||
|
||||
priv->config |= CFG_STATIC_BSSID;
|
||||
if (!memcmp(priv->bssid, wrqu->ap_addr.sa_data, ETH_ALEN)) {
|
||||
if (ether_addr_equal(priv->bssid, wrqu->ap_addr.sa_data)) {
|
||||
IPW_DEBUG_WX("BSSID set to current BSSID.\n");
|
||||
mutex_unlock(&priv->mutex);
|
||||
return 0;
|
||||
|
@ -874,13 +874,13 @@ void libipw_rx_any(struct libipw_device *ieee,
|
||||
switch (ieee->iw_mode) {
|
||||
case IW_MODE_ADHOC:
|
||||
/* our BSS and not from/to DS */
|
||||
if (memcmp(hdr->addr3, ieee->bssid, ETH_ALEN) == 0)
|
||||
if (ether_addr_equal(hdr->addr3, ieee->bssid))
|
||||
if ((fc & (IEEE80211_FCTL_TODS+IEEE80211_FCTL_FROMDS)) == 0) {
|
||||
/* promisc: get all */
|
||||
if (ieee->dev->flags & IFF_PROMISC)
|
||||
is_packet_for_us = 1;
|
||||
/* to us */
|
||||
else if (memcmp(hdr->addr1, ieee->dev->dev_addr, ETH_ALEN) == 0)
|
||||
else if (ether_addr_equal(hdr->addr1, ieee->dev->dev_addr))
|
||||
is_packet_for_us = 1;
|
||||
/* mcast */
|
||||
else if (is_multicast_ether_addr(hdr->addr1))
|
||||
@ -889,18 +889,18 @@ void libipw_rx_any(struct libipw_device *ieee,
|
||||
break;
|
||||
case IW_MODE_INFRA:
|
||||
/* our BSS (== from our AP) and from DS */
|
||||
if (memcmp(hdr->addr2, ieee->bssid, ETH_ALEN) == 0)
|
||||
if (ether_addr_equal(hdr->addr2, ieee->bssid))
|
||||
if ((fc & (IEEE80211_FCTL_TODS+IEEE80211_FCTL_FROMDS)) == IEEE80211_FCTL_FROMDS) {
|
||||
/* promisc: get all */
|
||||
if (ieee->dev->flags & IFF_PROMISC)
|
||||
is_packet_for_us = 1;
|
||||
/* to us */
|
||||
else if (memcmp(hdr->addr1, ieee->dev->dev_addr, ETH_ALEN) == 0)
|
||||
else if (ether_addr_equal(hdr->addr1, ieee->dev->dev_addr))
|
||||
is_packet_for_us = 1;
|
||||
/* mcast */
|
||||
else if (is_multicast_ether_addr(hdr->addr1)) {
|
||||
/* not our own packet bcasted from AP */
|
||||
if (memcmp(hdr->addr3, ieee->dev->dev_addr, ETH_ALEN))
|
||||
if (!ether_addr_equal(hdr->addr3, ieee->dev->dev_addr))
|
||||
is_packet_for_us = 1;
|
||||
}
|
||||
}
|
||||
|
@ -483,7 +483,7 @@ mwifiex_get_ba_tbl(struct mwifiex_private *priv, int tid, u8 *ra)
|
||||
|
||||
spin_lock_irqsave(&priv->tx_ba_stream_tbl_lock, flags);
|
||||
list_for_each_entry(tx_ba_tsr_tbl, &priv->tx_ba_stream_tbl_ptr, list) {
|
||||
if (!memcmp(tx_ba_tsr_tbl->ra, ra, ETH_ALEN) &&
|
||||
if (ether_addr_equal_unaligned(tx_ba_tsr_tbl->ra, ra) &&
|
||||
tx_ba_tsr_tbl->tid == tid) {
|
||||
spin_unlock_irqrestore(&priv->tx_ba_stream_tbl_lock,
|
||||
flags);
|
||||
|
@ -782,8 +782,7 @@ static int mwifiex_ret_ibss_coalescing_status(struct mwifiex_private *priv,
|
||||
}
|
||||
|
||||
/* If BSSID is diff, modify current BSS parameters */
|
||||
if (memcmp(priv->curr_bss_params.bss_descriptor.mac_address,
|
||||
ibss_coal_resp->bssid, ETH_ALEN)) {
|
||||
if (!ether_addr_equal(priv->curr_bss_params.bss_descriptor.mac_address, ibss_coal_resp->bssid)) {
|
||||
/* BSSID */
|
||||
memcpy(priv->curr_bss_params.bss_descriptor.mac_address,
|
||||
ibss_coal_resp->bssid, ETH_ALEN);
|
||||
|
@ -224,7 +224,7 @@ int mwifiex_process_sta_rx_packet(struct mwifiex_private *priv,
|
||||
* directly to os. Don't pass thru rx reordering
|
||||
*/
|
||||
if (!IS_11N_ENABLED(priv) ||
|
||||
memcmp(priv->curr_addr, rx_pkt_hdr->eth803_hdr.h_dest, ETH_ALEN)) {
|
||||
!ether_addr_equal_unaligned(priv->curr_addr, rx_pkt_hdr->eth803_hdr.h_dest)) {
|
||||
mwifiex_process_rx_packet(priv, skb);
|
||||
return ret;
|
||||
}
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include <linux/if_arp.h>
|
||||
#include <linux/slab.h>
|
||||
#include <linux/pci.h>
|
||||
#include <linux/etherdevice.h>
|
||||
|
||||
#include <asm/uaccess.h>
|
||||
|
||||
@ -1860,7 +1861,7 @@ prism54_del_mac(struct net_device *ndev, struct iw_request_info *info,
|
||||
if (mutex_lock_interruptible(&acl->lock))
|
||||
return -ERESTARTSYS;
|
||||
list_for_each_entry(entry, &acl->mac_list, _list) {
|
||||
if (memcmp(entry->addr, addr->sa_data, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(entry->addr, addr->sa_data)) {
|
||||
list_del(&entry->_list);
|
||||
acl->size--;
|
||||
kfree(entry);
|
||||
|
@ -295,7 +295,7 @@ u8 rtl_cam_get_free_entry(struct ieee80211_hw *hw, u8 *sta_addr)
|
||||
/* Does STA already exist? */
|
||||
for (i = 4; i < TOTAL_CAM_ENTRY; i++) {
|
||||
addr = rtlpriv->sec.hwsec_cam_sta_addr[i];
|
||||
if (memcmp(addr, sta_addr, ETH_ALEN) == 0)
|
||||
if (ether_addr_equal_unaligned(addr, sta_addr))
|
||||
return i;
|
||||
}
|
||||
/* Get a free CAM entry. */
|
||||
@ -335,7 +335,7 @@ void rtl_cam_del_entry(struct ieee80211_hw *hw, u8 *sta_addr)
|
||||
addr = rtlpriv->sec.hwsec_cam_sta_addr[i];
|
||||
bitmap = (rtlpriv->sec.hwsec_cam_bitmap) >> i;
|
||||
if (((bitmap & BIT(0)) == BIT(0)) &&
|
||||
(memcmp(addr, sta_addr, ETH_ALEN) == 0)) {
|
||||
(ether_addr_equal_unaligned(addr, sta_addr))) {
|
||||
/* Remove from HW Security CAM */
|
||||
eth_zero_addr(rtlpriv->sec.hwsec_cam_sta_addr[i]);
|
||||
rtlpriv->sec.hwsec_cam_bitmap &= ~(BIT(0) << i);
|
||||
|
@ -521,7 +521,7 @@ static int wl1251_op_add_interface(struct ieee80211_hw *hw,
|
||||
goto out;
|
||||
}
|
||||
|
||||
if (memcmp(wl->mac_addr, vif->addr, ETH_ALEN)) {
|
||||
if (!ether_addr_equal_unaligned(wl->mac_addr, vif->addr)) {
|
||||
memcpy(wl->mac_addr, vif->addr, ETH_ALEN);
|
||||
SET_IEEE80211_PERM_ADDR(wl->hw, wl->mac_addr);
|
||||
ret = wl1251_acx_station_id(wl);
|
||||
|
@ -44,6 +44,7 @@
|
||||
#include <linux/string.h>
|
||||
#include <linux/wireless.h>
|
||||
#include <linux/ieee80211.h>
|
||||
#include <linux/etherdevice.h>
|
||||
|
||||
#include <net/iw_handler.h>
|
||||
|
||||
@ -673,8 +674,7 @@ static void wl3501_mgmt_scan_confirm(struct wl3501_card *this, u16 addr)
|
||||
matchflag = 1;
|
||||
if (matchflag) {
|
||||
for (i = 0; i < this->bss_cnt; i++) {
|
||||
if (!memcmp(this->bss_set[i].bssid,
|
||||
sig.bssid, ETH_ALEN)) {
|
||||
if (ether_addr_equal_unaligned(this->bss_set[i].bssid, sig.bssid)) {
|
||||
matchflag = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -532,9 +532,8 @@ void zd_mac_tx_failed(struct urb *urb)
|
||||
tx_hdr = (struct ieee80211_hdr *)skb->data;
|
||||
|
||||
/* we skip all frames not matching the reported destination */
|
||||
if (unlikely(memcmp(tx_hdr->addr1, tx_status->mac, ETH_ALEN))) {
|
||||
if (unlikely(!ether_addr_equal(tx_hdr->addr1, tx_status->mac)))
|
||||
continue;
|
||||
}
|
||||
|
||||
/* we skip all frames not matching the reported final rate */
|
||||
|
||||
@ -997,7 +996,7 @@ static int filter_ack(struct ieee80211_hw *hw, struct ieee80211_hdr *rx_hdr,
|
||||
continue;
|
||||
|
||||
tx_hdr = (struct ieee80211_hdr *)skb->data;
|
||||
if (likely(!memcmp(tx_hdr->addr2, rx_hdr->addr1, ETH_ALEN)))
|
||||
if (likely(ether_addr_equal(tx_hdr->addr2, rx_hdr->addr1)))
|
||||
{
|
||||
found = 1;
|
||||
break;
|
||||
|
@ -448,7 +448,7 @@ int oz_cdev_start(struct oz_pd *pd, int resume)
|
||||
}
|
||||
spin_lock(&g_cdev.lock);
|
||||
if ((g_cdev.active_pd == NULL) &&
|
||||
(memcmp(pd->mac_addr, g_cdev.active_addr, ETH_ALEN) == 0)) {
|
||||
ether_addr_equal(pd->mac_addr, g_cdev.active_addr)) {
|
||||
oz_pd_get(pd);
|
||||
g_cdev.active_pd = pd;
|
||||
oz_dbg(ON, "Active PD arrived\n");
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include <linux/timer.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/netdevice.h>
|
||||
#include <linux/etherdevice.h>
|
||||
#include <linux/errno.h>
|
||||
#include <linux/ieee80211.h>
|
||||
#include "ozdbg.h"
|
||||
@ -180,7 +181,7 @@ static struct oz_pd *oz_connect_req(struct oz_pd *cur_pd, struct oz_elt *elt,
|
||||
spin_lock_bh(&g_polling_lock);
|
||||
list_for_each(e, &g_pd_list) {
|
||||
pd2 = container_of(e, struct oz_pd, link);
|
||||
if (memcmp(pd2->mac_addr, pd_addr, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(pd2->mac_addr, pd_addr)) {
|
||||
free_pd = pd;
|
||||
pd = pd2;
|
||||
break;
|
||||
@ -597,7 +598,7 @@ struct oz_pd *oz_pd_find(const u8 *mac_addr)
|
||||
spin_lock_bh(&g_polling_lock);
|
||||
list_for_each(e, &g_pd_list) {
|
||||
pd = container_of(e, struct oz_pd, link);
|
||||
if (memcmp(pd->mac_addr, mac_addr, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(pd->mac_addr, mac_addr)) {
|
||||
atomic_inc(&pd->ref_count);
|
||||
spin_unlock_bh(&g_polling_lock);
|
||||
return pd;
|
||||
|
@ -41,7 +41,7 @@ int batadv_compare_orig(const struct hlist_node *node, const void *data2)
|
||||
const void *data1 = container_of(node, struct batadv_orig_node,
|
||||
hash_entry);
|
||||
|
||||
return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
|
||||
return batadv_compare_eth(data1, data2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,7 +51,7 @@ static int batadv_compare_tt(const struct hlist_node *node, const void *data2)
|
||||
const void *data1 = container_of(node, struct batadv_tt_common_entry,
|
||||
hash_entry);
|
||||
|
||||
return (memcmp(data1, data2, ETH_ALEN) == 0 ? 1 : 0);
|
||||
return batadv_compare_eth(data1, data2);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -1497,8 +1497,8 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local,
|
||||
bool used = false;
|
||||
|
||||
list_for_each_entry(sdata, &local->interfaces, list) {
|
||||
if (memcmp(local->hw.wiphy->addresses[i].addr,
|
||||
sdata->vif.addr, ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(local->hw.wiphy->addresses[i].addr,
|
||||
sdata->vif.addr)) {
|
||||
used = true;
|
||||
break;
|
||||
}
|
||||
@ -1558,8 +1558,7 @@ static void ieee80211_assign_perm_addr(struct ieee80211_local *local,
|
||||
val += inc;
|
||||
|
||||
list_for_each_entry(sdata, &local->interfaces, list) {
|
||||
if (memcmp(tmp_addr, sdata->vif.addr,
|
||||
ETH_ALEN) == 0) {
|
||||
if (ether_addr_equal(tmp_addr, sdata->vif.addr)) {
|
||||
used = true;
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user