/************************************************************************ | |
* °æÈ¨ËùÓÐ (C)2001,ÖÐÐËͨѶ¹É·ÝÓÐÏÞ¹«Ë¾¡£ | |
* | |
* ÎļþÃû³Æ: psbuf.h | |
* Îļþ±êʶ: | |
* ÄÚÈÝÕªÒª: Êý¾ÝÃæ»º´æÏà¹Ø½á¹¹Ì嶨Òå¡¢ºê¶¨ÒåºÍº¯ÊýÉùÃ÷ | |
* | |
* ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ Ð޸ıê¼Ç ÐÞ¸ÄÈË ÐÞ¸ÄÄÚÈÝ | |
* --------------------------------------------------------------------- | |
* 2012/06/15 V1.0 create | |
************************************************************************/ | |
#ifndef _PS_BUF_H | |
#define _PS_BUF_H | |
/************************************************************************** | |
* Í·Îļþ°üº¬ * | |
**************************************************************************/ | |
/************************************************************************** | |
È«¾Ö±äÁ¿ÉùÃ÷ | |
**************************************************************************/ | |
extern WORD gLinkAlignOffset; | |
extern WORD g_l2_wUpLinkSDUNum; | |
extern WORD g_l2_wEpdcpPDUNum; | |
/************************************************************************** | |
PSÊý¾ÝÃæÓÅ»¯Ïà¹Ø | |
**************************************************************************/ | |
/************************************************************************** | |
* Ïà¹Øºê¶¨Òå * | |
**************************************************************************/ | |
#define Z_LINK_ALIGN_OFFSET gLinkAlignOffset | |
/* PSÊý¾ÝÃæ£¬ÉÏÐлº´æÐèÒªÔ¤ÁôÊý¾ÝÇø´óС */ | |
#define Z_UP_PPP_MAX_SIZE (1520 + 100) | |
#define Z_UP_IP_MAX_SIZE 1520 | |
#define LL_MAX_HEADER 48//64 | |
#define Z_UP_LINK_RESERVE LL_MAX_HEADER | |
#define Z_UL_PDU_BUF_SIZE 1600 | |
/* PSÊý¾ÝÃæ£¬ÉÏÐÐPPPÊý¾Ý°üµÄ×î´óÖµ */ | |
#define Z_DOWN_LINK_RESERVE_IP (LL_MAX_HEADER + 16) | |
#define Z_DOWN_LINK_RESERVE_MAC (LL_MAX_HEADER + 14) | |
#define Z_DOWN_RLCSDU_MAX_SIZE 1504 | |
/* PSÊý¾ÝÃæ£¬ÏÂÐлº´æÐèÒªÔ¤ÁôÊý¾ÝÇø´óС */ | |
#define Z_DOWN_LINK_RESERVE (Z_DOWN_LINK_RESERVE_MAC + Z_LINK_ALIGN_OFFSET) | |
#define Z_DDR_32 0 | |
#define Z_DDR_64 1 | |
#ifdef _OS_WIN | |
/* PSÊý¾ÝÃæ£¬ÉÏ¡¢ÏÂÐлº´æ¿éµÄ¸öÊý */ | |
#define Z_UP_LINK_SDU_COUNT (1536 + 1792)//g_El2_wUpLinkSDUNum | |
#define Z_DOWNLINK_SDU_COUNT 1792 | |
#define Z_LTE_EPDCP_PDU_COUNT 1536 | |
#else | |
/*ps buffer memory size provided by product ddr*/ | |
#define Z_PS_BUFFER_MEM_SIZE DDR_BASE_LEN_PSBUF /* 2.5M */ | |
/* PSÊý¾ÝÃæ£¬ÉÏ¡¢ÏÂÐлº´æ¿éµÄ¸öÊý */ | |
#define Z_UP_LINK_SDU_COUNT g_l2_wUpLinkSDUNum//520 //1792 | |
#define Z_DOWNLINK_SDU_COUNT 0 | |
#define Z_LTE_EPDCP_PDU_COUNT g_l2_wUpLinkSDUNum // 520 //1536 | |
#endif | |
#define Z_PLAT_DL_RESERVE (Z_DOWN_LINK_RESERVE - 14) | |
#define Z_UL_DATA_DESC_SIZE 40 | |
#define Z_DL_DATA_DESC_SIZE 40 | |
#define Z_SKB_SHARE_INFO_SIZE 396 //400 //ºêÖµÓÉ 400¸ÄΪ396£¬±£Ö¤psbufµÄdataÓòΪ64×Ö½Ú¶ÔÆë | |
//DHD°üÍ·×î´óÆ«ÒÆ | |
#define Z_UL_DHD_MAX_OFFSET 64 | |
#define Z_OVERFLUD_SIZE 4 | |
//ec616000533092 | |
#define Z_UL_NODE_BUF_SIZE (((DWORD)(Z_UP_LINK_RESERVE + Z_UP_IP_MAX_SIZE + Z_SKB_SHARE_INFO_SIZE + Z_OVERFLUD_SIZE+63) >> 6) << 6)/*4×Ö½Ú»º´æ¸Äд±êÖ¾*/ | |
#define Z_UL_SDU_BUF_SIZE (Z_UP_LINK_RESERVE + Z_UP_IP_MAX_SIZE) | |
//#define Z_DL_NODE_BUF_SIZE (Z_DOWN_LINK_RESERVE_IP + Z_DOWN_RLCSDU_MAX_SIZE + Z_SKB_SHARE_INFO_SIZE + Z_OVERFLUD_SIZE) | |
//#define Z_DL_SDU_BUF_SIZE (Z_DOWN_LINK_RESERVE_IP + Z_DOWN_RLCSDU_MAX_SIZE) | |
/* PSÊý¾ÝÃæ£¬¼ì²é»º´æ¿éÊÇ·ñ±»Öظ´Êͷűêʾ£¬ÄÚ²¿Ê¹Óò»¶ÔÍ⿪·Å */ | |
#define Z_BUFFER_NOFREED 0xA3A3A3A3//0xFEFEFEFE | |
#define Z_BUFFER_FREED 0x00 | |
#define Z_BUFFER_NOFLUD 0xA3A3A3A3//0xFEFEFEFE | |
/************************************************************************** | |
* È«¾Ö½á¹¹ÀàÐÍ * | |
**************************************************************************/ | |
/* PSÊý¾ÝÃæ£¬ÉÏÐлº´æ¿éµÄ½á¹¹ */ | |
typedef struct _Z_UpLink_Sdu { | |
T_ZOss_Node tNode; | |
BYTE tDataDescInfo[Z_UL_DATA_DESC_SIZE]; //±£´æTD»òLTEµÄÃèÊöÐÅÏ¢ | |
BYTE bCid; | |
BYTE bPid; //ƽ̨ÓÃÓÚ±êʶÊÇ·ñΪTCP ACK°ü | |
BYTE bNsapi; | |
BYTE bAtiBuf; | |
PBYTE pbPdcpPduAddr; | |
WORD wIpPacketLen; | |
WORD wIpPacketOffSet; // ÐèÒª³õʼ»¯ | |
BYTE bIsTcpAck; | |
BYTE bPad[3]; | |
PBYTE Data; | |
PBYTE tSkbShareInfo; | |
PBYTE pbSkbAddr; | |
} T_z_UpLink_Sdu; | |
/* PSÊý¾ÝÃæ£¬ÏÂÐлº´æ¿éµÄ½á¹¹ */ | |
typedef struct _Z_DownLink_Sdu { | |
T_ZOss_Node tNode; | |
BYTE tDataDescInfo[Z_DL_DATA_DESC_SIZE]; //±£´æTD»òLTEµÄÃèÊöÐÅÏ¢ | |
BYTE bCid; | |
BYTE bPid; | |
BYTE bNsapi; | |
BYTE bRbid; | |
WORD abPadding1[2];/*¶ÔÓ¦ÉÏÐÐpbPdcpPduAddr£¬ÏÂÐд¦Àí²»ÄÜʹÓ㬠| |
ÒòÊͷŽڵãʱ²»Çø·ÖÉÏÏÂÐУ¬»á×÷ΪpbPdcpPduAddrµØÖ·½øÐлØÊÕ£¬ | |
Èô±»ÉÏÐÐÉêÇëµ½£¬¶Ô¸ÃµØÖ·²Ù×÷ʱ£¬»áÔì³ÉËÀ»ú*/ | |
WORD wDataLen; | |
WORD wDataOffSet; | |
WORD abPadding2[2]; | |
PBYTE Data; | |
PBYTE tSkbShareInfo; | |
PBYTE pbSkbAddr; | |
} T_z_DownLink_Sdu; | |
/* PSÊý¾ÝÃæ£¬ÉÏÐлº´æ¿é½Úµã½á¹¹£¬ÄÚ²¿Ê¹Óò»¶ÔÍ⿪·Å */ | |
typedef struct _T_z_UpLink_Node { | |
T_z_UpLink_Sdu tUpLinkSdu; | |
PDWORD pdwOverFlud; | |
DWORD dwFreed; | |
WORD wCurrentModule; | |
WORD wNextModule; | |
struct _T_z_UpLink_Node *ptNextNode; | |
} T_z_UpLink_Node; | |
/************************************************************************** | |
* º¯ÊýÉùÃ÷ * | |
**************************************************************************/ | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zAllocUlBuf | |
*º¯Êý¹¦ÄÜ : ÉêÇëÉÏÐÐÊý¾Ý»º´æ | |
*ÊäÈë²ÎÊý : VOID | |
*·µ »Ø Öµ : PBYTE ÿ¿éÊý¾Ý»º´æÆ«ÒƺóµÄµØÖ· | |
*ÆäËû˵Ã÷ : Ö§³Ö²¢·¢²Ù×÷£¬»º´æÎª¿Õʱ·µ»ØNULL | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
PBYTE zAllocUlBuf(VOID); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zAllocDlBuf | |
*º¯Êý¹¦ÄÜ : ÉêÇëÏÂÐÐÊý¾Ý»º´æ | |
*ÊäÈë²ÎÊý : VOID | |
*·µ »Ø Öµ : PBYTE ÿ¿éÊý¾Ý»º´æÆ«ÒƺóµÄµØÖ· | |
*ÆäËû˵Ã÷ : Ö§³Ö²¢·¢²Ù×÷£¬»º´æÎª¿Õʱ·µ»ØNULL | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
PBYTE zAllocDlBuf(VOID); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zAllocUlBufCanWait | |
*º¯Êý¹¦ÄÜ : ÉêÇëÉÏÐÐÊý¾Ý»º´æ | |
*ÊäÈë²ÎÊý : VOID | |
*·µ »Ø Öµ : PBYTE ÿ¿éÊý¾Ý»º´æÆ«ÒƺóµÄµØÖ· | |
*ÆäËû˵Ã÷ : Ö§³Ö²¢·¢²Ù×÷£¬»º´æÎª¿Õʱ×èÈûµ÷ÓÃÏß³ÌÖ±µ½ÓпÉÓõÄÏß³Ì | |
*º¯Êý×÷Õß : ´´½¨ÈÕÆÚ: 2011-11-04 | |
* | |
*ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ ÐÞ¸ÄÈË µ¥ºÅÓëÐÞ¸ÄÄÚÈÝ | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
PBYTE zAllocUlBufCanWait(VOID); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zFreeUlBuf | |
*º¯Êý¹¦ÄÜ : ÊÍ·ÅÉÏÐÐÊý¾Ý»º´æ | |
*ÊäÈë²ÎÊý : VOID | |
*·µ »Ø Öµ : PBYTE ÿ¿éÊý¾Ý»º´æÆ«ÒƺóµÄµØÖ· | |
*ÆäËû˵Ã÷ : Ö§³Ö²¢·¢²Ù×÷£¬ | |
*º¯Êý×÷Õß : ´´½¨ÈÕÆÚ: 2011-11-04 | |
* | |
*ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ ÐÞ¸ÄÈË µ¥ºÅÓëÐÞ¸ÄÄÚÈÝ | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
VOID zFreeUlBuf(PBYTE pBuf); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zFreeDlBuf | |
*º¯Êý¹¦ÄÜ : ÊÍ·ÅÏÂÐÐÊý¾Ý»º´æ | |
*ÊäÈë²ÎÊý : VOID | |
*·µ »Ø Öµ : PBYTE ÿ¿éÊý¾Ý»º´æµÄÊ×µØÖ· | |
*ÆäËû˵Ã÷ : Ö§³Ö²¢·¢²Ù×÷£¬ | |
*º¯Êý×÷Õß : ´´½¨ÈÕÆÚ: 2011-11-04 | |
* | |
*ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ ÐÞ¸ÄÈË µ¥ºÅÓëÐÞ¸ÄÄÚÈÝ | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
VOID zFreeDlBuf(PBYTE pBuf); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zGetUlBufAddr | |
*º¯Êý¹¦ÄÜ : ΪÁ˽â¾öDHD°üÍ·32×Ö½Ú¶ÔÆë´«ÊäµÄÎÊÌ⣬´Ëº¯Êý¹©RNDISµ÷Ó㬻ñÈ¡ | |
SduÊ×µØÖ·ºó£¬Í¶µÝ¸øÐÒéÕ»¡£ | |
*ÊäÈë²ÎÊý : ÎÞ | |
*·µ »Ø Öµ : ÎÞ | |
*ÆäËû˵Ã÷ : | |
*º¯Êý×÷Õß : ´´½¨ÈÕÆÚ: 2013-09-23 | |
*Ôö¼Ó±³¾° : 7510UFIÁªµ÷ÐÂÔö | |
*ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ ÐÞ¸ÄÈË µ¥ºÅÓëÐÞ¸ÄÄÚÈÝ | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
T_z_UpLink_Sdu * zGetUlBufAddr(PBYTE pBuf); | |
#if !defined(_OS_WIN) | |
PBYTE zGetpsbufferHead(PBYTE data); | |
#endif | |
PBYTE zAllocEpdcpPduBuf(VOID); | |
void zInitEpdcpPduBuf(VOID); | |
void zFreeEpdcpPduBuf(PBYTE pbAddr); | |
void zFreeEpdcpPduBufList(T_z_UpLink_Node *ptHead,T_z_UpLink_Node *ptTail); | |
BOOL zIsPsbuff(VOID *buf); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zPutSkb2Psbuf | |
*º¯Êý¹¦ÄÜ : ½«SKBÐÅÏ¢·â×°µ½PSBUF½á¹¹ÄÚ | |
*ÊäÈë²ÎÊý : pbIpData - IPÂëÁ÷Ê×µØÖ· | |
wIpDataLen - IPÂëÁ÷³¤¶È(×Ö½Ú) | |
pbPdcpPduAddr - ÉÏÐÐEPDCP¼ÓÃܵÄÄ¿±êµØÖ· | |
pbSkbAddr - SKBµØÖ·£¬ÊÍ·ÅʱʹÓà | |
*·µ »Ø Öµ : ÉÏÐÐÊý¾Ý½ÚµãÖ¸Õë | |
*ÆäËû˵Ã÷ : | |
×¢Òâ:sizeof(T_z_UpLink_Node) + Z_UP_LINK_RESERVE ²»Äܳ¬¹ý192×Ö½Ú£¬·ñÔòҪ֪ͨAP | |
*º¯Êý×÷Õß : | |
* | |
*ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ ÐÞ¸ÄÈË µ¥ºÅÓëÐÞ¸ÄÄÚÈÝ | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
extern PBYTE zPutSkb2Psbuf(PBYTE pbIpData, WORD wIpDataLen, PBYTE pbPdcpPduAddr, PBYTE pbSkbAddr); | |
extern WORD zGetUpLinkSduSize(VOID); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zPsBuf_CacheInvalidateRange | |
*º¯Êý¹¦ÄÜ : PSBUF·â×°zOss_CacheInvalidateRange²Ù×÷£¬ÒÔºó°æ±¾ºÃͳһ | |
*ÊäÈë²ÎÊý : | |
*·µ »Ø Öµ : | |
*ÆäËû˵Ã÷ : | |
*º¯Êý×÷Õß : | |
* | |
*ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ ÐÞ¸ÄÈË µ¥ºÅÓëÐÞ¸ÄÄÚÈÝ | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
extern VOID zPsBuf_CacheInvalidateRange(UINT32 base, UINT32 size); | |
/***************************************************************************** | |
*º¯ÊýÃû³Æ : zPsBuf_CacheCleanRange | |
*º¯Êý¹¦ÄÜ : PSBUF·â×°zOss_CacheCleanRange²Ù×÷£¬ÒÔºó°æ±¾ºÃͳһ | |
*ÊäÈë²ÎÊý : | |
*·µ »Ø Öµ : | |
*ÆäËû˵Ã÷ : | |
*º¯Êý×÷Õß : | |
* | |
*ÐÞ¸ÄÈÕÆÚ °æ±¾ºÅ ÐÞ¸ÄÈË µ¥ºÅÓëÐÞ¸ÄÄÚÈÝ | |
*--------------------------------------------------------------------------- | |
* | |
****************************************************************************/ | |
extern VOID zPsBuf_CacheCleanRange(UINT32 base, UINT32 size); | |
/* psbuff leak check */ | |
#ifdef _PSBUF_LEAK_CHECK | |
void SetCurrntModule( PBYTE pBuf, WORD wModule ); | |
void SetNextModule( PBYTE pBuf, WORD wModuleC, WORD wModuleN ); | |
#define PSBUF_IN(b,m) SetCurrntModule((PBYTE)(b),(WORD)(m)) /* psbuff into module m */ | |
#define PSBUF_OUT(b,mc,mn) SetNextModule((PBYTE)(b),(WORD)(mc),(WORD)(mn)) /* psbuff from module mc to mn */ | |
#else | |
#define PSBUF_IN(b,m) | |
#define PSBUF_OUT(b,mc,mn) | |
#endif | |
/* outter module id define */ | |
#define PSBUF_MDL_BASE 0x10 | |
#define PSBUF_MDL_SIZE 0x10 /* high 4bit for outter module, low 4bit for inner module */ | |
#define PSBUF_MDL_CP_DRV_BASE PSBUF_MDL_BASE /* 0x10 */ | |
#define PSBUF_MDL_CP_CTRM_BASE (PSBUF_MDL_CP_DRV_BASE + PSBUF_MDL_SIZE) /* 0x20 */ | |
#define PSBUF_MDL_CP_NET_BASE (PSBUF_MDL_CP_CTRM_BASE + PSBUF_MDL_SIZE) /* 0x30 */ | |
#define PSBUF_MDL_AP_PSBUF_BASE (PSBUF_MDL_CP_NET_BASE + PSBUF_MDL_SIZE) /* 0x40 */ | |
#define PSBUF_MDL_AP_DDRNET_BASE (PSBUF_MDL_AP_PSBUF_BASE + PSBUF_MDL_SIZE) /* 0x50 */ | |
#define PSBUF_MDL_AP_NET_BASE (PSBUF_MDL_AP_DDRNET_BASE + PSBUF_MDL_SIZE) /* 0x60 */ | |
#define PSBUF_MDL_AP_WIFI_BASE (PSBUF_MDL_AP_NET_BASE + PSBUF_MDL_SIZE) /* 0x70 */ | |
#define PSBUF_MDL_CP_PS_BASE (PSBUF_MDL_AP_WIFI_BASE + PSBUF_MDL_SIZE) /* 0x80 */ | |
#endif |