📄 ppp_buff_mgr.h
字号:
/*****************************************************************************
* Copyright Statement:
* --------------------
* This software is protected by Copyright and the information contained
* herein is confidential. The software may not be copied and the information
* contained herein may not be used or disclosed except with the written
* permission of MediaTek Inc. (C) 2005
*
* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
*
* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
*
* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
*
*****************************************************************************/
/*****************************************************************************
*
* Filename:
* ---------
* PPP_BUFF_MGR.H
*
* Project:
* --------
* MAUI
*
* Description:
* ------------
* This file describes some buffer management procedures in PPP.
*
* Author:
* -------
* -------
* -------
*
*============================================================================
* HISTORY
* Below this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*------------------------------------------------------------------------------
* removed!
*
*------------------------------------------------------------------------------
* Upper this line, this part is controlled by PVCS VM. DO NOT MODIFY!!
*============================================================================
****************************************************************************/
#ifndef _PPP_BUFF_MGR_H
#define _PPP_BUFF_MGR_H
/* Define the buffer used by PPP */
#define UART_TEMP_READ_BUFF_SIZE 1500 /*512*/
#define UART_TEMP_WRITE_BUFF_SIZE 3010
#define MAX_CTRL_PKT_SIZE 256
#define MAX_IP_PKT_SIZE 1510
/* MAX_OUT_PKT_CSD_SIZE = 3010 is good! */
#define MAX_OUT_PKT_CSD_SIZE 3010
/* Allocate FLC buffer to pass data */
#define GET_GPRS_UL_FLC_PEER_BUFF(is_pool_presence,size) ((peer_buff_struct *)gprs_flc_get_peer_buff(NPDU_DATA,0, GPRS_FLC_UL, 0, (size), SND_UL_CTRL_HEADER_LENGTH, 0,&(is_pool_presence)))
#ifdef __TCPIP__
#define GET_CSD_DL_FLC_PEER_BUFF(is_pool_presence,size) ((peer_buff_struct *)gprs_flc_get_peer_buff(SPDU_DATA,0,GPRS_FLC_DL, 0,(size),MBUF_LENGTH, 0, &(is_pool_presence)))
#define GET_CSD_UL_FLC_PEER_BUFF(is_pool_presence,size) ((peer_buff_struct *)gprs_flc_get_peer_buff(APPDU_DATA,0, GPRS_FLC_UL, 0, (size),0, 0, &(is_pool_presence)))
#else /* if not define __TCPIP__ */
#define GET_CSD_DL_FLC_PEER_BUFF(is_pool_presence,size) NULL
#define GET_CSD_UL_FLC_PEER_BUFF(is_pool_presence,size) NULL
#endif /* ~__TCPIP__ */
/* Deallocate FLC buffer we allocate before */
#define FREE_GPRS_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id) (gprs_flc_free_peer_buff(NPDU_DATA, 0, GPRS_FLC_UL, 0, (ptr)))
#ifdef __TCPIP__
#define FREE_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id) (gprs_flc_free_peer_buff(SPDU_DATA, 0, GPRS_FLC_DL, 0, (ptr)))
#define FREE_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id) (gprs_flc_free_peer_buff(APPDU_DATA,0,GPRS_FLC_UL,0,(ptr)))
#else /* if not define __TCPIP__ */
#define FREE_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id) ASSERT(0)
#define FREE_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id) ASSERT(0)
#endif /* ~__TCPIP__ */
/* Check FLC buffer pool */
#define CHECK_FLC_CONTEXT_ACTIVATED(data_type,dir,ctx_id) gprs_flc_is_flc_context_activated((data_type),0,(dir),(ctx_id))
/* Deallocate FLC buffer send by others (in our queue) */
#define FREEQ_GPRS_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id) gprs_flc_free_peer_buff(NPDU_DATA,0,GPRS_FLC_DL,0,(ptr))
#ifdef __TCPIP__
#define FREEQ_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id) gprs_flc_free_peer_buff(APPDU_DATA,0,GPRS_FLC_DL,0,(ptr))
#define FREEQ_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id) gprs_flc_free_peer_buff((data_type),0,GPRS_FLC_UL,(ctx_id),(ptr))
#else /* if not define __TCPIP__ */
#define FREEQ_CSD_DL_FLC_PEER_BUFF(ptr,data_type,ctx_id) ASSERT(0)
#define FREEQ_CSD_UL_FLC_PEER_BUFF(ptr,data_type,ctx_id) ASSERT(0)
#endif /* ~__TCPIP__ */
typedef enum {
NULL_BUF,
CTRL_BUF,
FLC_BUF
} ppp_buff_type_enum;
typedef struct {
ppp_buff_type_enum pkt_type;
kal_uint16 protocol;
kal_uint16 size;
kal_uint16 used;
kal_uint8 *data_ptr;
kal_uint8 *cur_ptr;
kal_uint8 *end_ptr;
} ppp_buff_head_struct;
typedef struct {
kal_uint32 raccm;
kal_uint32 xaccm;
kal_uint16 rfcs;
kal_uint16 xfcs;
kal_uint16 mru;
kal_uint16 mtu;
kal_bool is_acfc_tx;
kal_bool is_pfc_tx;
kal_bool is_acfc_rx;
kal_bool is_pfc_rx;
kal_uint8 rflags;
kal_uint8 xflags;
} ahdlc_state_struct;
typedef struct {
ahdlc_state_struct state;
kal_bool is_read_suspend;
kal_bool is_write_suspend;
ppp_buff_head_struct decode;
ppp_buff_head_struct encode;
} ppp_framer_struct;
typedef struct ppp_flc_buffq_struct {
gprs_flc_data_type_enum flc_type;
kal_uint8 socket_id;
peer_buff_struct * peer_buff_ptr;
struct ppp_flc_buffq_struct * next;
} ppp_flc_buffq_struct;
#define PPPGET8(to,from_ptr,len) { \
(to) = *(from_ptr)++; \
(len)--; \
}
#define PPPPUT8(from, to_ptr,len) { \
*(to_ptr)++ = (from); \
(len)++; \
}
#define PPPGET16(to,from_ptr,len) { \
(to) = *(from_ptr)++ << 8; \
(to) |= *(from_ptr)++; \
(len) -= 2; \
}
#define PPPPUT16(from,to_ptr,len) { \
*(to_ptr)++ = (kal_uint8) ((from) >> 8); \
*(to_ptr)++ = (kal_uint8) (from); \
len += 2; \
}
#define PPPGET32(to,from_ptr,len) { \
(to) = *(from_ptr)++ << 24; \
(to) |= *(from_ptr)++ << 16; \
(to) |= *(from_ptr)++ << 8; \
(to) |= *(from_ptr)++; \
(len) -= 4; \
}
#define PPPPUT32(from,to_ptr,len) { \
*(to_ptr)++ = (kal_uint8) ((from) >> 24); \
*(to_ptr)++ = (kal_uint8) ((from) >> 16); \
*(to_ptr)++ = (kal_uint8) ((from) >> 8); \
*(to_ptr)++ = (kal_uint8) (from); \
(len) += 4; \
}
#define PPPPTRINC(num,ptr) ((ptr) += (num))
#define PPPPTRDEC(num,ptr) ((ptr) -= (num))
#define PPPPUTHEADER(ptr,protocol) { \
PPPPUT8(AHDLC_ALLSTATIONS,ptr); \
PPPPUT8(AHDLC_UI,ptr); \
PPPPUT16(protocol,ptr); \
}
void ppp_enqueue(ppp_flc_buffq_struct ** ,peer_buff_struct *,gprs_flc_data_type_enum,kal_uint8);
void ppp_insqueue(ppp_flc_buffq_struct ** ,peer_buff_struct *,gprs_flc_data_type_enum,kal_uint8);
peer_buff_struct * ppp_dequeue(ppp_flc_buffq_struct **,gprs_flc_data_type_enum *,kal_uint8 *);
#endif /* ~_PPP_BUFF_MGR_H */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -