1 /* 2 * Header file for splitrx mode definitions 3 * Explains different splitrx modes, macros for classify, conversion. 4 * 5 * Broadcom Proprietary and Confidential. Copyright (C) 2020, 6 * All Rights Reserved. 7 * 8 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom; 9 * the contents of this file may not be disclosed to third parties, 10 * copied or duplicated in any form, in whole or in part, without 11 * the prior written permission of Broadcom. 12 * 13 * 14 * <<Broadcom-WL-IPTag/Proprietary:>> 15 */ 16 17 #ifndef _d11_cfg_h_ 18 #define _d11_cfg_h_ 19 20 #ifdef USE_BCMCONF_H 21 #include <bcmconf.h> 22 #else 23 #if defined(BCMDONGLEHOST) && !defined(WINNT) 24 #define D11REV_IS(var, val) ((var) == (val)) 25 #define D11REV_GE(var, val) ((var) >= (val)) 26 #define D11REV_GT(var, val) ((var) > (val)) 27 #define D11REV_LT(var, val) ((var) < (val)) 28 #define D11REV_LE(var, val) ((var) <= (val)) 29 30 #define D11MINORREV_IS(var, val) ((var) == (val)) 31 #define D11MINORREV_GE(var, val) ((var) >= (val)) 32 #define D11MINORREV_GT(var, val) ((var) > (val)) 33 #define D11MINORREV_LT(var, val) ((var) < (val)) 34 #define D11MINORREV_LE(var, val) ((var) <= (val)) 35 36 #define D11REV_MAJ_MIN_GE(corerev, corerev_minor, maj, min) \ 37 ((D11REV_IS((corerev), (maj)) && D11MINORREV_GE((corerev_minor), (min))) || \ 38 D11REV_GT(corerev, (maj))) 39 40 #endif /* BCMDONGLEHOST */ 41 #endif /* USE_BCMCONF_H */ 42 43 #define RXMODE0 0 /* no split */ 44 #define RXMODE1 1 /* descriptor split */ 45 #define RXMODE2 2 /* descriptor split + classification */ 46 #define RXMODE3 3 /* fifo split + classification */ 47 #define RXMODE4 4 /* fifo split + classification + hdr conversion */ 48 49 #ifdef BCMSPLITRX 50 extern bool _bcmsplitrx; 51 #if defined(ROM_ENAB_RUNTIME_CHECK) || !defined(DONGLEBUILD) 52 #define BCMSPLITRX_ENAB() (_bcmsplitrx) 53 #elif defined(BCMSPLITRX_DISABLED) 54 #define BCMSPLITRX_ENAB() (0) 55 #else 56 #define BCMSPLITRX_ENAB() (1) 57 #endif 58 59 extern uint8 _bcmsplitrx_mode; 60 #if defined(ROM_ENAB_RUNTIME_CHECK) || !defined(DONGLEBUILD) 61 #define BCMSPLITRX_MODE() (_bcmsplitrx_mode) 62 #elif defined(BCMSPLITRX_DISABLED) 63 #define BCMSPLITRX_MODE() (0) 64 #else 65 #define BCMSPLITRX_MODE() (_bcmsplitrx_mode) 66 #endif 67 #else 68 #define BCMSPLITRX_ENAB() (0) 69 #define BCMSPLITRX_MODE() (0) 70 #endif /* BCMSPLITRX */ 71 72 #define SPLIT_RXMODE1() ((BCMSPLITRX_MODE() == RXMODE1)) 73 #define SPLIT_RXMODE2() ((BCMSPLITRX_MODE() == RXMODE2)) 74 #define SPLIT_RXMODE3() ((BCMSPLITRX_MODE() == RXMODE3)) 75 #define SPLIT_RXMODE4() ((BCMSPLITRX_MODE() == RXMODE4)) 76 77 #define PKT_CLASSIFY() (SPLIT_RXMODE2() || SPLIT_RXMODE3() || SPLIT_RXMODE4()) 78 #define RXFIFO_SPLIT() (SPLIT_RXMODE3() || SPLIT_RXMODE4()) 79 #define HDR_CONV() (SPLIT_RXMODE4()) 80 #define HDRCONV_PAD 2 81 82 #define FRAG_CMN_MSG_HDROOM (16u) /* Common msg headroom required by PCIe to push txstatus */ 83 84 #if defined(FMF_LIT) && !defined(FMF_LIT_DISABLED) 85 /* (188-4*24-16) required HEADROOM - 4 Rate info Block - CacheInfo */ 86 #define FRAG_HEADROOM_D11REV_GE83 76u 87 #else 88 #if (defined(WLC_TXDC) && !defined(WLC_TXDC_DISABLED)) || \ 89 (defined(FMF_RIT) && !defined(FMF_RIT_DISABLED)) 90 #define FRAG_HEADROOM_D11REV_GE83 92u /* (188-4*24) required HEADROOM - 4 Rate info Block */ 91 #else 92 /* required HEADROOM = PTXD (24) + LIT (16) + RIT (96) 93 + max dot11hdr (44):: 94 "FC+DUR+SEQ+A1+A2+A3"(24) + QOS(2) + max("HTC(4) + AES IV(8)", WAPI IV(18)) 95 + MSDU data size (22):: SFH (14) + LLC (8) 96 - ETHER_HDR_LEN 97 */ 98 #define FRAG_HEADROOM_D11REV_GE83 188u 99 #endif /* (WLC_TXDC && !WLC_TXDC_DISABLED) || (FMF_RIT && !FMF_RIT_DISABLED) */ 100 #endif /* defined(FMF_LIT) && !defined(FMF_LIT_DISABLED) */ 101 #define FRAG_HEADROOM_D11REV_LT80 226u /* TXOFF + amsdu header */ 102 #define FRAG_HEADROOM_D11REV_GE80 \ 103 (FRAG_HEADROOM_D11REV_GE83 + 4u) /* + TSO_HEADER_PASSTHROUGH_LENGTH(4) */ 104 105 #ifdef USE_NEW_COREREV_API 106 #define FRAG_HEAD_ROOM(corerev) (D11REV_GE(corerev, 83) ? \ 107 FRAG_HEADROOM_D11REV_GE83 : D11REV_GE(corerev, 80) ? \ 108 FRAG_HEADROOM_D11REV_GE80 : FRAG_HEADROOM_D11REV_LT80) 109 #else 110 #define FRAG_HEAD_ROOM(sih, coreid) ((si_get_corerev(sih, coreid) >= 83) ? \ 111 FRAG_HEADROOM_D11REV_GE83 : ((si_get_corerev(sih, coreid) >= 80) ? \ 112 FRAG_HEADROOM_D11REV_GE80 : FRAG_HEADROOM_D11REV_LT80)) 113 #endif 114 115 #endif /* _d11_cfg_h_ */ 116