aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/net/wireless/zd1211rw/zd_mac.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/net/wireless/zd1211rw/zd_mac.c')
-rw-r--r--drivers/net/wireless/zd1211rw/zd_mac.c23
1 files changed, 7 insertions, 16 deletions
diff --git a/drivers/net/wireless/zd1211rw/zd_mac.c b/drivers/net/wireless/zd1211rw/zd_mac.c
index 4c5f78eac349..6753d240c168 100644
--- a/drivers/net/wireless/zd1211rw/zd_mac.c
+++ b/drivers/net/wireless/zd1211rw/zd_mac.c
@@ -156,17 +156,8 @@ void zd_mac_clear(struct zd_mac *mac)
156static int reset_mode(struct zd_mac *mac) 156static int reset_mode(struct zd_mac *mac)
157{ 157{
158 struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac); 158 struct ieee80211_device *ieee = zd_mac_to_ieee80211(mac);
159 struct zd_ioreq32 ioreqs[] = { 159 u32 filter = (ieee->iw_mode == IW_MODE_MONITOR) ? ~0 : STA_RX_FILTER;
160 { CR_RX_FILTER, STA_RX_FILTER }, 160 return zd_iowrite32(&mac->chip, CR_RX_FILTER, filter);
161 { CR_SNIFFER_ON, 0U },
162 };
163
164 if (ieee->iw_mode == IW_MODE_MONITOR) {
165 ioreqs[0].value = 0xffffffff;
166 ioreqs[1].value = 0x1;
167 }
168
169 return zd_iowrite32a(&mac->chip, ioreqs, ARRAY_SIZE(ioreqs));
170} 161}
171 162
172int zd_mac_open(struct net_device *netdev) 163int zd_mac_open(struct net_device *netdev)
@@ -974,14 +965,14 @@ static int is_data_packet_for_us(struct ieee80211_device *ieee,
974 switch (ieee->iw_mode) { 965 switch (ieee->iw_mode) {
975 case IW_MODE_ADHOC: 966 case IW_MODE_ADHOC:
976 if ((fc & (IEEE80211_FCTL_TODS|IEEE80211_FCTL_FROMDS)) != 0 || 967 if ((fc & (IEEE80211_FCTL_TODS|IEEE80211_FCTL_FROMDS)) != 0 ||
977 memcmp(hdr->addr3, ieee->bssid, ETH_ALEN) != 0) 968 compare_ether_addr(hdr->addr3, ieee->bssid) != 0)
978 return 0; 969 return 0;
979 break; 970 break;
980 case IW_MODE_AUTO: 971 case IW_MODE_AUTO:
981 case IW_MODE_INFRA: 972 case IW_MODE_INFRA:
982 if ((fc & (IEEE80211_FCTL_TODS|IEEE80211_FCTL_FROMDS)) != 973 if ((fc & (IEEE80211_FCTL_TODS|IEEE80211_FCTL_FROMDS)) !=
983 IEEE80211_FCTL_FROMDS || 974 IEEE80211_FCTL_FROMDS ||
984 memcmp(hdr->addr2, ieee->bssid, ETH_ALEN) != 0) 975 compare_ether_addr(hdr->addr2, ieee->bssid) != 0)
985 return 0; 976 return 0;
986 break; 977 break;
987 default: 978 default:
@@ -989,9 +980,9 @@ static int is_data_packet_for_us(struct ieee80211_device *ieee,
989 return 0; 980 return 0;
990 } 981 }
991 982
992 return memcmp(hdr->addr1, netdev->dev_addr, ETH_ALEN) == 0 || 983 return compare_ether_addr(hdr->addr1, netdev->dev_addr) == 0 ||
993 (is_multicast_ether_addr(hdr->addr1) && 984 (is_multicast_ether_addr(hdr->addr1) &&
994 memcmp(hdr->addr3, netdev->dev_addr, ETH_ALEN) != 0) || 985 compare_ether_addr(hdr->addr3, netdev->dev_addr) != 0) ||
995 (netdev->flags & IFF_PROMISC); 986 (netdev->flags & IFF_PROMISC);
996} 987}
997 988
@@ -1047,7 +1038,7 @@ static void update_qual_rssi(struct zd_mac *mac,
1047 hdr = (struct ieee80211_hdr_3addr *)buffer; 1038 hdr = (struct ieee80211_hdr_3addr *)buffer;
1048 if (length < offsetof(struct ieee80211_hdr_3addr, addr3)) 1039 if (length < offsetof(struct ieee80211_hdr_3addr, addr3))
1049 return; 1040 return;
1050 if (memcmp(hdr->addr2, zd_mac_to_ieee80211(mac)->bssid, ETH_ALEN) != 0) 1041 if (compare_ether_addr(hdr->addr2, zd_mac_to_ieee80211(mac)->bssid) != 0)
1051 return; 1042 return;
1052 1043
1053 spin_lock_irqsave(&mac->lock, flags); 1044 spin_lock_irqsave(&mac->lock, flags);