mirror of
https://github.com/lwfinger/rtl8188eu.git
synced 2025-05-08 22:43:04 +00:00
rtl8188eu: Change union recv_frame to struct
Signed-off-by: Larry Finger <Larry.Finger@lwfinger.net>
This commit is contained in:
parent
89efde68f8
commit
7fd86158bf
11 changed files with 377 additions and 381 deletions
|
@ -23,9 +23,9 @@
|
|||
#include <drv_types.h>
|
||||
#include <rtl8188e_hal.h>
|
||||
|
||||
static void process_rssi(struct adapter *padapter, union recv_frame *prframe)
|
||||
static void process_rssi(struct adapter *padapter, struct recv_frame *prframe)
|
||||
{
|
||||
struct rx_pkt_attrib *pattrib = &prframe->u.hdr.attrib;
|
||||
struct rx_pkt_attrib *pattrib = &prframe->attrib;
|
||||
struct signal_stat *signal_stat = &padapter->recvpriv.signal_strength_data;
|
||||
|
||||
if (signal_stat->update_req) {
|
||||
|
@ -39,7 +39,7 @@ static void process_rssi(struct adapter *padapter, union recv_frame *prframe)
|
|||
signal_stat->avg_val = signal_stat->total_val / signal_stat->total_num;
|
||||
} /* Process_UI_RSSI_8192C */
|
||||
|
||||
static void process_link_qual(struct adapter *padapter, union recv_frame *prframe)
|
||||
static void process_link_qual(struct adapter *padapter, struct recv_frame *prframe)
|
||||
{
|
||||
struct rx_pkt_attrib *pattrib;
|
||||
struct signal_stat *signal_stat;
|
||||
|
@ -47,7 +47,7 @@ static void process_link_qual(struct adapter *padapter, union recv_frame *prfram
|
|||
if (prframe == NULL || padapter == NULL)
|
||||
return;
|
||||
|
||||
pattrib = &prframe->u.hdr.attrib;
|
||||
pattrib = &prframe->attrib;
|
||||
signal_stat = &padapter->recvpriv.signal_qual_data;
|
||||
|
||||
if (signal_stat->update_req) {
|
||||
|
@ -63,7 +63,7 @@ static void process_link_qual(struct adapter *padapter, union recv_frame *prfram
|
|||
|
||||
void rtl8188e_process_phy_info(struct adapter *padapter, void *prframe)
|
||||
{
|
||||
union recv_frame *precvframe = (union recv_frame *)prframe;
|
||||
struct recv_frame *precvframe = (struct recv_frame *)prframe;
|
||||
|
||||
/* Check RSSI */
|
||||
process_rssi(padapter, precvframe);
|
||||
|
@ -71,7 +71,7 @@ void rtl8188e_process_phy_info(struct adapter *padapter, void *prframe)
|
|||
process_link_qual(padapter, precvframe);
|
||||
}
|
||||
|
||||
void update_recvframe_attrib_88e(union recv_frame *precvframe, struct recv_stat *prxstat)
|
||||
void update_recvframe_attrib_88e(struct recv_frame *precvframe, struct recv_stat *prxstat)
|
||||
{
|
||||
struct rx_pkt_attrib *pattrib;
|
||||
struct recv_stat report;
|
||||
|
@ -83,7 +83,7 @@ void update_recvframe_attrib_88e(union recv_frame *precvframe, struct recv_stat
|
|||
report.rxdw4 = prxstat->rxdw4;
|
||||
report.rxdw5 = prxstat->rxdw5;
|
||||
|
||||
pattrib = &precvframe->u.hdr.attrib;
|
||||
pattrib = &precvframe->attrib;
|
||||
memset(pattrib, 0, sizeof(struct rx_pkt_attrib));
|
||||
|
||||
pattrib->crc_err = (u8)((le32_to_cpu(report.rxdw0) >> 14) & 0x1);;/* u8)prxreport->crc32; */
|
||||
|
@ -136,12 +136,12 @@ void update_recvframe_attrib_88e(union recv_frame *precvframe, struct recv_stat
|
|||
/*
|
||||
* Notice:
|
||||
* Before calling this function,
|
||||
* precvframe->u.hdr.rx_data should be ready!
|
||||
* precvframe->rx_data should be ready!
|
||||
*/
|
||||
void update_recvframe_phyinfo_88e(union recv_frame *precvframe, struct phy_stat *pphy_status)
|
||||
void update_recvframe_phyinfo_88e(struct recv_frame *precvframe, struct phy_stat *pphy_status)
|
||||
{
|
||||
struct adapter *padapter = precvframe->u.hdr.adapter;
|
||||
struct rx_pkt_attrib *pattrib = &precvframe->u.hdr.attrib;
|
||||
struct adapter *padapter = precvframe->adapter;
|
||||
struct rx_pkt_attrib *pattrib = &precvframe->attrib;
|
||||
struct hal_data_8188e *pHalData = GET_HAL_DATA(padapter);
|
||||
struct odm_phy_status_info *pPHYInfo = (struct odm_phy_status_info *)(&pattrib->phy_info);
|
||||
u8 *wlanhdr;
|
||||
|
@ -185,17 +185,17 @@ void update_recvframe_phyinfo_88e(union recv_frame *precvframe, struct phy_stat
|
|||
|
||||
ODM_PhyStatusQuery(&pHalData->odmpriv, pPHYInfo, (u8 *)pphy_status, &(pkt_info), padapter);
|
||||
|
||||
precvframe->u.hdr.psta = NULL;
|
||||
precvframe->psta = NULL;
|
||||
if (pkt_info.bPacketMatchBSSID &&
|
||||
(check_fwstate(&padapter->mlmepriv, WIFI_AP_STATE))) {
|
||||
if (psta) {
|
||||
precvframe->u.hdr.psta = psta;
|
||||
precvframe->psta = psta;
|
||||
rtl8188e_process_phy_info(padapter, precvframe);
|
||||
}
|
||||
} else if (pkt_info.bPacketToSelf || pkt_info.bPacketBeacon) {
|
||||
if (check_fwstate(&padapter->mlmepriv, WIFI_ADHOC_STATE|WIFI_ADHOC_MASTER_STATE)) {
|
||||
if (psta)
|
||||
precvframe->u.hdr.psta = psta;
|
||||
precvframe->psta = psta;
|
||||
}
|
||||
rtl8188e_process_phy_info(padapter, precvframe);
|
||||
}
|
||||
|
|
|
@ -314,7 +314,7 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
|
|||
struct recv_stat *prxstat;
|
||||
struct phy_stat *pphy_status = NULL;
|
||||
struct sk_buff *pkt_copy = NULL;
|
||||
union recv_frame *precvframe = NULL;
|
||||
struct recv_frame *precvframe = NULL;
|
||||
struct rx_pkt_attrib *pattrib = NULL;
|
||||
struct hal_data_8188e *haldata = GET_HAL_DATA(adapt);
|
||||
struct recv_priv *precvpriv = &adapt->recvpriv;
|
||||
|
@ -340,13 +340,13 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
|
|||
goto _exit_recvbuf2recvframe;
|
||||
}
|
||||
|
||||
INIT_LIST_HEAD(&precvframe->u.hdr.list);
|
||||
precvframe->u.hdr.precvbuf = NULL; /* can't access the precvbuf for new arch. */
|
||||
precvframe->u.hdr.len = 0;
|
||||
INIT_LIST_HEAD(&precvframe->list);
|
||||
precvframe->precvbuf = NULL; /* can't access the precvbuf for new arch. */
|
||||
precvframe->len = 0;
|
||||
|
||||
update_recvframe_attrib_88e(precvframe, prxstat);
|
||||
|
||||
pattrib = &precvframe->u.hdr.attrib;
|
||||
pattrib = &precvframe->attrib;
|
||||
|
||||
if ((pattrib->crc_err) || (pattrib->icv_err)) {
|
||||
DBG_88E("%s: RX Warning! crc_err=%d icv_err=%d, skip!\n", __func__, pattrib->crc_err, pattrib->icv_err);
|
||||
|
@ -393,26 +393,26 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
|
|||
pkt_copy = netdev_alloc_skb(adapt->pnetdev, alloc_sz);
|
||||
if (pkt_copy) {
|
||||
pkt_copy->dev = adapt->pnetdev;
|
||||
precvframe->u.hdr.pkt = pkt_copy;
|
||||
precvframe->u.hdr.rx_head = pkt_copy->data;
|
||||
precvframe->u.hdr.rx_end = pkt_copy->data + alloc_sz;
|
||||
precvframe->pkt = pkt_copy;
|
||||
precvframe->rx_head = pkt_copy->data;
|
||||
precvframe->rx_end = pkt_copy->data + alloc_sz;
|
||||
skb_reserve(pkt_copy, 8 - ((size_t)(pkt_copy->data) & 7));/* force pkt_copy->data at 8-byte alignment address */
|
||||
skb_reserve(pkt_copy, shift_sz);/* force ip_hdr at 8-byte alignment address according to shift_sz. */
|
||||
memcpy(pkt_copy->data, (pbuf + pattrib->drvinfo_sz + RXDESC_SIZE), skb_len);
|
||||
precvframe->u.hdr.rx_tail = pkt_copy->data;
|
||||
precvframe->u.hdr.rx_data = pkt_copy->data;
|
||||
precvframe->rx_tail = pkt_copy->data;
|
||||
precvframe->rx_data = pkt_copy->data;
|
||||
} else {
|
||||
if ((pattrib->mfrag == 1) && (pattrib->frag_num == 0)) {
|
||||
DBG_88E("recvbuf2recvframe: alloc_skb fail , drop frag frame\n");
|
||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
||||
goto _exit_recvbuf2recvframe;
|
||||
}
|
||||
precvframe->u.hdr.pkt = skb_clone(pskb, GFP_ATOMIC);
|
||||
if (precvframe->u.hdr.pkt) {
|
||||
precvframe->u.hdr.rx_tail = pbuf + pattrib->drvinfo_sz + RXDESC_SIZE;
|
||||
precvframe->u.hdr.rx_head = precvframe->u.hdr.rx_tail;
|
||||
precvframe->u.hdr.rx_data = precvframe->u.hdr.rx_tail;
|
||||
precvframe->u.hdr.rx_end = pbuf + pattrib->drvinfo_sz + RXDESC_SIZE + alloc_sz;
|
||||
precvframe->pkt = skb_clone(pskb, GFP_ATOMIC);
|
||||
if (precvframe->pkt) {
|
||||
precvframe->rx_tail = pbuf + pattrib->drvinfo_sz + RXDESC_SIZE;
|
||||
precvframe->rx_head = precvframe->rx_tail;
|
||||
precvframe->rx_data = precvframe->rx_tail;
|
||||
precvframe->rx_end = pbuf + pattrib->drvinfo_sz + RXDESC_SIZE + alloc_sz;
|
||||
} else {
|
||||
DBG_88E("recvbuf2recvframe: skb_clone fail\n");
|
||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
||||
|
@ -445,17 +445,17 @@ static int recvbuf2recvframe(struct adapter *adapt, struct sk_buff *pskb)
|
|||
/* enqueue recvframe to txrtp queue */
|
||||
if (pattrib->pkt_rpt_type == TX_REPORT1) {
|
||||
/* CCX-TXRPT ack for xmit mgmt frames. */
|
||||
handle_txrpt_ccx_88e(adapt, precvframe->u.hdr.rx_data);
|
||||
handle_txrpt_ccx_88e(adapt, precvframe->rx_data);
|
||||
} else if (pattrib->pkt_rpt_type == TX_REPORT2) {
|
||||
ODM_RA_TxRPT2Handle_8188E(
|
||||
&haldata->odmpriv,
|
||||
precvframe->u.hdr.rx_data,
|
||||
precvframe->rx_data,
|
||||
pattrib->pkt_len,
|
||||
pattrib->MacIDValidEntry[0],
|
||||
pattrib->MacIDValidEntry[1]
|
||||
);
|
||||
} else if (pattrib->pkt_rpt_type == HIS_REPORT) {
|
||||
interrupt_handler_8188eu(adapt, pattrib->pkt_len, precvframe->u.hdr.rx_data);
|
||||
interrupt_handler_8188eu(adapt, pattrib->pkt_len, precvframe->rx_data);
|
||||
}
|
||||
rtw_free_recvframe(precvframe, pfree_recv_queue);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue