| /* |
| * Header file for splitrx mode definitions |
| * Explains different splitrx modes, macros for classify, conversion. |
| * |
| * Broadcom Proprietary and Confidential. Copyright (C) 2020, |
| * All Rights Reserved. |
| * |
| * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Broadcom; |
| * the contents of this file may not be disclosed to third parties, |
| * copied or duplicated in any form, in whole or in part, without |
| * the prior written permission of Broadcom. |
| * |
| * |
| * <<Broadcom-WL-IPTag/Proprietary:>> |
| */ |
| |
| #ifndef _d11_cfg_h_ |
| #define _d11_cfg_h_ |
| |
| #ifdef USE_BCMCONF_H |
| #include <bcmconf.h> |
| #else |
| #if defined(BCMDONGLEHOST) && !defined(WINNT) |
| #define D11REV_IS(var, val) ((var) == (val)) |
| #define D11REV_GE(var, val) ((var) >= (val)) |
| #define D11REV_GT(var, val) ((var) > (val)) |
| #define D11REV_LT(var, val) ((var) < (val)) |
| #define D11REV_LE(var, val) ((var) <= (val)) |
| |
| #define D11MINORREV_IS(var, val) ((var) == (val)) |
| #define D11MINORREV_GE(var, val) ((var) >= (val)) |
| #define D11MINORREV_GT(var, val) ((var) > (val)) |
| #define D11MINORREV_LT(var, val) ((var) < (val)) |
| #define D11MINORREV_LE(var, val) ((var) <= (val)) |
| |
| #define D11REV_MAJ_MIN_GE(corerev, corerev_minor, maj, min) \ |
| ((D11REV_IS((corerev), (maj)) && D11MINORREV_GE((corerev_minor), (min))) || \ |
| D11REV_GT(corerev, (maj))) |
| |
| #endif /* BCMDONGLEHOST */ |
| #endif /* USE_BCMCONF_H */ |
| |
| #define RXMODE0 0 /* no split */ |
| #define RXMODE1 1 /* descriptor split */ |
| #define RXMODE2 2 /* descriptor split + classification */ |
| #define RXMODE3 3 /* fifo split + classification */ |
| #define RXMODE4 4 /* fifo split + classification + hdr conversion */ |
| |
| #ifdef BCMSPLITRX |
| extern bool _bcmsplitrx; |
| #if defined(ROM_ENAB_RUNTIME_CHECK) || !defined(DONGLEBUILD) |
| #define BCMSPLITRX_ENAB() (_bcmsplitrx) |
| #elif defined(BCMSPLITRX_DISABLED) |
| #define BCMSPLITRX_ENAB() (0) |
| #else |
| #define BCMSPLITRX_ENAB() (1) |
| #endif |
| |
| extern uint8 _bcmsplitrx_mode; |
| #if defined(ROM_ENAB_RUNTIME_CHECK) || !defined(DONGLEBUILD) |
| #define BCMSPLITRX_MODE() (_bcmsplitrx_mode) |
| #elif defined(BCMSPLITRX_DISABLED) |
| #define BCMSPLITRX_MODE() (0) |
| #else |
| #define BCMSPLITRX_MODE() (_bcmsplitrx_mode) |
| #endif |
| #else |
| #define BCMSPLITRX_ENAB() (0) |
| #define BCMSPLITRX_MODE() (0) |
| #endif /* BCMSPLITRX */ |
| |
| #define SPLIT_RXMODE1() ((BCMSPLITRX_MODE() == RXMODE1)) |
| #define SPLIT_RXMODE2() ((BCMSPLITRX_MODE() == RXMODE2)) |
| #define SPLIT_RXMODE3() ((BCMSPLITRX_MODE() == RXMODE3)) |
| #define SPLIT_RXMODE4() ((BCMSPLITRX_MODE() == RXMODE4)) |
| |
| #define PKT_CLASSIFY() (SPLIT_RXMODE2() || SPLIT_RXMODE3() || SPLIT_RXMODE4()) |
| #define RXFIFO_SPLIT() (SPLIT_RXMODE3() || SPLIT_RXMODE4()) |
| #define HDR_CONV() (SPLIT_RXMODE4()) |
| #define HDRCONV_PAD 2 |
| |
| #define FRAG_CMN_MSG_HDROOM (16u) /* Common msg headroom required by PCIe to push txstatus */ |
| |
| #if defined(FMF_LIT) && !defined(FMF_LIT_DISABLED) |
| /* (188-4*24-16) required HEADROOM - 4 Rate info Block - CacheInfo */ |
| #define FRAG_HEADROOM_D11REV_GE83 76u |
| #else |
| #if (defined(WLC_TXDC) && !defined(WLC_TXDC_DISABLED)) || \ |
| (defined(FMF_RIT) && !defined(FMF_RIT_DISABLED)) |
| #define FRAG_HEADROOM_D11REV_GE83 92u /* (188-4*24) required HEADROOM - 4 Rate info Block */ |
| #else |
| /* required HEADROOM = PTXD (24) + LIT (16) + RIT (96) |
| + max dot11hdr (44):: |
| "FC+DUR+SEQ+A1+A2+A3"(24) + QOS(2) + max("HTC(4) + AES IV(8)", WAPI IV(18)) |
| + MSDU data size (22):: SFH (14) + LLC (8) |
| - ETHER_HDR_LEN |
| */ |
| #define FRAG_HEADROOM_D11REV_GE83 188u |
| #endif /* (WLC_TXDC && !WLC_TXDC_DISABLED) || (FMF_RIT && !FMF_RIT_DISABLED) */ |
| #endif /* defined(FMF_LIT) && !defined(FMF_LIT_DISABLED) */ |
| #define FRAG_HEADROOM_D11REV_LT80 226u /* TXOFF + amsdu header */ |
| #define FRAG_HEADROOM_D11REV_GE80 \ |
| (FRAG_HEADROOM_D11REV_GE83 + 4u) /* + TSO_HEADER_PASSTHROUGH_LENGTH(4) */ |
| |
| #ifdef USE_NEW_COREREV_API |
| #define FRAG_HEAD_ROOM(corerev) (D11REV_GE(corerev, 83) ? \ |
| FRAG_HEADROOM_D11REV_GE83 : D11REV_GE(corerev, 80) ? \ |
| FRAG_HEADROOM_D11REV_GE80 : FRAG_HEADROOM_D11REV_LT80) |
| #else |
| #define FRAG_HEAD_ROOM(sih, coreid) ((si_get_corerev(sih, coreid) >= 83) ? \ |
| FRAG_HEADROOM_D11REV_GE83 : ((si_get_corerev(sih, coreid) >= 80) ? \ |
| FRAG_HEADROOM_D11REV_GE80 : FRAG_HEADROOM_D11REV_LT80)) |
| #endif |
| |
| #endif /* _d11_cfg_h_ */ |