Commit df47a14c authored by Ivan Safonov's avatar Ivan Safonov Committed by Greg Kroah-Hartman

staging:r8188eu: replace recv_frame->rx_(data|len|tail) with...

staging:r8188eu: replace recv_frame->rx_(data|len|tail) with pkt->(data|len|tail) and remove unused recvframe_(put|pull|pull_tail)()

recv_frame->rx_(data|len|tail) duplicate pkt (skb) data|len|tail members
and require special functions recvframe_(put|pull|pull_tail)()
instead of skb_(put|pull|trim).
Replace rx_(data|len|tail) with pkt->(data|len|tail),
remove rx_(data|len|tail) and remove recvframe_(put|pull|pull_tail)().
Signed-off-by: default avatarIvan Safonov <insafonov@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent e038e67f
...@@ -2053,8 +2053,8 @@ static u8 collect_bss_info(struct adapter *padapter, ...@@ -2053,8 +2053,8 @@ static u8 collect_bss_info(struct adapter *padapter,
u32 len; u32 len;
u8 *p; u8 *p;
u16 val16, subtype; u16 val16, subtype;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
u32 packet_len = precv_frame->len; u32 packet_len = precv_frame->pkt->len;
u8 ie_offset; u8 ie_offset;
struct registry_priv *pregistrypriv = &padapter->registrypriv; struct registry_priv *pregistrypriv = &padapter->registrypriv;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
...@@ -2563,8 +2563,8 @@ static unsigned int OnProbeReq(struct adapter *padapter, ...@@ -2563,8 +2563,8 @@ static unsigned int OnProbeReq(struct adapter *padapter,
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
struct wlan_bssid_ex *cur = &(pmlmeinfo->network); struct wlan_bssid_ex *cur = &(pmlmeinfo->network);
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
uint len = precv_frame->len; uint len = precv_frame->pkt->len;
if (check_fwstate(pmlmepriv, WIFI_STATION_STATE)) if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
return _SUCCESS; return _SUCCESS;
...@@ -2611,8 +2611,8 @@ static unsigned int OnBeacon(struct adapter *padapter, ...@@ -2611,8 +2611,8 @@ static unsigned int OnBeacon(struct adapter *padapter,
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
uint len = precv_frame->len; uint len = precv_frame->pkt->len;
struct wlan_bssid_ex *pbss; struct wlan_bssid_ex *pbss;
int ret = _SUCCESS; int ret = _SUCCESS;
struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network); struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network);
...@@ -2708,8 +2708,8 @@ static unsigned int OnAuth(struct adapter *padapter, ...@@ -2708,8 +2708,8 @@ static unsigned int OnAuth(struct adapter *padapter,
struct security_priv *psecuritypriv = &padapter->securitypriv; struct security_priv *psecuritypriv = &padapter->securitypriv;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
uint len = precv_frame->len; uint len = precv_frame->pkt->len;
if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
return _FAIL; return _FAIL;
...@@ -2871,8 +2871,8 @@ static unsigned int OnAuthClient(struct adapter *padapter, ...@@ -2871,8 +2871,8 @@ static unsigned int OnAuthClient(struct adapter *padapter,
unsigned int go2asoc = 0; unsigned int go2asoc = 0;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
uint pkt_len = precv_frame->len; uint pkt_len = precv_frame->pkt->len;
DBG_88E("%s\n", __func__); DBG_88E("%s\n", __func__);
...@@ -2959,8 +2959,8 @@ static unsigned int OnAssocReq(struct adapter *padapter, ...@@ -2959,8 +2959,8 @@ static unsigned int OnAssocReq(struct adapter *padapter,
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
struct wlan_bssid_ex *cur = &(pmlmeinfo->network); struct wlan_bssid_ex *cur = &(pmlmeinfo->network);
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
uint pkt_len = precv_frame->len; uint pkt_len = precv_frame->pkt->len;
if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE) if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
return _FAIL; return _FAIL;
...@@ -3391,8 +3391,8 @@ static unsigned int OnAssocRsp(struct adapter *padapter, ...@@ -3391,8 +3391,8 @@ static unsigned int OnAssocRsp(struct adapter *padapter,
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
/* struct wlan_bssid_ex *cur_network = &(pmlmeinfo->network); */ /* struct wlan_bssid_ex *cur_network = &(pmlmeinfo->network); */
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
uint pkt_len = precv_frame->len; uint pkt_len = precv_frame->pkt->len;
DBG_88E("%s\n", __func__); DBG_88E("%s\n", __func__);
...@@ -3476,7 +3476,7 @@ static unsigned int OnDeAuth(struct adapter *padapter, ...@@ -3476,7 +3476,7 @@ static unsigned int OnDeAuth(struct adapter *padapter,
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network); struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network);
/* check A3 */ /* check A3 */
...@@ -3531,7 +3531,7 @@ static unsigned int OnDisassoc(struct adapter *padapter, ...@@ -3531,7 +3531,7 @@ static unsigned int OnDisassoc(struct adapter *padapter,
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network); struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network);
/* check A3 */ /* check A3 */
...@@ -3590,7 +3590,7 @@ static unsigned int on_action_spct(struct adapter *padapter, ...@@ -3590,7 +3590,7 @@ static unsigned int on_action_spct(struct adapter *padapter,
{ {
struct sta_info *psta = NULL; struct sta_info *psta = NULL;
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr); u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
u8 category; u8 category;
u8 action; u8 action;
...@@ -3646,7 +3646,7 @@ static unsigned int OnAction_back(struct adapter *padapter, ...@@ -3646,7 +3646,7 @@ static unsigned int OnAction_back(struct adapter *padapter,
unsigned short tid, status, reason_code = 0; unsigned short tid, status, reason_code = 0;
struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &padapter->mlmeextpriv;
struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info); struct mlme_ext_info *pmlmeinfo = &(pmlmeext->mlmext_info);
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
/* check RA matches or not */ /* check RA matches or not */
if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe), if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe),
...@@ -3719,7 +3719,7 @@ static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token) ...@@ -3719,7 +3719,7 @@ static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
{ {
struct adapter *adapter = recv_frame->adapter; struct adapter *adapter = recv_frame->adapter;
struct mlme_ext_priv *mlmeext = &(adapter->mlmeextpriv); struct mlme_ext_priv *mlmeext = &(adapter->mlmeextpriv);
u8 *frame = recv_frame->rx_data; u8 *frame = recv_frame->pkt->data;
u16 seq_ctrl = ((recv_frame->attrib.seq_num&0xffff) << 4) | u16 seq_ctrl = ((recv_frame->attrib.seq_num&0xffff) << 4) |
(recv_frame->attrib.frag_num & 0xf); (recv_frame->attrib.frag_num & 0xf);
...@@ -3749,7 +3749,7 @@ static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token) ...@@ -3749,7 +3749,7 @@ static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
static unsigned int on_action_public_p2p(struct recv_frame *precv_frame) static unsigned int on_action_public_p2p(struct recv_frame *precv_frame)
{ {
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
u8 *frame_body; u8 *frame_body;
u8 dialogToken = 0; u8 dialogToken = 0;
...@@ -3765,7 +3765,7 @@ static unsigned int on_action_public_p2p(struct recv_frame *precv_frame) ...@@ -3765,7 +3765,7 @@ static unsigned int on_action_public_p2p(struct recv_frame *precv_frame)
static unsigned int on_action_public_vendor(struct recv_frame *precv_frame) static unsigned int on_action_public_vendor(struct recv_frame *precv_frame)
{ {
unsigned int ret = _FAIL; unsigned int ret = _FAIL;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr); u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
if (!memcmp(frame_body + 2, P2P_OUI, 4)) if (!memcmp(frame_body + 2, P2P_OUI, 4))
...@@ -3777,7 +3777,7 @@ static unsigned int on_action_public_vendor(struct recv_frame *precv_frame) ...@@ -3777,7 +3777,7 @@ static unsigned int on_action_public_vendor(struct recv_frame *precv_frame)
static unsigned int on_action_public_default(struct recv_frame *precv_frame, u8 action) static unsigned int on_action_public_default(struct recv_frame *precv_frame, u8 action)
{ {
unsigned int ret = _FAIL; unsigned int ret = _FAIL;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr); u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
u8 token; u8 token;
...@@ -3796,7 +3796,7 @@ static unsigned int on_action_public(struct adapter *padapter, ...@@ -3796,7 +3796,7 @@ static unsigned int on_action_public(struct adapter *padapter,
struct recv_frame *precv_frame) struct recv_frame *precv_frame)
{ {
unsigned int ret = _FAIL; unsigned int ret = _FAIL;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr); u8 *frame_body = pframe + sizeof(struct ieee80211_hdr_3addr);
u8 category, action; u8 category, action;
...@@ -3867,7 +3867,7 @@ static unsigned int OnAction(struct adapter *padapter, ...@@ -3867,7 +3867,7 @@ static unsigned int OnAction(struct adapter *padapter,
unsigned char category; unsigned char category;
struct action_handler *ptable; struct action_handler *ptable;
unsigned char *frame_body; unsigned char *frame_body;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
frame_body = (unsigned char *)(pframe + sizeof(struct ieee80211_hdr_3addr)); frame_body = (unsigned char *)(pframe + sizeof(struct ieee80211_hdr_3addr));
...@@ -4123,7 +4123,7 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext) ...@@ -4123,7 +4123,7 @@ void free_mlme_ext_priv(struct mlme_ext_priv *pmlmeext)
static void _mgt_dispatcher(struct adapter *padapter, struct mlme_handler *ptable, struct 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 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
if (ptable->func) { if (ptable->func) {
/* receive the frames that ra(a1) is my address or ra(a1) is bc address. */ /* receive the frames that ra(a1) is my address or ra(a1) is bc address. */
...@@ -4142,7 +4142,7 @@ void mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame) ...@@ -4142,7 +4142,7 @@ void mgt_dispatcher(struct adapter *padapter, struct recv_frame *precv_frame)
struct mlme_priv *pmlmepriv = &padapter->mlmepriv; struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
#endif /* CONFIG_88EU_AP_MODE */ #endif /* CONFIG_88EU_AP_MODE */
u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; u8 bc_addr[ETH_ALEN] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff};
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(pframe)); struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(pframe));
RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_, RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
......
...@@ -80,7 +80,6 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter) ...@@ -80,7 +80,6 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter)
&(precvpriv->free_recv_queue.queue)); &(precvpriv->free_recv_queue.queue));
precvframe->pkt = NULL; precvframe->pkt = NULL;
precvframe->len = 0;
precvframe->adapter = padapter; precvframe->adapter = padapter;
precvframe++; precvframe++;
...@@ -149,8 +148,6 @@ int rtw_free_recvframe(struct recv_frame *precvframe, ...@@ -149,8 +148,6 @@ int rtw_free_recvframe(struct recv_frame *precvframe,
list_del_init(&(precvframe->list)); list_del_init(&(precvframe->list));
precvframe->len = 0;
list_add_tail(&(precvframe->list), get_list_head(pfree_recv_queue)); list_add_tail(&(precvframe->list), get_list_head(pfree_recv_queue));
spin_unlock_bh(&pfree_recv_queue->lock); spin_unlock_bh(&pfree_recv_queue->lock);
...@@ -262,9 +259,9 @@ static int recvframe_chkmic(struct adapter *adapter, ...@@ -262,9 +259,9 @@ static int recvframe_chkmic(struct adapter *adapter,
} }
/* icv_len included the mic code */ /* icv_len included the mic code */
datalen = precvframe->len-prxattrib->hdrlen - datalen = precvframe->pkt->len-prxattrib->hdrlen -
prxattrib->iv_len-prxattrib->icv_len-8; prxattrib->iv_len-prxattrib->icv_len-8;
pframe = precvframe->rx_data; pframe = precvframe->pkt->data;
payload = pframe+prxattrib->hdrlen+prxattrib->iv_len; 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)); RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("\n prxattrib->iv_len=%d prxattrib->icv_len=%d\n", prxattrib->iv_len, prxattrib->icv_len));
...@@ -300,24 +297,24 @@ static int recvframe_chkmic(struct adapter *adapter, ...@@ -300,24 +297,24 @@ static int recvframe_chkmic(struct adapter *adapter,
RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, RT_TRACE(_module_rtl871x_recv_c_, _drv_err_,
("\n ======demp packet (len=%d)======\n", ("\n ======demp packet (len=%d)======\n",
precvframe->len)); precvframe->pkt->len));
for (i = 0; i < precvframe->len; i += 8) { for (i = 0; i < precvframe->pkt->len; i += 8) {
RT_TRACE(_module_rtl871x_recv_c_, RT_TRACE(_module_rtl871x_recv_c_,
_drv_err_, _drv_err_,
("0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x", ("0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x:0x%02x",
*(precvframe->rx_data+i), *(precvframe->pkt->data+i),
*(precvframe->rx_data+i+1), *(precvframe->pkt->data+i+1),
*(precvframe->rx_data+i+2), *(precvframe->pkt->data+i+2),
*(precvframe->rx_data+i+3), *(precvframe->pkt->data+i+3),
*(precvframe->rx_data+i+4), *(precvframe->pkt->data+i+4),
*(precvframe->rx_data+i+5), *(precvframe->pkt->data+i+5),
*(precvframe->rx_data+i+6), *(precvframe->pkt->data+i+6),
*(precvframe->rx_data+i+7))); *(precvframe->pkt->data+i+7)));
} }
RT_TRACE(_module_rtl871x_recv_c_, RT_TRACE(_module_rtl871x_recv_c_,
_drv_err_, _drv_err_,
("\n ====== demp packet end [len=%d]======\n", ("\n ====== demp packet end [len=%d]======\n",
precvframe->len)); precvframe->pkt->len));
RT_TRACE(_module_rtl871x_recv_c_, RT_TRACE(_module_rtl871x_recv_c_,
_drv_err_, _drv_err_,
("\n hrdlen=%d,\n", ("\n hrdlen=%d,\n",
...@@ -354,7 +351,7 @@ static int recvframe_chkmic(struct adapter *adapter, ...@@ -354,7 +351,7 @@ static int recvframe_chkmic(struct adapter *adapter,
RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("recvframe_chkmic: rtw_get_stainfo==NULL!!!\n")); RT_TRACE(_module_rtl871x_recv_c_, _drv_err_, ("recvframe_chkmic: rtw_get_stainfo==NULL!!!\n"));
} }
recvframe_pull_tail(precvframe, 8); skb_trim(precvframe->pkt, precvframe->pkt->len - 8);
} }
exit: exit:
...@@ -374,7 +371,7 @@ static struct recv_frame *decryptor(struct adapter *padapter, ...@@ -374,7 +371,7 @@ static struct recv_frame *decryptor(struct adapter *padapter,
RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("prxstat->decrypted=%x prxattrib->encrypt=0x%03x\n", prxattrib->bdecrypted, prxattrib->encrypt)); RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, ("prxstat->decrypted=%x prxattrib->encrypt=0x%03x\n", prxattrib->bdecrypted, prxattrib->encrypt));
if (prxattrib->encrypt > 0) { if (prxattrib->encrypt > 0) {
u8 *iv = precv_frame->rx_data+prxattrib->hdrlen; u8 *iv = precv_frame->pkt->data+prxattrib->hdrlen;
prxattrib->key_index = (((iv[3])>>6)&0x3); prxattrib->key_index = (((iv[3])>>6)&0x3);
...@@ -443,7 +440,7 @@ static struct recv_frame *portctrl(struct adapter *adapter, ...@@ -443,7 +440,7 @@ static struct recv_frame *portctrl(struct adapter *adapter,
auth_alg = adapter->securitypriv.dot11AuthAlgrthm; auth_alg = adapter->securitypriv.dot11AuthAlgrthm;
ptr = precv_frame->rx_data; ptr = precv_frame->pkt->data;
pfhdr = precv_frame; pfhdr = precv_frame;
pattrib = &pfhdr->attrib; pattrib = &pfhdr->attrib;
psta_addr = pattrib->ta; psta_addr = pattrib->ta;
...@@ -532,7 +529,7 @@ static void process_pwrbit_data(struct adapter *padapter, ...@@ -532,7 +529,7 @@ static void process_pwrbit_data(struct adapter *padapter,
{ {
#ifdef CONFIG_88EU_AP_MODE #ifdef CONFIG_88EU_AP_MODE
unsigned char pwrbit; unsigned char pwrbit;
u8 *ptr = precv_frame->rx_data; u8 *ptr = precv_frame->pkt->data;
struct rx_pkt_attrib *pattrib = &precv_frame->attrib; struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
struct sta_info *psta = NULL; struct sta_info *psta = NULL;
...@@ -620,7 +617,7 @@ static void count_rx_stats(struct adapter *padapter, ...@@ -620,7 +617,7 @@ static void count_rx_stats(struct adapter *padapter,
struct rx_pkt_attrib *pattrib = &prframe->attrib; struct rx_pkt_attrib *pattrib = &prframe->attrib;
struct recv_priv *precvpriv = &padapter->recvpriv; struct recv_priv *precvpriv = &padapter->recvpriv;
sz = prframe->len; sz = prframe->pkt->len;
precvpriv->rx_bytes += sz; precvpriv->rx_bytes += sz;
padapter->mlmepriv.LinkDetectInfo.NumRxOkInPeriod++; padapter->mlmepriv.LinkDetectInfo.NumRxOkInPeriod++;
...@@ -729,7 +726,7 @@ static int ap2sta_data_frame( ...@@ -729,7 +726,7 @@ static int ap2sta_data_frame(
struct recv_frame *precv_frame, struct recv_frame *precv_frame,
struct sta_info **psta) struct sta_info **psta)
{ {
u8 *ptr = precv_frame->rx_data; u8 *ptr = precv_frame->pkt->data;
struct rx_pkt_attrib *pattrib = &precv_frame->attrib; struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
int ret = _SUCCESS; int ret = _SUCCESS;
struct sta_priv *pstapriv = &adapter->stapriv; struct sta_priv *pstapriv = &adapter->stapriv;
...@@ -822,7 +819,7 @@ static int sta2ap_data_frame(struct adapter *adapter, ...@@ -822,7 +819,7 @@ static int sta2ap_data_frame(struct adapter *adapter,
struct rx_pkt_attrib *pattrib = &precv_frame->attrib; struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
struct sta_priv *pstapriv = &adapter->stapriv; struct sta_priv *pstapriv = &adapter->stapriv;
struct mlme_priv *pmlmepriv = &adapter->mlmepriv; struct mlme_priv *pmlmepriv = &adapter->mlmepriv;
u8 *ptr = precv_frame->rx_data; u8 *ptr = precv_frame->pkt->data;
unsigned char *mybssid = get_bssid(pmlmepriv); unsigned char *mybssid = get_bssid(pmlmepriv);
int ret = _SUCCESS; int ret = _SUCCESS;
...@@ -879,7 +876,7 @@ static int validate_recv_ctrl_frame(struct adapter *padapter, ...@@ -879,7 +876,7 @@ static int validate_recv_ctrl_frame(struct adapter *padapter,
#ifdef CONFIG_88EU_AP_MODE #ifdef CONFIG_88EU_AP_MODE
struct rx_pkt_attrib *pattrib = &precv_frame->attrib; struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
struct sta_priv *pstapriv = &padapter->stapriv; struct sta_priv *pstapriv = &padapter->stapriv;
u8 *pframe = precv_frame->rx_data; u8 *pframe = precv_frame->pkt->data;
if (GetFrameType(pframe) != WIFI_CTRL_TYPE) if (GetFrameType(pframe) != WIFI_CTRL_TYPE)
return _FAIL; return _FAIL;
...@@ -1016,19 +1013,19 @@ static int validate_recv_mgnt_frame(struct adapter *padapter, ...@@ -1016,19 +1013,19 @@ static int validate_recv_mgnt_frame(struct adapter *padapter,
/* for rx pkt statistics */ /* for rx pkt statistics */
psta = rtw_get_stainfo(&padapter->stapriv, psta = rtw_get_stainfo(&padapter->stapriv,
GetAddr2Ptr(precv_frame->rx_data)); GetAddr2Ptr(precv_frame->pkt->data));
if (psta) { if (psta) {
psta->sta_stats.rx_mgnt_pkts++; psta->sta_stats.rx_mgnt_pkts++;
if (GetFrameSubType(precv_frame->rx_data) == WIFI_BEACON) { if (GetFrameSubType(precv_frame->pkt->data) == WIFI_BEACON) {
psta->sta_stats.rx_beacon_pkts++; psta->sta_stats.rx_beacon_pkts++;
} else if (GetFrameSubType(precv_frame->rx_data) == WIFI_PROBEREQ) { } else if (GetFrameSubType(precv_frame->pkt->data) == WIFI_PROBEREQ) {
psta->sta_stats.rx_probereq_pkts++; psta->sta_stats.rx_probereq_pkts++;
} else if (GetFrameSubType(precv_frame->rx_data) == WIFI_PROBERSP) { } else if (GetFrameSubType(precv_frame->pkt->data) == WIFI_PROBERSP) {
if (!memcmp(padapter->eeprompriv.mac_addr, if (!memcmp(padapter->eeprompriv.mac_addr,
GetAddr1Ptr(precv_frame->rx_data), ETH_ALEN)) GetAddr1Ptr(precv_frame->pkt->data), ETH_ALEN))
psta->sta_stats.rx_probersp_pkts++; psta->sta_stats.rx_probersp_pkts++;
else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->rx_data)) || else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->pkt->data)) ||
is_multicast_mac_addr(GetAddr1Ptr(precv_frame->rx_data))) is_multicast_mac_addr(GetAddr1Ptr(precv_frame->pkt->data)))
psta->sta_stats.rx_probersp_bm_pkts++; psta->sta_stats.rx_probersp_bm_pkts++;
else else
psta->sta_stats.rx_probersp_uo_pkts++; psta->sta_stats.rx_probersp_uo_pkts++;
...@@ -1046,7 +1043,7 @@ static int validate_recv_data_frame(struct adapter *adapter, ...@@ -1046,7 +1043,7 @@ static int validate_recv_data_frame(struct adapter *adapter,
u8 bretry; u8 bretry;
u8 *psa, *pda, *pbssid; u8 *psa, *pda, *pbssid;
struct sta_info *psta = NULL; struct sta_info *psta = NULL;
u8 *ptr = precv_frame->rx_data; u8 *ptr = precv_frame->pkt->data;
struct rx_pkt_attrib *pattrib = &precv_frame->attrib; struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
struct security_priv *psecuritypriv = &adapter->securitypriv; struct security_priv *psecuritypriv = &adapter->securitypriv;
int ret = _SUCCESS; int ret = _SUCCESS;
...@@ -1168,7 +1165,7 @@ static int validate_recv_frame(struct adapter *adapter, ...@@ -1168,7 +1165,7 @@ static int validate_recv_frame(struct adapter *adapter,
int retval = _SUCCESS; int retval = _SUCCESS;
u8 bDumpRxPkt; u8 bDumpRxPkt;
struct rx_pkt_attrib *pattrib = &precv_frame->attrib; struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
u8 *ptr = precv_frame->rx_data; u8 *ptr = precv_frame->pkt->data;
u8 ver = (unsigned char)(*ptr)&0x3; u8 ver = (unsigned char)(*ptr)&0x3;
struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv; struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;
...@@ -1282,11 +1279,11 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe) ...@@ -1282,11 +1279,11 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe)
u8 *psnap_type; u8 *psnap_type;
struct ieee80211_snap_hdr *psnap; struct ieee80211_snap_hdr *psnap;
u8 *ptr = precvframe->rx_data; u8 *ptr = precvframe->pkt->data;
struct rx_pkt_attrib *pattrib = &precvframe->attrib; struct rx_pkt_attrib *pattrib = &precvframe->attrib;
if (pattrib->encrypt) if (pattrib->encrypt)
recvframe_pull_tail(precvframe, pattrib->icv_len); skb_trim(precvframe->pkt, precvframe->pkt->len - pattrib->icv_len);
psnap = (struct ieee80211_snap_hdr *)(ptr+pattrib->hdrlen + pattrib->iv_len); psnap = (struct ieee80211_snap_hdr *)(ptr+pattrib->hdrlen + pattrib->iv_len);
psnap_type = ptr+pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE; psnap_type = ptr+pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE;
...@@ -1303,7 +1300,7 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe) ...@@ -1303,7 +1300,7 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe)
} }
rmv_len = pattrib->hdrlen + pattrib->iv_len + (bsnaphdr ? SNAP_SIZE : 0); rmv_len = pattrib->hdrlen + pattrib->iv_len + (bsnaphdr ? SNAP_SIZE : 0);
len = precvframe->len - rmv_len; len = precvframe->pkt->len - rmv_len;
RT_TRACE(_module_rtl871x_recv_c_, _drv_info_, RT_TRACE(_module_rtl871x_recv_c_, _drv_info_,
("\n===pattrib->hdrlen: %x, pattrib->iv_len:%x===\n\n", pattrib->hdrlen, pattrib->iv_len)); ("\n===pattrib->hdrlen: %x, pattrib->iv_len:%x===\n\n", pattrib->hdrlen, pattrib->iv_len));
...@@ -1312,7 +1309,7 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe) ...@@ -1312,7 +1309,7 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe)
eth_type = ntohs(be_tmp); /* pattrib->ether_type */ eth_type = ntohs(be_tmp); /* pattrib->ether_type */
pattrib->eth_type = eth_type; pattrib->eth_type = eth_type;
ptr = recvframe_pull(precvframe, (rmv_len-sizeof(struct ethhdr) + (bsnaphdr ? 2 : 0))); ptr = skb_pull(precvframe->pkt, rmv_len - sizeof(struct ethhdr) + (bsnaphdr ? 2 : 0));
if (!ptr) if (!ptr)
return _FAIL; return _FAIL;
...@@ -1383,15 +1380,16 @@ static struct recv_frame *recvframe_defrag(struct adapter *adapter, ...@@ -1383,15 +1380,16 @@ static struct recv_frame *recvframe_defrag(struct adapter *adapter,
wlanhdr_offset = pnfhdr->attrib.hdrlen + pnfhdr->attrib.iv_len; wlanhdr_offset = pnfhdr->attrib.hdrlen + pnfhdr->attrib.iv_len;
recvframe_pull(pnextrframe, wlanhdr_offset); skb_pull(pnextrframe->pkt, wlanhdr_offset);
/* append to first fragment frame's tail (if privacy frame, pull the ICV) */ /* append to first fragment frame's tail (if privacy frame, pull the ICV) */
recvframe_pull_tail(prframe, pfhdr->attrib.icv_len); skb_trim(prframe->pkt, prframe->pkt->len - pfhdr->attrib.icv_len);
/* memcpy */ /* memcpy */
memcpy(pfhdr->rx_tail, pnfhdr->rx_data, pnfhdr->len); memcpy(skb_tail_pointer(pfhdr->pkt), pnfhdr->pkt->data,
pnfhdr->pkt->len);
recvframe_put(prframe, pnfhdr->len); skb_put(prframe->pkt, pnfhdr->pkt->len);
pfhdr->attrib.icv_len = pnfhdr->attrib.icv_len; pfhdr->attrib.icv_len = pnfhdr->attrib.icv_len;
plist = plist->next; plist = plist->next;
...@@ -1432,7 +1430,7 @@ struct recv_frame *recvframe_chk_defrag(struct adapter *padapter, ...@@ -1432,7 +1430,7 @@ struct recv_frame *recvframe_chk_defrag(struct adapter *padapter,
psta_addr = pfhdr->attrib.ta; psta_addr = pfhdr->attrib.ta;
psta = rtw_get_stainfo(pstapriv, psta_addr); psta = rtw_get_stainfo(pstapriv, psta_addr);
if (psta == NULL) { if (psta == NULL) {
u8 type = GetFrameType(pfhdr->rx_data); u8 type = GetFrameType(pfhdr->pkt->data);
if (type != WIFI_DATA_TYPE) { if (type != WIFI_DATA_TYPE) {
psta = rtw_get_bcmc_stainfo(padapter); psta = rtw_get_bcmc_stainfo(padapter);
...@@ -1520,14 +1518,14 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe) ...@@ -1520,14 +1518,14 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe)
nr_subframes = 0; nr_subframes = 0;
pattrib = &prframe->attrib; pattrib = &prframe->attrib;
recvframe_pull(prframe, prframe->attrib.hdrlen); skb_pull(prframe->pkt, prframe->attrib.hdrlen);
if (prframe->attrib.iv_len > 0) if (prframe->attrib.iv_len > 0)
recvframe_pull(prframe, prframe->attrib.iv_len); skb_pull(prframe->pkt, prframe->attrib.iv_len);
a_len = prframe->len; a_len = prframe->pkt->len;
pdata = prframe->rx_data; pdata = prframe->pkt->data;
while (a_len > ETH_HLEN) { while (a_len > ETH_HLEN) {
/* Offset 12 denote 2 mac address */ /* Offset 12 denote 2 mac address */
...@@ -1614,8 +1612,6 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe) ...@@ -1614,8 +1612,6 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe)
} }
exit: exit:
prframe->len = 0;
rtw_free_recvframe(prframe, pfree_recv_queue);/* free this recv_frame */ rtw_free_recvframe(prframe, pfree_recv_queue);/* free this recv_frame */
return _SUCCESS; return _SUCCESS;
......
...@@ -208,7 +208,7 @@ void rtw_wep_decrypt(struct adapter *padapter, u8 *precvframe) ...@@ -208,7 +208,7 @@ void rtw_wep_decrypt(struct adapter *padapter, u8 *precvframe)
struct security_priv *psecuritypriv = &padapter->securitypriv; struct security_priv *psecuritypriv = &padapter->securitypriv;
pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data; pframe = (unsigned char *)((struct recv_frame *)precvframe)->pkt->data;
/* start to decrypt recvframe */ /* start to decrypt recvframe */
if ((prxattrib->encrypt == _WEP40_) || (prxattrib->encrypt == _WEP104_)) { if ((prxattrib->encrypt == _WEP40_) || (prxattrib->encrypt == _WEP104_)) {
...@@ -217,7 +217,7 @@ void rtw_wep_decrypt(struct adapter *padapter, u8 *precvframe) ...@@ -217,7 +217,7 @@ void rtw_wep_decrypt(struct adapter *padapter, u8 *precvframe)
keylength = psecuritypriv->dot11DefKeylen[keyindex]; keylength = psecuritypriv->dot11DefKeylen[keyindex];
memcpy(&wepkey[0], iv, 3); memcpy(&wepkey[0], iv, 3);
memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0], keylength); memcpy(&wepkey[3], &psecuritypriv->dot11DefKey[keyindex].skey[0], keylength);
length = ((struct recv_frame *)precvframe)->len-prxattrib->hdrlen-prxattrib->iv_len; length = ((struct recv_frame *)precvframe)->pkt->len-prxattrib->hdrlen-prxattrib->iv_len;
payload = pframe+prxattrib->iv_len+prxattrib->hdrlen; payload = pframe+prxattrib->iv_len+prxattrib->hdrlen;
...@@ -659,7 +659,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe) ...@@ -659,7 +659,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
u32 res = _SUCCESS; u32 res = _SUCCESS;
pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data; pframe = (unsigned char *)((struct recv_frame *)precvframe)->pkt->data;
/* 4 start to decrypt recvframe */ /* 4 start to decrypt recvframe */
if (prxattrib->encrypt == _TKIP_) { if (prxattrib->encrypt == _TKIP_) {
...@@ -679,7 +679,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe) ...@@ -679,7 +679,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
iv = pframe+prxattrib->hdrlen; iv = pframe+prxattrib->hdrlen;
payload = pframe+prxattrib->iv_len+prxattrib->hdrlen; payload = pframe+prxattrib->iv_len+prxattrib->hdrlen;
length = ((struct recv_frame *)precvframe)->len-prxattrib->hdrlen-prxattrib->iv_len; length = ((struct recv_frame *)precvframe)->pkt->len-prxattrib->hdrlen-prxattrib->iv_len;
GET_TKIP_PN(iv, dot11txpn); GET_TKIP_PN(iv, dot11txpn);
...@@ -1470,7 +1470,7 @@ u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe) ...@@ -1470,7 +1470,7 @@ u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
struct security_priv *psecuritypriv = &padapter->securitypriv; struct security_priv *psecuritypriv = &padapter->securitypriv;
u32 res = _SUCCESS; u32 res = _SUCCESS;
pframe = (unsigned char *)((struct recv_frame *)precvframe)->rx_data; pframe = (unsigned char *)((struct recv_frame *)precvframe)->pkt->data;
/* 4 start to encrypt each fragment */ /* 4 start to encrypt each fragment */
if (prxattrib->encrypt == _AES_) { if (prxattrib->encrypt == _AES_) {
stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]); stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
...@@ -1494,7 +1494,7 @@ u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe) ...@@ -1494,7 +1494,7 @@ u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
} else { } else {
prwskey = &stainfo->dot118021x_UncstKey.skey[0]; prwskey = &stainfo->dot118021x_UncstKey.skey[0];
} }
length = ((struct recv_frame *)precvframe)->len-prxattrib->hdrlen-prxattrib->iv_len; length = ((struct recv_frame *)precvframe)->pkt->len-prxattrib->hdrlen-prxattrib->iv_len;
res = aes_decipher(prwskey, prxattrib->hdrlen, pframe, length); res = aes_decipher(prwskey, prxattrib->hdrlen, pframe, length);
} else { } else {
RT_TRACE(_module_rtl871x_security_c_, _drv_err_, ("rtw_aes_encrypt: stainfo==NULL!!!\n")); RT_TRACE(_module_rtl871x_security_c_, _drv_err_, ("rtw_aes_encrypt: stainfo==NULL!!!\n"));
......
...@@ -150,7 +150,7 @@ void update_recvframe_phyinfo_88e(struct recv_frame *precvframe, ...@@ -150,7 +150,7 @@ void update_recvframe_phyinfo_88e(struct recv_frame *precvframe,
pkt_info.bPacketToSelf = false; pkt_info.bPacketToSelf = false;
pkt_info.bPacketBeacon = false; pkt_info.bPacketBeacon = false;
wlanhdr = precvframe->rx_data; wlanhdr = precvframe->pkt->data;
pkt_info.bPacketMatchBSSID = ((!IsFrameTypeCtrl(wlanhdr)) && pkt_info.bPacketMatchBSSID = ((!IsFrameTypeCtrl(wlanhdr)) &&
!pattrib->icv_err && !pattrib->crc_err && !pattrib->icv_err && !pattrib->crc_err &&
......
...@@ -228,9 +228,6 @@ struct recv_frame { ...@@ -228,9 +228,6 @@ struct recv_frame {
struct sk_buff *pkt; struct sk_buff *pkt;
struct adapter *adapter; struct adapter *adapter;
struct rx_pkt_attrib attrib; struct rx_pkt_attrib attrib;
uint len;
u8 *rx_data;
u8 *rx_tail;
struct sta_info *psta; struct sta_info *psta;
/* for A-MPDU Rx reordering buffer control */ /* for A-MPDU Rx reordering buffer control */
struct recv_reorder_ctrl *preorder_ctrl; struct recv_reorder_ctrl *preorder_ctrl;
...@@ -252,65 +249,6 @@ u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter); ...@@ -252,65 +249,6 @@ u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter);
void rtw_reordering_ctrl_timeout_handler(unsigned long data); void rtw_reordering_ctrl_timeout_handler(unsigned long data);
static inline u8 *recvframe_pull(struct recv_frame *precvframe, int sz)
{
/* rx_data += sz; move rx_data sz bytes hereafter */
/* used for extract sz bytes from rx_data, update rx_data and return
* the updated rx_data to the caller */
if (precvframe == NULL)
return NULL;
skb_pull(precvframe->pkt, sz);
precvframe->rx_data += sz;
if (precvframe->rx_data > precvframe->rx_tail) {
precvframe->rx_data -= sz;
return NULL;
}
precvframe->len -= sz;
return precvframe->rx_data;
}
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 */
/* after putting, rx_tail must be still larger than rx_end. */
if (precvframe == NULL)
return NULL;
skb_put(precvframe->pkt, sz);
precvframe->rx_tail += sz;
if (precvframe->rx_tail > precvframe->pkt->end) {
precvframe->rx_tail -= sz;
return NULL;
}
precvframe->len += sz;
return precvframe->rx_tail;
}
static inline u8 *recvframe_pull_tail(struct recv_frame *precvframe, int sz)
{
/* rmv data from rx_tail (by yitsen) */
/* used for extract sz bytes from rx_end, update rx_end and return
* the updated rx_end to the caller */
/* after pulling, rx_end must be still larger than rx_data. */
if (precvframe == NULL)
return NULL;
skb_trim(precvframe->pkt, precvframe->pkt->len - sz);
precvframe->rx_tail -= sz;
if (precvframe->rx_tail < precvframe->rx_data) {
precvframe->rx_tail += sz;
return NULL;
}
precvframe->len -= sz;
return precvframe->rx_tail;
}
static inline s32 translate_percentage_to_dbm(u32 sig_stren_index) static inline s32 translate_percentage_to_dbm(u32 sig_stren_index)
{ {
s32 power; /* in dBm. */ s32 power; /* in dBm. */
......
...@@ -92,8 +92,8 @@ void rtl88eu_mon_recv_hook(struct net_device *dev, struct recv_frame *frame) ...@@ -92,8 +92,8 @@ void rtl88eu_mon_recv_hook(struct net_device *dev, struct recv_frame *frame)
return; return;
attr = &frame->attrib; attr = &frame->attrib;
data = frame->rx_data; data = frame->pkt->data;
data_len = frame->len; data_len = frame->pkt->len;
/* Broadcast and multicast frames don't have attr->{iv,icv}_len set */ /* Broadcast and multicast frames don't have attr->{iv,icv}_len set */
SET_ICE_IV_LEN(iv_len, icv_len, attr->encrypt); SET_ICE_IV_LEN(iv_len, icv_len, attr->encrypt);
......
...@@ -88,12 +88,6 @@ int rtw_recv_indicatepkt(struct adapter *padapter, ...@@ -88,12 +88,6 @@ int rtw_recv_indicatepkt(struct adapter *padapter,
goto _recv_indicatepkt_drop; goto _recv_indicatepkt_drop;
} }
skb->data = precv_frame->rx_data;
skb_set_tail_pointer(skb, precv_frame->len);
skb->len = precv_frame->len;
if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) { if (check_fwstate(pmlmepriv, WIFI_AP_STATE)) {
struct sk_buff *pskb2 = NULL; struct sk_buff *pskb2 = NULL;
struct sta_info *psta = NULL; struct sta_info *psta = NULL;
......
...@@ -73,7 +73,6 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb) ...@@ -73,7 +73,6 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
} }
INIT_LIST_HEAD(&precvframe->list); INIT_LIST_HEAD(&precvframe->list);
precvframe->len = 0;
update_recvframe_attrib_88e(precvframe, prxstat); update_recvframe_attrib_88e(precvframe, prxstat);
...@@ -128,16 +127,13 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb) ...@@ -128,16 +127,13 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
skb_reserve(pkt_copy, 8 - ((size_t)(pkt_copy->data) & 7));/* force pkt_copy->data at 8-byte alignment address */ 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. */ 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); memcpy(pkt_copy->data, (pbuf + pattrib->drvinfo_sz + RXDESC_SIZE), skb_len);
precvframe->rx_tail = pkt_copy->data; skb_put(precvframe->pkt, skb_len);
precvframe->rx_data = pkt_copy->data;
} else { } else {
DBG_88E("recvbuf2recvframe: alloc_skb fail , drop frag frame\n"); DBG_88E("recvbuf2recvframe: alloc_skb fail , drop frag frame\n");
rtw_free_recvframe(precvframe, pfree_recv_queue); rtw_free_recvframe(precvframe, pfree_recv_queue);
goto _exit_recvbuf2recvframe; goto _exit_recvbuf2recvframe;
} }
recvframe_put(precvframe, skb_len);
switch (haldata->UsbRxAggMode) { switch (haldata->UsbRxAggMode) {
case USB_RX_AGG_DMA: case USB_RX_AGG_DMA:
case USB_RX_AGG_MIX: case USB_RX_AGG_MIX:
...@@ -159,19 +155,19 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb) ...@@ -159,19 +155,19 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
} }
} else if (pattrib->pkt_rpt_type == TX_REPORT1) { } else if (pattrib->pkt_rpt_type == TX_REPORT1) {
/* CCX-TXRPT ack for xmit mgmt frames. */ /* CCX-TXRPT ack for xmit mgmt frames. */
handle_txrpt_ccx_88e(adapt, precvframe->rx_data); handle_txrpt_ccx_88e(adapt, precvframe->pkt->data);
rtw_free_recvframe(precvframe, pfree_recv_queue); rtw_free_recvframe(precvframe, pfree_recv_queue);
} else if (pattrib->pkt_rpt_type == TX_REPORT2) { } else if (pattrib->pkt_rpt_type == TX_REPORT2) {
ODM_RA_TxRPT2Handle_8188E( ODM_RA_TxRPT2Handle_8188E(
&haldata->odmpriv, &haldata->odmpriv,
precvframe->rx_data, precvframe->pkt->data,
pattrib->pkt_len, pattrib->pkt_len,
pattrib->MacIDValidEntry[0], pattrib->MacIDValidEntry[0],
pattrib->MacIDValidEntry[1] pattrib->MacIDValidEntry[1]
); );
rtw_free_recvframe(precvframe, pfree_recv_queue); rtw_free_recvframe(precvframe, pfree_recv_queue);
} else if (pattrib->pkt_rpt_type == HIS_REPORT) { } else if (pattrib->pkt_rpt_type == HIS_REPORT) {
interrupt_handler_8188eu(adapt, pattrib->pkt_len, precvframe->rx_data); interrupt_handler_8188eu(adapt, pattrib->pkt_len, precvframe->pkt->data);
rtw_free_recvframe(precvframe, pfree_recv_queue); rtw_free_recvframe(precvframe, pfree_recv_queue);
} }
pkt_cnt--; pkt_cnt--;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment