FreeCalypso > hg > fc-magnetite
annotate src/g23m-gprs/cl/clqos.c @ 315:8cc745104906
compiled-in afcparams numbers for Compal and Pirelli targets
now match those used by their respective original firmwares
| author | Mychaela Falconia <falcon@freecalypso.org> | 
|---|---|
| date | Thu, 16 Nov 2017 05:43:03 +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 } | 
