}
 
-void rtw_wep_decrypt(struct adapter  *padapter, u8 *precvframe)
+void rtw_wep_decrypt(struct adapter *padapter, struct recv_frame *precvframe)
 {
        /*  exclude ICV */
        struct arc4context       mycontext;
        u32     keylength;
        u8      *pframe, *payload, *iv, wepkey[16];
        u8       keyindex;
-       struct  rx_pkt_attrib    *prxattrib = &(((struct recv_frame *)precvframe)->attrib);
+       struct  rx_pkt_attrib    *prxattrib = &precvframe->attrib;
        struct  security_priv   *psecuritypriv = &padapter->securitypriv;
 
-       pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data;
+       pframe = (unsigned char *)precvframe->rx_data;
 
        /* start to decrypt recvframe */
        if ((prxattrib->encrypt == _WEP40_) || (prxattrib->encrypt == _WEP104_)) {
                keylength = psecuritypriv->dot11DefKeylen[keyindex];
                memcpy(&wepkey[0], iv, 3);
                memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0], keylength);
-               length = ((struct recv_frame *)precvframe)->len - prxattrib->hdrlen - prxattrib->iv_len;
+               length = precvframe->len - prxattrib->hdrlen - prxattrib->iv_len;
 
                payload = pframe + prxattrib->iv_len + prxattrib->hdrlen;
 
 }
 
 /* The hlen isn't include the IV */
-u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
+u32 rtw_tkip_decrypt(struct adapter *padapter, struct recv_frame *precvframe)
 {                                                                                                                                      /*  exclude ICV */
        u16 pnl;
        u32 pnh;
        u8      *pframe, *payload, *iv, *prwskey;
        union pn48 dot11txpn;
        struct  sta_info                *stainfo;
-       struct  rx_pkt_attrib    *prxattrib = &((struct recv_frame *)precvframe)->attrib;
+       struct  rx_pkt_attrib    *prxattrib = &precvframe->attrib;
        struct  security_priv   *psecuritypriv = &padapter->securitypriv;
        u32             res = _SUCCESS;
 
-       pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data;
+       pframe = (unsigned char *)precvframe->rx_data;
 
        /* 4 start to decrypt recvframe */
        if (prxattrib->encrypt == _TKIP_) {
 
                        iv = pframe + prxattrib->hdrlen;
                        payload = pframe + prxattrib->iv_len + prxattrib->hdrlen;
-                       length = ((struct recv_frame *)precvframe)->len - prxattrib->hdrlen - prxattrib->iv_len;
+                       length = precvframe->len - prxattrib->hdrlen - prxattrib->iv_len;
 
                        GET_TKIP_PN(iv, dot11txpn);
 
        return res;
 }
 
-u32    rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
+u32 rtw_aes_decrypt(struct adapter *padapter, struct recv_frame *precvframe)
 {      /*  exclude ICV */
        /* Intermediate Buffers */
        int             length;
        u8      *pframe, *prwskey;      /*  *payload,*iv */
        struct  sta_info                *stainfo;
-       struct  rx_pkt_attrib    *prxattrib = &((struct recv_frame *)precvframe)->attrib;
+       struct  rx_pkt_attrib    *prxattrib = &precvframe->attrib;
        struct  security_priv   *psecuritypriv = &padapter->securitypriv;
        u32     res = _SUCCESS;
 
-       pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data;
+       pframe = (unsigned char *)precvframe->rx_data;
+
        /* 4 start to encrypt each fragment */
        if (prxattrib->encrypt == _AES_) {
                stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
                        } else {
                                prwskey = &stainfo->dot118021x_UncstKey.skey[0];
                        }
-                       length = ((struct recv_frame *)precvframe)->len - prxattrib->hdrlen - prxattrib->iv_len;
+                       length = precvframe->len - prxattrib->hdrlen - prxattrib->iv_len;
                        res = aes_decipher(prwskey, prxattrib->hdrlen, pframe, length);
                } else {
                        res = _FAIL;
 
 u32 rtw_aes_encrypt(struct adapter *padapter, struct xmit_frame *pxmitframe);
 u32 rtw_tkip_encrypt(struct adapter *padapter, struct xmit_frame *pxmitframe);
 void rtw_wep_encrypt(struct adapter *padapter, struct xmit_frame *pxmitframe);
-u32 rtw_aes_decrypt(struct adapter *padapter, u8  *precvframe);
-u32 rtw_tkip_decrypt(struct adapter *padapter, u8  *precvframe);
-void rtw_wep_decrypt(struct adapter *padapter, u8  *precvframe);
+u32 rtw_aes_decrypt(struct adapter *padapter, struct recv_frame *precvframe);
+u32 rtw_tkip_decrypt(struct adapter *padapter, struct recv_frame *precvframe);
+void rtw_wep_decrypt(struct adapter *padapter, struct recv_frame *precvframe);
 void rtw_use_tkipkey_handler(void *FunctionContext);
 
 #endif /* __RTL871X_SECURITY_H_ */