diff --git a/drivers/staging/wlan-ng/hfa384x.h b/drivers/staging/wlan-ng/hfa384x.h index 88e894dd3568..f1bc1f2816af 100644 --- a/drivers/staging/wlan-ng/hfa384x.h +++ b/drivers/staging/wlan-ng/hfa384x.h @@ -1423,7 +1423,7 @@ int hfa384x_drvr_start(struct hfa384x *hw); int hfa384x_drvr_stop(struct hfa384x *hw); int hfa384x_drvr_txframe(struct hfa384x *hw, struct sk_buff *skb, - union p80211_hdr *p80211_hdr, + struct p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep); void hfa384x_tx_timeout(struct wlandevice *wlandev); diff --git a/drivers/staging/wlan-ng/hfa384x_usb.c b/drivers/staging/wlan-ng/hfa384x_usb.c index f2a0e16b0318..0bf71f395b37 100644 --- a/drivers/staging/wlan-ng/hfa384x_usb.c +++ b/drivers/staging/wlan-ng/hfa384x_usb.c @@ -2472,7 +2472,7 @@ int hfa384x_drvr_stop(struct hfa384x *hw) *---------------------------------------------------------------- */ int hfa384x_drvr_txframe(struct hfa384x *hw, struct sk_buff *skb, - union p80211_hdr *p80211_hdr, + struct p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep) { int usbpktlen = sizeof(struct hfa384x_tx_frame); @@ -2517,7 +2517,7 @@ int hfa384x_drvr_txframe(struct hfa384x *hw, struct sk_buff *skb, /* copy the header over to the txdesc */ memcpy(&hw->txbuff.txfrm.desc.frame_control, p80211_hdr, - sizeof(union p80211_hdr)); + sizeof(struct p80211_hdr)); /* if we're using host WEP, increase size by IV+ICV */ if (p80211_wep->data) { diff --git a/drivers/staging/wlan-ng/p80211conv.c b/drivers/staging/wlan-ng/p80211conv.c index 0ff5fda81b05..0b3ba03c1f1f 100644 --- a/drivers/staging/wlan-ng/p80211conv.c +++ b/drivers/staging/wlan-ng/p80211conv.c @@ -106,7 +106,7 @@ static const u8 oui_8021h[] = { 0x00, 0x00, 0xf8 }; *---------------------------------------------------------------- */ int skb_ether_to_p80211(struct wlandevice *wlandev, u32 ethconv, - struct sk_buff *skb, union p80211_hdr *p80211_hdr, + struct sk_buff *skb, struct p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep) { __le16 fc; @@ -175,21 +175,21 @@ int skb_ether_to_p80211(struct wlandevice *wlandev, u32 ethconv, switch (wlandev->macmode) { case WLAN_MACMODE_IBSS_STA: - memcpy(p80211_hdr->a3.a1, &e_hdr.daddr, ETH_ALEN); - memcpy(p80211_hdr->a3.a2, wlandev->netdev->dev_addr, ETH_ALEN); - memcpy(p80211_hdr->a3.a3, wlandev->bssid, ETH_ALEN); + memcpy(p80211_hdr->a1, &e_hdr.daddr, ETH_ALEN); + memcpy(p80211_hdr->a2, wlandev->netdev->dev_addr, ETH_ALEN); + memcpy(p80211_hdr->a3, wlandev->bssid, ETH_ALEN); break; case WLAN_MACMODE_ESS_STA: fc |= cpu_to_le16(WLAN_SET_FC_TODS(1)); - memcpy(p80211_hdr->a3.a1, wlandev->bssid, ETH_ALEN); - memcpy(p80211_hdr->a3.a2, wlandev->netdev->dev_addr, ETH_ALEN); - memcpy(p80211_hdr->a3.a3, &e_hdr.daddr, ETH_ALEN); + memcpy(p80211_hdr->a1, wlandev->bssid, ETH_ALEN); + memcpy(p80211_hdr->a2, wlandev->netdev->dev_addr, ETH_ALEN); + memcpy(p80211_hdr->a3, &e_hdr.daddr, ETH_ALEN); break; case WLAN_MACMODE_ESS_AP: fc |= cpu_to_le16(WLAN_SET_FC_FROMDS(1)); - memcpy(p80211_hdr->a3.a1, &e_hdr.daddr, ETH_ALEN); - memcpy(p80211_hdr->a3.a2, wlandev->bssid, ETH_ALEN); - memcpy(p80211_hdr->a3.a3, &e_hdr.saddr, ETH_ALEN); + memcpy(p80211_hdr->a1, &e_hdr.daddr, ETH_ALEN); + memcpy(p80211_hdr->a2, wlandev->bssid, ETH_ALEN); + memcpy(p80211_hdr->a3, &e_hdr.saddr, ETH_ALEN); break; default: netdev_err(wlandev->netdev, @@ -222,9 +222,9 @@ int skb_ether_to_p80211(struct wlandevice *wlandev, u32 ethconv, /* skb->nh.raw = skb->data; */ - p80211_hdr->a3.fc = fc; - p80211_hdr->a3.dur = 0; - p80211_hdr->a3.seq = 0; + p80211_hdr->fc = fc; + p80211_hdr->dur = 0; + p80211_hdr->seq = 0; return 0; } @@ -281,7 +281,7 @@ int skb_p80211_to_ether(struct wlandevice *wlandev, u32 ethconv, unsigned int payload_offset; u8 daddr[ETH_ALEN]; u8 saddr[ETH_ALEN]; - union p80211_hdr *w_hdr; + struct p80211_hdr *w_hdr; struct wlan_ethhdr *e_hdr; struct wlan_llc *e_llc; struct wlan_snap *e_snap; @@ -291,21 +291,21 @@ int skb_p80211_to_ether(struct wlandevice *wlandev, u32 ethconv, payload_length = skb->len - WLAN_HDR_A3_LEN - WLAN_CRC_LEN; payload_offset = WLAN_HDR_A3_LEN; - w_hdr = (union p80211_hdr *)skb->data; + w_hdr = (struct p80211_hdr *)skb->data; /* setup some vars for convenience */ - fc = le16_to_cpu(w_hdr->a3.fc); + fc = le16_to_cpu(w_hdr->fc); if ((WLAN_GET_FC_TODS(fc) == 0) && (WLAN_GET_FC_FROMDS(fc) == 0)) { - ether_addr_copy(daddr, w_hdr->a3.a1); - ether_addr_copy(saddr, w_hdr->a3.a2); + ether_addr_copy(daddr, w_hdr->a1); + ether_addr_copy(saddr, w_hdr->a2); } else if ((WLAN_GET_FC_TODS(fc) == 0) && (WLAN_GET_FC_FROMDS(fc) == 1)) { - ether_addr_copy(daddr, w_hdr->a3.a1); - ether_addr_copy(saddr, w_hdr->a3.a3); + ether_addr_copy(daddr, w_hdr->a1); + ether_addr_copy(saddr, w_hdr->a3); } else if ((WLAN_GET_FC_TODS(fc) == 1) && (WLAN_GET_FC_FROMDS(fc) == 0)) { - ether_addr_copy(daddr, w_hdr->a3.a3); - ether_addr_copy(saddr, w_hdr->a3.a2); + ether_addr_copy(daddr, w_hdr->a3); + ether_addr_copy(saddr, w_hdr->a2); } else { payload_offset = WLAN_HDR_A4_LEN; if (payload_length < WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN) { @@ -313,8 +313,8 @@ int skb_p80211_to_ether(struct wlandevice *wlandev, u32 ethconv, return 1; } payload_length -= (WLAN_HDR_A4_LEN - WLAN_HDR_A3_LEN); - ether_addr_copy(daddr, w_hdr->a4.a3); - ether_addr_copy(saddr, w_hdr->a4.a4); + ether_addr_copy(daddr, w_hdr->a3); + ether_addr_copy(saddr, w_hdr->a4); } /* perform de-wep if necessary.. */ diff --git a/drivers/staging/wlan-ng/p80211conv.h b/drivers/staging/wlan-ng/p80211conv.h index 15fd635d9770..63c423507fe8 100644 --- a/drivers/staging/wlan-ng/p80211conv.h +++ b/drivers/staging/wlan-ng/p80211conv.h @@ -154,7 +154,7 @@ struct wlandevice; int skb_p80211_to_ether(struct wlandevice *wlandev, u32 ethconv, struct sk_buff *skb); int skb_ether_to_p80211(struct wlandevice *wlandev, u32 ethconv, - struct sk_buff *skb, union p80211_hdr *p80211_hdr, + struct sk_buff *skb, struct p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep); int p80211_stt_findproto(u16 proto); diff --git a/drivers/staging/wlan-ng/p80211hdr.h b/drivers/staging/wlan-ng/p80211hdr.h index 6564810fd026..93dd8ff1940c 100644 --- a/drivers/staging/wlan-ng/p80211hdr.h +++ b/drivers/staging/wlan-ng/p80211hdr.h @@ -148,16 +148,7 @@ /* Generic 802.11 Header types */ -struct p80211_hdr_a3 { - __le16 fc; - u16 dur; - u8 a1[ETH_ALEN]; - u8 a2[ETH_ALEN]; - u8 a3[ETH_ALEN]; - u16 seq; -} __packed; - -struct p80211_hdr_a4 { +struct p80211_hdr { u16 fc; u16 dur; u8 a1[ETH_ALEN]; @@ -167,11 +158,6 @@ struct p80211_hdr_a4 { u8 a4[ETH_ALEN]; } __packed; -union p80211_hdr { - struct p80211_hdr_a3 a3; - struct p80211_hdr_a4 a4; -} __packed; - /* Frame and header length macros */ static inline u16 wlan_ctl_framelen(u16 fstype) diff --git a/drivers/staging/wlan-ng/p80211mgmt.h b/drivers/staging/wlan-ng/p80211mgmt.h index c045c08e1991..1457a6def5a2 100644 --- a/drivers/staging/wlan-ng/p80211mgmt.h +++ b/drivers/staging/wlan-ng/p80211mgmt.h @@ -299,7 +299,7 @@ struct wlan_fr_mgmt { u16 type; u16 len; /* DOES NOT include CRC !!!! */ u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -311,7 +311,7 @@ struct wlan_fr_beacon { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -334,7 +334,7 @@ struct wlan_fr_ibssatim { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; @@ -350,7 +350,7 @@ struct wlan_fr_disassoc { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -365,7 +365,7 @@ struct wlan_fr_assocreq { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -382,7 +382,7 @@ struct wlan_fr_assocresp { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -399,7 +399,7 @@ struct wlan_fr_reassocreq { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -417,7 +417,7 @@ struct wlan_fr_reassocresp { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -434,7 +434,7 @@ struct wlan_fr_probereq { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -449,7 +449,7 @@ struct wlan_fr_proberesp { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -470,7 +470,7 @@ struct wlan_fr_authen { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ @@ -487,7 +487,7 @@ struct wlan_fr_deauthen { u16 type; u16 len; u8 *buf; - union p80211_hdr *hdr; + struct p80211_hdr *hdr; /* used for target specific data, skb in Linux */ void *priv; /*-- fixed fields -----------*/ diff --git a/drivers/staging/wlan-ng/p80211netdev.c b/drivers/staging/wlan-ng/p80211netdev.c index 6f470e7ba647..3a4cc0bc06db 100644 --- a/drivers/staging/wlan-ng/p80211netdev.c +++ b/drivers/staging/wlan-ng/p80211netdev.c @@ -235,9 +235,9 @@ void p80211netdev_rx(struct wlandevice *wlandev, struct sk_buff *skb) static int p80211_convert_to_ether(struct wlandevice *wlandev, struct sk_buff *skb) { - struct p80211_hdr_a3 *hdr; + struct p80211_hdr *hdr; - hdr = (struct p80211_hdr_a3 *)skb->data; + hdr = (struct p80211_hdr *)skb->data; if (p80211_rx_typedrop(wlandev, le16_to_cpu(hdr->fc))) return CONV_TO_ETHER_SKIPPED; @@ -327,7 +327,7 @@ static netdev_tx_t p80211knetdev_hard_start_xmit(struct sk_buff *skb, int result = 0; int txresult; struct wlandevice *wlandev = netdev->ml_priv; - union p80211_hdr p80211_hdr; + struct p80211_hdr p80211_hdr; struct p80211_metawep p80211_wep; p80211_wep.data = NULL; diff --git a/drivers/staging/wlan-ng/p80211netdev.h b/drivers/staging/wlan-ng/p80211netdev.h index d48466d943b4..25e5116b1590 100644 --- a/drivers/staging/wlan-ng/p80211netdev.h +++ b/drivers/staging/wlan-ng/p80211netdev.h @@ -180,7 +180,7 @@ struct wlandevice { int (*close)(struct wlandevice *wlandev); void (*reset)(struct wlandevice *wlandev); int (*txframe)(struct wlandevice *wlandev, struct sk_buff *skb, - union p80211_hdr *p80211_hdr, + struct p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep); int (*mlmerequest)(struct wlandevice *wlandev, struct p80211msg *msg); int (*set_multicast_list)(struct wlandevice *wlandev, diff --git a/drivers/staging/wlan-ng/prism2sta.c b/drivers/staging/wlan-ng/prism2sta.c index e6dcb687e7a1..1f9ba26f1f36 100644 --- a/drivers/staging/wlan-ng/prism2sta.c +++ b/drivers/staging/wlan-ng/prism2sta.c @@ -103,7 +103,7 @@ static int prism2sta_open(struct wlandevice *wlandev); static int prism2sta_close(struct wlandevice *wlandev); static void prism2sta_reset(struct wlandevice *wlandev); static int prism2sta_txframe(struct wlandevice *wlandev, struct sk_buff *skb, - union p80211_hdr *p80211_hdr, + struct p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep); static int prism2sta_mlmerequest(struct wlandevice *wlandev, struct p80211msg *msg); @@ -242,7 +242,7 @@ static void prism2sta_reset(struct wlandevice *wlandev) * process thread */ static int prism2sta_txframe(struct wlandevice *wlandev, struct sk_buff *skb, - union p80211_hdr *p80211_hdr, + struct p80211_hdr *p80211_hdr, struct p80211_metawep *p80211_wep) { struct hfa384x *hw = wlandev->priv; @@ -250,7 +250,7 @@ static int prism2sta_txframe(struct wlandevice *wlandev, struct sk_buff *skb, /* If necessary, set the 802.11 WEP bit */ if ((wlandev->hostwep & (HOSTWEP_PRIVACYINVOKED | HOSTWEP_ENCRYPT)) == HOSTWEP_PRIVACYINVOKED) { - p80211_hdr->a3.fc |= cpu_to_le16(WLAN_SET_FC_ISWEP(1)); + p80211_hdr->fc |= cpu_to_le16(WLAN_SET_FC_ISWEP(1)); } return hfa384x_drvr_txframe(hw, skb, p80211_hdr, p80211_wep);