|
@@ -590,22 +590,22 @@ static void hostap_ap_tx_cb(struct sk_buff *skb, int ok, void *data)
|
|
|
{
|
|
|
struct ap_data *ap = data;
|
|
|
u16 fc;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
|
|
|
if (!ap->local->hostapd || !ap->local->apdev) {
|
|
|
dev_kfree_skb(skb);
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
|
|
|
/* Pass the TX callback frame to the hostapd; use 802.11 header version
|
|
|
* 1 to indicate failure (no ACK) and 2 success (frame ACKed) */
|
|
|
|
|
|
fc &= ~WLAN_FC_PVER;
|
|
|
fc |= ok ? BIT(1) : BIT(0);
|
|
|
- hdr->frame_control = cpu_to_le16(fc);
|
|
|
+ hdr->frame_ctl = cpu_to_le16(fc);
|
|
|
|
|
|
skb->dev = ap->local->apdev;
|
|
|
skb_pull(skb, hostap_80211_get_hdrlen(fc));
|
|
@@ -622,7 +622,7 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data)
|
|
|
{
|
|
|
struct ap_data *ap = data;
|
|
|
struct net_device *dev = ap->local->dev;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
u16 fc, *pos, auth_alg, auth_transaction, status;
|
|
|
struct sta_info *sta = NULL;
|
|
|
char *txt = NULL;
|
|
@@ -632,8 +632,8 @@ static void hostap_ap_tx_cb_auth(struct sk_buff *skb, int ok, void *data)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_MGMT ||
|
|
|
HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_AUTH ||
|
|
|
skb->len < IEEE80211_MGMT_HDR_LEN + 6) {
|
|
@@ -691,7 +691,7 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data)
|
|
|
{
|
|
|
struct ap_data *ap = data;
|
|
|
struct net_device *dev = ap->local->dev;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
u16 fc, *pos, status;
|
|
|
struct sta_info *sta = NULL;
|
|
|
char *txt = NULL;
|
|
@@ -701,8 +701,8 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
if (HOSTAP_FC_GET_TYPE(fc) != WLAN_FC_TYPE_MGMT ||
|
|
|
(HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_ASSOC_RESP &&
|
|
|
HOSTAP_FC_GET_STYPE(fc) != WLAN_FC_STYPE_REASSOC_RESP) ||
|
|
@@ -756,12 +756,12 @@ static void hostap_ap_tx_cb_assoc(struct sk_buff *skb, int ok, void *data)
|
|
|
static void hostap_ap_tx_cb_poll(struct sk_buff *skb, int ok, void *data)
|
|
|
{
|
|
|
struct ap_data *ap = data;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
struct sta_info *sta;
|
|
|
|
|
|
if (skb->len < 24)
|
|
|
goto fail;
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
if (ok) {
|
|
|
spin_lock(&ap->sta_table_lock);
|
|
|
sta = ap_get_sta(ap, hdr->addr1);
|
|
@@ -917,7 +917,7 @@ static void prism2_send_mgmt(struct net_device *dev,
|
|
|
{
|
|
|
struct hostap_interface *iface;
|
|
|
local_info_t *local;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
u16 fc;
|
|
|
struct sk_buff *skb;
|
|
|
struct hostap_skb_tx_data *meta;
|
|
@@ -943,7 +943,7 @@ static void prism2_send_mgmt(struct net_device *dev,
|
|
|
|
|
|
fc = (type << 2) | (subtype << 4);
|
|
|
hdrlen = hostap_80211_get_hdrlen(fc);
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb_put(skb, hdrlen);
|
|
|
+ hdr = (struct ieee80211_hdr *) skb_put(skb, hdrlen);
|
|
|
if (body)
|
|
|
memcpy(skb_put(skb, body_len), body, body_len);
|
|
|
|
|
@@ -967,7 +967,7 @@ static void prism2_send_mgmt(struct net_device *dev,
|
|
|
memcpy(hdr->addr3, dev->dev_addr, ETH_ALEN); /* BSSID */
|
|
|
}
|
|
|
|
|
|
- hdr->frame_control = cpu_to_le16(fc);
|
|
|
+ hdr->frame_ctl = cpu_to_le16(fc);
|
|
|
|
|
|
meta = (struct hostap_skb_tx_data *) skb->cb;
|
|
|
memset(meta, 0, sizeof(*meta));
|
|
@@ -1284,8 +1284,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
|
|
|
struct hostap_80211_rx_status *rx_stats)
|
|
|
{
|
|
|
struct net_device *dev = local->dev;
|
|
|
- struct hostap_ieee80211_hdr *hdr =
|
|
|
- (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
size_t hdrlen;
|
|
|
struct ap_data *ap = local->ap;
|
|
|
char body[8 + WLAN_AUTH_CHALLENGE_LEN], *challenge = NULL;
|
|
@@ -1298,7 +1297,7 @@ static void handle_authen(local_info_t *local, struct sk_buff *skb,
|
|
|
|
|
|
len = skb->len - IEEE80211_MGMT_HDR_LEN;
|
|
|
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
hdrlen = hostap_80211_get_hdrlen(fc);
|
|
|
|
|
|
if (len < 6) {
|
|
@@ -1498,8 +1497,7 @@ static void handle_assoc(local_info_t *local, struct sk_buff *skb,
|
|
|
struct hostap_80211_rx_status *rx_stats, int reassoc)
|
|
|
{
|
|
|
struct net_device *dev = local->dev;
|
|
|
- struct hostap_ieee80211_hdr *hdr =
|
|
|
- (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
char body[12], *p, *lpos;
|
|
|
int len, left;
|
|
|
u16 *pos;
|
|
@@ -1706,8 +1704,7 @@ static void handle_deauth(local_info_t *local, struct sk_buff *skb,
|
|
|
struct hostap_80211_rx_status *rx_stats)
|
|
|
{
|
|
|
struct net_device *dev = local->dev;
|
|
|
- struct hostap_ieee80211_hdr *hdr =
|
|
|
- (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
char *body = (char *) (skb->data + IEEE80211_MGMT_HDR_LEN);
|
|
|
int len;
|
|
|
u16 reason_code, *pos;
|
|
@@ -1748,8 +1745,7 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb,
|
|
|
struct hostap_80211_rx_status *rx_stats)
|
|
|
{
|
|
|
struct net_device *dev = local->dev;
|
|
|
- struct hostap_ieee80211_hdr *hdr =
|
|
|
- (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
char *body = skb->data + IEEE80211_MGMT_HDR_LEN;
|
|
|
int len;
|
|
|
u16 reason_code, *pos;
|
|
@@ -1787,7 +1783,7 @@ static void handle_disassoc(local_info_t *local, struct sk_buff *skb,
|
|
|
|
|
|
/* Called only as a scheduled task for pending AP frames. */
|
|
|
static void ap_handle_data_nullfunc(local_info_t *local,
|
|
|
- struct hostap_ieee80211_hdr *hdr)
|
|
|
+ struct ieee80211_hdr *hdr)
|
|
|
{
|
|
|
struct net_device *dev = local->dev;
|
|
|
|
|
@@ -1804,7 +1800,7 @@ static void ap_handle_data_nullfunc(local_info_t *local,
|
|
|
|
|
|
/* Called only as a scheduled task for pending AP frames. */
|
|
|
static void ap_handle_dropped_data(local_info_t *local,
|
|
|
- struct hostap_ieee80211_hdr *hdr)
|
|
|
+ struct ieee80211_hdr *hdr)
|
|
|
{
|
|
|
struct net_device *dev = local->dev;
|
|
|
struct sta_info *sta;
|
|
@@ -1863,7 +1859,7 @@ static void pspoll_send_buffered(local_info_t *local, struct sta_info *sta,
|
|
|
|
|
|
/* Called only as a scheduled task for pending AP frames. */
|
|
|
static void handle_pspoll(local_info_t *local,
|
|
|
- struct hostap_ieee80211_hdr *hdr,
|
|
|
+ struct ieee80211_hdr *hdr,
|
|
|
struct hostap_80211_rx_status *rx_stats)
|
|
|
{
|
|
|
struct net_device *dev = local->dev;
|
|
@@ -1874,7 +1870,7 @@ static void handle_pspoll(local_info_t *local,
|
|
|
PDEBUG(DEBUG_PS2, "handle_pspoll: BSSID=" MACSTR ", TA=" MACSTR
|
|
|
" PWRMGT=%d\n",
|
|
|
MAC2STR(hdr->addr1), MAC2STR(hdr->addr2),
|
|
|
- !!(le16_to_cpu(hdr->frame_control) & WLAN_FC_PWRMGT));
|
|
|
+ !!(le16_to_cpu(hdr->frame_ctl) & WLAN_FC_PWRMGT));
|
|
|
|
|
|
if (memcmp(hdr->addr1, dev->dev_addr, ETH_ALEN)) {
|
|
|
PDEBUG(DEBUG_AP, "handle_pspoll - addr1(BSSID)=" MACSTR
|
|
@@ -1982,8 +1978,7 @@ static void handle_wds_oper_queue(void *data)
|
|
|
static void handle_beacon(local_info_t *local, struct sk_buff *skb,
|
|
|
struct hostap_80211_rx_status *rx_stats)
|
|
|
{
|
|
|
- struct hostap_ieee80211_hdr *hdr =
|
|
|
- (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ struct ieee80211_hdr *hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
char *body = skb->data + IEEE80211_MGMT_HDR_LEN;
|
|
|
int len, left;
|
|
|
u16 *pos, beacon_int, capability;
|
|
@@ -2141,12 +2136,12 @@ static void handle_ap_item(local_info_t *local, struct sk_buff *skb,
|
|
|
struct net_device *dev = local->dev;
|
|
|
#endif /* PRISM2_NO_KERNEL_IEEE80211_MGMT */
|
|
|
u16 fc, type, stype;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
|
|
|
/* FIX: should give skb->len to handler functions and check that the
|
|
|
* buffer is long enough */
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
type = HOSTAP_FC_GET_TYPE(fc);
|
|
|
stype = HOSTAP_FC_GET_STYPE(fc);
|
|
|
|
|
@@ -2259,7 +2254,7 @@ void hostap_rx(struct net_device *dev, struct sk_buff *skb,
|
|
|
struct hostap_interface *iface;
|
|
|
local_info_t *local;
|
|
|
u16 fc;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
|
|
|
iface = netdev_priv(dev);
|
|
|
local = iface->local;
|
|
@@ -2269,8 +2264,8 @@ void hostap_rx(struct net_device *dev, struct sk_buff *skb,
|
|
|
|
|
|
local->stats.rx_packets++;
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
|
|
|
if (local->ap->ap_policy == AP_OTHER_AP_SKIP_ALL &&
|
|
|
HOSTAP_FC_GET_TYPE(fc) == WLAN_FC_TYPE_MGMT &&
|
|
@@ -2290,7 +2285,7 @@ void hostap_rx(struct net_device *dev, struct sk_buff *skb,
|
|
|
static void schedule_packet_send(local_info_t *local, struct sta_info *sta)
|
|
|
{
|
|
|
struct sk_buff *skb;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
struct hostap_80211_rx_status rx_stats;
|
|
|
|
|
|
if (skb_queue_empty(&sta->tx_buf))
|
|
@@ -2303,10 +2298,10 @@ static void schedule_packet_send(local_info_t *local, struct sta_info *sta)
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb_put(skb, 16);
|
|
|
+ hdr = (struct ieee80211_hdr *) skb_put(skb, 16);
|
|
|
|
|
|
/* Generate a fake pspoll frame to start packet delivery */
|
|
|
- hdr->frame_control = __constant_cpu_to_le16(
|
|
|
+ hdr->frame_ctl = __constant_cpu_to_le16(
|
|
|
(WLAN_FC_TYPE_CTRL << 2) | (WLAN_FC_STYPE_PSPOLL << 4));
|
|
|
memcpy(hdr->addr1, local->dev->dev_addr, ETH_ALEN);
|
|
|
memcpy(hdr->addr2, sta->addr, ETH_ALEN);
|
|
@@ -2686,7 +2681,7 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx)
|
|
|
struct sta_info *sta = NULL;
|
|
|
struct sk_buff *skb = tx->skb;
|
|
|
int set_tim, ret;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
struct hostap_skb_tx_data *meta;
|
|
|
|
|
|
meta = (struct hostap_skb_tx_data *) skb->cb;
|
|
@@ -2695,7 +2690,7 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx)
|
|
|
meta->iface->type == HOSTAP_INTERFACE_STA)
|
|
|
goto out;
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
|
|
|
if (hdr->addr1[0] & 0x01) {
|
|
|
/* broadcast/multicast frame - no AP related processing */
|
|
@@ -2748,7 +2743,7 @@ ap_tx_ret hostap_handle_sta_tx(local_info_t *local, struct hostap_tx_data *tx)
|
|
|
|
|
|
if (meta->flags & HOSTAP_TX_FLAGS_ADD_MOREDATA) {
|
|
|
/* indicate to STA that more frames follow */
|
|
|
- hdr->frame_control |= __constant_cpu_to_le16(WLAN_FC_MOREDATA);
|
|
|
+ hdr->frame_ctl |= __constant_cpu_to_le16(WLAN_FC_MOREDATA);
|
|
|
}
|
|
|
|
|
|
if (meta->flags & HOSTAP_TX_FLAGS_BUFFERED_FRAME) {
|
|
@@ -2821,10 +2816,10 @@ void hostap_handle_sta_release(void *ptr)
|
|
|
void hostap_handle_sta_tx_exc(local_info_t *local, struct sk_buff *skb)
|
|
|
{
|
|
|
struct sta_info *sta;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
struct hostap_skb_tx_data *meta;
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
meta = (struct hostap_skb_tx_data *) skb->cb;
|
|
|
|
|
|
spin_lock(&local->ap->sta_table_lock);
|
|
@@ -2890,8 +2885,8 @@ static void hostap_update_sta_ps2(local_info_t *local, struct sta_info *sta,
|
|
|
|
|
|
|
|
|
/* Called only as a tasklet (software IRQ). Called for each RX frame to update
|
|
|
- * STA power saving state. pwrmgt is a flag from 802.11 frame_control field. */
|
|
|
-int hostap_update_sta_ps(local_info_t *local, struct hostap_ieee80211_hdr *hdr)
|
|
|
+ * STA power saving state. pwrmgt is a flag from 802.11 frame_ctl field. */
|
|
|
+int hostap_update_sta_ps(local_info_t *local, struct ieee80211_hdr *hdr)
|
|
|
{
|
|
|
struct sta_info *sta;
|
|
|
u16 fc;
|
|
@@ -2905,7 +2900,7 @@ int hostap_update_sta_ps(local_info_t *local, struct hostap_ieee80211_hdr *hdr)
|
|
|
if (!sta)
|
|
|
return -1;
|
|
|
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
hostap_update_sta_ps2(local, sta, fc & WLAN_FC_PWRMGT,
|
|
|
HOSTAP_FC_GET_TYPE(fc), HOSTAP_FC_GET_STYPE(fc));
|
|
|
|
|
@@ -2924,14 +2919,14 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
|
|
|
int ret;
|
|
|
struct sta_info *sta;
|
|
|
u16 fc, type, stype;
|
|
|
- struct hostap_ieee80211_hdr *hdr;
|
|
|
+ struct ieee80211_hdr *hdr;
|
|
|
|
|
|
if (local->ap == NULL)
|
|
|
return AP_RX_CONTINUE;
|
|
|
|
|
|
- hdr = (struct hostap_ieee80211_hdr *) skb->data;
|
|
|
+ hdr = (struct ieee80211_hdr *) skb->data;
|
|
|
|
|
|
- fc = le16_to_cpu(hdr->frame_control);
|
|
|
+ fc = le16_to_cpu(hdr->frame_ctl);
|
|
|
type = HOSTAP_FC_GET_TYPE(fc);
|
|
|
stype = HOSTAP_FC_GET_STYPE(fc);
|
|
|
|
|
@@ -3057,7 +3052,7 @@ ap_rx_ret hostap_handle_sta_rx(local_info_t *local, struct net_device *dev,
|
|
|
|
|
|
/* Called only as a tasklet (software IRQ) */
|
|
|
int hostap_handle_sta_crypto(local_info_t *local,
|
|
|
- struct hostap_ieee80211_hdr *hdr,
|
|
|
+ struct ieee80211_hdr *hdr,
|
|
|
struct ieee80211_crypt_data **crypt,
|
|
|
void **sta_ptr)
|
|
|
{
|
|
@@ -3159,7 +3154,7 @@ int hostap_add_sta(struct ap_data *ap, u8 *sta_addr)
|
|
|
|
|
|
/* Called only as a tasklet (software IRQ) */
|
|
|
int hostap_update_rx_stats(struct ap_data *ap,
|
|
|
- struct hostap_ieee80211_hdr *hdr,
|
|
|
+ struct ieee80211_hdr *hdr,
|
|
|
struct hostap_80211_rx_status *rx_stats)
|
|
|
{
|
|
|
struct sta_info *sta;
|