|
@@ -258,7 +258,7 @@ static void ap_handle_timer(unsigned long data)
|
|
sta->addr, ap->tx_callback_poll);
|
|
sta->addr, ap->tx_callback_poll);
|
|
} else {
|
|
} else {
|
|
int deauth = sta->timeout_next == STA_DEAUTH;
|
|
int deauth = sta->timeout_next == STA_DEAUTH;
|
|
- u16 resp;
|
|
|
|
|
|
+ __le16 resp;
|
|
PDEBUG(DEBUG_AP, "%s: sending %s info to STA %s"
|
|
PDEBUG(DEBUG_AP, "%s: sending %s info to STA %s"
|
|
"(last=%lu, jiffies=%lu)\n",
|
|
"(last=%lu, jiffies=%lu)\n",
|
|
local->dev->name,
|
|
local->dev->name,
|
|
@@ -300,13 +300,13 @@ void hostap_deauth_all_stas(struct net_device *dev, struct ap_data *ap,
|
|
int resend)
|
|
int resend)
|
|
{
|
|
{
|
|
u8 addr[ETH_ALEN];
|
|
u8 addr[ETH_ALEN];
|
|
- u16 resp;
|
|
|
|
|
|
+ __le16 resp;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
PDEBUG(DEBUG_AP, "%s: Deauthenticate all stations\n", dev->name);
|
|
PDEBUG(DEBUG_AP, "%s: Deauthenticate all stations\n", dev->name);
|
|
memset(addr, 0xff, ETH_ALEN);
|
|
memset(addr, 0xff, ETH_ALEN);
|
|
|
|
|
|
- resp = __constant_cpu_to_le16(WLAN_REASON_PREV_AUTH_NOT_VALID);
|
|
|
|
|
|
+ resp = cpu_to_le16(WLAN_REASON_PREV_AUTH_NOT_VALID);
|
|
|
|
|
|
/* deauth message sent; try to resend it few times; the message is
|
|
/* deauth message sent; try to resend it few times; the message is
|
|
* broadcast, so it may be delayed until next DTIM; there is not much
|
|
* broadcast, so it may be delayed until next DTIM; there is not much
|
|
@@ -462,7 +462,7 @@ void ap_control_flush_macs(struct mac_restrictions *mac_restrictions)
|
|
int ap_control_kick_mac(struct ap_data *ap, struct net_device *dev, u8 *mac)
|
|
int ap_control_kick_mac(struct ap_data *ap, struct net_device *dev, u8 *mac)
|
|
{
|
|
{
|
|
struct sta_info *sta;
|
|
struct sta_info *sta;
|
|
- u16 resp;
|
|
|
|
|
|
+ __le16 resp;
|
|
|
|
|
|
spin_lock_bh(&ap->sta_table_lock);
|
|
spin_lock_bh(&ap->sta_table_lock);
|
|
sta = ap_get_sta(ap, mac);
|
|
sta = ap_get_sta(ap, mac);
|
|
@@ -628,7 +628,8 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data)
|
|
struct ap_data *ap = data;
|
|
struct ap_data *ap = data;
|
|
struct net_device *dev = ap->local->dev;
|
|
struct net_device *dev = ap->local->dev;
|
|
struct ieee80211_hdr_4addr *hdr;
|
|
struct ieee80211_hdr_4addr *hdr;
|
|
- u16 fc, *pos, auth_alg, auth_transaction, status;
|
|
|
|
|
|
+ u16 fc, auth_alg, auth_transaction, status;
|
|
|
|
+ __le16 *pos;
|
|
struct sta_info *sta = NULL;
|
|
struct sta_info *sta = NULL;
|
|
char *txt = NULL;
|
|
char *txt = NULL;
|
|
DECLARE_MAC_BUF(mac);
|
|
DECLARE_MAC_BUF(mac);
|
|
@@ -649,7 +650,7 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data)
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- pos = (u16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
|
|
|
|
+ pos = (__le16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
auth_alg = le16_to_cpu(*pos++);
|
|
auth_alg = le16_to_cpu(*pos++);
|
|
auth_transaction = le16_to_cpu(*pos++);
|
|
auth_transaction = le16_to_cpu(*pos++);
|
|
status = le16_to_cpu(*pos++);
|
|
status = le16_to_cpu(*pos++);
|
|
@@ -698,7 +699,8 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data)
|
|
struct ap_data *ap = data;
|
|
struct ap_data *ap = data;
|
|
struct net_device *dev = ap->local->dev;
|
|
struct net_device *dev = ap->local->dev;
|
|
struct ieee80211_hdr_4addr *hdr;
|
|
struct ieee80211_hdr_4addr *hdr;
|
|
- u16 fc, *pos, status;
|
|
|
|
|
|
+ u16 fc, status;
|
|
|
|
+ __le16 *pos;
|
|
struct sta_info *sta = NULL;
|
|
struct sta_info *sta = NULL;
|
|
char *txt = NULL;
|
|
char *txt = NULL;
|
|
DECLARE_MAC_BUF(mac);
|
|
DECLARE_MAC_BUF(mac);
|
|
@@ -736,7 +738,7 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data)
|
|
goto done;
|
|
goto done;
|
|
}
|
|
}
|
|
|
|
|
|
- pos = (u16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
|
|
|
|
+ pos = (__le16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
pos++;
|
|
pos++;
|
|
status = le16_to_cpu(*pos++);
|
|
status = le16_to_cpu(*pos++);
|
|
if (status == WLAN_STATUS_SUCCESS) {
|
|
if (status == WLAN_STATUS_SUCCESS) {
|
|
@@ -1298,7 +1300,8 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
|
|
struct ap_data *ap = local->ap;
|
|
struct ap_data *ap = local->ap;
|
|
char body[8 + WLAN_AUTH_CHALLENGE_LEN], *challenge = NULL;
|
|
char body[8 + WLAN_AUTH_CHALLENGE_LEN], *challenge = NULL;
|
|
int len, olen;
|
|
int len, olen;
|
|
- u16 auth_alg, auth_transaction, status_code, *pos;
|
|
|
|
|
|
+ u16 auth_alg, auth_transaction, status_code;
|
|
|
|
+ __le16 *pos;
|
|
u16 resp = WLAN_STATUS_SUCCESS, fc;
|
|
u16 resp = WLAN_STATUS_SUCCESS, fc;
|
|
struct sta_info *sta = NULL;
|
|
struct sta_info *sta = NULL;
|
|
struct ieee80211_crypt_data *crypt;
|
|
struct ieee80211_crypt_data *crypt;
|
|
@@ -1332,7 +1335,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
|
|
crypt = local->crypt[idx];
|
|
crypt = local->crypt[idx];
|
|
}
|
|
}
|
|
|
|
|
|
- pos = (u16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
|
|
|
|
+ pos = (__le16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
auth_alg = __le16_to_cpu(*pos);
|
|
auth_alg = __le16_to_cpu(*pos);
|
|
pos++;
|
|
pos++;
|
|
auth_transaction = __le16_to_cpu(*pos);
|
|
auth_transaction = __le16_to_cpu(*pos);
|
|
@@ -1465,7 +1468,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
|
|
}
|
|
}
|
|
|
|
|
|
fail:
|
|
fail:
|
|
- pos = (u16 *) body;
|
|
|
|
|
|
+ pos = (__le16 *) body;
|
|
*pos = cpu_to_le16(auth_alg);
|
|
*pos = cpu_to_le16(auth_alg);
|
|
pos++;
|
|
pos++;
|
|
*pos = cpu_to_le16(auth_transaction + 1);
|
|
*pos = cpu_to_le16(auth_transaction + 1);
|
|
@@ -1510,7 +1513,7 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
char body[12], *p, *lpos;
|
|
char body[12], *p, *lpos;
|
|
int len, left;
|
|
int len, left;
|
|
- u16 *pos;
|
|
|
|
|
|
+ __le16 *pos;
|
|
u16 resp = WLAN_STATUS_SUCCESS;
|
|
u16 resp = WLAN_STATUS_SUCCESS;
|
|
struct sta_info *sta = NULL;
|
|
struct sta_info *sta = NULL;
|
|
int send_deauth = 0;
|
|
int send_deauth = 0;
|
|
@@ -1540,7 +1543,7 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
|
|
atomic_inc(&sta->users);
|
|
atomic_inc(&sta->users);
|
|
spin_unlock_bh(&local->ap->sta_table_lock);
|
|
spin_unlock_bh(&local->ap->sta_table_lock);
|
|
|
|
|
|
- pos = (u16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
|
|
|
|
+ pos = (__le16 *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
sta->capability = __le16_to_cpu(*pos);
|
|
sta->capability = __le16_to_cpu(*pos);
|
|
pos++; left -= 2;
|
|
pos++; left -= 2;
|
|
sta->listen_interval = __le16_to_cpu(*pos);
|
|
sta->listen_interval = __le16_to_cpu(*pos);
|
|
@@ -1636,25 +1639,24 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
|
|
}
|
|
}
|
|
|
|
|
|
fail:
|
|
fail:
|
|
- pos = (u16 *) body;
|
|
|
|
|
|
+ pos = (__le16 *) body;
|
|
|
|
|
|
if (send_deauth) {
|
|
if (send_deauth) {
|
|
- *pos = __constant_cpu_to_le16(
|
|
|
|
- WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH);
|
|
|
|
|
|
+ *pos = cpu_to_le16(WLAN_REASON_STA_REQ_ASSOC_WITHOUT_AUTH);
|
|
pos++;
|
|
pos++;
|
|
} else {
|
|
} else {
|
|
/* FIX: CF-Pollable and CF-PollReq should be set to match the
|
|
/* FIX: CF-Pollable and CF-PollReq should be set to match the
|
|
* values in beacons/probe responses */
|
|
* values in beacons/probe responses */
|
|
/* FIX: how about privacy and WEP? */
|
|
/* FIX: how about privacy and WEP? */
|
|
/* capability */
|
|
/* capability */
|
|
- *pos = __constant_cpu_to_le16(WLAN_CAPABILITY_ESS);
|
|
|
|
|
|
+ *pos = cpu_to_le16(WLAN_CAPABILITY_ESS);
|
|
pos++;
|
|
pos++;
|
|
|
|
|
|
/* status_code */
|
|
/* status_code */
|
|
- *pos = __cpu_to_le16(resp);
|
|
|
|
|
|
+ *pos = cpu_to_le16(resp);
|
|
pos++;
|
|
pos++;
|
|
|
|
|
|
- *pos = __cpu_to_le16((sta && sta->aid > 0 ? sta->aid : 0) |
|
|
|
|
|
|
+ *pos = cpu_to_le16((sta && sta->aid > 0 ? sta->aid : 0) |
|
|
BIT(14) | BIT(15)); /* AID */
|
|
BIT(14) | BIT(15)); /* AID */
|
|
pos++;
|
|
pos++;
|
|
|
|
|
|
@@ -1681,7 +1683,7 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
|
|
0x96 : 0x16;
|
|
0x96 : 0x16;
|
|
(*lpos)++;
|
|
(*lpos)++;
|
|
}
|
|
}
|
|
- pos = (u16 *) p;
|
|
|
|
|
|
+ pos = (__le16 *) p;
|
|
}
|
|
}
|
|
|
|
|
|
prism2_send_mgmt(dev, IEEE80211_FTYPE_MGMT |
|
|
prism2_send_mgmt(dev, IEEE80211_FTYPE_MGMT |
|
|
@@ -1718,7 +1720,8 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb,
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
char *body = (char *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
char *body = (char *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
int len;
|
|
int len;
|
|
- u16 reason_code, *pos;
|
|
|
|
|
|
+ u16 reason_code;
|
|
|
|
+ __le16 *pos;
|
|
struct sta_info *sta = NULL;
|
|
struct sta_info *sta = NULL;
|
|
DECLARE_MAC_BUF(mac);
|
|
DECLARE_MAC_BUF(mac);
|
|
|
|
|
|
@@ -1729,8 +1732,8 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb,
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- pos = (u16 *) body;
|
|
|
|
- reason_code = __le16_to_cpu(*pos);
|
|
|
|
|
|
+ pos = (__le16 *) body;
|
|
|
|
+ reason_code = le16_to_cpu(*pos);
|
|
|
|
|
|
PDEBUG(DEBUG_AP, "%s: deauthentication: %s len=%d, "
|
|
PDEBUG(DEBUG_AP, "%s: deauthentication: %s len=%d, "
|
|
"reason_code=%d\n", dev->name, print_mac(mac, hdr->addr2), len,
|
|
"reason_code=%d\n", dev->name, print_mac(mac, hdr->addr2), len,
|
|
@@ -1760,7 +1763,8 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb,
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
char *body = skb->data + IEEE80211_MGMT_HDR_LEN;
|
|
char *body = skb->data + IEEE80211_MGMT_HDR_LEN;
|
|
int len;
|
|
int len;
|
|
- u16 reason_code, *pos;
|
|
|
|
|
|
+ u16 reason_code;
|
|
|
|
+ __le16 *pos;
|
|
struct sta_info *sta = NULL;
|
|
struct sta_info *sta = NULL;
|
|
DECLARE_MAC_BUF(mac);
|
|
DECLARE_MAC_BUF(mac);
|
|
|
|
|
|
@@ -1771,8 +1775,8 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb,
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- pos = (u16 *) body;
|
|
|
|
- reason_code = __le16_to_cpu(*pos);
|
|
|
|
|
|
+ pos = (__le16 *) body;
|
|
|
|
+ reason_code = le16_to_cpu(*pos);
|
|
|
|
|
|
PDEBUG(DEBUG_AP, "%s: disassociation: %s len=%d, "
|
|
PDEBUG(DEBUG_AP, "%s: disassociation: %s len=%d, "
|
|
"reason_code=%d\n", dev->name, print_mac(mac, hdr->addr2), len,
|
|
"reason_code=%d\n", dev->name, print_mac(mac, hdr->addr2), len,
|
|
@@ -1817,7 +1821,7 @@ static void ap_handle_dropped_data(local_info_t *local,
|
|
{
|
|
{
|
|
struct net_device *dev = local->dev;
|
|
struct net_device *dev = local->dev;
|
|
struct sta_info *sta;
|
|
struct sta_info *sta;
|
|
- u16 reason;
|
|
|
|
|
|
+ __le16 reason;
|
|
|
|
|
|
spin_lock_bh(&local->ap->sta_table_lock);
|
|
spin_lock_bh(&local->ap->sta_table_lock);
|
|
sta = ap_get_sta(local->ap, hdr->addr2);
|
|
sta = ap_get_sta(local->ap, hdr->addr2);
|
|
@@ -1831,8 +1835,7 @@ static void ap_handle_dropped_data(local_info_t *local,
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- reason = __constant_cpu_to_le16(
|
|
|
|
- WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
|
|
|
|
|
|
+ reason = cpu_to_le16(WLAN_REASON_CLASS3_FRAME_FROM_NONASSOC_STA);
|
|
prism2_send_mgmt(dev, IEEE80211_FTYPE_MGMT |
|
|
prism2_send_mgmt(dev, IEEE80211_FTYPE_MGMT |
|
|
((sta == NULL || !(sta->flags & WLAN_STA_ASSOC)) ?
|
|
((sta == NULL || !(sta->flags & WLAN_STA_ASSOC)) ?
|
|
IEEE80211_STYPE_DEAUTH : IEEE80211_STYPE_DISASSOC),
|
|
IEEE80211_STYPE_DEAUTH : IEEE80211_STYPE_DISASSOC),
|
|
@@ -1892,7 +1895,7 @@ static void handle_pspoll(local_info_t *local,
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- aid = __le16_to_cpu(hdr->duration_id);
|
|
|
|
|
|
+ aid = le16_to_cpu(hdr->duration_id);
|
|
if ((aid & (BIT(15) | BIT(14))) != (BIT(15) | BIT(14))) {
|
|
if ((aid & (BIT(15) | BIT(14))) != (BIT(15) | BIT(14))) {
|
|
PDEBUG(DEBUG_PS, " PSPOLL and AID[15:14] not set\n");
|
|
PDEBUG(DEBUG_PS, " PSPOLL and AID[15:14] not set\n");
|
|
return;
|
|
return;
|
|
@@ -1998,7 +2001,8 @@ static void handle_beacon(local_info_t *local, struct sk_buff *skb,
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
struct ieee80211_hdr_4addr *hdr = (struct ieee80211_hdr_4addr *) skb->data;
|
|
char *body = skb->data + IEEE80211_MGMT_HDR_LEN;
|
|
char *body = skb->data + IEEE80211_MGMT_HDR_LEN;
|
|
int len, left;
|
|
int len, left;
|
|
- u16 *pos, beacon_int, capability;
|
|
|
|
|
|
+ u16 beacon_int, capability;
|
|
|
|
+ __le16 *pos;
|
|
char *ssid = NULL;
|
|
char *ssid = NULL;
|
|
unsigned char *supp_rates = NULL;
|
|
unsigned char *supp_rates = NULL;
|
|
int ssid_len = 0, supp_rates_len = 0;
|
|
int ssid_len = 0, supp_rates_len = 0;
|
|
@@ -2013,16 +2017,16 @@ static void handle_beacon(local_info_t *local, struct sk_buff *skb,
|
|
return;
|
|
return;
|
|
}
|
|
}
|
|
|
|
|
|
- pos = (u16 *) body;
|
|
|
|
|
|
+ pos = (__le16 *) body;
|
|
left = len;
|
|
left = len;
|
|
|
|
|
|
/* Timestamp (8 octets) */
|
|
/* Timestamp (8 octets) */
|
|
pos += 4; left -= 8;
|
|
pos += 4; left -= 8;
|
|
/* Beacon interval (2 octets) */
|
|
/* Beacon interval (2 octets) */
|
|
- beacon_int = __le16_to_cpu(*pos);
|
|
|
|
|
|
+ beacon_int = le16_to_cpu(*pos);
|
|
pos++; left -= 2;
|
|
pos++; left -= 2;
|
|
/* Capability information (2 octets) */
|
|
/* Capability information (2 octets) */
|
|
- capability = __le16_to_cpu(*pos);
|
|
|
|
|
|
+ capability = le16_to_cpu(*pos);
|
|
pos++; left -= 2;
|
|
pos++; left -= 2;
|
|
|
|
|
|
if (local->ap->ap_policy != AP_OTHER_AP_EVEN_IBSS &&
|
|
if (local->ap->ap_policy != AP_OTHER_AP_EVEN_IBSS &&
|