staging: r8188eu: Remove union wrapping of recv_frame
authorLarry Finger <Larry.Finger@lwfinger.net>
Fri, 14 Feb 2014 22:54:07 +0000 (16:54 -0600)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 15 Feb 2014 20:34:44 +0000 (12:34 -0800)
We have now removed everthing from the union except the struct. The union
can be deleted, the struct renamed, and the referencing of members of the
struct becomes a lot simpler.

Some, but not all, of the problems noted by checkpatch.pl have been fixed.

Sugggested-by: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
Cc: Jes Sorensen <Jes.Sorensen@redhat.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/staging/rtl8188eu/core/rtw_mlme_ext.c
drivers/staging/rtl8188eu/core/rtw_recv.c
drivers/staging/rtl8188eu/core/rtw_security.c
drivers/staging/rtl8188eu/core/rtw_sta_mgt.c
drivers/staging/rtl8188eu/hal/rtl8188e_rxdesc.c
drivers/staging/rtl8188eu/hal/usb_ops_linux.c
drivers/staging/rtl8188eu/include/recv_osdep.h
drivers/staging/rtl8188eu/include/rtl8188e_recv.h
drivers/staging/rtl8188eu/include/rtw_mlme_ext.h
drivers/staging/rtl8188eu/include/rtw_recv.h
drivers/staging/rtl8188eu/os_dep/recv_linux.c

index 301cda5..faeec73 100644 (file)
@@ -414,10 +414,10 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext)
        }
 }
 
-static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler *ptable, union recv_frame *precv_frame)
+static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler *ptable, struct recv_frame *precv_frame)
 {
        u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
 
          if (ptable->func) {
         /* receive the frames that ra(a1) is my address or ra(a1) is bc address. */
@@ -428,7 +428,7 @@ static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler *ptabl
        }
 }
 
-void mgt_dispatcher(struct adapter *padapter, union recv_frame *precv_frame)
+void mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        int index;
        struct mlme_handler *ptable;
@@ -436,7 +436,7 @@ void mgt_dispatcher(struct adapter *padapter, union recv_frame *precv_frame)
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
 #endif /* CONFIG_88EU_AP_MODE */
        u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
        struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(pframe));
 
        RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
@@ -465,13 +465,15 @@ void mgt_dispatcher(struct adapter *padapter, union recv_frame *precv_frame)
 
        if (psta != NULL) {
                if (GetRetry(pframe)) {
-                       if (precv_frame->u.hdr.attrib.seq_num == psta->RxMgmtFrameSeqNum) {
+                       if (precv_frame->attrib.seq_num ==
+                           psta->RxMgmtFrameSeqNum) {
                                /* drop the duplicate management frame */
-                               DBG_88E("Drop duplicate management frame with seq_num=%d.\n", precv_frame->u.hdr.attrib.seq_num);
+                               DBG_88E("Drop duplicate management frame with seq_num=%d.\n",
+                                       precv_frame->attrib.seq_num);
                                return;
                        }
                }
-               psta->RxMgmtFrameSeqNum = precv_frame->u.hdr.attrib.seq_num;
+               psta->RxMgmtFrameSeqNum = precv_frame->attrib.seq_num;
        }
 
 #ifdef CONFIG_88EU_AP_MODE
@@ -532,7 +534,7 @@ Following are the callback functions for each subtype of the management frames
 
 *****************************************************************************/
 
-unsigned int OnProbeReq(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnProbeReq(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        unsigned int    ielen;
        unsigned char   *p;
@@ -540,8 +542,8 @@ unsigned int OnProbeReq(struct adapter *padapter, union recv_frame *precv_frame)
        struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
        struct wlan_bssid_ex *cur = &(pmlmeinfo->network);
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       uint len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       uint len = precv_frame->len;
        u8 is_valid_p2p_probereq = false;
 
 #ifdef CONFIG_88EU_P2P
@@ -609,12 +611,12 @@ _issue_probersp:
        return _SUCCESS;
 }
 
-unsigned int OnProbeRsp(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnProbeRsp(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
 #ifdef CONFIG_88EU_P2P
        struct wifidirect_info  *pwdinfo = &padapter->wdinfo;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
 #endif
 
 #ifdef CONFIG_88EU_P2P
@@ -663,7 +665,7 @@ unsigned int OnProbeRsp(struct adapter *padapter, union recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnBeacon(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        int cam_idx;
        struct sta_info *psta;
@@ -671,8 +673,8 @@ unsigned int OnBeacon(struct adapter *padapter, union recv_frame *precv_frame)
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        struct sta_priv *pstapriv = &padapter->stapriv;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       uint len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       uint len = precv_frame->len;
        struct wlan_bssid_ex *pbss;
        int ret = _SUCCESS;
 
@@ -753,7 +755,7 @@ _END_ONBEACON_:
        return _SUCCESS;
 }
 
-unsigned int OnAuth(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAuth(struct adapter *padapter, struct recv_frame *precv_frame)
 {
 #ifdef CONFIG_88EU_AP_MODE
        unsigned int    auth_mode, ie_len;
@@ -767,8 +769,8 @@ unsigned int OnAuth(struct adapter *padapter, union recv_frame *precv_frame)
        struct security_priv *psecuritypriv = &padapter->securitypriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       uint len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       uint len = precv_frame->len;
 
        if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
                return _FAIL;
@@ -926,15 +928,15 @@ auth_fail:
        return _FAIL;
 }
 
-unsigned int OnAuthClient(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAuthClient(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        unsigned int    seq, len, status, offset;
        unsigned char   *p;
        unsigned int    go2asoc = 0;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       uint pkt_len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       uint pkt_len = precv_frame->len;
 
        DBG_88E("%s\n", __func__);
 
@@ -1001,7 +1003,7 @@ authclnt_fail:
        return _FAIL;
 }
 
-unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAssocReq(struct adapter *padapter, struct recv_frame *precv_frame)
 {
 #ifdef CONFIG_88EU_AP_MODE
        u16 capab_info;
@@ -1020,8 +1022,8 @@ unsigned int OnAssocReq(struct adapter *padapter, union recv_frame *precv_frame)
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
        struct wlan_bssid_ex *cur = &(pmlmeinfo->network);
        struct sta_priv *pstapriv = &padapter->stapriv;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       uint pkt_len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       uint pkt_len = precv_frame->len;
 #ifdef CONFIG_88EU_P2P
        struct wifidirect_info  *pwdinfo = &(padapter->wdinfo);
        u8 p2p_status_code = P2P_STATUS_SUCCESS;
@@ -1470,7 +1472,7 @@ OnAssocReqFail:
        return _FAIL;
 }
 
-unsigned int OnAssocRsp(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAssocRsp(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        uint i;
        int res;
@@ -1480,8 +1482,8 @@ unsigned int OnAssocRsp(struct adapter *padapter, union recv_frame *precv_frame)
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
        /* struct wlan_bssid_ex *cur_network = &(pmlmeinfo->network); */
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       uint pkt_len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       uint pkt_len = precv_frame->len;
 
        DBG_88E("%s\n", __func__);
 
@@ -1560,13 +1562,13 @@ report_assoc_result:
        return _SUCCESS;
 }
 
-unsigned int OnDeAuth(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnDeAuth(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        unsigned short  reason;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
 #ifdef CONFIG_88EU_P2P
        struct wifidirect_info *pwdinfo = &(padapter->wdinfo);
 #endif /* CONFIG_88EU_P2P */
@@ -1624,13 +1626,13 @@ unsigned int OnDeAuth(struct adapter *padapter, union recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-unsigned int OnDisassoc(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnDisassoc(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        u16 reason;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
 #ifdef CONFIG_88EU_P2P
        struct wifidirect_info *pwdinfo = &(padapter->wdinfo);
 #endif /* CONFIG_88EU_P2P */
@@ -1687,18 +1689,18 @@ unsigned int OnDisassoc(struct adapter *padapter, union recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-unsigned int OnAtim(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAtim(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        DBG_88E("%s\n", __func__);
        return _SUCCESS;
 }
 
-unsigned int on_action_spct(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int on_action_spct(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        unsigned int ret = _FAIL;
        struct sta_info *psta = NULL;
        struct sta_priv *pstapriv = &padapter->stapriv;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
        u8 *frame_body = (u8 *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr));
        u8 category;
        u8 action;
@@ -1731,17 +1733,17 @@ exit:
        return ret;
 }
 
-unsigned int OnAction_qos(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAction_qos(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        return _SUCCESS;
 }
 
-unsigned int OnAction_dls(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAction_dls(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        return _SUCCESS;
 }
 
-unsigned int OnAction_back(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAction_back(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        u8 *addr;
        struct sta_info *psta = NULL;
@@ -1751,7 +1753,7 @@ unsigned int OnAction_back(struct adapter *padapter, union recv_frame *precv_fra
        unsigned short  tid, status, reason_code = 0;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
        struct mlme_ext_info    *pmlmeinfo = &(pmlmeext->mlmext_info);
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
        struct sta_priv *pstapriv = &padapter->stapriv;
        /* check RA matches or not */
        if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe),
@@ -3857,13 +3859,13 @@ exit:
 
 #endif /* CONFIG_88EU_P2P */
 
-static s32 rtw_action_public_decache(union recv_frame *recv_frame, s32 token)
+static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
 {
-       struct adapter *adapter = recv_frame->u.hdr.adapter;
+       struct adapter *adapter = recv_frame->adapter;
        struct mlme_ext_priv *mlmeext = &(adapter->mlmeextpriv);
-       u8 *frame = recv_frame->u.hdr.rx_data;
-       u16 seq_ctrl = ((recv_frame->u.hdr.attrib.seq_num&0xffff) << 4) |
-               (recv_frame->u.hdr.attrib.frag_num & 0xf);
+       u8 *frame = recv_frame->rx_data;
+       u16 seq_ctrl = ((recv_frame->attrib.seq_num&0xffff) << 4) |
+               (recv_frame->attrib.frag_num & 0xf);
 
        if (GetRetry(frame)) {
                if (token >= 0) {
@@ -3889,14 +3891,14 @@ static s32 rtw_action_public_decache(union recv_frame *recv_frame, s32 token)
        return _SUCCESS;
 }
 
-static unsigned int on_action_public_p2p(union recv_frame *precv_frame)
+static unsigned int on_action_public_p2p(struct recv_frame *precv_frame)
 {
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
        u8 *frame_body;
        u8 dialogToken = 0;
 #ifdef CONFIG_88EU_P2P
-       struct adapter *padapter = precv_frame->u.hdr.adapter;
-       uint len = precv_frame->u.hdr.len;
+       struct adapter *padapter = precv_frame->adapter;
+       uint len = precv_frame->len;
        u8 *p2p_ie;
        u32     p2p_ielen;
        struct  wifidirect_info *pwdinfo = &(padapter->wdinfo);
@@ -4180,10 +4182,10 @@ static unsigned int on_action_public_p2p(union recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-static unsigned int on_action_public_vendor(union recv_frame *precv_frame)
+static unsigned int on_action_public_vendor(struct recv_frame *precv_frame)
 {
        unsigned int ret = _FAIL;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
        u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr);
 
        if (!memcmp(frame_body + 2, P2P_OUI, 4))
@@ -4192,10 +4194,10 @@ static unsigned int on_action_public_vendor(union recv_frame *precv_frame)
        return ret;
 }
 
-static unsigned int on_action_public_default(union recv_frame *precv_frame, u8 action)
+static unsigned int on_action_public_default(struct recv_frame *precv_frame, u8 action)
 {
        unsigned int ret = _FAIL;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
        u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr);
        u8 token;
 
@@ -4210,10 +4212,10 @@ exit:
        return ret;
 }
 
-unsigned int on_action_public(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int on_action_public(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        unsigned int ret = _FAIL;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
        u8 *frame_body = pframe + sizeof(struct rtw_ieee80211_hdr_3addr);
        u8 category, action;
 
@@ -4239,23 +4241,23 @@ exit:
        return ret;
 }
 
-unsigned int OnAction_ht(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAction_ht(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        return _SUCCESS;
 }
 
-unsigned int OnAction_wmm(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAction_wmm(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        return _SUCCESS;
 }
 
-unsigned int OnAction_p2p(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAction_p2p(struct adapter *padapter, struct recv_frame *precv_frame)
 {
 #ifdef CONFIG_88EU_P2P
        u8 *frame_body;
        u8 category, OUI_Subtype;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       uint len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       uint len = precv_frame->len;
        struct  wifidirect_info *pwdinfo = &(padapter->wdinfo);
 
 
@@ -4294,13 +4296,13 @@ unsigned int OnAction_p2p(struct adapter *padapter, union recv_frame *precv_fram
        return _SUCCESS;
 }
 
-unsigned int OnAction(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int OnAction(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        int i;
        unsigned char   category;
        struct action_handler *ptable;
        unsigned char   *frame_body;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
+       u8 *pframe = precv_frame->rx_data;
 
        frame_body = (unsigned char *)(pframe + sizeof(struct rtw_ieee80211_hdr_3addr));
 
@@ -4314,7 +4316,7 @@ unsigned int OnAction(struct adapter *padapter, union recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-unsigned int DoReserved(struct adapter *padapter, union recv_frame *precv_frame)
+unsigned int DoReserved(struct adapter *padapter, struct recv_frame *precv_frame)
 {
        return _SUCCESS;
 }
@@ -6530,14 +6532,14 @@ void site_survey(struct adapter *padapter)
 }
 
 /* collect bss info from Beacon and Probe request/response frames. */
-u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, struct wlan_bssid_ex *bssid)
+u8 collect_bss_info(struct adapter *padapter, struct recv_frame *precv_frame, struct wlan_bssid_ex *bssid)
 {
        int     i;
        u32     len;
        u8 *p;
        u16 val16, subtype;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       u32     packet_len = precv_frame->u.hdr.len;
+       u8 *pframe = precv_frame->rx_data;
+       u32     packet_len = precv_frame->len;
        u8 ie_offset;
        struct registry_priv    *pregistrypriv = &padapter->registrypriv;
        struct mlme_ext_priv    *pmlmeext = &padapter->mlmeextpriv;
@@ -6576,10 +6578,10 @@ u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame, str
        bssid->IELength = len;
        memcpy(bssid->IEs, (pframe + sizeof(struct rtw_ieee80211_hdr_3addr)), bssid->IELength);
 
-       /* get the signal strength */
-       bssid->Rssi = precv_frame->u.hdr.attrib.phy_info.recvpower; /*  in dBM.raw data */
-       bssid->PhyInfo.SignalQuality = precv_frame->u.hdr.attrib.phy_info.SignalQuality;/* in percentage */
-       bssid->PhyInfo.SignalStrength = precv_frame->u.hdr.attrib.phy_info.SignalStrength;/* in percentage */
+       /* get the signal strength in dBM.raw data */
+       bssid->Rssi = precv_frame->attrib.phy_info.recvpower;
+       bssid->PhyInfo.SignalQuality = precv_frame->attrib.phy_info.SignalQuality;/* in percentage */
+       bssid->PhyInfo.SignalStrength = precv_frame->attrib.phy_info.SignalStrength;/* in percentage */
        rtw_hal_get_def_var(padapter, HAL_DEF_CURRENT_ANTENNA,  &bssid->PhyInfo.Optimum_antenna);
 
        /*  checking SSID */
@@ -7032,7 +7034,8 @@ Following are the functions to report events
 
 *****************************************************************************/
 
-void report_survey_event(struct adapter *padapter, union recv_frame *precv_frame)
+void report_survey_event(struct adapter *padapter,
+                        struct recv_frame *precv_frame)
 {
        struct cmd_obj *pcmd_obj;
        u8 *pevtcmd;
@@ -7041,8 +7044,6 @@ void report_survey_event(struct adapter *padapter, union recv_frame *precv_frame
        struct C2HEvent_Header *pc2h_evt_hdr;
        struct mlme_ext_priv *pmlmeext;
        struct cmd_priv *pcmdpriv;
-       /* u8 *pframe = precv_frame->u.hdr.rx_data; */
-       /* uint len = precv_frame->u.hdr.len; */
 
        if (!padapter)
                return;
index 2291b10..3333ae9 100644 (file)
@@ -59,7 +59,7 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter)
 {
        int i;
 
-       union recv_frame *precvframe;
+       struct recv_frame *precvframe;
 
        int     res = _SUCCESS;
 
@@ -75,7 +75,7 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter)
 
        rtw_os_recv_resource_init(precvpriv, padapter);
 
-       precvpriv->pallocated_frame_buf = vzalloc(NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ);
+       precvpriv->pallocated_frame_buf = vzalloc(NR_RECVFRAME * sizeof(struct recv_frame) + RXFRAME_ALIGN_SZ);
 
        if (precvpriv->pallocated_frame_buf == NULL) {
                res = _FAIL;
@@ -84,19 +84,19 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter)
 
        precvpriv->precv_frame_buf = (u8 *)N_BYTE_ALIGMENT((size_t)(precvpriv->pallocated_frame_buf), RXFRAME_ALIGN_SZ);
 
-       precvframe = (union recv_frame *)precvpriv->precv_frame_buf;
+       precvframe = (struct recv_frame *)precvpriv->precv_frame_buf;
 
        for (i = 0; i < NR_RECVFRAME; i++) {
-               _rtw_init_listhead(&(precvframe->u.hdr.list));
+               _rtw_init_listhead(&(precvframe->list));
 
-               rtw_list_insert_tail(&(precvframe->u.hdr.list),
+               rtw_list_insert_tail(&(precvframe->list),
                                     &(precvpriv->free_recv_queue.queue));
 
                res = rtw_os_recv_resource_alloc(padapter, precvframe);
 
-               precvframe->u.hdr.len = 0;
+               precvframe->len = 0;
 
-               precvframe->u.hdr.adapter = padapter;
+               precvframe->adapter = padapter;
                precvframe++;
        }
        precvpriv->rx_pending_cnt = 1;
@@ -133,9 +133,9 @@ void _rtw_free_recv_priv (struct recv_priv *precvpriv)
 
 }
 
-union recv_frame *_rtw_alloc_recvframe (struct __queue *pfree_recv_queue)
+struct recv_frame *_rtw_alloc_recvframe (struct __queue *pfree_recv_queue)
 {
-       struct recv_frame_hdr *hdr;
+       struct recv_frame *hdr;
        struct list_head *plist, *phead;
        struct adapter *padapter;
        struct recv_priv *precvpriv;
@@ -147,7 +147,7 @@ union recv_frame *_rtw_alloc_recvframe (struct __queue *pfree_recv_queue)
 
                plist = phead->next;
 
-               hdr = container_of(plist, struct recv_frame_hdr, list);
+               hdr = container_of(plist, struct recv_frame, list);
 
                rtw_list_delete(&hdr->list);
                padapter = hdr->adapter;
@@ -159,12 +159,12 @@ union recv_frame *_rtw_alloc_recvframe (struct __queue *pfree_recv_queue)
        }
 
 
-       return (union recv_frame *)hdr;
+       return (struct recv_frame *)hdr;
 }
 
-union recv_frame *rtw_alloc_recvframe (struct __queue *pfree_recv_queue)
+struct recv_frame *rtw_alloc_recvframe(struct __queue *pfree_recv_queue)
 {
-       union recv_frame  *precvframe;
+       struct recv_frame  *precvframe;
 
        spin_lock_bh(&pfree_recv_queue->lock);
 
@@ -175,35 +175,36 @@ union recv_frame *rtw_alloc_recvframe (struct __queue *pfree_recv_queue)
        return precvframe;
 }
 
-void rtw_init_recvframe(union recv_frame *precvframe, struct recv_priv *precvpriv)
+void rtw_init_recvframe(struct recv_frame *precvframe, struct recv_priv *precvpriv)
 {
        /* Perry: This can be removed */
-       _rtw_init_listhead(&precvframe->u.hdr.list);
+       _rtw_init_listhead(&precvframe->list);
 
-       precvframe->u.hdr.len = 0;
+       precvframe->len = 0;
 }
 
-int rtw_free_recvframe(union recv_frame *precvframe, struct __queue *pfree_recv_queue)
+int rtw_free_recvframe(struct recv_frame *precvframe,
+                      struct __queue *pfree_recv_queue)
 {
        struct adapter *padapter;
        struct recv_priv *precvpriv;
 
        if (!precvframe)
                return _FAIL;
-       padapter = precvframe->u.hdr.adapter;
+       padapter = precvframe->adapter;
        precvpriv = &padapter->recvpriv;
-       if (precvframe->u.hdr.pkt) {
-               dev_kfree_skb_any(precvframe->u.hdr.pkt);/* free skb by driver */
-               precvframe->u.hdr.pkt = NULL;
+       if (precvframe->pkt) {
+               dev_kfree_skb_any(precvframe->pkt);/* free skb by driver */
+               precvframe->pkt = NULL;
        }
 
        spin_lock_bh(&pfree_recv_queue->lock);
 
-       rtw_list_delete(&(precvframe->u.hdr.list));
+       rtw_list_delete(&(precvframe->list));
 
-       precvframe->u.hdr.len = 0;
+       precvframe->len = 0;
 
-       rtw_list_insert_tail(&(precvframe->u.hdr.list), get_list_head(pfree_recv_queue));
+       rtw_list_insert_tail(&(precvframe->list), get_list_head(pfree_recv_queue));
 
        if (padapter != NULL) {
                if (pfree_recv_queue == &precvpriv->free_recv_queue)
@@ -216,14 +217,14 @@ int rtw_free_recvframe(union recv_frame *precvframe, struct __queue *pfree_recv_
        return _SUCCESS;
 }
 
-int _rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue)
+int _rtw_enqueue_recvframe(struct recv_frame *precvframe, struct __queue *queue)
 {
-       struct adapter *padapter = precvframe->u.hdr.adapter;
+       struct adapter *padapter = precvframe->adapter;
        struct recv_priv *precvpriv = &padapter->recvpriv;
 
 
-       rtw_list_delete(&(precvframe->u.hdr.list));
-       rtw_list_insert_tail(&(precvframe->u.hdr.list), get_list_head(queue));
+       rtw_list_delete(&(precvframe->list));
+       rtw_list_insert_tail(&(precvframe->list), get_list_head(queue));
 
        if (padapter != NULL) {
                if (queue == &precvpriv->free_recv_queue)
@@ -234,7 +235,7 @@ int _rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue)
        return _SUCCESS;
 }
 
-int rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue)
+int rtw_enqueue_recvframe(struct recv_frame *precvframe, struct __queue *queue)
 {
        int ret;
 
@@ -255,7 +256,7 @@ using spinlock to protect
 
 void rtw_free_recvframe_queue(struct __queue *pframequeue,  struct __queue *pfree_recv_queue)
 {
-       struct recv_frame_hdr *hdr;
+       struct recv_frame *hdr;
        struct list_head *plist, *phead;
 
        spin_lock(&pframequeue->lock);
@@ -264,11 +265,11 @@ void rtw_free_recvframe_queue(struct __queue *pframequeue,  struct __queue *pfre
        plist = phead->next;
 
        while (rtw_end_of_queue_search(phead, plist) == false) {
-               hdr = container_of(plist, struct recv_frame_hdr, list);
+               hdr = container_of(plist, struct recv_frame, list);
 
                plist = plist->next;
 
-               rtw_free_recvframe((union recv_frame *)hdr, pfree_recv_queue);
+               rtw_free_recvframe((struct recv_frame *)hdr, pfree_recv_queue);
        }
 
        spin_unlock(&pframequeue->lock);
@@ -278,7 +279,7 @@ void rtw_free_recvframe_queue(struct __queue *pframequeue,  struct __queue *pfre
 u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter)
 {
        u32 cnt = 0;
-       union recv_frame *pending_frame;
+       struct recv_frame *pending_frame;
        while ((pending_frame = rtw_alloc_recvframe(&adapter->recvpriv.uc_swdec_pending_queue))) {
                rtw_free_recvframe(pending_frame, &adapter->recvpriv.free_recv_queue);
                DBG_88E("%s: dequeue uc_swdec_pending_queue\n", __func__);
@@ -337,7 +338,8 @@ struct recv_buf *rtw_dequeue_recvbuf (struct __queue *queue)
        return precvbuf;
 }
 
-static int recvframe_chkmic(struct adapter *adapter,  union recv_frame *precvframe)
+static int recvframe_chkmic(struct adapter *adapter,
+                           struct recv_frame *precvframe)
 {
        int     i, res = _SUCCESS;
        u32     datalen;
@@ -346,7 +348,7 @@ static int recvframe_chkmic(struct adapter *adapter,  union recv_frame *precvfra
        u8      *pframe, *payload, *pframemic;
        u8      *mickey;
        struct  sta_info                *stainfo;
-       struct  rx_pkt_attrib   *prxattrib = &precvframe->u.hdr.attrib;
+       struct  rx_pkt_attrib   *prxattrib = &precvframe->attrib;
        struct  security_priv   *psecuritypriv = &adapter->securitypriv;
 
        struct mlme_ext_priv    *pmlmeext = &adapter->mlmeextpriv;
@@ -376,8 +378,10 @@ static int recvframe_chkmic(struct adapter *adapter,  union recv_frame *precvfra
                                RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("\n recvframe_chkmic: unicast key\n"));
                        }
 
-                       datalen = precvframe->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len-prxattrib->icv_len-8;/* icv_len included the mic code */
-                       pframe = precvframe->u.hdr.rx_data;
+                       /* icv_len included the mic code */
+                       datalen = precvframe->len-prxattrib->hdrlen -
+                                 prxattrib->iv_len-prxattrib->icv_len-8;
+                       pframe = precvframe->rx_data;
                        payload = pframe+prxattrib->hdrlen+prxattrib->iv_len;
 
                        RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("\n prxattrib->iv_len=%d prxattrib->icv_len=%d\n", prxattrib->iv_len, prxattrib->icv_len));
@@ -410,16 +414,30 @@ static int recvframe_chkmic(struct adapter *adapter,  union recv_frame *precvfra
                                         *(pframemic-10), *(pframemic-9)));
                                {
                                        uint i;
-                                       RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("\n ======demp packet (len=%d)======\n", precvframe->u.hdr.len));
-                                       for (i = 0; i < precvframe->u.hdr.len; i = i+8) {
-                                               RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x",
-                                                        *(precvframe->u.hdr.rx_data+i), *(precvframe->u.hdr.rx_data+i+1),
-                                                        *(precvframe->u.hdr.rx_data+i+2), *(precvframe->u.hdr.rx_data+i+3),
-                                                        *(precvframe->u.hdr.rx_data+i+4), *(precvframe->u.hdr.rx_data+i+5),
-                                                        *(precvframe->u.hdr.rx_data+i+6), *(precvframe->u.hdr.rx_data+i+7)));
+                                       RT_TRACE(_module_rtl871x_recv_c_, _drv_err_,
+                                                ("\n ======demp packet (len=%d)======\n",
+                                                precvframe->len));
+                                       for (i = 0; i < precvframe->len; i += 8) {
+                                               RT_TRACE(_module_rtl871x_recv_c_,
+                                                        _drv_err_,
+                                                        ("0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x",
+                                                        *(precvframe->rx_data+i),
+                                                        *(precvframe->rx_data+i+1),
+                                                        *(precvframe->rx_data+i+2),
+                                                        *(precvframe->rx_data+i+3),
+                                                        *(precvframe->rx_data+i+4),
+                                                        *(precvframe->rx_data+i+5),
+                                                        *(precvframe->rx_data+i+6),
+                                                        *(precvframe->rx_data+i+7)));
                                        }
-                                       RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("\n ====== demp packet end [len=%d]======\n", precvframe->u.hdr.len));
-                                       RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("\n hrdlen=%d,\n", prxattrib->hdrlen));
+                                       RT_TRACE(_module_rtl871x_recv_c_,
+                                                _drv_err_,
+                                                ("\n ====== demp packet end [len=%d]======\n",
+                                                precvframe->len));
+                                       RT_TRACE(_module_rtl871x_recv_c_,
+                                                _drv_err_,
+                                                ("\n hrdlen=%d,\n",
+                                                prxattrib->hdrlen));
                                }
 
                                RT_TRACE(_module_rtl871x_recv_c_, _drv_err_,
@@ -462,17 +480,18 @@ exit:
 }
 
 /* decrypt and set the ivlen, icvlen of the recv_frame */
-static union recv_frame *decryptor(struct adapter *padapter, union recv_frame *precv_frame)
+static struct recv_frame *decryptor(struct adapter *padapter,
+                                   struct recv_frame *precv_frame)
 {
-       struct rx_pkt_attrib *prxattrib = &precv_frame->u.hdr.attrib;
+       struct rx_pkt_attrib *prxattrib = &precv_frame->attrib;
        struct security_priv *psecuritypriv = &padapter->securitypriv;
-       union recv_frame *return_packet = precv_frame;
+       struct recv_frame *return_packet = precv_frame;
        u32      res = _SUCCESS;
 
        RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("prxstat->decrypted=%x prxattrib->encrypt=0x%03x\n", prxattrib->bdecrypted, prxattrib->encrypt));
 
        if (prxattrib->encrypt > 0) {
-               u8 *iv = precv_frame->u.hdr.rx_data+prxattrib->hdrlen;
+               u8 *iv = precv_frame->rx_data+prxattrib->hdrlen;
                prxattrib->key_index = (((iv[3])>>6)&0x3);
 
                if (prxattrib->key_index > WEP_KEYS) {
@@ -523,14 +542,15 @@ static union recv_frame *decryptor(struct adapter *padapter, union recv_frame *p
 }
 
 /* set the security information in the recv_frame */
-static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *precv_frame)
+static struct recv_frame *portctrl(struct adapter *adapter,
+                                  struct recv_frame *precv_frame)
 {
        u8   *psta_addr = NULL, *ptr;
        uint  auth_alg;
-       struct recv_frame_hdr *pfhdr;
+       struct recv_frame *pfhdr;
        struct sta_info *psta;
        struct sta_priv *pstapriv;
-       union recv_frame *prtnframe;
+       struct recv_frame *prtnframe;
        u16     ether_type = 0;
        u16  eapol_type = 0x888e;/* for Funia BD's WPA issue */
        struct rx_pkt_attrib *pattrib;
@@ -543,7 +563,7 @@ static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *pre
        auth_alg = adapter->securitypriv.dot11AuthAlgrthm;
 
        ptr = get_recvframe_data(precv_frame);
-       pfhdr = &precv_frame->u.hdr;
+       pfhdr = precv_frame;
        pattrib = &pfhdr->attrib;
        psta_addr = pattrib->ta;
 
@@ -575,7 +595,9 @@ static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *pre
                        /* allowed */
                        /* check decryption status, and decrypt the frame if needed */
                        RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("########portctrl:psta->ieee8021x_blocked==0\n"));
-                       RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("portctrl:precv_frame->hdr.attrib.privacy=%x\n", precv_frame->u.hdr.attrib.privacy));
+                       RT_TRACE(_module_rtl871x_recv_c_, _drv_info_,
+                                ("portctrl:precv_frame->hdr.attrib.privacy=%x\n",
+                                precv_frame->attrib.privacy));
 
                        if (pattrib->bdecrypted == 0)
                                RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("portctrl:prxstat->decrypted=%x\n", pattrib->bdecrypted));
@@ -599,12 +621,13 @@ static union recv_frame *portctrl(struct adapter *adapter, union recv_frame *pre
                return prtnframe;
 }
 
-static int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache)
+static int recv_decache(struct recv_frame *precv_frame, u8 bretry,
+                       struct stainfo_rxcache *prxcache)
 {
-       int tid = precv_frame->u.hdr.attrib.priority;
+       int tid = precv_frame->attrib.priority;
 
-       u16 seq_ctrl = ((precv_frame->u.hdr.attrib.seq_num&0xffff) << 4) |
-               (precv_frame->u.hdr.attrib.frag_num & 0xf);
+       u16 seq_ctrl = ((precv_frame->attrib.seq_num&0xffff) << 4) |
+               (precv_frame->attrib.frag_num & 0xf);
 
 
        if (tid > 15) {
@@ -627,13 +650,13 @@ static int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo
        return _SUCCESS;
 }
 
-void process_pwrbit_data(struct adapter *padapter, union recv_frame *precv_frame);
-void process_pwrbit_data(struct adapter *padapter, union recv_frame *precv_frame)
+void process_pwrbit_data(struct adapter *padapter,
+                        struct recv_frame *precv_frame)
 {
 #ifdef CONFIG_88EU_AP_MODE
        unsigned char pwrbit;
-       u8 *ptr = precv_frame->u.hdr.rx_data;
-       struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
+       u8 *ptr = precv_frame->rx_data;
+       struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
        struct sta_priv *pstapriv = &padapter->stapriv;
        struct sta_info *psta = NULL;
 
@@ -654,10 +677,11 @@ void process_pwrbit_data(struct adapter *padapter, union recv_frame *precv_frame
 #endif
 }
 
-static void process_wmmps_data(struct adapter *padapter, union recv_frame *precv_frame)
+static void process_wmmps_data(struct adapter *padapter,
+                              struct recv_frame *precv_frame)
 {
 #ifdef CONFIG_88EU_AP_MODE
-       struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
        struct sta_priv *pstapriv = &padapter->stapriv;
        struct sta_info *psta = NULL;
 
@@ -709,12 +733,14 @@ static void process_wmmps_data(struct adapter *padapter, union recv_frame *precv
 #endif
 }
 
-static void count_rx_stats(struct adapter *padapter, union recv_frame *prframe, struct sta_info *sta)
+static void count_rx_stats(struct adapter *padapter,
+                          struct recv_frame *prframe,
+                          struct sta_info *sta)
 {
        int     sz;
        struct sta_info         *psta = NULL;
        struct stainfo_stats    *pstats = NULL;
-       struct rx_pkt_attrib    *pattrib = &prframe->u.hdr.attrib;
+       struct rx_pkt_attrib    *pattrib = &prframe->attrib;
        struct recv_priv        *precvpriv = &padapter->recvpriv;
 
        sz = get_recvframe_len(prframe);
@@ -728,7 +754,7 @@ static void count_rx_stats(struct adapter *padapter, union recv_frame *prframe,
        if (sta)
                psta = sta;
        else
-               psta = prframe->u.hdr.psta;
+               psta = prframe->psta;
 
        if (psta) {
                pstats = &psta->sta_stats;
@@ -740,15 +766,16 @@ static void count_rx_stats(struct adapter *padapter, union recv_frame *prframe,
 
 int sta2sta_data_frame(
        struct adapter *adapter,
-       union recv_frame *precv_frame,
+       struct recv_frame *precv_frame,
        struct sta_info **psta
 );
 
-int sta2sta_data_frame(struct adapter *adapter, union recv_frame *precv_frame, struct sta_info **psta)
+int sta2sta_data_frame(struct adapter *adapter, struct recv_frame *precv_frame,
+                      struct sta_info **psta)
 {
-       u8 *ptr = precv_frame->u.hdr.rx_data;
+       u8 *ptr = precv_frame->rx_data;
        int ret = _SUCCESS;
-       struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
        struct  sta_priv *pstapriv = &adapter->stapriv;
        struct  mlme_priv *pmlmepriv = &adapter->mlmepriv;
        u8 *mybssid  = get_bssid(pmlmepriv);
@@ -836,11 +863,11 @@ exit:
 
 static int ap2sta_data_frame (
        struct adapter *adapter,
-       union recv_frame *precv_frame,
+       struct recv_frame *precv_frame,
        struct sta_info **psta)
 {
-       u8 *ptr = precv_frame->u.hdr.rx_data;
-       struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
+       u8 *ptr = precv_frame->rx_data;
+       struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
        int ret = _SUCCESS;
        struct  sta_priv *pstapriv = &adapter->stapriv;
        struct  mlme_priv *pmlmepriv = &adapter->mlmepriv;
@@ -945,13 +972,13 @@ exit:
 }
 
 static int sta2ap_data_frame(struct adapter *adapter,
-                            union recv_frame *precv_frame,
+                            struct recv_frame *precv_frame,
                             struct sta_info **psta)
 {
-       struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
        struct  sta_priv *pstapriv = &adapter->stapriv;
        struct  mlme_priv *pmlmepriv = &adapter->mlmepriv;
-       u8 *ptr = precv_frame->u.hdr.rx_data;
+       u8 *ptr = precv_frame->rx_data;
        unsigned char *mybssid  = get_bssid(pmlmepriv);
        int ret = _SUCCESS;
 
@@ -1005,13 +1032,12 @@ exit:
 }
 
 static int validate_recv_ctrl_frame(struct adapter *padapter,
-                                   union recv_frame *precv_frame)
+                                   struct recv_frame *precv_frame)
 {
 #ifdef CONFIG_88EU_AP_MODE
-       struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
        struct sta_priv *pstapriv = &padapter->stapriv;
-       u8 *pframe = precv_frame->u.hdr.rx_data;
-       /* uint len = precv_frame->u.hdr.len; */
+       u8 *pframe = precv_frame->rx_data;
 
        if (GetFrameType(pframe) != WIFI_CTRL_TYPE)
                return _FAIL;
@@ -1130,10 +1156,11 @@ static int validate_recv_ctrl_frame(struct adapter *padapter,
        return _FAIL;
 }
 
-union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union recv_frame *precv_frame);
+struct recv_frame *recvframe_chk_defrag(struct adapter *padapter,
+                                       struct recv_frame *precv_frame);
 
 static int validate_recv_mgnt_frame(struct adapter *padapter,
-                                   union recv_frame *precv_frame)
+                                   struct recv_frame *precv_frame)
 {
        struct sta_info *psta;
 
@@ -1146,19 +1173,20 @@ static int validate_recv_mgnt_frame(struct adapter *padapter,
        }
 
        /* for rx pkt statistics */
-       psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(precv_frame->u.hdr.rx_data));
+       psta = rtw_get_stainfo(&padapter->stapriv,
+                              GetAddr2Ptr(precv_frame->rx_data));
        if (psta) {
                psta->sta_stats.rx_mgnt_pkts++;
-               if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_BEACON) {
+               if (GetFrameSubType(precv_frame->rx_data) == WIFI_BEACON) {
                        psta->sta_stats.rx_beacon_pkts++;
-               } else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBEREQ) {
+               } else if (GetFrameSubType(precv_frame->rx_data) == WIFI_PROBEREQ) {
                        psta->sta_stats.rx_probereq_pkts++;
-               } else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBERSP) {
+               } else if (GetFrameSubType(precv_frame->rx_data) == WIFI_PROBERSP) {
                        if (!memcmp(padapter->eeprompriv.mac_addr,
-                                   GetAddr1Ptr(precv_frame->u.hdr.rx_data), ETH_ALEN))
+                                   GetAddr1Ptr(precv_frame->rx_data), ETH_ALEN))
                                psta->sta_stats.rx_probersp_pkts++;
-                       else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)) ||
-                                is_multicast_mac_addr(GetAddr1Ptr(precv_frame->u.hdr.rx_data)))
+                       else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->rx_data)) ||
+                                is_multicast_mac_addr(GetAddr1Ptr(precv_frame->rx_data)))
                                psta->sta_stats.rx_probersp_bm_pkts++;
                        else
                                psta->sta_stats.rx_probersp_uo_pkts++;
@@ -1171,13 +1199,13 @@ static int validate_recv_mgnt_frame(struct adapter *padapter,
 }
 
 static int validate_recv_data_frame(struct adapter *adapter,
-                                   union recv_frame *precv_frame)
+                                   struct recv_frame *precv_frame)
 {
        u8 bretry;
        u8 *psa, *pda, *pbssid;
        struct sta_info *psta = NULL;
-       u8 *ptr = precv_frame->u.hdr.rx_data;
-       struct rx_pkt_attrib    *pattrib = &precv_frame->u.hdr.attrib;
+       u8 *ptr = precv_frame->rx_data;
+       struct rx_pkt_attrib    *pattrib = &precv_frame->attrib;
        struct security_priv    *psecuritypriv = &adapter->securitypriv;
        int ret = _SUCCESS;
 
@@ -1238,7 +1266,7 @@ static int validate_recv_data_frame(struct adapter *adapter,
 
        /* psta->rssi = prxcmd->rssi; */
        /* psta->signal_quality = prxcmd->sq; */
-       precv_frame->u.hdr.psta = psta;
+       precv_frame->psta = psta;
 
        pattrib->amsdu = 0;
        pattrib->ack_policy = 0;
@@ -1259,7 +1287,7 @@ static int validate_recv_data_frame(struct adapter *adapter,
        if (pattrib->order)/* HT-CTRL 11n */
                pattrib->hdrlen += 4;
 
-       precv_frame->u.hdr.preorder_ctrl = &psta->recvreorder_ctrl[pattrib->priority];
+       precv_frame->preorder_ctrl = &psta->recvreorder_ctrl[pattrib->priority];
 
        /*  decache, drop duplicate recv packets */
        if (recv_decache(precv_frame, bretry, &psta->sta_recvpriv.rxcache) == _FAIL) {
@@ -1289,7 +1317,8 @@ exit:
        return ret;
 }
 
-static int validate_recv_frame(struct adapter *adapter, union recv_frame *precv_frame)
+static int validate_recv_frame(struct adapter *adapter,
+                              struct recv_frame *precv_frame)
 {
        /* shall check frame subtype, to / from ds, da, bssid */
 
@@ -1299,8 +1328,8 @@ static int validate_recv_frame(struct adapter *adapter, union recv_frame *precv_
        u8 subtype;
        int retval = _SUCCESS;
        u8 bDumpRxPkt;
-       struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
-       u8 *ptr = precv_frame->u.hdr.rx_data;
+       struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
+       u8 *ptr = precv_frame->rx_data;
        u8  ver = (unsigned char) (*ptr)&0x3;
        struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
 
@@ -1399,7 +1428,7 @@ exit:
 
 /* remove the wlanhdr and add the eth_hdr */
 
-static int wlanhdr_to_ethhdr (union recv_frame *precvframe)
+static int wlanhdr_to_ethhdr(struct recv_frame *precvframe)
 {
        int     rmv_len;
        u16     eth_type, len;
@@ -1409,11 +1438,11 @@ static int wlanhdr_to_ethhdr (union recv_frame *precvframe)
        struct ieee80211_snap_hdr       *psnap;
 
        int ret = _SUCCESS;
-       struct adapter                  *adapter = precvframe->u.hdr.adapter;
+       struct adapter          *adapter = precvframe->adapter;
        struct mlme_priv        *pmlmepriv = &adapter->mlmepriv;
 
        u8      *ptr = get_recvframe_data(precvframe); /*  point to frame_ctrl field */
-       struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &precvframe->attrib;
 
 
        if (pattrib->encrypt)
@@ -1434,7 +1463,7 @@ static int wlanhdr_to_ethhdr (union recv_frame *precvframe)
        }
 
        rmv_len = pattrib->hdrlen + pattrib->iv_len + (bsnaphdr ? SNAP_SIZE : 0);
-       len = precvframe->u.hdr.len - rmv_len;
+       len = precvframe->len - rmv_len;
 
        RT_TRACE(_module_rtl871x_recv_c_, _drv_info_,
                 ("\n===pattrib->hdrlen: %x,  pattrib->iv_len:%x===\n\n", pattrib->hdrlen,  pattrib->iv_len));
@@ -1469,13 +1498,14 @@ static int wlanhdr_to_ethhdr (union recv_frame *precvframe)
 }
 
 /* perform defrag */
-static union recv_frame *recvframe_defrag(struct adapter *adapter, struct __queue *defrag_q)
+static struct recv_frame *recvframe_defrag(struct adapter *adapter,
+                                          struct __queue *defrag_q)
 {
        struct list_head *plist, *phead;
        u8 wlanhdr_offset;
        u8      curfragnum;
-       struct recv_frame_hdr *pfhdr, *pnfhdr;
-       union recv_frame *prframe, *pnextrframe;
+       struct recv_frame *pfhdr, *pnfhdr;
+       struct recv_frame *prframe, *pnextrframe;
        struct __queue *pfree_recv_queue;
 
 
@@ -1484,9 +1514,9 @@ static union recv_frame *recvframe_defrag(struct adapter *adapter, struct __queu
 
        phead = get_list_head(defrag_q);
        plist = phead->next;
-       pfhdr = container_of(plist, struct recv_frame_hdr, list);
-       prframe = (union recv_frame *)pfhdr;
-       rtw_list_delete(&(prframe->u.hdr.list));
+       pfhdr = container_of(plist, struct recv_frame, list);
+       prframe = (struct recv_frame *)pfhdr;
+       rtw_list_delete(&(prframe->list));
 
        if (curfragnum != pfhdr->attrib.frag_num) {
                /* the first fragment number must be 0 */
@@ -1504,8 +1534,8 @@ static union recv_frame *recvframe_defrag(struct adapter *adapter, struct __queu
        plist = plist->next;
 
        while (rtw_end_of_queue_search(phead, plist) == false) {
-               pnfhdr = container_of(plist, struct recv_frame_hdr , list);
-               pnextrframe = (union recv_frame *)pnfhdr;
+               pnfhdr = container_of(plist, struct recv_frame, list);
+               pnextrframe = (struct recv_frame *)pnfhdr;
 
                /* check the fragment sequence  (2nd ~n fragment frame) */
 
@@ -1548,22 +1578,23 @@ static union recv_frame *recvframe_defrag(struct adapter *adapter, struct __queu
 }
 
 /* check if need to defrag, if needed queue the frame to defrag_q */
-union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union recv_frame *precv_frame)
+struct recv_frame *recvframe_chk_defrag(struct adapter *padapter,
+                                       struct recv_frame *precv_frame)
 {
        u8      ismfrag;
        u8      fragnum;
        u8      *psta_addr;
-       struct recv_frame_hdr *pfhdr;
+       struct recv_frame *pfhdr;
        struct sta_info *psta;
        struct sta_priv *pstapriv;
        struct list_head *phead;
-       union recv_frame *prtnframe = NULL;
+       struct recv_frame *prtnframe = NULL;
        struct __queue *pfree_recv_queue, *pdefrag_q;
 
 
        pstapriv = &padapter->stapriv;
 
-       pfhdr = &precv_frame->u.hdr;
+       pfhdr = precv_frame;
 
        pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
 
@@ -1635,7 +1666,7 @@ union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union recv_fram
                }
        }
 
-       if ((prtnframe != NULL) && (prtnframe->u.hdr.attrib.privacy)) {
+       if ((prtnframe != NULL) && (prtnframe->attrib.privacy)) {
                /* after defrag we must check tkip mic code */
                if (recvframe_chkmic(padapter,  prtnframe) == _FAIL) {
                        RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("recvframe_chkmic(padapter,  prtnframe)==_FAIL\n"));
@@ -1648,7 +1679,7 @@ union recv_frame *recvframe_chk_defrag(struct adapter *padapter, union recv_fram
        return prtnframe;
 }
 
-static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
+static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe)
 {
        int     a_len, padding_len;
        u16     eth_type, nSubframe_Length;
@@ -1662,16 +1693,16 @@ static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
        int     ret = _SUCCESS;
        nr_subframes = 0;
 
-       pattrib = &prframe->u.hdr.attrib;
+       pattrib = &prframe->attrib;
 
-       recvframe_pull(prframe, prframe->u.hdr.attrib.hdrlen);
+       recvframe_pull(prframe, prframe->attrib.hdrlen);
 
-       if (prframe->u.hdr.attrib.iv_len > 0)
-               recvframe_pull(prframe, prframe->u.hdr.attrib.iv_len);
+       if (prframe->attrib.iv_len > 0)
+               recvframe_pull(prframe, prframe->attrib.iv_len);
 
-       a_len = prframe->u.hdr.len;
+       a_len = prframe->len;
 
-       pdata = prframe->u.hdr.rx_data;
+       pdata = prframe->rx_data;
 
        while (a_len > ETH_HLEN) {
                /* Offset 12 denote 2 mac address */
@@ -1693,7 +1724,7 @@ static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
                        data_ptr = (u8 *)skb_put(sub_skb, nSubframe_Length);
                        memcpy(data_ptr, pdata, nSubframe_Length);
                } else {
-                       sub_skb = skb_clone(prframe->u.hdr.pkt, GFP_ATOMIC);
+                       sub_skb = skb_clone(prframe->pkt, GFP_ATOMIC);
                        if (sub_skb) {
                                sub_skb->data = pdata;
                                sub_skb->len = nSubframe_Length;
@@ -1760,7 +1791,7 @@ static int amsdu_to_msdu(struct adapter *padapter, union recv_frame *prframe)
 
 exit:
 
-       prframe->u.hdr.len = 0;
+       prframe->len = 0;
        rtw_free_recvframe(prframe, pfree_recv_queue);/* free this recv_frame */
 
        return ret;
@@ -1796,20 +1827,20 @@ static int check_indicate_seq(struct recv_reorder_ctrl *preorder_ctrl, u16 seq_n
        return true;
 }
 
-int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union recv_frame *prframe);
-int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union recv_frame *prframe)
+int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl,
+                             struct recv_frame *prframe)
 {
-       struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &prframe->attrib;
        struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
        struct list_head *phead, *plist;
-       struct recv_frame_hdr *hdr;
+       struct recv_frame *hdr;
        struct rx_pkt_attrib *pnextattrib;
 
        phead = get_list_head(ppending_recvframe_queue);
        plist = phead->next;
 
        while (rtw_end_of_queue_search(phead, plist) == false) {
-               hdr = container_of(plist, struct recv_frame_hdr, list);
+               hdr = container_of(plist, struct recv_frame, list);
                pnextattrib = &hdr->attrib;
 
                if (SN_LESS(pnextattrib->seq_num, pattrib->seq_num))
@@ -1820,17 +1851,17 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec
                        break;
        }
 
-       rtw_list_delete(&(prframe->u.hdr.list));
+       rtw_list_delete(&(prframe->list));
 
-       rtw_list_insert_tail(&(prframe->u.hdr.list), plist);
+       rtw_list_insert_tail(&(prframe->list), plist);
        return true;
 }
 
 static int recv_indicatepkts_in_order(struct adapter *padapter, struct recv_reorder_ctrl *preorder_ctrl, int bforced)
 {
        struct list_head *phead, *plist;
-       union recv_frame *prframe;
-       struct recv_frame_hdr *prhdr;
+       struct recv_frame *prframe;
+       struct recv_frame *prhdr;
        struct rx_pkt_attrib *pattrib;
        int bPktInBuf = false;
        struct recv_priv *precvpriv = &padapter->recvpriv;
@@ -1844,7 +1875,7 @@ static int recv_indicatepkts_in_order(struct adapter *padapter, struct recv_reor
                if (rtw_is_list_empty(phead))
                        return true;
 
-               prhdr = container_of(plist, struct recv_frame_hdr, list);
+               prhdr = container_of(plist, struct recv_frame, list);
                pattrib = &prhdr->attrib;
                preorder_ctrl->indicate_seq = pattrib->seq_num;
        }
@@ -1852,16 +1883,16 @@ static int recv_indicatepkts_in_order(struct adapter *padapter, struct recv_reor
        /*  Prepare indication list and indication. */
        /*  Check if there is any packet need indicate. */
        while (!rtw_is_list_empty(phead)) {
-               prhdr = container_of(plist, struct recv_frame_hdr, list);
-               prframe = (union recv_frame *)prhdr;
-               pattrib = &prframe->u.hdr.attrib;
+               prhdr = container_of(plist, struct recv_frame, list);
+               prframe = (struct recv_frame *)prhdr;
+               pattrib = &prframe->attrib;
 
                if (!SN_LESS(preorder_ctrl->indicate_seq, pattrib->seq_num)) {
                        RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_,
                                 ("recv_indicatepkts_in_order: indicate=%d seq=%d amsdu=%d\n",
                                  preorder_ctrl->indicate_seq, pattrib->seq_num, pattrib->amsdu));
                        plist = plist->next;
-                       rtw_list_delete(&(prframe->u.hdr.list));
+                       rtw_list_delete(&(prframe->list));
 
                        if (SN_EQUAL(preorder_ctrl->indicate_seq, pattrib->seq_num))
                                preorder_ctrl->indicate_seq = (preorder_ctrl->indicate_seq + 1) & 0xFFF;
@@ -1890,11 +1921,12 @@ static int recv_indicatepkts_in_order(struct adapter *padapter, struct recv_reor
        return bPktInBuf;
 }
 
-static int recv_indicatepkt_reorder(struct adapter *padapter, union recv_frame *prframe)
+static int recv_indicatepkt_reorder(struct adapter *padapter,
+                                   struct recv_frame *prframe)
 {
        int retval = _SUCCESS;
-       struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
-       struct recv_reorder_ctrl *preorder_ctrl = prframe->u.hdr.preorder_ctrl;
+       struct rx_pkt_attrib *pattrib = &prframe->attrib;
+       struct recv_reorder_ctrl *preorder_ctrl = prframe->preorder_ctrl;
        struct __queue *ppending_recvframe_queue = &preorder_ctrl->pending_recvframe_queue;
 
        if (!pattrib->amsdu) {
@@ -1998,17 +2030,14 @@ void rtw_reordering_ctrl_timeout_handler(void *pcontext)
        spin_unlock_bh(&ppending_recvframe_queue->lock);
 }
 
-static int process_recv_indicatepkts(struct adapter *padapter, union recv_frame *prframe)
+static int process_recv_indicatepkts(struct adapter *padapter,
+                                    struct recv_frame *prframe)
 {
        int retval = _SUCCESS;
-       /* struct recv_priv *precvpriv = &padapter->recvpriv; */
-       /* struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib; */
        struct mlme_priv        *pmlmepriv = &padapter->mlmepriv;
        struct ht_priv  *phtpriv = &pmlmepriv->htpriv;
 
        if (phtpriv->ht_option) {  /* B/G/N Mode */
-               /* prframe->u.hdr.preorder_ctrl = &precvpriv->recvreorder_ctrl[pattrib->priority]; */
-
                if (recv_indicatepkt_reorder(padapter, prframe) != _SUCCESS) {
                        /*  including perform A-MPDU Rx Ordering Buffer Control */
                        if ((!padapter->bDriverStopped) &&
@@ -2041,10 +2070,11 @@ static int process_recv_indicatepkts(struct adapter *padapter, union recv_frame
        return retval;
 }
 
-static int recv_func_prehandle(struct adapter *padapter, union recv_frame *rframe)
+static int recv_func_prehandle(struct adapter *padapter,
+                              struct recv_frame *rframe)
 {
        int ret = _SUCCESS;
-       struct rx_pkt_attrib *pattrib = &rframe->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &rframe->attrib;
        struct __queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
        struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
 
@@ -2076,10 +2106,11 @@ exit:
        return ret;
 }
 
-static int recv_func_posthandle(struct adapter *padapter, union recv_frame *prframe)
+static int recv_func_posthandle(struct adapter *padapter,
+                               struct recv_frame *prframe)
 {
        int ret = _SUCCESS;
-       union recv_frame *orig_prframe = prframe;
+       struct recv_frame *orig_prframe = prframe;
        struct recv_priv *precvpriv = &padapter->recvpriv;
        struct __queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
 
@@ -2121,16 +2152,16 @@ _recv_data_drop:
        return ret;
 }
 
-static int recv_func(struct adapter *padapter, union recv_frame *rframe)
+static int recv_func(struct adapter *padapter, struct recv_frame *rframe)
 {
        int ret;
-       struct rx_pkt_attrib *prxattrib = &rframe->u.hdr.attrib;
+       struct rx_pkt_attrib *prxattrib = &rframe->attrib;
        struct security_priv *psecuritypriv = &padapter->securitypriv;
        struct mlme_priv *mlmepriv = &padapter->mlmepriv;
 
        /* check if need to handle uc_swdec_pending_queue*/
        if (check_fwstate(mlmepriv, WIFI_STATION_STATE) && psecuritypriv->busetkipkey) {
-               union recv_frame *pending_frame;
+               struct recv_frame *pending_frame;
 
                while ((pending_frame = rtw_alloc_recvframe(&padapter->recvpriv.uc_swdec_pending_queue))) {
                        if (recv_func_posthandle(padapter, pending_frame) == _SUCCESS)
@@ -2159,14 +2190,14 @@ exit:
        return ret;
 }
 
-s32 rtw_recv_entry(union recv_frame *precvframe)
+s32 rtw_recv_entry(struct recv_frame *precvframe)
 {
        struct adapter *padapter;
        struct recv_priv *precvpriv;
        s32 ret = _SUCCESS;
 
 
-       padapter = precvframe->u.hdr.adapter;
+       padapter = precvframe->adapter;
 
        precvpriv = &padapter->recvpriv;
 
index c3ce569..c4b16ea 100644 (file)
@@ -205,11 +205,11 @@ void rtw_wep_decrypt(struct adapter  *padapter, u8 *precvframe)
        u32     keylength;
        u8      *pframe, *payload, *iv, wepkey[16];
        u8       keyindex;
-       struct  rx_pkt_attrib    *prxattrib = &(((union recv_frame *)precvframe)->u.hdr.attrib);
+       struct  rx_pkt_attrib    *prxattrib = &(((struct recv_frame *)precvframe)->attrib);
        struct  security_priv   *psecuritypriv = &padapter->securitypriv;
 
 
-       pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
+       pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data;
 
        /* start to decrypt recvframe */
        if ((prxattrib->encrypt == _WEP40_) || (prxattrib->encrypt == _WEP104_)) {
@@ -218,7 +218,7 @@ void rtw_wep_decrypt(struct adapter  *padapter, u8 *precvframe)
                keylength = psecuritypriv->dot11DefKeylen[keyindex];
                memcpy(&wepkey[0], iv, 3);
                memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0], keylength);
-               length = ((union recv_frame *)precvframe)->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len;
+               length = ((struct recv_frame *)precvframe)->len-prxattrib->hdrlen-prxattrib->iv_len;
 
                payload = pframe+prxattrib->iv_len+prxattrib->hdrlen;
 
@@ -653,12 +653,12 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
        u8      *pframe, *payload, *iv, *prwskey;
        union pn48 dot11txpn;
        struct  sta_info                *stainfo;
-       struct  rx_pkt_attrib    *prxattrib = &((union recv_frame *)precvframe)->u.hdr.attrib;
+       struct  rx_pkt_attrib    *prxattrib = &((struct recv_frame *)precvframe)->attrib;
        struct  security_priv   *psecuritypriv = &padapter->securitypriv;
        u32             res = _SUCCESS;
 
 
-       pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
+       pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data;
 
        /* 4 start to decrypt recvframe */
        if (prxattrib->encrypt == _TKIP_) {
@@ -678,7 +678,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
 
                        iv = pframe+prxattrib->hdrlen;
                        payload = pframe+prxattrib->iv_len+prxattrib->hdrlen;
-                       length = ((union recv_frame *)precvframe)->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len;
+                       length = ((struct recv_frame *)precvframe)->len-prxattrib->hdrlen-prxattrib->iv_len;
 
                        GET_TKIP_PN(iv, dot11txpn);
 
@@ -1455,10 +1455,10 @@ u32     rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
        int             length;
        u8      *pframe, *prwskey;      /*  *payload,*iv */
        struct  sta_info                *stainfo;
-       struct  rx_pkt_attrib    *prxattrib = &((union recv_frame *)precvframe)->u.hdr.attrib;
+       struct  rx_pkt_attrib    *prxattrib = &((struct recv_frame *)precvframe)->attrib;
        struct  security_priv   *psecuritypriv = &padapter->securitypriv;
        u32     res = _SUCCESS;
-       pframe = (unsigned char *)((union recv_frame *)precvframe)->u.hdr.rx_data;
+       pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data;
        /* 4 start to encrypt each fragment */
        if ((prxattrib->encrypt == _AES_)) {
                stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
@@ -1482,7 +1482,7 @@ u32       rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
                        } else {
                                prwskey = &stainfo->dot118021x_UncstKey.skey[0];
                        }
-                       length = ((union recv_frame *)precvframe)->u.hdr.len-prxattrib->hdrlen-prxattrib->iv_len;
+                       length = ((struct recv_frame *)precvframe)->len-prxattrib->hdrlen-prxattrib->iv_len;
                        res = aes_decipher(prwskey, prxattrib->hdrlen, pframe, length);
                } else {
                        RT_TRACE(_module_rtl871x_security_c_, _drv_err_, ("rtw_aes_encrypt: stainfo==NULL!!!\n"));
index a59f062..2d0b606 100644 (file)
@@ -346,8 +346,8 @@ u32 rtw_free_stainfo(struct adapter *padapter , struct sta_info *psta)
        /* for A-MPDU Rx reordering buffer control, cancel reordering_ctrl_timer */
        for (i = 0; i < 16; i++) {
                struct list_head *phead, *plist;
-               struct recv_frame_hdr *prhdr;
-               union recv_frame *prframe;
+               struct recv_frame *prhdr;
+               struct recv_frame *prframe;
                struct __queue *ppending_recvframe_queue;
                struct __queue *pfree_recv_queue = &padapter->recvpriv.free_recv_queue;
 
@@ -363,12 +363,12 @@ u32       rtw_free_stainfo(struct adapter *padapter , struct sta_info *psta)
                plist = phead->next;
 
                while (!rtw_is_list_empty(phead)) {
-                       prhdr = container_of(plist, struct recv_frame_hdr, list);
-                       prframe = (union recv_frame *)prhdr;
+                       prhdr = container_of(plist, struct recv_frame, list);
+                       prframe = (struct recv_frame *)prhdr;
 
                        plist = plist->next;
 
-                       rtw_list_delete(&(prframe->u.hdr.list));
+                       rtw_list_delete(&(prframe->list));
 
                        rtw_free_recvframe(prframe, pfree_recv_queue);
                }
index 4e36306..f29bb79 100644 (file)
@@ -23,9 +23,9 @@
 #include <drv_types.h>
 #include <rtl8188e_hal.h>
 
-static void process_rssi(struct adapter *padapter, union recv_frame *prframe)
+static void process_rssi(struct adapter *padapter, struct recv_frame *prframe)
 {
-       struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
+       struct rx_pkt_attrib *pattrib = &prframe->attrib;
        struct signal_stat *signal_stat = &padapter->recvpriv.signal_strength_data;
 
        if (signal_stat->update_req) {
@@ -39,7 +39,8 @@ static void process_rssi(struct adapter *padapter, union recv_frame *prframe)
        signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
 } /*  Process_UI_RSSI_8192C */
 
-static void process_link_qual(struct adapter *padapter, union recv_frame *prframe)
+static void process_link_qual(struct adapter *padapter,
+                             struct recv_frame *prframe)
 {
        struct rx_pkt_attrib *pattrib;
        struct signal_stat *signal_stat;
@@ -47,7 +48,7 @@ static void process_link_qual(struct adapter *padapter, union recv_frame *prfram
        if (prframe == NULL || padapter == NULL)
                return;
 
-       pattrib = &prframe->u.hdr.attrib;
+       pattrib = &prframe->attrib;
        signal_stat = &padapter->recvpriv.signal_qual_data;
 
        if (signal_stat->update_req) {
@@ -63,7 +64,7 @@ static void process_link_qual(struct adapter *padapter, union recv_frame *prfram
 
 void rtl8188e_process_phy_info(struct adapter *padapter, void *prframe)
 {
-       union recv_frame *precvframe = (union recv_frame *)prframe;
+       struct recv_frame *precvframe = (struct recv_frame *)prframe;
 
        /*  Check RSSI */
        process_rssi(padapter, precvframe);
@@ -71,7 +72,8 @@ void rtl8188e_process_phy_info(struct adapter *padapter, void *prframe)
        process_link_qual(padapter,  precvframe);
 }
 
-void update_recvframe_attrib_88e(union recv_frame *precvframe, struct recv_stat *prxstat)
+void update_recvframe_attrib_88e(struct recv_frame *precvframe,
+                                struct recv_stat *prxstat)
 {
        struct rx_pkt_attrib    *pattrib;
        struct recv_stat        report;
@@ -83,7 +85,7 @@ void update_recvframe_attrib_88e(union recv_frame *precvframe, struct recv_stat
        report.rxdw4 = prxstat->rxdw4;
        report.rxdw5 = prxstat->rxdw5;
 
-       pattrib = &precvframe->u.hdr.attrib;
+       pattrib = &precvframe->attrib;
        _rtw_memset(pattrib, 0, sizeof(struct rx_pkt_attrib));
 
        pattrib->crc_err = (u8)((le32_to_cpu(report.rxdw0) >> 14) & 0x1);/* u8)prxreport->crc32; */
@@ -136,12 +138,13 @@ void update_recvframe_attrib_88e(union recv_frame *precvframe, struct recv_stat
 /*
  * Notice:
  *     Before calling this function,
- *     precvframe->u.hdr.rx_data should be ready!
+ *     precvframe->rx_data should be ready!
  */
-void update_recvframe_phyinfo_88e(union recv_frame *precvframe, struct phy_stat *pphy_status)
+void update_recvframe_phyinfo_88e(struct recv_frame *precvframe,
+                                 struct phy_stat *pphy_status)
 {
-       struct adapter *padapter = precvframe->u.hdr.adapter;
-       struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib;
+       struct adapter *padapter = precvframe->adapter;
+       struct rx_pkt_attrib *pattrib = &precvframe->attrib;
        struct hal_data_8188e *pHalData = GET_HAL_DATA(padapter);
        struct odm_phy_status_info *pPHYInfo  = (struct odm_phy_status_info *)(&pattrib->phy_info);
        u8 *wlanhdr;
@@ -185,17 +188,17 @@ void update_recvframe_phyinfo_88e(union recv_frame *precvframe, struct phy_stat
 
        ODM_PhyStatusQuery(&pHalData->odmpriv, pPHYInfo, (u8 *)pphy_status, &(pkt_info));
 
-       precvframe->u.hdr.psta = NULL;
+       precvframe->psta = NULL;
        if (pkt_info.bPacketMatchBSSID &&
            (check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE))) {
                if (psta) {
-                       precvframe->u.hdr.psta = psta;
+                       precvframe->psta = psta;
                        rtl8188e_process_phy_info(padapter, precvframe);
                }
        } else if (pkt_info.bPacketToSelf || pkt_info.bPacketBeacon) {
                if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) {
                        if (psta)
-                               precvframe->u.hdr.psta = psta;
+                               precvframe->psta = psta;
                }
                rtl8188e_process_phy_info(padapter, precvframe);
        }
index 74ee2e6..1bfe497 100644 (file)
@@ -306,7 +306,7 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
        struct recv_stat        *prxstat;
        struct phy_stat *pphy_status = NULL;
        struct sk_buff *pkt_copy = NULL;
-       union recv_frame        *precvframe = NULL;
+       struct recv_frame       *precvframe = NULL;
        struct rx_pkt_attrib    *pattrib = NULL;
        struct hal_data_8188e   *haldata = GET_HAL_DATA(adapt);
        struct recv_priv        *precvpriv = &adapt->recvpriv;
@@ -332,13 +332,13 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
                        goto _exit_recvbuf2recvframe;
                }
 
-               _rtw_init_listhead(&precvframe->u.hdr.list);
-               precvframe->u.hdr.precvbuf = NULL;      /* can't access the precvbuf for new arch. */
-               precvframe->u.hdr.len = 0;
+               _rtw_init_listhead(&precvframe->list);
+               precvframe->precvbuf = NULL;    /* can't access the precvbuf for new arch. */
+               precvframe->len = 0;
 
                update_recvframe_attrib_88e(precvframe, prxstat);
 
-               pattrib = &precvframe->u.hdr.attrib;
+               pattrib = &precvframe->attrib;
 
                if ((pattrib->crc_err) || (pattrib->icv_err)) {
                        DBG_88E("%s: RX Warning! crc_err=%d icv_err=%d, skip!\n", __func__, pattrib->crc_err, pattrib->icv_err);
@@ -385,26 +385,26 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
                pkt_copy = netdev_alloc_skb(adapt->pnetdev, alloc_sz);
                if (pkt_copy) {
                        pkt_copy->dev = adapt->pnetdev;
-                       precvframe->u.hdr.pkt = pkt_copy;
-                       precvframe->u.hdr.rx_head = pkt_copy->data;
-                       precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz;
+                       precvframe->pkt = pkt_copy;
+                       precvframe->rx_head = pkt_copy->data;
+                       precvframe->rx_end = pkt_copy->data + alloc_sz;
                        skb_reserve(pkt_copy, 8 - ((size_t)(pkt_copy->data) & 7));/* force pkt_copy->data at 8-byte alignment address */
                        skb_reserve(pkt_copy, shift_sz);/* force ip_hdr at 8-byte alignment address according to shift_sz. */
                        memcpy(pkt_copy->data, (pbuf + pattrib->drvinfo_sz + RXDESC_SIZE), skb_len);
-                       precvframe->u.hdr.rx_tail = pkt_copy->data;
-                       precvframe->u.hdr.rx_data = pkt_copy->data;
+                       precvframe->rx_tail = pkt_copy->data;
+                       precvframe->rx_data = pkt_copy->data;
                } else {
                        if ((pattrib->mfrag == 1) && (pattrib->frag_num == 0)) {
                                DBG_88E("recvbuf2recvframe: alloc_skb fail , drop frag frame\n");
                                rtw_free_recvframe(precvframe, pfree_recv_queue);
                                goto _exit_recvbuf2recvframe;
                        }
-                       precvframe->u.hdr.pkt = skb_clone(pskb, GFP_ATOMIC);
-                       if (precvframe->u.hdr.pkt) {
-                               precvframe->u.hdr.rx_tail = pbuf + pattrib->drvinfo_sz + RXDESC_SIZE;
-                               precvframe->u.hdr.rx_head = precvframe->u.hdr.rx_tail;
-                               precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail;
-                               precvframe->u.hdr.rx_end =  pbuf + pattrib->drvinfo_sz + RXDESC_SIZE + alloc_sz;
+                       precvframe->pkt = skb_clone(pskb, GFP_ATOMIC);
+                       if (precvframe->pkt) {
+                               precvframe->rx_tail = pbuf + pattrib->drvinfo_sz + RXDESC_SIZE;
+                               precvframe->rx_head = precvframe->rx_tail;
+                               precvframe->rx_data = precvframe->rx_tail;
+                               precvframe->rx_end =  pbuf + pattrib->drvinfo_sz + RXDESC_SIZE + alloc_sz;
                        } else {
                                DBG_88E("recvbuf2recvframe: skb_clone fail\n");
                                rtw_free_recvframe(precvframe, pfree_recv_queue);
@@ -437,17 +437,17 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
                        /* enqueue recvframe to txrtp queue */
                        if (pattrib->pkt_rpt_type == TX_REPORT1) {
                                /* CCX-TXRPT ack for xmit mgmt frames. */
-                               handle_txrpt_ccx_88e(adapt, precvframe->u.hdr.rx_data);
+                               handle_txrpt_ccx_88e(adapt, precvframe->rx_data);
                        } else if (pattrib->pkt_rpt_type == TX_REPORT2) {
                                ODM_RA_TxRPT2Handle_8188E(
                                                        &haldata->odmpriv,
-                                                       precvframe->u.hdr.rx_data,
+                                                       precvframe->rx_data,
                                                        pattrib->pkt_len,
                                                        pattrib->MacIDValidEntry[0],
                                                        pattrib->MacIDValidEntry[1]
                                                        );
                        } else if (pattrib->pkt_rpt_type == HIS_REPORT) {
-                               interrupt_handler_8188eu(adapt, pattrib->pkt_len, precvframe->u.hdr.rx_data);
+                               interrupt_handler_8188eu(adapt, pattrib->pkt_len, precvframe->rx_data);
                        }
                        rtw_free_recvframe(precvframe, pfree_recv_queue);
                }
index 6912380..d76cc2d 100644 (file)
@@ -28,18 +28,20 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter);
 void _rtw_free_recv_priv(struct recv_priv *precvpriv);
 
 
-s32  rtw_recv_entry(union recv_frame *precv_frame);
-int rtw_recv_indicatepkt(struct adapter *adapter, union recv_frame *recv_frame);
+s32  rtw_recv_entry(struct recv_frame *precv_frame);
+int rtw_recv_indicatepkt(struct adapter *adapter,
+                        struct recv_frame *recv_frame);
 void rtw_recv_returnpacket(struct  net_device *cnxt, struct sk_buff *retpkt);
 
-void rtw_hostapd_mlme_rx(struct adapter *padapter, union recv_frame *recv_fr);
+void rtw_hostapd_mlme_rx(struct adapter *padapter, struct recv_frame *recv_fr);
 void rtw_handle_tkip_mic_err(struct adapter *padapter, u8 bgroup);
 
 int rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter);
 void rtw_free_recv_priv(struct recv_priv *precvpriv);
 
 int rtw_os_recv_resource_init(struct recv_priv *recvpr, struct adapter *adapt);
-int rtw_os_recv_resource_alloc(struct adapter *adapt, union recv_frame *recvfr);
+int rtw_os_recv_resource_alloc(struct adapter *adapt,
+                              struct recv_frame *recvfr);
 void rtw_os_recv_resource_free(struct recv_priv *precvpriv);
 
 int rtw_os_recvbuf_resource_alloc(struct adapter *adapt, struct recv_buf *buf);
index a8facf0..07e5f52 100644 (file)
@@ -61,9 +61,10 @@ s32 rtl8188eu_init_recv_priv(struct adapter *padapter);
 void rtl8188eu_free_recv_priv(struct adapter *padapter);
 void rtl8188eu_recv_hdl(struct adapter *padapter, struct recv_buf *precvbuf);
 void rtl8188eu_recv_tasklet(void *priv);
-void rtl8188e_query_rx_phy_status(union recv_frame *fr, struct phy_stat *phy);
+void rtl8188e_query_rx_phy_status(struct recv_frame *fr, struct phy_stat *phy);
 void rtl8188e_process_phy_info(struct adapter *padapter, void *prframe);
-void update_recvframe_phyinfo_88e(union recv_frame *fra, struct phy_stat *phy);
-void update_recvframe_attrib_88e(union recv_frame *fra, struct recv_stat *stat);
+void update_recvframe_phyinfo_88e(struct recv_frame *fra, struct phy_stat *phy);
+void update_recvframe_attrib_88e(struct recv_frame *fra,
+                                struct recv_stat *stat);
 
 #endif
index f0c982d..09e2a39 100644 (file)
@@ -236,13 +236,13 @@ enum SCAN_STATE {
 struct mlme_handler {
        unsigned int   num;
        char *str;
-       unsigned int (*func)(struct adapter *adapt, union recv_frame *frame);
+       unsigned int (*func)(struct adapter *adapt, struct recv_frame *frame);
 };
 
 struct action_handler {
        unsigned int   num;
        char *str;
-       unsigned int (*func)(struct adapter *adapt, union recv_frame *frame);
+       unsigned int (*func)(struct adapter *adapt, struct recv_frame *frame);
 };
 
 struct ss_res {
@@ -490,7 +490,7 @@ int allocate_fw_sta_entry(struct adapter *padapter);
 void flush_all_cam_entry(struct adapter *padapter);
 
 void site_survey(struct adapter *padapter);
-u8 collect_bss_info(struct adapter *padapter, union recv_frame *precv_frame,
+u8 collect_bss_info(struct adapter *padapter, struct recv_frame *precv_frame,
                    struct wlan_bssid_ex *bssid);
 void update_network(struct wlan_bssid_ex *dst, struct wlan_bssid_ex *src,
                    struct adapter *adapter, bool update_ie);
@@ -544,7 +544,8 @@ unsigned int is_ap_in_wep(struct adapter *padapter);
 unsigned int should_forbid_n_rate(struct adapter *padapter);
 
 void report_join_res(struct adapter *padapter, int res);
-void report_survey_event(struct adapter *padapter, union recv_frame *precv_frame);
+void report_survey_event(struct adapter *padapter,
+                        struct recv_frame *precv_frame);
 void report_surveydone_event(struct adapter *padapter);
 void report_del_sta_event(struct adapter *padapter,
                          unsigned char *addr, unsigned short reason);
@@ -609,46 +610,46 @@ void start_clnt_join(struct adapter *padapter);
 void start_create_ibss(struct adapter *padapter);
 
 unsigned int OnAssocReq(struct adapter *padapter,
-                       union recv_frame *precv_frame);
+                       struct recv_frame *precv_frame);
 unsigned int OnAssocRsp(struct adapter *padapter,
-                       union recv_frame *precv_frame);
+                       struct recv_frame *precv_frame);
 unsigned int OnProbeReq(struct adapter *padapter,
-                       union recv_frame *precv_frame);
+                       struct recv_frame *precv_frame);
 unsigned int OnProbeRsp(struct adapter *padapter,
-                       union recv_frame *precv_frame);
+                       struct recv_frame *precv_frame);
 unsigned int DoReserved(struct adapter *padapter,
-                       union recv_frame *precv_frame);
+                       struct recv_frame *precv_frame);
 unsigned int OnBeacon(struct adapter *padapter,
-                     union recv_frame *precv_frame);
+                     struct recv_frame *precv_frame);
 unsigned int OnAtim(struct adapter *padapter,
-                   union recv_frame *precv_frame);
+                   struct recv_frame *precv_frame);
 unsigned int OnDisassoc(struct adapter *padapter,
-                       union recv_frame *precv_frame);
+                       struct recv_frame *precv_frame);
 unsigned int OnAuth(struct adapter *padapter,
-                   union recv_frame *precv_frame);
+                   struct recv_frame *precv_frame);
 unsigned int OnAuthClient(struct adapter *padapter,
-                         union recv_frame *precv_frame);
+                         struct recv_frame *precv_frame);
 unsigned int OnDeAuth(struct adapter *padapter,
-                     union recv_frame *precv_frame);
+                     struct recv_frame *precv_frame);
 unsigned int OnAction(struct adapter *padapter,
-                     union recv_frame *precv_frame);
+                     struct recv_frame *precv_frame);
 
 unsigned int on_action_spct(struct adapter *padapter,
-                           union recv_frame *precv_frame);
+                           struct recv_frame *precv_frame);
 unsigned int OnAction_qos(struct adapter *padapter,
-                         union recv_frame *precv_frame);
+                         struct recv_frame *precv_frame);
 unsigned int OnAction_dls(struct adapter *padapter,
-                         union recv_frame *precv_frame);
+                         struct recv_frame *precv_frame);
 unsigned int OnAction_back(struct adapter *padapter,
-                          union recv_frame *precv_frame);
+                          struct recv_frame *precv_frame);
 unsigned int on_action_public(struct adapter *padapter,
-                             union recv_frame *precv_frame);
+                             struct recv_frame *precv_frame);
 unsigned int OnAction_ht(struct adapter *padapter,
-                        union recv_frame *precv_frame);
+                        struct recv_frame *precv_frame);
 unsigned int OnAction_wmm(struct adapter *padapter,
-                         union recv_frame *precv_frame);
+                         struct recv_frame *precv_frame);
 unsigned int OnAction_p2p(struct adapter *padapter,
-                         union recv_frame *precv_frame);
+                         struct recv_frame *precv_frame);
 
 void mlmeext_joinbss_event_callback(struct adapter *padapter, int join_res);
 void mlmeext_sta_del_event_callback(struct adapter *padapter);
index c6d7a65..e579c38 100644 (file)
@@ -270,7 +270,7 @@ struct recv_buf {
        len = (unsigned int )(tail - data);
 
 */
-struct recv_frame_hdr {
+struct recv_frame {
        struct list_head list;
        struct sk_buff   *pkt;
        struct sk_buff   *pkt_newalloc;
@@ -289,21 +289,16 @@ struct recv_frame_hdr {
        struct recv_reorder_ctrl *preorder_ctrl;
 };
 
-union recv_frame {
-       union {
-               struct recv_frame_hdr hdr;
-       } u;
-};
-
-union recv_frame *_rtw_alloc_recvframe(struct __queue *pfree_recv_queue);
-union recv_frame *rtw_alloc_recvframe(struct __queue *pfree_recv_queue);
-void rtw_init_recvframe(union recv_frame *precvframe,
+struct recv_frame *_rtw_alloc_recvframe(struct __queue *pfree_recv_queue);
+struct recv_frame *rtw_alloc_recvframe(struct __queue *pfree_recv_queue);
+void rtw_init_recvframe(struct recv_frame *precvframe,
                        struct recv_priv *precvpriv);
-int  rtw_free_recvframe(union recv_frame *precvframe,
+int  rtw_free_recvframe(struct recv_frame *precvframe,
                        struct __queue *pfree_recv_queue);
 #define rtw_dequeue_recvframe(queue) rtw_alloc_recvframe(queue)
-int _rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue);
-int rtw_enqueue_recvframe(union recv_frame *precvframe, struct __queue *queue);
+int _rtw_enqueue_recvframe(struct recv_frame *precvframe,
+                          struct __queue *queue);
+int rtw_enqueue_recvframe(struct recv_frame *precvframe, struct __queue *queue);
 void rtw_free_recvframe_queue(struct __queue *pframequeue,
                              struct __queue *pfree_recv_queue);
 u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter);
@@ -313,29 +308,29 @@ struct recv_buf *rtw_dequeue_recvbuf(struct __queue *queue);
 
 void rtw_reordering_ctrl_timeout_handler(void *pcontext);
 
-static inline u8 *get_rxmem(union recv_frame *precvframe)
+static inline u8 *get_rxmem(struct recv_frame *precvframe)
 {
        /* always return rx_head... */
        if (precvframe == NULL)
                return NULL;
-       return precvframe->u.hdr.rx_head;
+       return precvframe->rx_head;
 }
 
-static inline u8 *get_rx_status(union recv_frame *precvframe)
+static inline u8 *get_rx_status(struct recv_frame *precvframe)
 {
        return get_rxmem(precvframe);
 }
 
-static inline u8 *get_recvframe_data(union recv_frame *precvframe)
+static inline u8 *get_recvframe_data(struct recv_frame *precvframe)
 {
        /* always return rx_data */
        if (precvframe == NULL)
                return NULL;
 
-       return precvframe->u.hdr.rx_data;
+       return precvframe->rx_data;
 }
 
-static inline u8 *recvframe_push(union recv_frame *precvframe, int sz)
+static inline u8 *recvframe_push(struct recv_frame *precvframe, int sz)
 {
        /*  append data before rx_data */
 
@@ -346,16 +341,16 @@ static inline u8 *recvframe_push(union recv_frame *precvframe, int sz)
  */
        if (precvframe == NULL)
                return NULL;
-       precvframe->u.hdr.rx_data -= sz ;
-       if (precvframe->u.hdr.rx_data < precvframe->u.hdr.rx_head) {
-               precvframe->u.hdr.rx_data += sz;
+       precvframe->rx_data -= sz;
+       if (precvframe->rx_data < precvframe->rx_head) {
+               precvframe->rx_data += sz;
                return NULL;
        }
-       precvframe->u.hdr.len += sz;
-       return precvframe->u.hdr.rx_data;
+       precvframe->len += sz;
+       return precvframe->rx_data;
 }
 
-static inline u8 *recvframe_pull(union recv_frame *precvframe, int sz)
+static inline u8 *recvframe_pull(struct recv_frame *precvframe, int sz)
 {
        /*  rx_data += sz; move rx_data sz bytes  hereafter */
 
@@ -364,16 +359,16 @@ static inline u8 *recvframe_pull(union recv_frame *precvframe, int sz)
 
        if (precvframe == NULL)
                return NULL;
-       precvframe->u.hdr.rx_data += sz;
-       if (precvframe->u.hdr.rx_data > precvframe->u.hdr.rx_tail) {
-               precvframe->u.hdr.rx_data -= sz;
+       precvframe->rx_data += sz;
+       if (precvframe->rx_data > precvframe->rx_tail) {
+               precvframe->rx_data -= sz;
                return NULL;
        }
-       precvframe->u.hdr.len -= sz;
-       return precvframe->u.hdr.rx_data;
+       precvframe->len -= sz;
+       return precvframe->rx_data;
 }
 
-static inline u8 *recvframe_put(union recv_frame *precvframe, int sz)
+static inline u8 *recvframe_put(struct recv_frame *precvframe, int sz)
 {
        /* used for append sz bytes from ptr to rx_tail, update rx_tail
         * and return the updated rx_tail to the caller */
@@ -382,17 +377,17 @@ static inline u8 *recvframe_put(union recv_frame *precvframe, int sz)
        if (precvframe == NULL)
                return NULL;
 
-       precvframe->u.hdr.rx_tail += sz;
+       precvframe->rx_tail += sz;
 
-       if (precvframe->u.hdr.rx_tail > precvframe->u.hdr.rx_end) {
-               precvframe->u.hdr.rx_tail -= sz;
+       if (precvframe->rx_tail > precvframe->rx_end) {
+               precvframe->rx_tail -= sz;
                return NULL;
        }
-       precvframe->u.hdr.len += sz;
-       return precvframe->u.hdr.rx_tail;
+       precvframe->len += sz;
+       return precvframe->rx_tail;
 }
 
-static inline u8 *recvframe_pull_tail(union recv_frame *precvframe, int sz)
+static inline u8 *recvframe_pull_tail(struct recv_frame *precvframe, int sz)
 {
        /*  rmv data from rx_tail (by yitsen) */
 
@@ -402,16 +397,16 @@ static inline u8 *recvframe_pull_tail(union recv_frame *precvframe, int sz)
 
        if (precvframe == NULL)
                return NULL;
-       precvframe->u.hdr.rx_tail -= sz;
-       if (precvframe->u.hdr.rx_tail < precvframe->u.hdr.rx_data) {
-               precvframe->u.hdr.rx_tail += sz;
+       precvframe->rx_tail -= sz;
+       if (precvframe->rx_tail < precvframe->rx_data) {
+               precvframe->rx_tail += sz;
                return NULL;
        }
-       precvframe->u.hdr.len -= sz;
-       return precvframe->u.hdr.rx_tail;
+       precvframe->len -= sz;
+       return precvframe->rx_tail;
 }
 
-static inline unsigned char *get_rxbuf_desc(union recv_frame *precvframe)
+static inline unsigned char *get_rxbuf_desc(struct recv_frame *precvframe)
 {
        unsigned char *buf_desc;
 
@@ -420,20 +415,21 @@ static inline unsigned char *get_rxbuf_desc(union recv_frame *precvframe)
        return buf_desc;
 }
 
-static inline union recv_frame *rxmem_to_recvframe(u8 *rxmem)
+static inline struct recv_frame *rxmem_to_recvframe(u8 *rxmem)
 {
        /* due to the design of 2048 bytes alignment of recv_frame,
-        * we can reference the union recv_frame */
+        * we can reference the struct recv_frame */
        /* from any given member of recv_frame. */
        /*  rxmem indicates the any member/address in recv_frame */
 
-       return (union recv_frame *)(((size_t)rxmem >> RXFRAME_ALIGN) << RXFRAME_ALIGN);
+       return (struct recv_frame *)(((size_t)rxmem >> RXFRAME_ALIGN) <<
+                                    RXFRAME_ALIGN);
 }
 
-static inline union recv_frame *pkt_to_recvframe(struct sk_buff *pkt)
+static inline struct recv_frame *pkt_to_recvframe(struct sk_buff *pkt)
 {
        u8 *buf_star;
-       union recv_frame *precv_frame;
+       struct recv_frame *precv_frame;
        precv_frame = rxmem_to_recvframe((unsigned char *)buf_star);
 
        return precv_frame;
@@ -443,23 +439,23 @@ static inline u8 *pkt_to_recvmem(struct sk_buff *pkt)
 {
        /*  return the rx_head */
 
-       union recv_frame *precv_frame = pkt_to_recvframe(pkt);
+       struct recv_frame *precv_frame = pkt_to_recvframe(pkt);
 
-       return  precv_frame->u.hdr.rx_head;
+       return  precv_frame->rx_head;
 }
 
 static inline u8 *pkt_to_recvdata(struct sk_buff *pkt)
 {
        /*  return the rx_data */
 
-       union recv_frame *precv_frame = pkt_to_recvframe(pkt);
+       struct recv_frame *precv_frame = pkt_to_recvframe(pkt);
 
-       return  precv_frame->u.hdr.rx_data;
+       return  precv_frame->rx_data;
 }
 
-static inline int get_recvframe_len(union recv_frame *precvframe)
+static inline int get_recvframe_len(struct recv_frame *precvframe)
 {
-       return precvframe->u.hdr.len;
+       return precvframe->len;
 }
 
 static inline s32 translate_percentage_to_dbm(u32 sig_stren_index)
@@ -478,6 +474,6 @@ struct sta_info;
 
 void _rtw_init_sta_recv_priv(struct sta_recv_priv *psta_recvpriv);
 
-void  mgt_dispatcher(struct adapter *padapter, union recv_frame *precv_frame);
+void  mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame);
 
 #endif
index 3eff225..da397e4 100644 (file)
@@ -35,16 +35,16 @@ int rtw_os_recv_resource_init(struct recv_priv *precvpriv,
        return _SUCCESS;
 }
 
-/* alloc os related resource in union recv_frame */
+/* alloc os related resource in struct recv_frame */
 int rtw_os_recv_resource_alloc(struct adapter *padapter,
-                              union recv_frame *precvframe)
+                              struct recv_frame *precvframe)
 {
-       precvframe->u.hdr.pkt_newalloc = NULL;
-       precvframe->u.hdr.pkt = NULL;
+       precvframe->pkt_newalloc = NULL;
+       precvframe->pkt = NULL;
        return _SUCCESS;
 }
 
-/* free os related resource in union recv_frame */
+/* free os related resource in struct recv_frame */
 void rtw_os_recv_resource_free(struct recv_priv *precvpriv)
 {
 }
@@ -117,12 +117,12 @@ void rtw_handle_tkip_mic_err(struct adapter *padapter, u8 bgroup)
 }
 
 void rtw_hostapd_mlme_rx(struct adapter *padapter,
-                        union recv_frame *precv_frame)
+                        struct recv_frame *precv_frame)
 {
 }
 
 int rtw_recv_indicatepkt(struct adapter *padapter,
-                        union recv_frame *precv_frame)
+                        struct recv_frame *precv_frame)
 {
        struct recv_priv *precvpriv;
        struct __queue *pfree_recv_queue;
@@ -133,7 +133,7 @@ int rtw_recv_indicatepkt(struct adapter *padapter,
        precvpriv = &(padapter->recvpriv);
        pfree_recv_queue = &(precvpriv->free_recv_queue);
 
-       skb = precv_frame->u.hdr.pkt;
+       skb = precv_frame->pkt;
        if (skb == NULL) {
                RT_TRACE(_module_recv_osdep_c_, _drv_err_,
                         ("rtw_recv_indicatepkt():skb == NULL something wrong!!!!\n"));
@@ -143,18 +143,18 @@ int rtw_recv_indicatepkt(struct adapter *padapter,
        RT_TRACE(_module_recv_osdep_c_, _drv_info_,
                 ("rtw_recv_indicatepkt():skb != NULL !!!\n"));
        RT_TRACE(_module_recv_osdep_c_, _drv_info_,
-                ("rtw_recv_indicatepkt():precv_frame->u.hdr.rx_head =%p  precv_frame->hdr.rx_data =%p\n",
-                precv_frame->u.hdr.rx_head, precv_frame->u.hdr.rx_data));
+                ("rtw_recv_indicatepkt():precv_frame->rx_head =%p  precv_frame->hdr.rx_data =%p\n",
+                precv_frame->rx_head, precv_frame->rx_data));
        RT_TRACE(_module_recv_osdep_c_, _drv_info_,
-                ("precv_frame->hdr.rx_tail =%p precv_frame->u.hdr.rx_end =%p precv_frame->hdr.len =%d\n",
-                precv_frame->u.hdr.rx_tail, precv_frame->u.hdr.rx_end,
-                precv_frame->u.hdr.len));
+                ("precv_frame->hdr.rx_tail =%p precv_frame->rx_end =%p precv_frame->hdr.len =%d\n",
+                precv_frame->rx_tail, precv_frame->rx_end,
+                precv_frame->len));
 
-       skb->data = precv_frame->u.hdr.rx_data;
+       skb->data = precv_frame->rx_data;
 
-       skb_set_tail_pointer(skb, precv_frame->u.hdr.len);
+       skb_set_tail_pointer(skb, precv_frame->len);
 
-       skb->len = precv_frame->u.hdr.len;
+       skb->len = precv_frame->len;
 
        RT_TRACE(_module_recv_osdep_c_, _drv_info_,
                 ("skb->head =%p skb->data =%p skb->tail =%p skb->end =%p skb->len =%d\n",
@@ -165,7 +165,7 @@ int rtw_recv_indicatepkt(struct adapter *padapter,
                struct sk_buff *pskb2 = NULL;
                struct sta_info *psta = NULL;
                struct sta_priv *pstapriv = &padapter->stapriv;
-               struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
+               struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
                int bmcast = IS_MCAST(pattrib->dst);
 
                if (memcmp(pattrib->dst, myid(&padapter->eeprompriv),
@@ -207,7 +207,7 @@ int rtw_recv_indicatepkt(struct adapter *padapter,
 _recv_indicatepkt_end:
 
        /*  pointers to NULL before rtw_free_recvframe() */
-       precv_frame->u.hdr.pkt = NULL;
+       precv_frame->pkt = NULL;
 
        rtw_free_recvframe(precv_frame, pfree_recv_queue);