Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+26 −26
Original line number Diff line number Diff line
@@ -2053,8 +2053,8 @@ static u8 collect_bss_info(struct adapter *padapter,
	u32	len;
	u8 *p;
	u16 val16, subtype;
	u8 *pframe = precv_frame->rx_data;
	u32	packet_len = precv_frame->len;
	u8 *pframe = precv_frame->pkt->data;
	u32 packet_len = precv_frame->pkt->len;
	u8 ie_offset;
	struct registry_priv	*pregistrypriv = &padapter->registrypriv;
	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
@@ -2563,8 +2563,8 @@ static unsigned int OnProbeReq(struct adapter *padapter,
	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->rx_data;
	uint len = precv_frame->len;
	u8 *pframe = precv_frame->pkt->data;
	uint len = precv_frame->pkt->len;

	if (check_fwstate(pmlmepriv, WIFI_STATION_STATE))
		return _SUCCESS;
@@ -2611,8 +2611,8 @@ static unsigned int OnBeacon(struct adapter *padapter,
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	struct mlme_priv *pmlmepriv = &padapter->mlmepriv;
	struct sta_priv	*pstapriv = &padapter->stapriv;
	u8 *pframe = precv_frame->rx_data;
	uint len = precv_frame->len;
	u8 *pframe = precv_frame->pkt->data;
	uint len = precv_frame->pkt->len;
	struct wlan_bssid_ex *pbss;
	int ret = _SUCCESS;
	struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network);
@@ -2708,8 +2708,8 @@ static unsigned int OnAuth(struct adapter *padapter,
	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->rx_data;
	uint len = precv_frame->len;
	u8 *pframe = precv_frame->pkt->data;
	uint len = precv_frame->pkt->len;

	if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
		return _FAIL;
@@ -2871,8 +2871,8 @@ static unsigned int OnAuthClient(struct adapter *padapter,
	unsigned int	go2asoc = 0;
	struct mlme_ext_priv	*pmlmeext = &padapter->mlmeextpriv;
	struct mlme_ext_info	*pmlmeinfo = &(pmlmeext->mlmext_info);
	u8 *pframe = precv_frame->rx_data;
	uint pkt_len = precv_frame->len;
	u8 *pframe = precv_frame->pkt->data;
	uint pkt_len = precv_frame->pkt->len;

	DBG_88E("%s\n", __func__);

@@ -2959,8 +2959,8 @@ static unsigned int OnAssocReq(struct adapter *padapter,
	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->rx_data;
	uint pkt_len = precv_frame->len;
	u8 *pframe = precv_frame->pkt->data;
	uint pkt_len = precv_frame->pkt->len;

	if ((pmlmeinfo->state&0x03) != WIFI_FW_AP_STATE)
		return _FAIL;
@@ -3391,8 +3391,8 @@ static unsigned int OnAssocRsp(struct adapter *padapter,
	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->rx_data;
	uint pkt_len = precv_frame->len;
	u8 *pframe = precv_frame->pkt->data;
	uint pkt_len = precv_frame->pkt->len;

	DBG_88E("%s\n", __func__);

@@ -3476,7 +3476,7 @@ static unsigned int OnDeAuth(struct adapter *padapter,
	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->rx_data;
	u8 *pframe = precv_frame->pkt->data;
	struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network);

	/* check A3 */
@@ -3531,7 +3531,7 @@ static unsigned int OnDisassoc(struct adapter *padapter,
	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->rx_data;
	u8 *pframe = precv_frame->pkt->data;
	struct wlan_bssid_ex *pnetwork = &(pmlmeinfo->network);

	/* check A3 */
@@ -3590,7 +3590,7 @@ static unsigned int on_action_spct(struct adapter *padapter,
{
	struct sta_info *psta = NULL;
	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 category;
	u8 action;
@@ -3646,7 +3646,7 @@ static unsigned int OnAction_back(struct adapter *padapter,
	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->rx_data;
	u8 *pframe = precv_frame->pkt->data;
	struct sta_priv *pstapriv = &padapter->stapriv;
	/* check RA matches or not */
	if (memcmp(myid(&(padapter->eeprompriv)), GetAddr1Ptr(pframe),
@@ -3719,7 +3719,7 @@ static s32 rtw_action_public_decache(struct recv_frame *recv_frame, s32 token)
{
	struct adapter *adapter = recv_frame->adapter;
	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) |
		(recv_frame->attrib.frag_num & 0xf);

@@ -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)
{
	u8 *pframe = precv_frame->rx_data;
	u8 *pframe = precv_frame->pkt->data;
	u8 *frame_body;
	u8 dialogToken = 0;

@@ -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)
{
	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);

	if (!memcmp(frame_body + 2, P2P_OUI, 4))
@@ -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)
{
	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 token;

@@ -3796,7 +3796,7 @@ static unsigned int on_action_public(struct adapter *padapter,
				     struct recv_frame *precv_frame)
{
	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 category, action;

@@ -3867,7 +3867,7 @@ static unsigned int OnAction(struct adapter *padapter,
	unsigned char	category;
	struct action_handler *ptable;
	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));

@@ -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)
{
	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) {
		/* 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)
	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->rx_data;
	u8 *pframe = precv_frame->pkt->data;
	struct sta_info *psta = rtw_get_stainfo(&padapter->stapriv, GetAddr2Ptr(pframe));

	RT_TRACE(_module_rtl871x_mlme_c_, _drv_info_,
+44 −48
Original line number Diff line number Diff line
@@ -80,7 +80,6 @@ int _rtw_init_recv_priv(struct recv_priv *precvpriv, struct adapter *padapter)
				     &(precvpriv->free_recv_queue.queue));

		precvframe->pkt = NULL;
		precvframe->len = 0;

		precvframe->adapter = padapter;
		precvframe++;
@@ -149,8 +148,6 @@ int rtw_free_recvframe(struct recv_frame *precvframe,

	list_del_init(&(precvframe->list));

	precvframe->len = 0;

	list_add_tail(&(precvframe->list), get_list_head(pfree_recv_queue));

	spin_unlock_bh(&pfree_recv_queue->lock);
@@ -262,9 +259,9 @@ static int recvframe_chkmic(struct adapter *adapter,
			}

			/* icv_len included the mic code */
			datalen = precvframe->len-prxattrib->hdrlen -
			datalen = precvframe->pkt->len-prxattrib->hdrlen -
				  prxattrib->iv_len-prxattrib->icv_len-8;
			pframe = precvframe->rx_data;
			pframe = precvframe->pkt->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));
@@ -300,24 +297,24 @@ static int recvframe_chkmic(struct adapter *adapter,

					RT_TRACE(_module_rtl871x_recv_c_, _drv_err_,
						 ("\n ======demp packet (len=%d)======\n",
						 precvframe->len));
					for (i = 0; i < precvframe->len; i += 8) {
						 precvframe->pkt->len));
					for (i = 0; i < precvframe->pkt->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)));
							 *(precvframe->pkt->data+i),
							 *(precvframe->pkt->data+i+1),
							 *(precvframe->pkt->data+i+2),
							 *(precvframe->pkt->data+i+3),
							 *(precvframe->pkt->data+i+4),
							 *(precvframe->pkt->data+i+5),
							 *(precvframe->pkt->data+i+6),
							 *(precvframe->pkt->data+i+7)));
					}
					RT_TRACE(_module_rtl871x_recv_c_,
						 _drv_err_,
						 ("\n ====== demp packet end [len=%d]======\n",
						 precvframe->len));
						 precvframe->pkt->len));
					RT_TRACE(_module_rtl871x_recv_c_,
						 _drv_err_,
						 ("\n hrdlen=%d,\n",
@@ -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"));
		}

		recvframe_pull_tail(precvframe, 8);
		skb_trim(precvframe->pkt, precvframe->pkt->len - 8);
	}

exit:
@@ -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));

	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);

@@ -443,7 +440,7 @@ static struct recv_frame *portctrl(struct adapter *adapter,

	auth_alg = adapter->securitypriv.dot11AuthAlgrthm;

	ptr = precv_frame->rx_data;
	ptr = precv_frame->pkt->data;
	pfhdr = precv_frame;
	pattrib = &pfhdr->attrib;
	psta_addr = pattrib->ta;
@@ -532,7 +529,7 @@ static void process_pwrbit_data(struct adapter *padapter,
{
#ifdef CONFIG_88EU_AP_MODE
	unsigned char pwrbit;
	u8 *ptr = precv_frame->rx_data;
	u8 *ptr = precv_frame->pkt->data;
	struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
	struct sta_priv *pstapriv = &padapter->stapriv;
	struct sta_info *psta = NULL;
@@ -620,7 +617,7 @@ static void count_rx_stats(struct adapter *padapter,
	struct rx_pkt_attrib	*pattrib = &prframe->attrib;
	struct recv_priv	*precvpriv = &padapter->recvpriv;

	sz = prframe->len;
	sz = prframe->pkt->len;
	precvpriv->rx_bytes += sz;

	padapter->mlmepriv.LinkDetectInfo.NumRxOkInPeriod++;
@@ -729,7 +726,7 @@ static int ap2sta_data_frame(
	struct recv_frame *precv_frame,
	struct sta_info **psta)
{
	u8 *ptr = precv_frame->rx_data;
	u8 *ptr = precv_frame->pkt->data;
	struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
	int ret = _SUCCESS;
	struct	sta_priv *pstapriv = &adapter->stapriv;
@@ -822,7 +819,7 @@ static int sta2ap_data_frame(struct adapter *adapter,
	struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
	struct	sta_priv *pstapriv = &adapter->stapriv;
	struct	mlme_priv *pmlmepriv = &adapter->mlmepriv;
	u8 *ptr = precv_frame->rx_data;
	u8 *ptr = precv_frame->pkt->data;
	unsigned char *mybssid  = get_bssid(pmlmepriv);
	int ret = _SUCCESS;

@@ -879,7 +876,7 @@ static int validate_recv_ctrl_frame(struct adapter *padapter,
#ifdef CONFIG_88EU_AP_MODE
	struct rx_pkt_attrib *pattrib = &precv_frame->attrib;
	struct sta_priv *pstapriv = &padapter->stapriv;
	u8 *pframe = precv_frame->rx_data;
	u8 *pframe = precv_frame->pkt->data;

	if (GetFrameType(pframe) != WIFI_CTRL_TYPE)
		return _FAIL;
@@ -1016,19 +1013,19 @@ static int validate_recv_mgnt_frame(struct adapter *padapter,

	/* for rx pkt statistics */
	psta = rtw_get_stainfo(&padapter->stapriv,
			       GetAddr2Ptr(precv_frame->rx_data));
			       GetAddr2Ptr(precv_frame->pkt->data));
	if (psta) {
		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++;
		} else if (GetFrameSubType(precv_frame->rx_data) == WIFI_PROBEREQ) {
		} else if (GetFrameSubType(precv_frame->pkt->data) == WIFI_PROBEREQ) {
			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,
				    GetAddr1Ptr(precv_frame->rx_data), ETH_ALEN))
				    GetAddr1Ptr(precv_frame->pkt->data), ETH_ALEN))
				psta->sta_stats.rx_probersp_pkts++;
			else if (is_broadcast_mac_addr(GetAddr1Ptr(precv_frame->rx_data)) ||
				 is_multicast_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->pkt->data)))
				psta->sta_stats.rx_probersp_bm_pkts++;
			else
				psta->sta_stats.rx_probersp_uo_pkts++;
@@ -1046,7 +1043,7 @@ static int validate_recv_data_frame(struct adapter *adapter,
	u8 bretry;
	u8 *psa, *pda, *pbssid;
	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 security_priv	*psecuritypriv = &adapter->securitypriv;
	int ret = _SUCCESS;
@@ -1168,7 +1165,7 @@ static int validate_recv_frame(struct adapter *adapter,
	int retval = _SUCCESS;
	u8 bDumpRxPkt;
	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;
	struct mlme_ext_priv *pmlmeext = &adapter->mlmeextpriv;

@@ -1282,11 +1279,11 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe)
	u8	*psnap_type;
	struct ieee80211_snap_hdr	*psnap;

	u8 *ptr = precvframe->rx_data;
	u8 *ptr = precvframe->pkt->data;
	struct rx_pkt_attrib *pattrib = &precvframe->attrib;

	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_type = ptr+pattrib->hdrlen + pattrib->iv_len+SNAP_SIZE;
@@ -1303,7 +1300,7 @@ static int wlanhdr_to_ethhdr(struct recv_frame *precvframe)
	}

	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_,
		 ("\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)
	eth_type = ntohs(be_tmp); /* pattrib->ether_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)
		return _FAIL;

@@ -1383,15 +1380,16 @@ static struct recv_frame *recvframe_defrag(struct adapter *adapter,

		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) */
		recvframe_pull_tail(prframe, pfhdr->attrib.icv_len);
		skb_trim(prframe->pkt, prframe->pkt->len - pfhdr->attrib.icv_len);

		/* 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;
		plist = plist->next;
@@ -1432,7 +1430,7 @@ struct recv_frame *recvframe_chk_defrag(struct adapter *padapter,
	psta_addr = pfhdr->attrib.ta;
	psta = rtw_get_stainfo(pstapriv, psta_addr);
	if (psta == NULL) {
		u8 type = GetFrameType(pfhdr->rx_data);
		u8 type = GetFrameType(pfhdr->pkt->data);

		if (type != WIFI_DATA_TYPE) {
			psta = rtw_get_bcmc_stainfo(padapter);
@@ -1520,14 +1518,14 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe)
	nr_subframes = 0;
	pattrib = &prframe->attrib;

	recvframe_pull(prframe, prframe->attrib.hdrlen);
	skb_pull(prframe->pkt, prframe->attrib.hdrlen);

	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) {
		/* Offset 12 denote 2 mac address */
@@ -1614,8 +1612,6 @@ static int amsdu_to_msdu(struct adapter *padapter, struct recv_frame *prframe)
	}

exit:

	prframe->len = 0;
	rtw_free_recvframe(prframe, pfree_recv_queue);/* free this recv_frame */

	return _SUCCESS;
+6 −6
Original line number Diff line number Diff line
@@ -208,7 +208,7 @@ void rtw_wep_decrypt(struct adapter *padapter, u8 *precvframe)
	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 */
	if ((prxattrib->encrypt == _WEP40_) || (prxattrib->encrypt == _WEP104_)) {
@@ -217,7 +217,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 = ((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;

@@ -659,7 +659,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)
	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 */
	if (prxattrib->encrypt == _TKIP_) {
@@ -679,7 +679,7 @@ u32 rtw_tkip_decrypt(struct adapter *padapter, u8 *precvframe)

			iv = pframe+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);

@@ -1470,7 +1470,7 @@ u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
	struct	security_priv	*psecuritypriv = &padapter->securitypriv;
	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 */
	if (prxattrib->encrypt == _AES_) {
		stainfo = rtw_get_stainfo(&padapter->stapriv, &prxattrib->ta[0]);
@@ -1494,7 +1494,7 @@ u32 rtw_aes_decrypt(struct adapter *padapter, u8 *precvframe)
			} else {
				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);
		} else {
			RT_TRACE(_module_rtl871x_security_c_, _drv_err_, ("rtw_aes_encrypt: stainfo==NULL!!!\n"));
+1 −1
Original line number Diff line number Diff line
@@ -150,7 +150,7 @@ void update_recvframe_phyinfo_88e(struct recv_frame *precvframe,
	pkt_info.bPacketToSelf = false;
	pkt_info.bPacketBeacon = false;

	wlanhdr = precvframe->rx_data;
	wlanhdr = precvframe->pkt->data;

	pkt_info.bPacketMatchBSSID = ((!IsFrameTypeCtrl(wlanhdr)) &&
		!pattrib->icv_err && !pattrib->crc_err &&
+0 −62
Original line number Diff line number Diff line
@@ -228,9 +228,6 @@ struct recv_frame {
	struct sk_buff	 *pkt;
	struct adapter  *adapter;
	struct rx_pkt_attrib attrib;
	uint  len;
	u8 *rx_data;
	u8 *rx_tail;
	struct sta_info *psta;
	/* for A-MPDU Rx reordering buffer control */
	struct recv_reorder_ctrl *preorder_ctrl;
@@ -252,65 +249,6 @@ u32 rtw_free_uc_swdec_pending_queue(struct adapter *adapter);

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)
{
	s32	power; /*  in dBm. */
Loading