FreeCalypso > hg > fc-magnetite
annotate src/g23m-gprs/cl/clqos.c @ 570:855b3c5bb4b5
.../cst/cst_exts.c: tab indentation fixes
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Sat, 12 Jan 2019 22:53:46 +0000 | 
| parents | 219afcfc6250 | 
| children | 
| rev | line source | 
|---|---|
| 183 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 1 /*----------------------------------------------------------------------------- | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 2 | Project : 3G UMTS PS | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 3 | Module : CL | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 4 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 5 | Copyright 2003 Texas Instruments. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 6 | All rights reserved. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 7 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 8 | This file is confidential and a trade secret of Texas | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 9 | Instruments . | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 10 | The receipt of or possession of this file does not convey | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 11 | any rights to reproduce or disclose its contents or to | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 12 | manufacture, use, or sell anything it may describe, in | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 13 | whole, or in part, without the specific written consent of | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 14 | Texas Instruments. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 15 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 16 | Purpose: QoS handling functions. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 17 | For design details, see: | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 18 | 8010.149 CL SAP | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 19 +----------------------------------------------------------------------------*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 20 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 21 #ifndef CLQOS_C | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 22 #define CLQOS_C | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 23 #endif | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 24 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 25 #ifndef ENTITY_CL | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 26 #define ENTITY_CL | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 27 #endif | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 28 #define ENTITY_CLT | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 29 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 30 /*==== INCLUDES =============================================================*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 31 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 32 #include "typedefs.h" /* to get TI data types */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 33 #include "vsi.h" /* to get a lot of macros */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 34 #include "gsm.h" /* to get a lot of macros */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 35 #include "message.h" /* to get the message definitions for sm */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 36 #include "prim.h" /* to get the definitions of used SAP and directions */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 37 #include "p_cl.val" /* to get the type of sgsn_rel*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 38 #include "p_8010_152_ps_include.h" /*to get T_PS_qos_rXX*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 39 #include "cl_inline.h" | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 40 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 41 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 42 typedef U8 T_CL_result; /*I really don't like this ! Can we do something in cl.sap ?*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 43 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 44 /*==== CONST ================================================================*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 45 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 46 /* | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 47 * Conversion table for 1/n in T_ratio. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 48 * Contains 1/n * 1E9 entries used for scaling. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 49 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 50 static const U32 cl_qos_ratio_table[10] = { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 51 0UL, | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 52 1000000000UL, /* 1E9 / 1 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 53 500000000UL, /* 1E9 / 2 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 54 333333333UL, /* 1E9 / 3 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 55 250000000UL, /* 1E9 / 4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 56 200000000UL, /* 1E9 / 5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 57 166666667UL, /* 1E9 / 6 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 58 142857143UL, /* 1E9 / 7 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 59 125000000UL, /* 1E9 / 8 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 60 111111111UL /* 1E9 / 9 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 61 }; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 62 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 63 /*==== LOCAL VARS ===========================================================*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 64 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 65 /*==== PRIVATE FUNCTIONS ====================================================*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 66 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 67 /*----------------------------------------------------------------------------- | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 68 | Function : cl_qos_ratio_to_U32 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 69 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 70 | Description : Conversion function: T_ratio to integer | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 71 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 72 | Parameters : T_ratio | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 73 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 74 | Return : ratio as integer | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 75 +----------------------------------------------------------------------------*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 76 static U32 cl_qos_ratio_to_U32(U8 ratio_mant, U8 ratio_exp) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 77 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 78 U32 value; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 79 int count; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 80 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 81 /* Error checks */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 82 if (ratio_exp > (U8)9) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 83 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 84 /*TRACE_ERROR( "QoS ratio exponent parameter out of bounds!" );*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 85 return 0; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 86 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 87 else | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 88 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 89 if (ratio_mant > (U8)9) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 90 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 91 /*TRACE_ERROR( "QoS ratio exponent parameter out of bounds!" );*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 92 return 0; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 93 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 94 else | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 95 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 96 if (ratio_exp == (U8)9 && ratio_mant < (U8)5) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 97 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 98 /*TRACE_ERROR( "QoS ratio parameter exceeds data type range!" );*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 99 return 0; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 100 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 101 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 102 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 103 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 104 for (count = 9-(int)ratio_exp, value = 1UL; count > 0; count--) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 105 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 106 value *= 10; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 107 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 108 /* Get real value by rounding 1/x and dividing by 10^(9-ratio_exp) */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 109 value = (cl_qos_ratio_table[(U16)ratio_mant] + (value >> 1)) / value; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 110 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 111 return value; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 112 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 113 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 114 /*----------------------------------------------------------------------------- | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 115 | Function : cl_qos_r99_to_delay | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 116 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 117 | Description : Given an input R99 QoS, return the corresponding R97 delay | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 118 | parameter | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 119 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 120 | Parameters : R99 Qos | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 121 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 122 | Return : Delay | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 123 +----------------------------------------------------------------------------*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 124 static T_PS_delay cl_qos_r99_to_delay(T_PS_qos_r99 *src_qos_r99) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 125 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 126 T_PS_delay delay; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 127 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 128 /* Traffic class / handling priority */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 129 switch ((T_PS_tc)src_qos_r99->tc) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 130 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 131 case PS_TC_SUB: /* 0 - Subscribed */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 132 delay = PS_DELAY_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 133 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 134 case PS_TC_CONV: /* 1 - Conversational */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 135 delay = PS_DELAY_1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 136 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 137 case PS_TC_STREAM: /* 2 - Streaming */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 138 delay = PS_DELAY_1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 139 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 140 case PS_TC_INTER: /* 3 - Interactive */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 141 switch (src_qos_r99->handling_pri) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 142 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 143 case PS_HANDLING_PRI_1: | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 144 delay = PS_DELAY_1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 145 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 146 case PS_HANDLING_PRI_2: | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 147 delay = PS_DELAY_2; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 148 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 149 case PS_HANDLING_PRI_3: | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 150 default: /* For safety */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 151 delay = PS_DELAY_3; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 152 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 153 } /* switch */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 154 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 155 case PS_TC_BG: /* 4 - Background */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 156 delay = PS_DELAY_4; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 157 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 158 default: /* 5, 6, 7 or other garbage */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 159 delay = PS_DELAY_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 160 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 161 } /* switch */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 162 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 163 return delay; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 164 } /* cl_qos_r99_to_delay */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 165 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 166 /*----------------------------------------------------------------------------- | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 167 | Function : cl_qos_r99_to_relclass | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 168 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 169 | Description : Given an input R99 QoS, return the corresponding R97 relclass | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 170 | parameter | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 171 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 172 | Parameters : R99 Qos | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 173 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 174 | Return : Reliability class | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 175 +----------------------------------------------------------------------------*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 176 static T_PS_relclass cl_qos_r99_to_relclass(T_PS_qos_r99 *src_qos_r99) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 177 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 178 U32 sdu_err; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 179 T_PS_relclass relclass; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 180 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 181 /* First, convert SDU error ratio to integral number */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 182 sdu_err = cl_qos_ratio_to_U32(src_qos_r99->sdu_err_ratio.ratio_mant, | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 183 src_qos_r99->sdu_err_ratio.ratio_exp); | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 184 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 185 if (sdu_err == 0UL) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 186 { /* SDU err ratio == subscribed value */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 187 relclass = PS_RELCLASS_SUB; /* 0 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 188 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 189 else | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 190 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 191 if (sdu_err >= 100000UL) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 192 { /* SDU err ratio <= 1E-5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 193 relclass = PS_LLC_RLC_PROT; /* 2 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 194 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 195 else | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 196 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 197 if (sdu_err >= 2000UL) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 198 { /* 1E-5 < SDU err ratio <= 5E-4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 199 relclass = PS_RLC_PROT; /* 3 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 200 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 201 else | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 202 { /* SDU err ratio > 5E-4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 203 if (src_qos_r99->ber.ratio_exp > (U8)4 || | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 204 (src_qos_r99->ber.ratio_exp == (U8)4 && src_qos_r99->ber.ratio_mant >= (U8)2)) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 205 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 206 /* BER <= 2E-4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 207 relclass = PS_PROT; /* 4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 208 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 209 else | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 210 { /* BER > 2E-4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 211 relclass = PS_NO_REL; /* 5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 212 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 213 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 214 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 215 } /* if (sdu_err ...) */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 216 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 217 return relclass; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 218 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 219 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 220 /*==== PUBLIC FUNCTIONS =====================================================*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 221 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 222 /*----------------------------------------------------------------------------- | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 223 | Function : cl_qos_convert_r99_to_r97_req | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 224 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 225 | Description : Function for converting a R99 QoS parameter set to a R97/R98 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 226 | ditto. Conversion rules according to [3G 23.107, sec 9] | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 227 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 228 | Parameters : Originating R99 QoS parameter struct | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 229 | Destination R97 QoS parameter struct (overwritten in this function) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 230 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 231 | Return : Conversion result and Destination R97 QoS parameter struct. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 232 +----------------------------------------------------------------------------*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 233 T_CL_result cl_qos_convert_r99_to_r97(T_PS_qos_r99 *src_qos_r99, | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 234 T_PS_qos_r97 *dst_qos_r97) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 235 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 236 T_CL_result success = (T_CL_result)TRUE; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 237 U16 count, max_rate; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 238 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 239 dst_qos_r97->delay = (U8)cl_qos_r99_to_delay(src_qos_r99); | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 240 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 241 /* | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 242 * SDU error ratio / Residual bit error ratio | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 243 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 244 dst_qos_r97->relclass = (U8)cl_qos_r99_to_relclass(src_qos_r99); | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 245 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 246 /* | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 247 * Maximum bit-rate | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 248 * | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 249 * In case max uplink and downlink data rates differ, [3G 23.107] | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 250 * says to map according to max(R99_uplink, R99_downlink), | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 251 * i.e. the higher of the two. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 252 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 253 max_rate = (src_qos_r99->max_rate_ul > src_qos_r99->max_rate_dl ? | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 254 src_qos_r99->max_rate_ul : src_qos_r99->max_rate_dl); | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 255 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 256 if (max_rate == (U16)PS_MAX_BR_UL_SUB) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 257 { /* Subscribed */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 258 dst_qos_r97->peak = (U8)PS_PEAK_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 259 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 260 else | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 261 { /* ! Subscribed */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 262 /* Perform pseudo log2(bit-rate). Really, we are finding the highest set | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 263 * bit to use in our comparison rather than making a *huge* | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 264 * if-[else if]*-else clause. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 265 * Fixed ceiling to 2048 (count < 12) => max_rate <= 2^11 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 266 for (count = (U16)4; ((max_rate >> count) != 0) && count < (U16)12; count++); | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 267 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 268 /* The quick / code optimal way: | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 269 * dst_qos_r97->peak = count - 3; */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 270 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 271 switch (count) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 272 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 273 case 4: dst_qos_r97->peak = (U8)PS_PEAK_1K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 274 case 5: dst_qos_r97->peak = (U8)PS_PEAK_2K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 275 case 6: dst_qos_r97->peak = (U8)PS_PEAK_4K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 276 case 7: dst_qos_r97->peak = (U8)PS_PEAK_8K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 277 case 8: dst_qos_r97->peak = (U8)PS_PEAK_16K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 278 case 9: dst_qos_r97->peak = (U8)PS_PEAK_32K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 279 case 10: dst_qos_r97->peak = (U8)PS_PEAK_64K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 280 case 11: dst_qos_r97->peak = (U8)PS_PEAK_128K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 281 case 12: dst_qos_r97->peak = (U8)PS_PEAK_256K; break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 282 } /* switch */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 283 } /* if - Subscribed */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 284 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 285 /* R97 peak throughput class is fixed to 31 (best effort) */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 286 dst_qos_r97->mean = (U8)PS_MEAN_BEST; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 287 dst_qos_r97->preced = (U8)PS_PRECED_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 288 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 289 return success; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 290 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 291 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 292 /*----------------------------------------------------------------------------- | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 293 | Function : cl_qos_convert_r97_to_r99_req | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 294 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 295 | Description : Function for converting a R97/R98 QoS parameter set to a R99 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 296 | ditto. Conversion rules according to [3G 23.107, sec 9] | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 297 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 298 | Parameters : Originating R97 QoS parameter struct | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 299 | Destination R99 QoS parameter struct (overwritten in this function) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 300 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 301 | Return : Conversion result and Destination R99 QoS parameter struct. | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 302 +----------------------------------------------------------------------------*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 303 T_CL_result cl_qos_convert_r97_to_r99(T_PS_qos_r97 *src_qos_r97, | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 304 T_PS_qos_r99 *dst_qos_r99) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 305 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 306 T_CL_result success = (T_CL_result)TRUE; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 307 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 308 /* Delay parameter */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 309 switch ((T_PS_delay)src_qos_r97->delay) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 310 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 311 case PS_DELAY_SUB: /* 0 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 312 dst_qos_r99->tc = (U8)PS_TC_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 313 dst_qos_r99->handling_pri = (U8)PS_HANDLING_PRI_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 314 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 315 case PS_DELAY_1: /* 1 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 316 dst_qos_r99->tc = (U8)PS_TC_INTER; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 317 dst_qos_r99->handling_pri = (U8)PS_HANDLING_PRI_1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 318 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 319 case PS_DELAY_2: /* 2 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 320 dst_qos_r99->tc = (U8)PS_TC_INTER; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 321 dst_qos_r99->handling_pri = (U8)PS_HANDLING_PRI_2; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 322 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 323 case PS_DELAY_3: /* 3 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 324 dst_qos_r99->tc = (U8)PS_TC_INTER; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 325 dst_qos_r99->handling_pri = (U8)PS_HANDLING_PRI_3; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 326 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 327 case PS_DELAY_4: /* 4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 328 dst_qos_r99->tc = (U8)PS_TC_BG; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 329 dst_qos_r99->handling_pri = (U8)PS_HANDLING_PRI_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 330 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 331 default: /* 5 - 7 or other garbage */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 332 /* Error handling? */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 333 success = (T_CL_result)FALSE; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 334 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 335 } /* switch */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 336 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 337 /* Reliability class */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 338 switch ((T_PS_relclass)src_qos_r97->relclass) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 339 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 340 case PS_RELCLASS_SUB: /* 0 - Subscribed */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 341 dst_qos_r99->sdu_err_ratio.ratio_mant = dst_qos_r99->sdu_err_ratio.ratio_exp = (U8)0; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 342 dst_qos_r99->ber.ratio_mant = dst_qos_r99->ber.ratio_exp = (U8)0; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 343 dst_qos_r99->del_err_sdu = (U8)PS_DEL_ERR_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 344 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 345 case PS_GTP_LLC_RLC_PROT: /* 1 - Acknowledged GTP, LLC, and RLC */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 346 dst_qos_r99->sdu_err_ratio.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 347 dst_qos_r99->sdu_err_ratio.ratio_exp = (U8)6; /* SDU error ratio = 1E-6 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 348 dst_qos_r99->ber.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 349 dst_qos_r99->ber.ratio_exp = (U8)5; /* Residual BER = 1E-5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 350 dst_qos_r99->del_err_sdu = (U8)PS_DEL_ERR_NO; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 351 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 352 case PS_LLC_RLC_PROT: /* 2 - Unacknowledged GTP; Acknowledged LLC and RLC */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 353 dst_qos_r99->sdu_err_ratio.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 354 dst_qos_r99->sdu_err_ratio.ratio_exp = (U8)6; /* SDU error ratio = 1E-6 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 355 dst_qos_r99->ber.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 356 dst_qos_r99->ber.ratio_exp = (U8)5; /* Residual BER = 1E-5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 357 dst_qos_r99->del_err_sdu = (U8)PS_DEL_ERR_NO; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 358 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 359 case PS_RLC_PROT: /* 3 - Unacknowledged GTP and LLC; Acknowledged RLC */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 360 dst_qos_r99->sdu_err_ratio.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 361 dst_qos_r99->sdu_err_ratio.ratio_exp = (U8)4; /* SDU error ratio = 1E-4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 362 dst_qos_r99->ber.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 363 dst_qos_r99->ber.ratio_exp = (U8)5; /* Residual BER = 1E-5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 364 dst_qos_r99->del_err_sdu = (U8)PS_DEL_ERR_NO; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 365 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 366 case PS_PROT: /* 4 - Unacknowledged GTP, LLC, and RLC */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 367 dst_qos_r99->sdu_err_ratio.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 368 dst_qos_r99->sdu_err_ratio.ratio_exp = (U8)3; /* SDU error ratio = 1E-3 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 369 dst_qos_r99->ber.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 370 dst_qos_r99->ber.ratio_exp = (U8)5; /* Residual BER = 1E-5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 371 dst_qos_r99->del_err_sdu = (U8)PS_DEL_ERR_NO; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 372 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 373 case PS_NO_REL: /* 5 - Unacknowledged GTP, LLC, and RLC (Unprotected) */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 374 dst_qos_r99->sdu_err_ratio.ratio_mant = (U8)1; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 375 dst_qos_r99->sdu_err_ratio.ratio_exp = (U8)3; /* SDU error ratio = 1E-3 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 376 dst_qos_r99->ber.ratio_mant = (U8)4; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 377 dst_qos_r99->ber.ratio_exp = (U8)3; /* Residual BER = 4E-3 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 378 dst_qos_r99->del_err_sdu = (U8)PS_DEL_ERR_YES; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 379 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 380 default: /* 6, 7 or other garbage */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 381 /* Error handling? */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 382 success = (T_CL_result)FALSE; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 383 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 384 } /* switch */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 385 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 386 /* Peak throughput parameter */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 387 /* NOTE: Could be optimized heavily into the following: | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 388 * dst_qos_r99->max_br_dl = dst_qos_r99->max_br_ul = (peak == 0 ? 0 : 4 << peak) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 389 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 390 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 391 switch ((T_PS_peak)src_qos_r97->peak) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 392 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 393 case PS_PEAK_SUB: /* 0 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 394 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)PS_MAX_BR_UL_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 395 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 396 case PS_PEAK_1K: /* 1 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 397 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)8; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 398 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 399 case PS_PEAK_2K: /* 2 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 400 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)16; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 401 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 402 case PS_PEAK_4K: /* 3 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 403 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)32; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 404 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 405 case PS_PEAK_8K: /* 4 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 406 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)64; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 407 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 408 case PS_PEAK_16K: /* 5 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 409 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)128; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 410 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 411 case PS_PEAK_32K: /* 6 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 412 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)256; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 413 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 414 case PS_PEAK_64K: /* 7 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 415 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)512; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 416 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 417 case PS_PEAK_128K: /* 8 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 418 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)1024; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 419 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 420 case PS_PEAK_256K: /* 9 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 421 dst_qos_r99->max_rate_dl = dst_qos_r99->max_rate_ul = (U16)2048; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 422 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 423 default: | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 424 /* Handling? */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 425 success = (T_CL_result)FALSE; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 426 break; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 427 } /* switch */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 428 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 429 /* R99 max SDU size is fixed to 1500 */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 430 dst_qos_r99->max_sdu = (U16)1500; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 431 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 432 /* Remaining R99 fields are not specified. We fill them in with subscribed */ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 433 dst_qos_r99->order = (U8)PS_ORDER_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 434 dst_qos_r99->xfer_delay = (U16)PS_XFER_DELAY_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 435 dst_qos_r99->guar_br_ul = (U16)PS_GUAR_BR_UL_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 436 dst_qos_r99->guar_br_dl = (U16)PS_GUAR_BR_DL_SUB; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 437 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 438 return success; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 439 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 440 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 441 /*----------------------------------------------------------------------------- | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 442 | Function : cl_qos_use_ack_mode_llc_req | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 443 +------------------------------------------------------------------------------ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 444 | Description : Query function: Given input QoS, should NSAPI use acknowledged | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 445 | LLC mode? | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 446 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 447 | Parameters : Originating R99 QoS parameter struct | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 448 | | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 449 | Return : LLC mode | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 450 +----------------------------------------------------------------------------*/ | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 451 T_PS_llc_mode cl_qos_use_ack_mode_llc(T_PS_qos_r99 *src_qos_r99) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 452 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 453 T_PS_relclass relclass; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 454 T_PS_llc_mode ret_val = PS_LLC_UNACKNOWLEDGED; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 455 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 456 relclass = cl_qos_r99_to_relclass(src_qos_r99); | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 457 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 458 if (relclass == PS_GTP_LLC_RLC_PROT || relclass == PS_LLC_RLC_PROT) | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 459 { | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 460 ret_val = PS_LLC_ACKNOWLEDGED; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 461 } | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 462 | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 463 return ret_val; | 
| 
219afcfc6250
src/g23m-gprs: initial import from TCS3.2/LoCosto
 Mychaela Falconia <falcon@freecalypso.org> parents: diff
changeset | 464 } | 
