1*4882a593Smuzhiyun /****************************************************************************** 2*4882a593Smuzhiyun * 3*4882a593Smuzhiyun * Copyright(c) 2007 - 2017 Realtek Corporation. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun * This program is free software; you can redistribute it and/or modify it 6*4882a593Smuzhiyun * under the terms of version 2 of the GNU General Public License as 7*4882a593Smuzhiyun * published by the Free Software Foundation. 8*4882a593Smuzhiyun * 9*4882a593Smuzhiyun * This program is distributed in the hope that it will be useful, but WITHOUT 10*4882a593Smuzhiyun * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11*4882a593Smuzhiyun * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for 12*4882a593Smuzhiyun * more details. 13*4882a593Smuzhiyun * 14*4882a593Smuzhiyun *****************************************************************************/ 15*4882a593Smuzhiyun #ifndef __RTL8188E_RECV_H__ 16*4882a593Smuzhiyun #define __RTL8188E_RECV_H__ 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun #define RECV_BLK_SZ 512 19*4882a593Smuzhiyun #define RECV_BLK_CNT 16 20*4882a593Smuzhiyun #define RECV_BLK_TH RECV_BLK_CNT 21*4882a593Smuzhiyun 22*4882a593Smuzhiyun #if defined(CONFIG_USB_HCI) 23*4882a593Smuzhiyun #ifndef MAX_RECVBUF_SZ 24*4882a593Smuzhiyun #ifndef CONFIG_MINIMAL_MEMORY_USAGE 25*4882a593Smuzhiyun /* #define MAX_RECVBUF_SZ (32768) */ /* 32k */ 26*4882a593Smuzhiyun /* #define MAX_RECVBUF_SZ (16384) */ /* 16K */ 27*4882a593Smuzhiyun /* #define MAX_RECVBUF_SZ (10240) */ /* 10K */ 28*4882a593Smuzhiyun #define MAX_RECVBUF_SZ (15360) /* 15k < 16k */ 29*4882a593Smuzhiyun /* #define MAX_RECVBUF_SZ (8192+1024) */ /* 8K+1k */ 30*4882a593Smuzhiyun #else 31*4882a593Smuzhiyun #define MAX_RECVBUF_SZ (4000) /* about 4K */ 32*4882a593Smuzhiyun #endif 33*4882a593Smuzhiyun #endif /* !MAX_RECVBUF_SZ */ 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun #elif defined(CONFIG_PCI_HCI) 36*4882a593Smuzhiyun /* #ifndef CONFIG_MINIMAL_MEMORY_USAGE */ 37*4882a593Smuzhiyun /* #define MAX_RECVBUF_SZ (9100) */ 38*4882a593Smuzhiyun /* #else */ 39*4882a593Smuzhiyun #define MAX_RECVBUF_SZ (4000) /* about 4K 40*4882a593Smuzhiyun * #endif */ 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun 43*4882a593Smuzhiyun #elif defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #define MAX_RECVBUF_SZ (10240) 46*4882a593Smuzhiyun 47*4882a593Smuzhiyun #endif 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun /* Rx smooth factor */ 50*4882a593Smuzhiyun #define Rx_Smooth_Factor (20) 51*4882a593Smuzhiyun 52*4882a593Smuzhiyun #define TX_RPT1_PKT_LEN 8 53*4882a593Smuzhiyun 54*4882a593Smuzhiyun typedef struct rxreport_8188e { 55*4882a593Smuzhiyun /* Offset 0 */ 56*4882a593Smuzhiyun u32 pktlen:14; 57*4882a593Smuzhiyun u32 crc32:1; 58*4882a593Smuzhiyun u32 icverr:1; 59*4882a593Smuzhiyun u32 drvinfosize:4; 60*4882a593Smuzhiyun u32 security:3; 61*4882a593Smuzhiyun u32 qos:1; 62*4882a593Smuzhiyun u32 shift:2; 63*4882a593Smuzhiyun u32 physt:1; 64*4882a593Smuzhiyun u32 swdec:1; 65*4882a593Smuzhiyun u32 ls:1; 66*4882a593Smuzhiyun u32 fs:1; 67*4882a593Smuzhiyun u32 eor:1; 68*4882a593Smuzhiyun u32 own:1; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun /* Offset 4 */ 71*4882a593Smuzhiyun u32 macid:5; 72*4882a593Smuzhiyun u32 tid:4; 73*4882a593Smuzhiyun u32 hwrsvd:4; 74*4882a593Smuzhiyun u32 amsdu:1; 75*4882a593Smuzhiyun u32 paggr:1; 76*4882a593Smuzhiyun u32 faggr:1; 77*4882a593Smuzhiyun u32 a1fit:4; 78*4882a593Smuzhiyun u32 a2fit:4; 79*4882a593Smuzhiyun u32 pam:1; 80*4882a593Smuzhiyun u32 pwr:1; 81*4882a593Smuzhiyun u32 md:1; 82*4882a593Smuzhiyun u32 mf:1; 83*4882a593Smuzhiyun u32 type:2; 84*4882a593Smuzhiyun u32 mc:1; 85*4882a593Smuzhiyun u32 bc:1; 86*4882a593Smuzhiyun 87*4882a593Smuzhiyun /* Offset 8 */ 88*4882a593Smuzhiyun u32 seq:12; 89*4882a593Smuzhiyun u32 frag:4; 90*4882a593Smuzhiyun u32 nextpktlen:14; 91*4882a593Smuzhiyun u32 nextind:1; 92*4882a593Smuzhiyun u32 rsvd0831:1; 93*4882a593Smuzhiyun 94*4882a593Smuzhiyun /* Offset 12 */ 95*4882a593Smuzhiyun u32 rxmcs:6; 96*4882a593Smuzhiyun u32 rxht:1; 97*4882a593Smuzhiyun u32 gf:1; 98*4882a593Smuzhiyun u32 splcp:1; 99*4882a593Smuzhiyun u32 bw:1; 100*4882a593Smuzhiyun u32 htc:1; 101*4882a593Smuzhiyun u32 eosp:1; 102*4882a593Smuzhiyun u32 bssidfit:2; 103*4882a593Smuzhiyun u32 rpt_sel:2; 104*4882a593Smuzhiyun u32 rsvd1216:13; 105*4882a593Smuzhiyun u32 pattern_match:1; 106*4882a593Smuzhiyun u32 unicastwake:1; 107*4882a593Smuzhiyun u32 magicwake:1; 108*4882a593Smuzhiyun 109*4882a593Smuzhiyun /* Offset 16 */ 110*4882a593Smuzhiyun /* 111*4882a593Smuzhiyun u32 pattern0match:1; 112*4882a593Smuzhiyun u32 pattern1match:1; 113*4882a593Smuzhiyun u32 pattern2match:1; 114*4882a593Smuzhiyun u32 pattern3match:1; 115*4882a593Smuzhiyun u32 pattern4match:1; 116*4882a593Smuzhiyun u32 pattern5match:1; 117*4882a593Smuzhiyun u32 pattern6match:1; 118*4882a593Smuzhiyun u32 pattern7match:1; 119*4882a593Smuzhiyun u32 pattern8match:1; 120*4882a593Smuzhiyun u32 pattern9match:1; 121*4882a593Smuzhiyun u32 patternamatch:1; 122*4882a593Smuzhiyun u32 patternbmatch:1; 123*4882a593Smuzhiyun u32 patterncmatch:1; 124*4882a593Smuzhiyun u32 rsvd1613:19; 125*4882a593Smuzhiyun */ 126*4882a593Smuzhiyun u32 rsvd16; 127*4882a593Smuzhiyun 128*4882a593Smuzhiyun /* Offset 20 */ 129*4882a593Smuzhiyun u32 tsfl; 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun /* Offset 24 */ 132*4882a593Smuzhiyun u32 bassn:12; 133*4882a593Smuzhiyun u32 bavld:1; 134*4882a593Smuzhiyun u32 rsvd2413:19; 135*4882a593Smuzhiyun } RXREPORT, *PRXREPORT; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun 138*4882a593Smuzhiyun #if defined(CONFIG_SDIO_HCI) || defined(CONFIG_GSPI_HCI) 139*4882a593Smuzhiyun s32 rtl8188es_init_recv_priv(PADAPTER padapter); 140*4882a593Smuzhiyun void rtl8188es_free_recv_priv(PADAPTER padapter); 141*4882a593Smuzhiyun #endif 142*4882a593Smuzhiyun 143*4882a593Smuzhiyun #ifdef CONFIG_USB_HCI 144*4882a593Smuzhiyun void rtl8188eu_init_recvbuf(_adapter *padapter, struct recv_buf *precvbuf); 145*4882a593Smuzhiyun s32 rtl8188eu_init_recv_priv(PADAPTER padapter); 146*4882a593Smuzhiyun void rtl8188eu_free_recv_priv(PADAPTER padapter); 147*4882a593Smuzhiyun #endif 148*4882a593Smuzhiyun 149*4882a593Smuzhiyun #ifdef CONFIG_PCI_HCI 150*4882a593Smuzhiyun s32 rtl8188ee_init_recv_priv(PADAPTER padapter); 151*4882a593Smuzhiyun void rtl8188ee_free_recv_priv(PADAPTER padapter); 152*4882a593Smuzhiyun #endif 153*4882a593Smuzhiyun 154*4882a593Smuzhiyun void rtl8188e_query_rx_desc_status(union recv_frame *precvframe, struct recv_stat *prxstat); 155*4882a593Smuzhiyun 156*4882a593Smuzhiyun #endif /* __RTL8188E_RECV_H__ */ 157