00001
00011 #ifndef __GOBI_API_QOS_H__
00012 #define __GOBI_API_QOS_H__
00013
00014 #ifdef __cplusplus
00015 extern "C" {
00016 #endif
00017
00033 ULONG SLQSQosReset(
00034 BYTE instance
00035 );
00036
00037
00048 typedef struct
00049 {
00050 ULONG dataRateMax;
00051 ULONG guaranteedRate;
00052 } dataRate;
00053
00066 typedef struct
00067 {
00068 ULONG peakRate;
00069 ULONG tokenRate;
00070 ULONG bucketSz;
00071 } tokenBucket;
00072
00084 typedef struct
00085 {
00086 WORD multiplier;
00087 WORD exponent;
00088 } pktErrRate;
00089
00194 typedef struct
00195 {
00196 BYTE index;
00197 WORD *pProfileId3GPP2;
00198 BYTE *p3GPP2Pri;
00199 BYTE *pTrafficClass;
00200 dataRate *pDataRate;
00201 tokenBucket *pTokenBucket;
00202 ULONG *pLatency;
00203 ULONG *pJitter;
00204 pktErrRate *pPktErrRate;
00205 ULONG *pMinPolicedPktSz;
00206 ULONG *pMaxAllowedPktSz;
00207 WORD *p3GPPResResidualBER;
00208 WORD *p3GPPTraHdlPri;
00209 BYTE *p3GPPImCn;
00210 BYTE *p3GPPSigInd;
00211 BYTE *pLteQci;
00212 } swiQosFlow;
00213
00226 typedef struct
00227 {
00228 ULONG addr;
00229 ULONG subnetMask;
00230 } IPv4Addr;
00231
00247 typedef struct
00248 {
00249 ULONG val;
00250 ULONG mask;
00251 } Tos;
00252
00264 typedef struct
00265 {
00266 BYTE addr[16];
00267 BYTE prefixLen;
00268 } IPv6Addr;
00269
00285 typedef struct
00286 {
00287 ULONG val;
00288 ULONG mask;
00289 } IPv6TrafCls;
00290
00302 typedef struct
00303 {
00304 WORD port;
00305 WORD range;
00306 } Port;
00307
00397 typedef struct
00398 {
00399 BYTE index;
00400 BYTE version;
00401 IPv4Addr *pIPv4SrcAddr;
00402 IPv4Addr *pIPv4DstAddr;
00403 BYTE *pNextHdrProto;
00404 Tos *pTos;
00405 IPv6Addr *pIPv6SrcAddr;
00406 IPv6Addr *pIPv6DstAddr;
00407 IPv6TrafCls *pIPv6TrafCls;
00408 ULONG *pIPv6Label;
00409 Port *pTCPSrcPort;
00410 Port *pTCPDstPort;
00411 Port *pUDPSrcPort;
00412 Port *pUDPDstPort;
00413 ULONG *pEspSpi;
00414 BYTE *pPrecedence;
00415 BYTE *pId;
00416 Port *pTranSrcPort;
00417 Port *pTranDstPort;
00418 } swiQosFilter;
00419
00439 typedef struct
00440 {
00441 BYTE index;
00442 swiQosFlow *pTxFlow;
00443 swiQosFlow *pRxFlow;
00444 swiQosFilter *pTxFilter;
00445 swiQosFilter *pRxFilter;
00446 } swiQosReq;
00447
00458 typedef struct
00459 {
00460 BYTE sz;
00461 ULONG *pIds;
00462 } swiQosIds;
00463
00486 ULONG SLQSQosReq(
00487 BYTE instance,
00488 swiQosReq *pQosReq,
00489 swiQosIds *pQosResp );
00490
00505 ULONG SLQSQosRel(
00506 BYTE instance,
00507 swiQosIds *pQosIds );
00508
00523 ULONG SLQSQosSuspend(
00524 BYTE instance,
00525 swiQosIds *pQosIds );
00526
00541 ULONG SLQSQosResume(
00542 BYTE instance,
00543 swiQosIds *pQosIds );
00544
00565 typedef struct
00566 {
00567 ULONG id;
00568 swiQosFlow *pTxFlow;
00569 swiQosFlow *pRxFlow;
00570 swiQosFilter *pTxFilter;
00571 swiQosFilter *pRxFilter;
00572 } swiQosModifyReq;
00573
00590 ULONG SLQSQosModify(
00591 BYTE instance,
00592 swiQosModifyReq *pReq );
00593
00604 typedef struct
00605 {
00606 swiQosFlow *pTxFlow;
00607 swiQosFlow *pRxFlow;
00608 } swiQosGranted;
00609
00629 ULONG SLQSQosGetGranted(
00630 BYTE instance,
00631 ULONG id,
00632 swiQosGranted *pGranted );
00633
00656 ULONG SLQSQosGetFlowStatus(
00657 BYTE instance,
00658 ULONG id,
00659 BYTE *pStatus);
00660
00679 ULONG SLQSQosGetNetworkStatus(
00680 BYTE instance,
00681 BYTE *pStatus);
00682
00693 typedef struct
00694 {
00695 WORD tech;
00696 BYTE *pProfSz;
00697 WORD *pProfValues;
00698 } NWProfile;
00699
00717 ULONG SLQSQosGetNWProf(
00718 BYTE instance,
00719 BYTE *pSz,
00720 NWProfile *pProfile);
00721
00746 typedef struct
00747 {
00748 ULONG qid;
00749 ULONG tx_pkt;
00750 ULONG tx_pkt_drp;
00751 ULONG rx_pkt;
00752 ULONG tx_bytes;
00753 ULONG tx_bytes_drp;
00754 ULONG rx_bytes;
00755 } QosFlowStat;
00756
00792 typedef struct
00793 {
00794 ULONG sid;
00795 ULONG total_tx_pkt;
00796 ULONG total_tx_pkt_drp;
00797 ULONG total_rx_pkt;
00798 ULONG total_tx_bytes;
00799 ULONG total_tx_bytes_drp;
00800 ULONG total_rx_bytes;
00801 ULONG *pNumQosFlow;
00802 QosFlowStat *pQosFlow;
00803 } QosStat;
00804
00821 ULONG SLQSQosGetStat(
00822 ULONG sid,
00823 QosStat *pQosStat
00824 );
00825
00842 ULONG SLQSQosGetAmbr(
00843 ULONG sid,
00844 ULONG *pAmbr
00845 );
00846
00847 #ifdef __cplusplus
00848 }
00849 #endif
00850
00851 #endif