/*
|
* 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_ */
|