OSDN Git Service

Remove duplicate copy of if_ether.h and use the kernel provided one
[android-x86/external-modules-rtl8723au.git] / core / rtw_recv.c
index 7637f79..e578e5d 100644 (file)
 #include <recv_osdep.h>
 #include <mlme_osdep.h>
 #include <ip.h>
-#include <if_ether.h>
+#include <linux/if_ether.h>
 #include <ethernet.h>
-
-#ifdef CONFIG_USB_HCI
 #include <usb_ops.h>
-#endif
-
+#include <linux/ieee80211.h>
 #include <wifi.h>
 #include <circ_buf.h>
 
@@ -45,7 +42,7 @@ _func_enter_;
 
        memset((u8 *)psta_recvpriv, 0, sizeof (struct sta_recv_priv));
 
-       _rtw_spinlock_init(&psta_recvpriv->lock);
+       spin_lock_init(&psta_recvpriv->lock);
 
        /* for(i=0; i<MAX_RX_NUMBLKS; i++) */
        /*      _rtw_init_queue(&psta_recvpriv->blk_strms[i]); */
@@ -55,20 +52,20 @@ _func_enter_;
 _func_exit_;
 }
 
-sint _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter)
+int _rtw_init_recv_priv(struct recv_priv *precvpriv, _adapter *padapter)
 {
-       sint i;
+       int i;
 
        union recv_frame *precvframe;
 
-       sint    res=_SUCCESS;
+       int     res=_SUCCESS;
 
 _func_enter_;
 
        /*  We don't need to memset padapter->XXX to zero, because adapter is allocated by rtw_zvmalloc(). */
        /* memset((unsigned char *)precvpriv, 0, sizeof (struct  recv_priv)); */
 
-       _rtw_spinlock_init(&precvpriv->lock);
+       spin_lock_init(&precvpriv->lock);
 
        _rtw_init_queue(&precvpriv->free_recv_queue);
        _rtw_init_queue(&precvpriv->recv_pending_queue);
@@ -88,9 +85,7 @@ _func_enter_;
        }
        /* memset(precvpriv->pallocated_frame_buf, 0, NR_RECVFRAME * sizeof(union recv_frame) + RXFRAME_ALIGN_SZ); */
 
-       precvpriv->precv_frame_buf = (u8 *)N_BYTE_ALIGMENT((SIZE_PTR)(precvpriv->pallocated_frame_buf), RXFRAME_ALIGN_SZ);
-       /* precvpriv->precv_frame_buf = precvpriv->pallocated_frame_buf + RXFRAME_ALIGN_SZ - */
-       /*                                              ((SIZE_PTR) (precvpriv->pallocated_frame_buf) &(RXFRAME_ALIGN_SZ-1)); */
+       precvpriv->precv_frame_buf = PTR_ALIGN(precvpriv->pallocated_frame_buf, RXFRAME_ALIGN_SZ);
 
        precvframe = (union recv_frame*) precvpriv->precv_frame_buf;
 
@@ -109,13 +104,9 @@ _func_enter_;
 
        }
 
-#ifdef CONFIG_USB_HCI
-
        precvpriv->rx_pending_cnt=1;
 
-       _rtw_init_sema(&precvpriv->allrxreturnevt, 0);
-
-#endif
+       sema_init(&precvpriv->allrxreturnevt, 0);
 
        res = rtw_hal_init_recv_priv(padapter);
 
@@ -134,25 +125,6 @@ _func_exit_;
        return res;
 }
 
-void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv);
-void rtw_mfree_recv_priv_lock(struct recv_priv *precvpriv)
-{
-       _rtw_spinlock_free(&precvpriv->lock);
-#ifdef CONFIG_RECV_THREAD_MODE
-       _rtw_free_sema(&precvpriv->recv_sema);
-       _rtw_free_sema(&precvpriv->terminate_recvthread_sema);
-#endif
-
-       _rtw_spinlock_free(&precvpriv->free_recv_queue.lock);
-       _rtw_spinlock_free(&precvpriv->recv_pending_queue.lock);
-
-       _rtw_spinlock_free(&precvpriv->free_recv_buf_queue.lock);
-
-#ifdef CONFIG_USE_USB_BUFFER_ALLOC_RX
-       _rtw_spinlock_free(&precvpriv->recv_buf_pending_queue.lock);
-#endif /*  CONFIG_USE_USB_BUFFER_ALLOC_RX */
-}
-
 void _rtw_free_recv_priv (struct recv_priv *precvpriv)
 {
        _adapter        *padapter = precvpriv->adapter;
@@ -161,8 +133,6 @@ _func_enter_;
 
        rtw_free_uc_swdec_pending_queue(padapter);
 
-       rtw_mfree_recv_priv_lock(precvpriv);
-
        rtw_os_recv_resource_free(precvpriv);
 
        if(precvpriv->pallocated_frame_buf) {
@@ -214,11 +184,11 @@ union recv_frame *rtw_alloc_recvframe (_queue *pfree_recv_queue)
        _irqL irqL;
        union recv_frame  *precvframe;
 
-       _enter_critical_bh(&pfree_recv_queue->lock, &irqL);
+       spin_lock_bh(&pfree_recv_queue->lock);
 
        precvframe = _rtw_alloc_recvframe(pfree_recv_queue);
 
-       _exit_critical_bh(&pfree_recv_queue->lock, &irqL);
+       spin_unlock_bh(&pfree_recv_queue->lock);
 
        return precvframe;
 }
@@ -259,7 +229,7 @@ _func_enter_;
                precvframe->u.hdr.pkt = NULL;
        }
 
-       _enter_critical_bh(&pfree_recv_queue->lock, &irqL);
+       spin_lock_bh(&pfree_recv_queue->lock);
 
        rtw_list_delete(&(precvframe->u.hdr.list));
 
@@ -272,14 +242,14 @@ _func_enter_;
                                precvpriv->free_recvframe_cnt++;
        }
 
-      _exit_critical_bh(&pfree_recv_queue->lock, &irqL);
+      spin_unlock_bh(&pfree_recv_queue->lock);
 
 _func_exit_;
 
        return _SUCCESS;
 }
 
-sint _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
+int _rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
 {
 
        _adapter *padapter=precvframe->u.hdr.adapter;
@@ -302,22 +272,22 @@ _func_exit_;
        return _SUCCESS;
 }
 
-sint rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
+int rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
 {
-       sint ret;
+       int ret;
        _irqL irqL;
 
        /* _spinlock(&pfree_recv_queue->lock); */
-       _enter_critical_bh(&queue->lock, &irqL);
+       spin_lock_bh(&queue->lock);
        ret = _rtw_enqueue_recvframe(precvframe, queue);
-       /* _rtw_spinunlock(&pfree_recv_queue->lock); */
-       _exit_critical_bh(&queue->lock, &irqL);
+       /* spin_unlock(&pfree_recv_queue->lock); */
+       spin_unlock_bh(&queue->lock);
 
        return ret;
 }
 
 /*
-sint   rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
+int    rtw_enqueue_recvframe(union recv_frame *precvframe, _queue *queue)
 {
        return rtw_free_recvframe(precvframe, queue);
 }
@@ -337,7 +307,7 @@ void rtw_free_recvframe_queue(_queue *pframequeue,  _queue *pfree_recv_queue)
        _list   *plist, *phead;
 
 _func_enter_;
-       _rtw_spinlock(&pframequeue->lock);
+       spin_lock(&pframequeue->lock);
 
        phead = get_list_head(pframequeue);
        plist = get_next(phead);
@@ -348,7 +318,7 @@ _func_enter_;
                rtw_free_recvframe(precvframe, pfree_recv_queue);
        }
 
-       _rtw_spinunlock(&pframequeue->lock);
+       spin_unlock(&pframequeue->lock);
 
 _func_exit_;
 }
@@ -366,37 +336,29 @@ u32 rtw_free_uc_swdec_pending_queue(_adapter *adapter)
        return cnt;
 }
 
-sint rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue)
+int rtw_enqueue_recvbuf_to_head(struct recv_buf *precvbuf, _queue *queue)
 {
        _irqL irqL;
 
-       _enter_critical_bh(&queue->lock, &irqL);
+       spin_lock_bh(&queue->lock);
 
        rtw_list_delete(&precvbuf->list);
        rtw_list_insert_head(&precvbuf->list, get_list_head(queue));
 
-       _exit_critical_bh(&queue->lock, &irqL);
+       spin_unlock_bh(&queue->lock);
 
        return _SUCCESS;
 }
 
-sint rtw_enqueue_recvbuf(struct recv_buf *precvbuf, _queue *queue)
+int rtw_enqueue_recvbuf(struct recv_buf *precvbuf, _queue *queue)
 {
        _irqL irqL;
-#ifdef CONFIG_SDIO_HCI
-       _enter_critical_bh(&queue->lock, &irqL);
-#else
-       _enter_critical_ex(&queue->lock, &irqL);
-#endif/*#ifdef  CONFIG_SDIO_HCI*/
+       spin_lock_irqsave(&queue->lock, irqL);
 
        rtw_list_delete(&precvbuf->list);
 
        rtw_list_insert_tail(&precvbuf->list, get_list_head(queue));
-#ifdef CONFIG_SDIO_HCI
-       _exit_critical_bh(&queue->lock, &irqL);
-#else
-       _exit_critical_ex(&queue->lock, &irqL);
-#endif/*#ifdef  CONFIG_SDIO_HCI*/
+       spin_unlock_irqrestore(&queue->lock, irqL);
        return _SUCCESS;
 }
 
@@ -406,11 +368,7 @@ struct recv_buf *rtw_dequeue_recvbuf (_queue *queue)
        struct recv_buf *precvbuf;
        _list   *plist, *phead;
 
-#ifdef CONFIG_SDIO_HCI
-       _enter_critical_bh(&queue->lock, &irqL);
-#else
-       _enter_critical_ex(&queue->lock, &irqL);
-#endif/*#ifdef  CONFIG_SDIO_HCI*/
+       spin_lock_irqsave(&queue->lock, irqL);
 
        if(_rtw_queue_empty(queue) == _TRUE)
        {
@@ -428,19 +386,15 @@ struct recv_buf *rtw_dequeue_recvbuf (_queue *queue)
 
        }
 
-#ifdef CONFIG_SDIO_HCI
-       _exit_critical_bh(&queue->lock, &irqL);
-#else
-       _exit_critical_ex(&queue->lock, &irqL);
-#endif/*#ifdef  CONFIG_SDIO_HCI*/
+       spin_unlock_irqrestore(&queue->lock, irqL);
 
        return precvbuf;
 }
 
-sint recvframe_chkmic(_adapter *adapter,  union recv_frame *precvframe);
-sint recvframe_chkmic(_adapter *adapter,  union recv_frame *precvframe){
+int recvframe_chkmic(_adapter *adapter,  union recv_frame *precvframe);
+int recvframe_chkmic(_adapter *adapter,  union recv_frame *precvframe){
 
-       sint    i,res=_SUCCESS;
+       int     i,res=_SUCCESS;
        u32     datalen;
        u8      miccode[8];
        u8      bmic_err=_FALSE,brpt_micerror = _TRUE;
@@ -764,10 +718,10 @@ _func_exit_;
                return prtnframe;
 }
 
-sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache);
-sint recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache)
+int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache);
+int recv_decache(union recv_frame *precv_frame, u8 bretry, struct stainfo_rxcache *prxcache)
 {
-       sint tid = precv_frame->u.hdr.attrib.priority;
+       int tid = precv_frame->u.hdr.attrib.priority;
 
        u16 seq_ctrl = ( (precv_frame->u.hdr.attrib.seq_num&0xffff) << 4) |
                (precv_frame->u.hdr.attrib.frag_num & 0xf);
@@ -916,10 +870,10 @@ void process_wmmps_data(_adapter *padapter, union recv_frame *precv_frame)
 }
 
 #ifdef CONFIG_TDLS
-sint OnTDLS(_adapter *adapter, union recv_frame *precv_frame)
+int OnTDLS(_adapter *adapter, union recv_frame *precv_frame)
 {
        struct rx_pkt_attrib    *pattrib = & precv_frame->u.hdr.attrib;
-       sint ret = _SUCCESS;
+       int ret = _SUCCESS;
        u8 *paction = get_recvframe_data(precv_frame);
        u8 category_field = 1;
 #ifdef CONFIG_WFD
@@ -978,7 +932,7 @@ sint OnTDLS(_adapter *adapter, union recv_frame *precv_frame)
                        break;
 #ifdef CONFIG_WFD
                case 0x50:      /* First byte of WFA OUI */
-                       if( _rtw_memcmp(WFA_OUI, (paction), 3) )
+                       if (!memcmp(WFA_OUI, (paction), 3))
                        {
                                if( *(paction + 3) == 0x04)     /* Probe request frame */
                                {
@@ -1039,26 +993,26 @@ void count_rx_stats(_adapter *padapter, union recv_frame *prframe, struct sta_in
        }
 }
 
-sint sta2sta_data_frame(
+int sta2sta_data_frame(
        _adapter *adapter,
        union recv_frame *precv_frame,
        struct sta_info**psta
 );
-sint sta2sta_data_frame(
+int sta2sta_data_frame(
        _adapter *adapter,
        union recv_frame *precv_frame,
        struct sta_info**psta
 )
 {
        u8 *ptr = precv_frame->u.hdr.rx_data;
-       sint ret = _SUCCESS;
+       int ret = _SUCCESS;
        struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib;
        struct  sta_priv                *pstapriv = &adapter->stapriv;
        struct  mlme_priv       *pmlmepriv = &adapter->mlmepriv;
        u8 *mybssid  = get_bssid(pmlmepriv);
        u8 *myhwaddr = myid(&adapter->eeprompriv);
        u8 * sta_addr = NULL;
-       sint bmcast = IS_MCAST(pattrib->dst);
+       int bmcast = IS_MCAST(pattrib->dst);
 
 #ifdef CONFIG_TDLS
        struct tdls_info *ptdlsinfo = &adapter->tdlsinfo;
@@ -1075,20 +1029,20 @@ _func_enter_;
        {
 
                /*  filter packets that SA is myself or multicast or broadcast */
-               if (_rtw_memcmp(myhwaddr, pattrib->src, ETH_ALEN)){
+               if (!memcmp(myhwaddr, pattrib->src, ETH_ALEN)) {
                        RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" SA==myself \n"));
                        ret= _FAIL;
                        goto exit;
                }
 
-               if( (!_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN))    && (!bmcast) ){
+               if ((memcmp(myhwaddr, pattrib->dst, ETH_ALEN)) && (!bmcast)) {
                        ret= _FAIL;
                        goto exit;
                }
 
-               if( _rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
-                  _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
-                  (!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) ) {
+               if (!memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
+                   !memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
+                   memcmp(pattrib->bssid, mybssid, ETH_ALEN)) {
                        ret= _FAIL;
                        goto exit;
                }
@@ -1122,21 +1076,20 @@ _func_enter_;
                                        }
                                }
                                /*  filter packets that SA is myself or multicast or broadcast */
-                               if (_rtw_memcmp(myhwaddr, pattrib->src, ETH_ALEN)){
+                               if (!memcmp(myhwaddr, pattrib->src, ETH_ALEN)){
                                        ret= _FAIL;
                                        goto exit;
                                }
                                /*  da should be for me */
-                               if((!_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN))&& (!bmcast))
+                               if ((memcmp(myhwaddr, pattrib->dst, ETH_ALEN))&& (!bmcast))
                                {
                                        ret= _FAIL;
                                        goto exit;
                                }
                                /*  check BSSID */
-                               if( _rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
-                                    _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
-                                    (!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) )
-                               {
+                               if (!memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
+                                   !memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
+                                   memcmp(pattrib->bssid, mybssid, ETH_ALEN)) {
                                        ret= _FAIL;
                                        goto exit;
                                }
@@ -1169,8 +1122,8 @@ _func_enter_;
                                        goto exit;
                                }
                                /* receive some of all TDLS management frames, process it at ON_TDLS */
-                               if((_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_TDLS, 2))){
-                                       ret= OnTDLS(adapter, precv_frame);
+                               if (!memcmp(psnap_type, SNAP_ETH_TYPE_TDLS, 2)){
+                                       ret = OnTDLS(adapter, precv_frame);
                                        goto exit;
                                }
 
@@ -1183,7 +1136,7 @@ _func_enter_;
 #endif /* CONFIG_TDLS */
                {
                        /*  For Station mode, sa and bssid should always be BSSID, and DA is my mac-address */
-                       if(!_rtw_memcmp(pattrib->bssid, pattrib->src, ETH_ALEN) )
+                       if (memcmp(pattrib->bssid, pattrib->src, ETH_ALEN))
                        {
                                RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,("bssid != TA under STATION_MODE; drop pkt\n"));
                                ret= _FAIL;
@@ -1207,7 +1160,7 @@ _func_enter_;
                else /*  not mc-frame */
                {
                        /*  For AP mode, if DA is non-MCAST, then it must be BSSID, and bssid == BSSID */
-                       if(!_rtw_memcmp(pattrib->bssid, pattrib->dst, ETH_ALEN)) {
+                       if (memcmp(pattrib->bssid, pattrib->dst, ETH_ALEN)) {
                                ret= _FAIL;
                                goto exit;
                        }
@@ -1252,23 +1205,23 @@ _func_exit_;
        return ret;
 }
 
-sint ap2sta_data_frame(
+int ap2sta_data_frame(
        _adapter *adapter,
        union recv_frame *precv_frame,
        struct sta_info**psta );
-sint ap2sta_data_frame(
+int ap2sta_data_frame(
        _adapter *adapter,
        union 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;
-       sint ret = _SUCCESS;
+       int ret = _SUCCESS;
        struct  sta_priv                *pstapriv = &adapter->stapriv;
        struct  mlme_priv       *pmlmepriv = &adapter->mlmepriv;
        u8 *mybssid  = get_bssid(pmlmepriv);
        u8 *myhwaddr = myid(&adapter->eeprompriv);
-       sint bmcast = IS_MCAST(pattrib->dst);
+       int bmcast = IS_MCAST(pattrib->dst);
 
 _func_enter_;
 
@@ -1279,7 +1232,7 @@ _func_enter_;
        {
 
                /*  filter packets that SA is myself or multicast or broadcast */
-               if (_rtw_memcmp(myhwaddr, pattrib->src, ETH_ALEN)){
+               if (!memcmp(myhwaddr, pattrib->src, ETH_ALEN)) {
                        RT_TRACE(_module_rtl871x_recv_c_,_drv_err_,(" SA==myself \n"));
                        #ifdef DBG_RX_DROP_FRAME
                        DBG_8723A("DBG_RX_DROP_FRAME %s SA="MAC_FMT", myhwaddr="MAC_FMT"\n",
@@ -1290,7 +1243,7 @@ _func_enter_;
                }
 
                /*  da should be for me */
-               if((!_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN))&& (!bmcast))
+               if (memcmp(myhwaddr, pattrib->dst, ETH_ALEN) && (!bmcast))
                {
                        RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,
                                (" ap2sta_data_frame:  compare DA fail; DA="MAC_FMT"\n", MAC_ARG(pattrib->dst)));
@@ -1302,10 +1255,9 @@ _func_enter_;
                }
 
                /*  check BSSID */
-               if( _rtw_memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
-                    _rtw_memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
-                    (!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN)) )
-               {
+               if (!memcmp(pattrib->bssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
+                   !memcmp(mybssid, "\x0\x0\x0\x0\x0\x0", ETH_ALEN) ||
+                   memcmp(pattrib->bssid, mybssid, ETH_ALEN)) {
                        RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,
                                (" ap2sta_data_frame:  compare BSSID fail ; BSSID="MAC_FMT"\n", MAC_ARG(pattrib->bssid)));
                        RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("mybssid="MAC_FMT"\n", MAC_ARG(mybssid)));
@@ -1381,7 +1333,7 @@ _func_enter_;
        }
        else
        {
-               if(_rtw_memcmp(myhwaddr, pattrib->dst, ETH_ALEN)&& (!bmcast))
+               if (!memcmp(myhwaddr, pattrib->dst, ETH_ALEN) && (!bmcast))
                {
                        *psta = rtw_get_stainfo(pstapriv, pattrib->bssid); /*  get sta_info */
                        if (*psta == NULL)
@@ -1405,11 +1357,11 @@ _func_exit_;
        return ret;
 }
 
-sint sta2ap_data_frame(
+int sta2ap_data_frame(
        _adapter *adapter,
        union recv_frame *precv_frame,
        struct sta_info**psta );
-sint sta2ap_data_frame(
+int sta2ap_data_frame(
        _adapter *adapter,
        union recv_frame *precv_frame,
        struct sta_info**psta )
@@ -1419,14 +1371,14 @@ sint sta2ap_data_frame(
        struct  sta_priv                *pstapriv = &adapter->stapriv;
        struct  mlme_priv       *pmlmepriv = &adapter->mlmepriv;
        unsigned char *mybssid  = get_bssid(pmlmepriv);
-       sint ret=_SUCCESS;
+       int ret=_SUCCESS;
 
 _func_enter_;
 
        if (check_fwstate(pmlmepriv, WIFI_AP_STATE) == _TRUE)
        {
                /* For AP mode, RA=BSSID, TX=STA(SRC_ADDR), A3=DST_ADDR */
-               if(!_rtw_memcmp(pattrib->bssid, mybssid, ETH_ALEN))
+               if(memcmp(pattrib->bssid, mybssid, ETH_ALEN))
                {
                        ret= _FAIL;
                        goto exit;
@@ -1459,7 +1411,7 @@ _func_enter_;
        }
        else {
                u8 *myhwaddr = myid(&adapter->eeprompriv);
-               if (!_rtw_memcmp(pattrib->ra, myhwaddr, ETH_ALEN)) {
+               if (memcmp(pattrib->ra, myhwaddr, ETH_ALEN)) {
                        ret = RTW_RX_HANDLED;
                        goto exit;
                }
@@ -1476,8 +1428,8 @@ _func_exit_;
        return ret;
 }
 
-sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame);
-sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame)
+int validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame);
+int validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame)
 {
 #ifdef CONFIG_AP_MODE
        struct rx_pkt_attrib *pattrib = &precv_frame->u.hdr.attrib;
@@ -1493,7 +1445,7 @@ sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame)
        }
 
        /* receive the frames that ra(a1) is my address */
-       if (!_rtw_memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN))
+       if (memcmp(GetAddr1Ptr(pframe), myid(&padapter->eeprompriv), ETH_ALEN))
        {
                return _FAIL;
        }
@@ -1554,8 +1506,8 @@ sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame)
                        struct xmit_frame *pxmitframe=NULL;
                        struct xmit_priv *pxmitpriv = &padapter->xmitpriv;
 
-                       /* _enter_critical_bh(&psta->sleep_q.lock, &irqL); */
-                       _enter_critical_bh(&pxmitpriv->lock, &irqL);
+                       /* spin_lock_bh(&psta->sleep_q.lock); */
+                       spin_lock_bh(&pxmitpriv->lock);
 
                        xmitframe_phead = get_list_head(&psta->sleep_q);
                        xmitframe_plist = get_next(xmitframe_phead);
@@ -1592,14 +1544,14 @@ sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame)
                                        update_beacon(padapter, _TIM_IE_, NULL, _FALSE);
                                }
 
-                               /* _exit_critical_bh(&psta->sleep_q.lock, &irqL); */
-                               _exit_critical_bh(&pxmitpriv->lock, &irqL);
+                               /* spin_unlock_bh(&psta->sleep_q.lock); */
+                               spin_unlock_bh(&pxmitpriv->lock);
 
                        }
                        else
                        {
-                               /* _exit_critical_bh(&psta->sleep_q.lock, &irqL); */
-                               _exit_critical_bh(&pxmitpriv->lock, &irqL);
+                               /* spin_unlock_bh(&psta->sleep_q.lock); */
+                               spin_unlock_bh(&pxmitpriv->lock);
 
                                /* DBG_8723A("no buffered packets to xmit\n"); */
                                if(pstapriv->tim_bitmap&BIT(psta->aid))
@@ -1636,8 +1588,8 @@ sint validate_recv_ctrl_frame(_adapter *padapter, union recv_frame *precv_frame)
 }
 
 union recv_frame* recvframe_chk_defrag(PADAPTER padapter, union recv_frame *precv_frame);
-sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame);
-sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame)
+int validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame);
+int validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame)
 {
        /* struct mlme_priv *pmlmepriv = &adapter->mlmepriv; */
 
@@ -1659,7 +1611,7 @@ sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame)
                        else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBEREQ)
                                psta->sta_stats.rx_probereq_pkts++;
                        else if (GetFrameSubType(precv_frame->u.hdr.rx_data) == WIFI_PROBERSP) {
-                               if (_rtw_memcmp(padapter->eeprompriv.mac_addr, GetAddr1Ptr(precv_frame->u.hdr.rx_data), ETH_ALEN) == _TRUE)
+                               if (!memcmp(padapter->eeprompriv.mac_addr, GetAddr1Ptr(precv_frame->u.hdr.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)))
@@ -1724,8 +1676,8 @@ sint validate_recv_mgnt_frame(PADAPTER padapter, union recv_frame *precv_frame)
        return _SUCCESS;
 }
 
-sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame);
-sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame)
+int validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame);
+int validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame)
 {
        u8 bretry;
        u8 *psa, *pda, *pbssid;
@@ -1734,7 +1686,7 @@ sint validate_recv_data_frame(_adapter *adapter, union recv_frame *precv_frame)
        struct rx_pkt_attrib    *pattrib = & precv_frame->u.hdr.attrib;
        struct sta_priv         *pstapriv = &adapter->stapriv;
        struct security_priv    *psecuritypriv = &adapter->securitypriv;
-       sint ret = _SUCCESS;
+       int ret = _SUCCESS;
 #ifdef CONFIG_TDLS
        struct tdls_info *ptdlsinfo = &adapter->tdlsinfo;
 #endif /* CONFIG_TDLS */
@@ -1884,8 +1836,8 @@ _func_exit_;
        return ret;
 }
 
-sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame);
-sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame)
+int validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame);
+int validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame)
 {
        /* shall check frame subtype, to / from ds, da, bssid */
 
@@ -1893,7 +1845,7 @@ sint validate_recv_frame(_adapter *adapter, union recv_frame *precv_frame)
 
        u8 type;
        u8 subtype;
-       sint retval = _SUCCESS;
+       int retval = _SUCCESS;
 
        struct rx_pkt_attrib *pattrib = & precv_frame->u.hdr.attrib;
 
@@ -2070,15 +2022,15 @@ _func_exit_;
 
 /* remove the wlanhdr and add the eth_hdr */
 
-sint wlanhdr_to_ethhdr ( union recv_frame *precvframe)
+int wlanhdr_to_ethhdr ( union recv_frame *precvframe)
 {
-       sint    rmv_len;
+       int     rmv_len;
        u16     eth_type, len;
        u8      bsnaphdr;
        u8      *psnap_type;
        struct ieee80211_snap_hdr       *psnap;
 
-       sint ret=_SUCCESS;
+       int ret=_SUCCESS;
        _adapter                        *adapter =precvframe->u.hdr.adapter;
        struct mlme_priv        *pmlmepriv = &adapter->mlmepriv;
 
@@ -2095,11 +2047,11 @@ _func_enter_;
        psnap_type=ptr+pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE;
        /* convert hdr + possible LLC headers into Ethernet header */
        /* eth_type = (psnap_type[0] << 8) | psnap_type[1]; */
-       if((_rtw_memcmp(psnap, rtw_rfc1042_header, SNAP_SIZE) &&
-               (_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_IPX, 2) == _FALSE) &&
-               (_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_APPLETALK_AARP, 2)==_FALSE) )||
-               /* eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) || */
-                _rtw_memcmp(psnap, rtw_bridge_tunnel_header, SNAP_SIZE)){
+       if ((!memcmp(psnap, rtw_rfc1042_header, SNAP_SIZE) &&
+            memcmp(psnap_type, SNAP_ETH_TYPE_IPX, 2) &&
+            memcmp(psnap_type, SNAP_ETH_TYPE_APPLETALK_AARP, 2)) ||
+            /* eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) || */
+           !memcmp(psnap, rtw_bridge_tunnel_header, SNAP_SIZE)) {
                /* remove RFC1042 or Bridge-Tunnel encapsulation and replace EtherType */
                bsnaphdr = _TRUE;
        }
@@ -2145,60 +2097,6 @@ _func_exit_;
        return ret;
 }
 
-#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
-static void recvframe_expand_pkt(
-       PADAPTER padapter,
-       union recv_frame *prframe)
-{
-       struct recv_frame_hdr *pfhdr;
-       _pkt *ppkt;
-       u8 shift_sz;
-       u32 alloc_sz;
-
-       pfhdr = &prframe->u.hdr;
-
-       /*      6 is for IP header 8 bytes alignment in QoS packet case. */
-       if (pfhdr->attrib.qos)
-               shift_sz = 6;
-       else
-               shift_sz = 0;
-
-       /*  for first fragment packet, need to allocate */
-       /*  (1536 + RXDESC_SIZE + drvinfo_sz) to reassemble packet */
-       /*      8 is for skb->data 8 bytes alignment. */
-/*     alloc_sz = _RND(1536 + RXDESC_SIZE + pfhdr->attrib.drvinfosize + shift_sz + 8, 128); */
-       alloc_sz = 1664; /*  round (1536 + 24 + 32 + shift_sz + 8) to 128 bytes alignment */
-
-       /* 3 1. alloc new skb */
-       /*  prepare extra space for 4 bytes alignment */
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,18)) /*  http:www.mail-archive.com/netdev@vger.kernel.org/msg17214.html */
-       ppkt = dev_alloc_skb(alloc_sz);
-       if (ppkt) ppkt->dev = padapter->pnetdev;
-#else
-       ppkt = netdev_alloc_skb(padapter->pnetdev, alloc_sz);
-#endif
-       if (!ppkt) return; /*  no way to expand */
-
-       /* 3 2. Prepare new skb to replace & release old skb */
-       /*  force ppkt->data at 8-byte alignment address */
-       skb_reserve(ppkt, 8 - ((SIZE_PTR)ppkt->data & 7));
-       /*  force ip_hdr at 8-byte alignment address according to shift_sz */
-       skb_reserve(ppkt, shift_sz);
-
-       /*  copy data to new pkt */
-       memcpy(skb_put(ppkt, pfhdr->len), pfhdr->rx_data, pfhdr->len);
-
-       dev_kfree_skb_any(pfhdr->pkt);
-
-       /*  attach new pkt to recvframe */
-       pfhdr->pkt = ppkt;
-       pfhdr->rx_head = ppkt->head;
-       pfhdr->rx_data = ppkt->data;
-       pfhdr->rx_tail = skb_tail_pointer(ppkt);
-       pfhdr->rx_end = skb_end_pointer(ppkt);
-}
-#endif
-
 /* perform defrag */
 union recv_frame * recvframe_defrag(_adapter *adapter,_queue *defrag_q);
 union recv_frame * recvframe_defrag(_adapter *adapter,_queue *defrag_q)
@@ -2231,12 +2129,6 @@ _func_enter_;
                return NULL;
        }
 
-#if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI)
-#ifndef CONFIG_SDIO_RX_COPY
-       recvframe_expand_pkt(adapter, prframe);
-#endif
-#endif
-
        curfragnum++;
 
        plist= get_list_head(defrag_q);
@@ -2355,10 +2247,10 @@ _func_enter_;
 
                        /* Then enqueue the 0~(n-1) fragment into the defrag_q */
 
-                       /* _rtw_spinlock(&pdefrag_q->lock); */
+                       /* spin_lock(&pdefrag_q->lock); */
                        phead = get_list_head(pdefrag_q);
                        rtw_list_insert_tail(&pfhdr->list, phead);
-                       /* _rtw_spinunlock(&pdefrag_q->lock); */
+                       /* spin_unlock(&pdefrag_q->lock); */
 
                        RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("Enqueuq: ismfrag = %d, fragnum= %d\n", ismfrag,fragnum));
 
@@ -2381,10 +2273,10 @@ _func_enter_;
                /* enqueue the last fragment */
                if(pdefrag_q != NULL)
                {
-                       /* _rtw_spinlock(&pdefrag_q->lock); */
+                       /* spin_lock(&pdefrag_q->lock); */
                        phead = get_list_head(pdefrag_q);
                        rtw_list_insert_tail(&pfhdr->list,phead);
-                       /* _rtw_spinunlock(&pdefrag_q->lock); */
+                       /* spin_unlock(&pdefrag_q->lock); */
 
                        /* call recvframe_defrag to defrag */
                        RT_TRACE(_module_rtl871x_recv_c_,_drv_info_,("defrag: ismfrag = %d, fragnum= %d\n", ismfrag, fragnum));
@@ -2531,9 +2423,9 @@ int amsdu_to_msdu(_adapter *padapter, union recv_frame *prframe)
                eth_type = (sub_skb->data[6] << 8) | sub_skb->data[7];
 #endif /*  ENDIAN_FREE */
                if (sub_skb->len >= 8 &&
-                       ((_rtw_memcmp(sub_skb->data, rtw_rfc1042_header, SNAP_SIZE) &&
-                         eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) ||
-                        _rtw_memcmp(sub_skb->data, rtw_bridge_tunnel_header, SNAP_SIZE) )) {
+                   ((!memcmp(sub_skb->data, rtw_rfc1042_header, SNAP_SIZE) &&
+                     eth_type != ETH_P_AARP && eth_type != ETH_P_IPX) ||
+                    !memcmp(sub_skb->data, rtw_bridge_tunnel_header, SNAP_SIZE) )) {
                        /* remove RFC1042 or Bridge-Tunnel encapsulation and replace EtherType */
                        skb_pull(sub_skb, SNAP_SIZE);
                        memcpy(skb_push(sub_skb, ETH_ALEN), pattrib->src, ETH_ALEN);
@@ -2675,8 +2567,8 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec
 
        /* DbgPrint("+enqueue_reorder_recvframe()\n"); */
 
-       /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */
-       /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */
+       /* spin_lock_irqsave(&ppending_recvframe_queue->lock); */
+       /* spin_lock_ex(&ppending_recvframe_queue->lock); */
 
        phead = get_list_head(ppending_recvframe_queue);
        plist = get_next(phead);
@@ -2695,7 +2587,7 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec
                        /* Duplicate entry is found!! Do not insert current entry. */
                        /* RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("InsertRxReorderList(): Duplicate packet is dropped!! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, SeqNum)); */
 
-                       /* _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); */
+                       /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */
 
                        return _FALSE;
                }
@@ -2708,15 +2600,15 @@ int enqueue_reorder_recvframe(struct recv_reorder_ctrl *preorder_ctrl, union rec
 
        }
 
-       /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */
-       /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */
+       /* spin_lock_irqsave(&ppending_recvframe_queue->lock); */
+       /* spin_lock_ex(&ppending_recvframe_queue->lock); */
 
        rtw_list_delete(&(prframe->u.hdr.list));
 
        rtw_list_insert_tail(&(prframe->u.hdr.list), plist);
 
-       /* _rtw_spinunlock_ex(&ppending_recvframe_queue->lock); */
-       /* _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); */
+       /* spin_unlock_ex(&ppending_recvframe_queue->lock); */
+       /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */
 
        /* RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("InsertRxReorderList(): Pkt insert into buffer!! IndicateSeq: %d, NewSeq: %d\n", pTS->RxIndicateSeq, SeqNum)); */
        return _TRUE;
@@ -2737,8 +2629,8 @@ int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *pre
 
        /* DbgPrint("+recv_indicatepkts_in_order\n"); */
 
-       /* _enter_critical_ex(&ppending_recvframe_queue->lock, &irql); */
-       /* _rtw_spinlock_ex(&ppending_recvframe_queue->lock); */
+       /* spin_lock_irqsave(&ppending_recvframe_queue->lock); */
+       /* spin_lock_ex(&ppending_recvframe_queue->lock); */
 
        phead =         get_list_head(ppending_recvframe_queue);
        plist = get_next(phead);
@@ -2748,8 +2640,8 @@ int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *pre
        {
                if(rtw_is_list_empty(phead))
                {
-                       /*  _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); */
-                       /* _rtw_spinunlock_ex(&ppending_recvframe_queue->lock); */
+                       /*  spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */
+                       /* spin_unlock_ex(&ppending_recvframe_queue->lock); */
                        return _TRUE;
                }
 
@@ -2824,8 +2716,8 @@ int recv_indicatepkts_in_order(_adapter *padapter, struct recv_reorder_ctrl *pre
 
        }
 
-       /* _rtw_spinunlock_ex(&ppending_recvframe_queue->lock); */
-       /* _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); */
+       /* spin_unlock_ex(&ppending_recvframe_queue->lock); */
+       /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */
 
        return bPktInBuf;
 }
@@ -2924,7 +2816,7 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe)
 
        }
 
-       _enter_critical_bh(&ppending_recvframe_queue->lock, &irql);
+       spin_lock_bh(&ppending_recvframe_queue->lock);
 
        RT_TRACE(_module_rtl871x_recv_c_, _drv_notice_,
                 ("recv_indicatepkt_reorder: indicate=%d seq=%d\n",
@@ -2936,7 +2828,7 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe)
                /* pHTInfo->RxReorderDropCounter++; */
                /* ReturnRFDList(Adapter, pRfd); */
                /* RT_TRACE(COMP_RX_REORDER, DBG_TRACE, ("RxReorderIndicatePacket() ==> Packet Drop!!\n")); */
-               /* _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); */
+               /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */
                /* return _FAIL; */
 
                #ifdef DBG_RX_DROP_FRAME
@@ -2949,7 +2841,7 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe)
        if(!enqueue_reorder_recvframe(preorder_ctrl, prframe))
        {
                /* DbgPrint("recv_indicatepkt_reorder, enqueue_reorder_recvframe fail!\n"); */
-               /* _exit_critical_ex(&ppending_recvframe_queue->lock, &irql); */
+               /* spin_unlock_irqrestore(&ppending_recvframe_queue->lock); */
                /* return _FAIL; */
                #ifdef DBG_RX_DROP_FRAME
                DBG_8723A("DBG_RX_DROP_FRAME %s enqueue_reorder_recvframe fail\n", __FUNCTION__);
@@ -2971,11 +2863,11 @@ int recv_indicatepkt_reorder(_adapter *padapter, union recv_frame *prframe)
        if(recv_indicatepkts_in_order(padapter, preorder_ctrl, _FALSE)==_TRUE)
        {
                _set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME);
-               _exit_critical_bh(&ppending_recvframe_queue->lock, &irql);
+               spin_unlock_bh(&ppending_recvframe_queue->lock);
        }
        else
        {
-               _exit_critical_bh(&ppending_recvframe_queue->lock, &irql);
+               spin_unlock_bh(&ppending_recvframe_queue->lock);
                _cancel_timer_ex(&preorder_ctrl->reordering_ctrl_timer);
        }
 
@@ -2985,7 +2877,7 @@ _success_exit:
 
 _err_exit:
 
-        _exit_critical_bh(&ppending_recvframe_queue->lock, &irql);
+        spin_unlock_bh(&ppending_recvframe_queue->lock);
 
        return _FAIL;
 }
@@ -3004,14 +2896,14 @@ void rtw_reordering_ctrl_timeout_handler(void *pcontext)
 
        /* DBG_8723A("+rtw_reordering_ctrl_timeout_handler()=>\n"); */
 
-       _enter_critical_bh(&ppending_recvframe_queue->lock, &irql);
+       spin_lock_bh(&ppending_recvframe_queue->lock);
 
        if(recv_indicatepkts_in_order(padapter, preorder_ctrl, _TRUE)==_TRUE)
        {
                _set_timer(&preorder_ctrl->reordering_ctrl_timer, REORDER_WAIT_TIME);
        }
 
-       _exit_critical_bh(&ppending_recvframe_queue->lock, &irql);
+       spin_unlock_bh(&ppending_recvframe_queue->lock);
 }
 
 int process_recv_indicatepkts(_adapter *padapter, union recv_frame *prframe);
@@ -3140,8 +3032,9 @@ int recv_func_posthandle(_adapter *padapter, union recv_frame *prframe)
        psnap_type+=pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE;
        pcategory = psnap_type + ETH_TYPE_LEN + PAYLOAD_TYPE_LEN;
 
-       if((_rtw_memcmp(psnap_type, SNAP_ETH_TYPE_TDLS, ETH_TYPE_LEN)) &&
-               ((*pcategory==RTW_WLAN_CATEGORY_TDLS) || (*pcategory==RTW_WLAN_CATEGORY_P2P))){
+       if (!memcmp(psnap_type, SNAP_ETH_TYPE_TDLS, ETH_TYPE_LEN) &&
+           ((*pcategory==RTW_WLAN_CATEGORY_TDLS) ||
+            (*pcategory==RTW_WLAN_CATEGORY_P2P))) {
                ret = OnTDLS(padapter, prframe);        /* all of functions will return _FAIL */
                goto _exit_recv_func;
        }