blob: 3e0427ca0c7db6498d1cdc8f76e590edc0106e58 [file] [log] [blame]
rjw6c1fd8f2022-11-30 14:33:01 +08001/*****************************************************************************
2* Copyright Statement:
3* --------------------
4* This software is protected by Copyright and the information contained
5* herein is confidential. The software may not be copied and the information
6* contained herein may not be used or disclosed except with the written
7* permission of MediaTek Inc. (C) 2016
8*
9* BY OPENING THIS FILE, BUYER HEREBY UNEQUIVOCALLY ACKNOWLEDGES AND AGREES
10* THAT THE SOFTWARE/FIRMWARE AND ITS DOCUMENTATIONS ("MEDIATEK SOFTWARE")
11* RECEIVED FROM MEDIATEK AND/OR ITS REPRESENTATIVES ARE PROVIDED TO BUYER ON
12* AN "AS-IS" BASIS ONLY. MEDIATEK EXPRESSLY DISCLAIMS ANY AND ALL WARRANTIES,
13* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
14* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE OR NONINFRINGEMENT.
15* NEITHER DOES MEDIATEK PROVIDE ANY WARRANTY WHATSOEVER WITH RESPECT TO THE
16* SOFTWARE OF ANY THIRD PARTY WHICH MAY BE USED BY, INCORPORATED IN, OR
17* SUPPLIED WITH THE MEDIATEK SOFTWARE, AND BUYER AGREES TO LOOK ONLY TO SUCH
18* THIRD PARTY FOR ANY WARRANTY CLAIM RELATING THERETO. MEDIATEK SHALL ALSO
19* NOT BE RESPONSIBLE FOR ANY MEDIATEK SOFTWARE RELEASES MADE TO BUYER'S
20* SPECIFICATION OR TO CONFORM TO A PARTICULAR STANDARD OR OPEN FORUM.
21*
22* BUYER'S SOLE AND EXCLUSIVE REMEDY AND MEDIATEK'S ENTIRE AND CUMULATIVE
23* LIABILITY WITH RESPECT TO THE MEDIATEK SOFTWARE RELEASED HEREUNDER WILL BE,
24* AT MEDIATEK'S OPTION, TO REVISE OR REPLACE THE MEDIATEK SOFTWARE AT ISSUE,
25* OR REFUND ANY SOFTWARE LICENSE FEES OR SERVICE CHARGE PAID BY BUYER TO
26* MEDIATEK FOR SUCH MEDIATEK SOFTWARE AT ISSUE.
27*
28* THE TRANSACTION CONTEMPLATED HEREUNDER SHALL BE CONSTRUED IN ACCORDANCE
29* WITH THE LAWS OF THE STATE OF CALIFORNIA, USA, EXCLUDING ITS CONFLICT OF
30* LAWS PRINCIPLES. ANY DISPUTES, CONTROVERSIES OR CLAIMS ARISING THEREOF AND
31* RELATED THERETO SHALL BE SETTLED BY ARBITRATION IN SAN FRANCISCO, CA, UNDER
32* THE RULES OF THE INTERNATIONAL CHAMBER OF COMMERCE (ICC).
33*
34*****************************************************************************/
35/*************************************************************
36*
37* This Software is the property of VIA Telecom, Inc. and may only be used pursuant to a license from VIA Telecom, Inc.
38*
39* Any unauthorized use inconsistent with the terms of such license is strictly prohibited.
40*
41* Copyright (c) 2006-2010 VIA Telecom, Inc. All rights reserved.
42*
43*************************************************************/
44#ifndef _RTM_H_
45#define _RTM_H_
46/*****************************************************************************
47*
48* FILE NAME : rtm.h
49*
50* DESCRIPTION : This file contains function prototypes and other definitions
51* for the RCP RTM component, which are shared between other
52* components within RCP.
53*
54*
55* HISTORY :
56* See Log at end of file
57*
58*****************************************************************************/
59
60/*----------------------------------------------------------------------------
61* Include Files
62----------------------------------------------------------------------------*/
63#include "sysdefs.h"
64#include "sysapi.h"
65#include "do_rtmapi.h"
66#include "do_dsaapi.h"
67#if (defined MTK_PLT_ON_PC) && (!defined GEN_FOR_PC)
68#include "osc_type.h"
69#endif
70#include "slc_nvram.h"
71
72/*----------------------------------------------------------------------------
73 Global Defines And Macros
74----------------------------------------------------------------------------*/
75#define RTM_MAX_SUBFRAME_COUNT 4 /* Wraparound subframe counter number, from 0-3 */
76#define RTM_MAX_TX_HISTORY_SUBFRAME 256 /* Wraparound TxHistory subframe counter number, mult of 14 */
77#define RTM_MAX_TXHISTORY 16 /* Max TxHistory count to keep RevMacId */
78#define RTM_MAX_RATE_PROB_RANGE 255 /* Max range of random number for transition probability */
79#define RTM_MAX_CONFIG_REQ 5 /* Max number of outstanding ConfigReqs msgs sent by AT */
80#define RTM_MAX_STATES_SPY_SUBFR_NO 4 /* Max subframe num for rtm23 spy */
81
82
83#define RTM_PROTOCOL_TYPE 0x4
84#define RTM_NEWSUBPKT 0xFF
85#define RTM_VALID_PAYLOAD 1
86#define RTM_LCM_ATI_H 0x3FF /* LongCode Mask, most sig. 10 bits */
87
88
89#define RTM_DRC_GATE_CONT 0 /* DRCGating = Continuous */
90#define RTM_DRC_GATE_DISCONT 1 /* DRCGating = Discontinuous */
91#define RTM_TM_HICAP 0 /* RTM3: TransmissionMode = High Capacity */
92#define RTM_TM_LOLAT 1 /* RTM3: TransmissionMode = Low Latency */
93
94#define RTM_TMR_SETUP 1500 /* 1.5s = 1500ms */
95#define RTM_TMR_FAKERTCACK 1000
96#define RTM_OTA_MSG_ID_LEN 8
97#define RTM_MAX_RATELIMIT 64
98#define RTM_MAX_ATTRIB_REC 3
99
100
101#define RTM_HWD_ST_SYMB_MASK 0x000007FF
102
103#define MAX_SUB_PACKET_NUM 4
104
105#if defined MTK_PLT_ON_PC
106#define ISR_EV_RTM_RF_RELEASE OSC_ISR_SRC_CUSTOM5
107#endif
108#define RTM3_DUMMY_PKT_INTERVAL_SUB_FRAME 150
109
110
111/*----------------------------------------------------------------------------
112 Local Defines And Macros
113----------------------------------------------------------------------------*/
114
115#define RTM_TXH_TXPWR_SLEW 0 /* Q7 dbm. slew: the max pwrInc allowed from prevRate to maxRate */
116#define RTM_TXH_TXPWR_HEADROOM 0x100 /* Q7 dbm. 2dbm. headroom: allowed for rpc adj in the next 5 slots */
117
118#define RTM3_DEACTIVATE_DELAY1 6900 /* Us. Delay=(4slots*2048+256chips). DelayUs= (DelayChips*0.8154us/chip)us */
119#define RTM3_DEACTIVATE_DELAY2 10240 /* Us. Delay=(6slots*2048+256chips) */
120#define RTM3_DEACTIVATE_DELAY3 3540 /* Us. Delay=(2slots*2048+256chips). DelayUs= (DelayChips*0.8154us/chip)us */
121#define RTM_ABORT_DELAY 3560 /* Us. Delay=(2slots*2048+256chips) */
122#define RTM_RLSILENT_DELAY 8570 /* Us. Delay=(5slots*2048+256chips) */
123#define RTM_TXON_DELAY 6430 /* Us. Delay=(4slots*2048-300chips) */
124
125#define RTM_TIME_FOR_WORK_SLICE 1948
126
127/*----------------------------------------------------------------------------
128Global Typedefs
129----------------------------------------------------------------------------*/
130/*--------------------*/
131/* RTM Global structs */
132/*--------------------*/
133
134
135/* RTCMAC Configuration Data */
136/* This contains cfg data that are not part of the std's sessCfg data */
137typedef struct
138{
139 /* from RTM_OMP_SECTORPARMS_MSG */
140 kal_uint8 revlinkSilenceDuration; /* frames */
141 kal_uint8 revlinkSilencePeriod;
142
143
144 /* TxHw Cfg Data */
145 /*---------------*/
146 /* from RTM_AMP_TXATI_UPDATE_MSG */
147 kal_uint32 lcmATIL;
148 kal_uint16 lcmATIH; /* 10 bits, all 1's */
149
150 /* from RTM_RUP_TCHASSIGN_MSG */
151 kal_uint8 frameOffset; /* slots */
152 kal_uint8 drcLen; /* 0=1, 1=2slots, 2=4slots, 3=8slots */
153 kal_int8 drcChanGainBase; /* 0.5db, valid range (-9dB,+6dB) */
154 kal_int8 dscChanGainBase; /* 0.5db */
155 kal_int8 ackChanGain; /* 0.5db, valid range (-9dB,+6dB) */
156 kal_uint8 numPilot;
157 kal_uint8 userMacId[SYS_MAX_ACTIVE_LIST_PILOTS];
158 kal_uint8 rabLength[SYS_MAX_ACTIVE_LIST_PILOTS]; /* slots */
159 kal_uint8 rabOffset[SYS_MAX_ACTIVE_LIST_PILOTS]; /* slots */
160 kal_int8 raChanGain[SYS_MAX_ACTIVE_LIST_PILOTS]; /* db */
161
162 /* from RTM_FTM_CFG_DATA_MSG */
163 kal_uint8 drcGating; /* 0=cont, 1=disc */
164 kal_uint8 dscLen; /* units = 8 slots */
165 kal_uint8 drcBoostLen; /* units = 2 slots */
166 kal_uint8 dscBoostLen; /* units = 8 slots */
167 kal_uint8 drcChanGainBoost; /* db */
168 kal_uint8 dscChanGainBoost; /* db */
169 kal_uint8 deltaAckChanGainMUP; /* units = 0.5db */
170
171 /* RTCMAC SessCfg data */
172 /* Mostly Stored in RtmInUse, here are some which requires separate conversion. */
173 kal_uint16 dataGainScale_Subtype01[RTM_MAX_REV_RATE];
174 /* RTM0/1: Channel Gains from pilotpwr, in linear Q7
175 0 = 0
176 1 = dataScale9k6 ( scalar of (dataOffsetNom+dataOffsetxxx) )
177 2 = dataScale19k2
178 3 = dataScale38k4
179 4 = dataScale76k8
180 5 = dataScale153k6 */
181
182 /* RTM: TODO: RRIgain, dataGains for RTM2/3, in linear Q7 */
183 kal_uint16 dataGainScale_Subtype2; /* RTM2 */
184
185 /* RTM3: for now, these are used temporarily for testing... */
186 kal_uint16 rriGainScale_Subtype3; /* RTM3 */
187 kal_uint16 dataGainScale_Subtype3; /* RTM3 */
188 kal_uint16 dataGainScale0_Subtype3; /* RTM3 */
189 kal_uint16 dataGainScale1_Subtype3;
190 kal_uint16 dataGainScale2_Subtype3;
191 kal_uint16 dataGainScale3_Subtype3;
192
193
194 /* RTM01/3: Ks0 - Ks without data
195 Ks0 = (1 + Gack^2 + Gdrc^2) */
196 kal_uint16 Ks0;
197
198
199 /* Msg Rx flags */
200 /*--------------*/
201 kal_bool sessionOpenFlag; /* KAL_TRUE=Session Opened */
202 kal_bool cssSearchEndFlag; /* KAL_TRUE=CSS Search Ended */
203} RtmScmT;
204
205
206
207
208/* RTAP Configuration Data */
209typedef struct
210{
211 /* RTAP/RETAP rates */
212 /*------------------*/
213 kal_bool bTestPktMode;
214
215 kal_uint8 rtapTargetRate;
216 kal_uint8 retapTargetRate;
217
218
219 /* from RTM_RTAP_MODE_MSG */
220 /*------------------------*/
221 /* PHY0/1, RTM0/1/2 */
222 kal_bool configuredPacketRateMode;
223 kal_uint8 rtapMinRate; /* def=0 */
224 kal_uint8 rtapMaxRate; /* def=5 */ /* PHY0/1, RTM0/1/2: Rate: 0-5 */
225
226 /* PHY2, RTM3 */
227 kal_bool configuredPacketPayloadSizeMode;
228 kal_uint8 rtapMinPayloadSize; /* def=0 */
229 kal_uint8 rtapMaxPayloadSize; /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12
230 0 = 0 bits
231 1 = 96 bits
232 2 = 224 bits
233 3 = 480 bits
234 4 = 736 bits
235 5 = 992 bits
236 6 = 1504 bits
237 7 = 2016 bits
238 8 = 3040 bits
239 9 = 4064 bits
240 10 = 6112 bits
241 11 = 8160 bits
242 12 = 12256 bits */
243} RtmRtapT;
244
245
246/* RTM_TXOFF_INIT_BUFFER_MSG */
247typedef struct
248{
249 kal_bool Silent;
250} RtmTxOffInitBufferMsgT;
251
252
253/*--------------*/
254/* OTA Msg Defs */
255/*--------------*/
256typedef enum
257{
258 RTM_RTCACK_MSG = 0,
259 RTM_BROADCAST_REV_RATE_LIMIT_MSG = 1,
260 RTM_UNICAST_REV_RATE_LIMIT_MSG = 2,
261 RTM_GRANT_MSG = 3,
262 RTM_SCP_CONFIG_REQ_MSG = 0x50,
263 RTM_SCP_CONFIG_RSP_MSG = 0x51,
264 RTM_ATTRIBUTE_UPDATE_REQUEST = 0x52,
265 RTM_ATTRIBUTE_UPDATE_ACCEPT = 0x53,
266 RTM_ATTRIBUTE_UPDATE_REJECT = 0x54
267} RtmOtaMsgIdT;
268
269typedef enum
270{
271 STREAM_CONFIG_REQ_MSG = 0x50,
272 STREAM_CONFIG_RSP_MSG = 0x51
273} StrOtaMsgIdT;
274/* RTM: TODO */
275/* same msgId ? */
276#define RTM_REQUEST_MSG 2
277
278
279
280/* RTM_BROADCAST_REV_RATE_LIMIT_MSG */
281typedef struct
282{
283 kal_uint8 rpcCount;
284 kal_uint8 rateLimit[RTM_MAX_RATELIMIT]; /* rate = 0 to 5 */
285} RtmOtaBroadcastRevRateLimitMsgT;
286
287
288/* RTM_UNICAST_REV_RATE_LIMIT_MSG */
289typedef struct
290{
291 kal_uint8 rateLimit; /* rate = 0 to 5 */
292} RtmOtaUnicastRevRateLimitMsgT;
293
294
295/*------------------------------------*/
296/* SessCfg: CONFIGREQ, CONFIGRSP msgs */
297/*------------------------------------*/
298
299/* AttributeId */
300typedef enum
301{
302 RTM01_PWRPARM_ATTRIBID = 0,
303 RTM01_RATEPARM_ATTRIBID = 1,
304 RTM01_ATTRIBID_MAX,
305} Rtm01AttribIdT;
306
307//AttributeNN need to be extended if Max Mac Flow extends.
308typedef enum
309{
310 /* simple attributes */
311 RTM3_ARQ_MODE_ATTRIBID = 0xFFFF,
312 RTM3_FRAB_FILTER_TC_ATTRIBID = 0xFFFE,
313 RTM3_FRAB_LOW_ATTRIBID=0xFFFD,
314 RTM3_MERGE_THRESHOLD_ATTRIBID=0xFFFC,
315 RTM3_PAYLOAD_THRESH_ATTRIBID=0xFFFB,
316 RTM3_PILOT_STRENGTH_FILTER_TC_ATTRIBID = 0xFFFA,
317 RTM3_QRAB_FILTER_TC_ATTRIBID = 0xFFF9,
318 RTM3_T2P_NO_TX_FILTER_TC_ATTRIBID=0xFFF7,
319 RTM3_PILOT_STRENGTH_QRAB_THRESHOLD_DRC_LOCK_ATTRIBID = 0xFFF6,
320 RTM3_PILOT_STRENGTH_QRAB_THRESHOLD_DRC_UNLOCK_ATTRIBID = 0xFFF5,
321 RTM3_RATE_1M8_SUPPORTED_ATTRIBID = 0xFFF3,
322 RTM3_SUPPORT_GAUP_MAX_NUM_SUB_PACKETS_ATTRIBID = 0xFFF2,
323 RTM3_BUCKET_LEVEL_MAX_00_ATTRIBID = 0xFE00,
324 RTM3_BUCKET_LEVEL_MAX_01_ATTRIBID,
325 RTM3_BUCKET_LEVEL_MAX_02_ATTRIBID,
326 RTM3_BUCKET_LEVEL_MAX_03_ATTRIBID,
327 RTM3_BUCKET_LEVEL_MAX_04_ATTRIBID,
328 RTM3_BUCKET_LEVEL_MAX_05_ATTRIBID,
329 RTM3_BUCKET_LEVEL_MAX_06_ATTRIBID,
330 RTM3_BUCKET_LEVEL_MAX_07_ATTRIBID,
331 RTM3_BUCKET_LEVEL_MAX_08_ATTRIBID,
332 RTM3_BUCKET_LEVEL_MAX_09_ATTRIBID,
333 RTM3_BUCKET_LEVEL_MAX_10_ATTRIBID,
334 RTM3_BUCKET_LEVEL_MAX_11_ATTRIBID,
335 RTM3_BUCKET_LEVEL_MAX_12_ATTRIBID,
336 RTM3_BUCKET_LEVEL_MAX_13_ATTRIBID,
337 RTM3_BUCKET_LEVEL_MAX_14_ATTRIBID,
338 RTM3_BUCKET_LEVEL_MAX_15_ATTRIBID,
339 RTM3_MERGE_THRESHOLD_00_ATTRIBID = 0xFD00,
340 RTM3_MERGE_THRESHOLD_01_ATTRIBID,
341 RTM3_MERGE_THRESHOLD_02_ATTRIBID,
342 RTM3_MERGE_THRESHOLD_03_ATTRIBID,
343 RTM3_MERGE_THRESHOLD_04_ATTRIBID,
344 RTM3_MERGE_THRESHOLD_05_ATTRIBID,
345 RTM3_MERGE_THRESHOLD_06_ATTRIBID,
346 RTM3_MERGE_THRESHOLD_07_ATTRIBID,
347 RTM3_MERGE_THRESHOLD_08_ATTRIBID,
348 RTM3_MERGE_THRESHOLD_09_ATTRIBID,
349 RTM3_MERGE_THRESHOLD_10_ATTRIBID,
350 RTM3_MERGE_THRESHOLD_11_ATTRIBID,
351 RTM3_MERGE_THRESHOLD_12_ATTRIBID,
352 RTM3_MERGE_THRESHOLD_13_ATTRIBID,
353 RTM3_MERGE_THRESHOLD_14_ATTRIBID,
354 RTM3_MERGE_THRESHOLD_15_ATTRIBID,
355
356 RTM3_TRANSMISSION_MODE_00_ATTRIBID = 0xFC00,
357 RTM3_TRANSMISSION_MODE_01_ATTRIBID,
358 RTM3_TRANSMISSION_MODE_02_ATTRIBID,
359 RTM3_TRANSMISSION_MODE_03_ATTRIBID,
360 RTM3_TRANSMISSION_MODE_04_ATTRIBID,
361 RTM3_TRANSMISSION_MODE_05_ATTRIBID,
362 RTM3_TRANSMISSION_MODE_06_ATTRIBID,
363 RTM3_TRANSMISSION_MODE_07_ATTRIBID,
364 RTM3_TRANSMISSION_MODE_08_ATTRIBID,
365 RTM3_TRANSMISSION_MODE_09_ATTRIBID,
366 RTM3_TRANSMISSION_MODE_10_ATTRIBID,
367 RTM3_TRANSMISSION_MODE_11_ATTRIBID,
368 RTM3_TRANSMISSION_MODE_12_ATTRIBID,
369 RTM3_TRANSMISSION_MODE_13_ATTRIBID,
370 RTM3_TRANSMISSION_MODE_14_ATTRIBID,
371 RTM3_TRANSMISSION_MODE_15_ATTRIBID,
372 RTM3_QRAB_SELECT_00_ATTRIBID = 0xFB00,
373 RTM3_QRAB_SELECT_01_ATTRIBID,
374 RTM3_QRAB_SELECT_02_ATTRIBID,
375 RTM3_QRAB_SELECT_03_ATTRIBID,
376 RTM3_QRAB_SELECT_04_ATTRIBID,
377 RTM3_QRAB_SELECT_05_ATTRIBID,
378 RTM3_QRAB_SELECT_06_ATTRIBID,
379 RTM3_QRAB_SELECT_07_ATTRIBID,
380 RTM3_QRAB_SELECT_08_ATTRIBID,
381 RTM3_QRAB_SELECT_09_ATTRIBID,
382 RTM3_QRAB_SELECT_10_ATTRIBID,
383 RTM3_QRAB_SELECT_11_ATTRIBID,
384 RTM3_QRAB_SELECT_12_ATTRIBID,
385 RTM3_QRAB_SELECT_13_ATTRIBID,
386 RTM3_QRAB_SELECT_14_ATTRIBID,
387 RTM3_QRAB_SELECT_15_ATTRIBID,
388 RTM3_BURST_DURATION_FACTOR_00_ATTRIBID = 0xFA00,
389 RTM3_BURST_DURATION_FACTOR_01_ATTRIBID,
390 RTM3_BURST_DURATION_FACTOR_02_ATTRIBID,
391 RTM3_BURST_DURATION_FACTOR_03_ATTRIBID,
392 RTM3_BURST_DURATION_FACTOR_04_ATTRIBID,
393 RTM3_BURST_DURATION_FACTOR_05_ATTRIBID,
394 RTM3_BURST_DURATION_FACTOR_06_ATTRIBID,
395 RTM3_BURST_DURATION_FACTOR_07_ATTRIBID,
396 RTM3_BURST_DURATION_FACTOR_08_ATTRIBID,
397 RTM3_BURST_DURATION_FACTOR_09_ATTRIBID,
398 RTM3_BURST_DURATION_FACTOR_10_ATTRIBID,
399 RTM3_BURST_DURATION_FACTOR_11_ATTRIBID,
400 RTM3_BURST_DURATION_FACTOR_12_ATTRIBID,
401 RTM3_BURST_DURATION_FACTOR_13_ATTRIBID,
402 RTM3_BURST_DURATION_FACTOR_14_ATTRIBID,
403 RTM3_BURST_DURATION_FACTOR_15_ATTRIBID,
404 RTM3_T2P_FILTER_TC_00_ATTRIBID = 0xf900,
405 RTM3_T2P_FILTER_TC_01_ATTRIBID,
406 RTM3_T2P_FILTER_TC_02_ATTRIBID,
407 RTM3_T2P_FILTER_TC_03_ATTRIBID,
408 RTM3_T2P_FILTER_TC_04_ATTRIBID,
409 RTM3_T2P_FILTER_TC_05_ATTRIBID,
410 RTM3_T2P_FILTER_TC_06_ATTRIBID,
411 RTM3_T2P_FILTER_TC_07_ATTRIBID,
412 RTM3_T2P_FILTER_TC_08_ATTRIBID,
413 RTM3_T2P_FILTER_TC_09_ATTRIBID,
414 RTM3_T2P_FILTER_TC_10_ATTRIBID,
415 RTM3_T2P_FILTER_TC_11_ATTRIBID,
416 RTM3_T2P_FILTER_TC_12_ATTRIBID,
417 RTM3_T2P_FILTER_TC_13_ATTRIBID,
418 RTM3_T2P_FILTER_TC_14_ATTRIBID,
419 RTM3_T2P_FILTER_TC_15_ATTRIBID,
420 /* complex attributes */
421 RTM3_ASSOCIATED_FLOWS_00_ATTRIBID = 0x0100,
422 RTM3_ASSOCIATED_FLOWS_01_ATTRIBID,
423 RTM3_ASSOCIATED_FLOWS_02_ATTRIBID,
424 RTM3_ASSOCIATED_FLOWS_03_ATTRIBID,
425 RTM3_ASSOCIATED_FLOWS_04_ATTRIBID,
426 RTM3_ASSOCIATED_FLOWS_05_ATTRIBID,
427 RTM3_ASSOCIATED_FLOWS_06_ATTRIBID,
428 RTM3_ASSOCIATED_FLOWS_07_ATTRIBID,
429 RTM3_ASSOCIATED_FLOWS_08_ATTRIBID,
430 RTM3_ASSOCIATED_FLOWS_09_ATTRIBID,
431 RTM3_ASSOCIATED_FLOWS_10_ATTRIBID,
432 RTM3_ASSOCIATED_FLOWS_11_ATTRIBID,
433 RTM3_ASSOCIATED_FLOWS_12_ATTRIBID,
434 RTM3_ASSOCIATED_FLOWS_13_ATTRIBID,
435 RTM3_ASSOCIATED_FLOWS_14_ATTRIBID,
436 RTM3_ASSOCIATED_FLOWS_15_ATTRIBID,
437 RTM3_AUX_PILOT_CHAN_PARAMETERS_ATTRIBID = 0x0000,
438 RTM3_BUCKET_FACTOR_00_ATTRIBID = 0x0300,
439 RTM3_BUCKET_FACTOR_01_ATTRIBID,
440 RTM3_BUCKET_FACTOR_02_ATTRIBID,
441 RTM3_BUCKET_FACTOR_03_ATTRIBID,
442 RTM3_BUCKET_FACTOR_04_ATTRIBID,
443 RTM3_BUCKET_FACTOR_05_ATTRIBID,
444 RTM3_BUCKET_FACTOR_06_ATTRIBID,
445 RTM3_BUCKET_FACTOR_07_ATTRIBID,
446 RTM3_BUCKET_FACTOR_08_ATTRIBID,
447 RTM3_BUCKET_FACTOR_09_ATTRIBID,
448 RTM3_BUCKET_FACTOR_10_ATTRIBID,
449 RTM3_BUCKET_FACTOR_11_ATTRIBID,
450 RTM3_BUCKET_FACTOR_12_ATTRIBID,
451 RTM3_BUCKET_FACTOR_13_ATTRIBID,
452 RTM3_BUCKET_FACTOR_14_ATTRIBID,
453 RTM3_BUCKET_FACTOR_15_ATTRIBID,
454 RTM3_COMMON_POWER_PARAMETERS_ATTRIBID=0x0001,
455 RTM3_MAX_NUM_SUB_PACKETS_ATTRIBID = 0x0002,
456 RTM3_PERMITTED_PAYLOAD_ATTRIBID = 0x0003,
457 RTM3_PILOT_STRENGTH_ATTRIBID = 0x0004,
458 RTM3_POWER_PARAMETERS_128_ATTRIBID = 0x0005,
459 RTM3_POWER_PARAMETERS_256_ATTRIBID,
460 RTM3_POWER_PARAMETERS_512_ATTRIBID,
461 RTM3_POWER_PARAMETERS_768_ATTRIBID,
462 RTM3_POWER_PARAMETERS_1024_ATTRIBID,
463 RTM3_POWER_PARAMETERS_1536_ATTRIBID,
464 RTM3_POWER_PARAMETERS_2048_ATTRIBID,
465 RTM3_POWER_PARAMETERS_3072_ATTRIBID,
466 RTM3_POWER_PARAMETERS_4096_ATTRIBID,
467 RTM3_POWER_PARAMETERS_6144_ATTRIBID,
468 RTM3_POWER_PARAMETERS_8192_ATTRIBID,
469 RTM3_POWER_PARAMETERS_12288_ATTRIBID,
470 RTM3_REQUEST_PARAMETERS_ATTRIBID,
471 RTM3_RRI_CHAN_POWER_PARAMETERS_ATTRIBID,
472 RTM3_T2P_INFLOW_RANGE_00_ATTRIBID = 0x1500,
473 RTM3_T2P_INFLOW_RANGE_01_ATTRIBID,
474 RTM3_T2P_INFLOW_RANGE_02_ATTRIBID,
475 RTM3_T2P_INFLOW_RANGE_03_ATTRIBID,
476 RTM3_T2P_TRANSITION_FUNCTION_00_ATTRIBID = 0x1600,
477 RTM3_T2P_TRANSITION_FUNCTION_01_ATTRIBID,
478 RTM3_T2P_TRANSITION_FUNCTION_02_ATTRIBID,
479 RTM3_T2P_TRANSITION_FUNCTION_03_ATTRIBID,
480 RTM3_TX_T2P_MAX_ATTRIBID=0x0013,
481 RTM3_MAX_MAC_FLOWS_ATTRIBID=0x0014,
482} Rtm3AttribIdT;
483
484/* RTM 0/1 */
485/*---------*/
486/* PwrParm Attribute Rec */
487typedef struct
488{
489 kal_uint8 valueId;
490 /* Channel Gains from pilotpwr, in 0.5db/0.25db, 2'complement */
491 kal_uint8 dataOffsetNom; /* in 0.5db */
492 kal_uint8 dataOffset9k6; /* in 0.25db onwards */
493 kal_uint8 dataOffset19k2;
494 kal_uint8 dataOffset38k4;
495 kal_uint8 dataOffset76k8;
496 kal_uint8 dataOffset153k6;
497 kal_uint8 rpcStep;
498} RtmPwrParmAttrT;
499
500typedef struct
501{
502 kal_uint8 len;
503 Rtm01AttribIdT attribId;
504 kal_uint8 pwrParmAttrCount;
505 RtmPwrParmAttrT pwrParmAttr[RTM_MAX_ATTRIB_REC];
506} RtmPwrParmAttrRecT;
507
508
509
510/* RateParm Attribute Rec */
511typedef struct
512{
513 kal_uint8 valueId;
514 /* Transition Probability for rev rates (units of 1/255) */
515 kal_uint8 trans9k6_19k2;
516 kal_uint8 trans19k2_38k4;
517 kal_uint8 trans38k4_76k8;
518 kal_uint8 trans76k8_153k6;
519 kal_uint8 trans19k2_9k6;
520 kal_uint8 trans38k4_19k2;
521 kal_uint8 trans76k8_38k4;
522 kal_uint8 trans153k6_76k8;
523} RtmRateParmAttrT;
524
525typedef struct
526{
527 Rtm01AttribIdT attribId;
528 kal_uint8 len;
529 kal_uint8 rateParmAttrCount;
530 RtmRateParmAttrT rateParmAttr[RTM_MAX_ATTRIB_REC];
531} RtmRateParmAttrRecT;
532
533
534
535
536/* CONFIG_REQ, RSP Msgs */
537/*----------------------*/
538/* RTM_SCP_CONFIG_REQ_MSG */
539/* RTM_SCP_CONFIG_RSP_MSG */
540typedef struct
541{
542 kal_uint8 transId;
543 /* RTM 0/1 */
544 kal_bool pwrParmAttrRecIncl;
545 RtmPwrParmAttrRecT pwrParmAttrRec;
546 kal_bool rateParmAttrRecIncl;
547 RtmRateParmAttrRecT rateParmAttrRec;
548
549 /* RTM 2/3 */
550
551} RtmOtaConfigMsgT;
552
553
554
555
556/*------------------------------*/
557/* ETS, OTTS, Test Data Structs */
558/*------------------------------*/
559/*-----------*/
560/* Test Cmds */
561/*-----------*/
562/* RTM_TEST_CFG_MSG */
563typedef struct
564{
565 kal_uint8 RtmTestMode; /* 0=Init_RcpSig, 1=Cont_RcpSig, 2=Repeat_RcpSig, 3=AddBytes */
566
567 /* RTM Init */
568 kal_uint8 RcpMode;
569 kal_uint8 RtmSubtype;
570 kal_uint8 RtmState;
571 kal_uint8 RtmCurrInterlace;
572 kal_uint8 RtmCurrSubframeCnt;
573 kal_uint8 RtmCurrTxHistSubframe;
574 kal_uint8 minRateLimAN;
575 kal_uint8 testTxhwRate; /* RTM0/1: fixed rate for Txhw test */
576 kal_uint8 testTxhwPktSz; /* RTM2/3: fixed PktSz for Txhw test */
577
578 /* RCP_TASK_SIG */
579 kal_uint8 hlarq; /* Hard value of H/L-ARQ */
580 kal_uint8 parq; /* Hard value of P-ARQ */
581
582 /* AddBytes() */
583 kal_uint32 addByteSize;
584 kal_uint8 addByteMacFlowId;
585
586 /* Rtap */
587 kal_bool bTestPktMode;
588
589 kal_uint8 configuredPacketRateMode;
590 kal_uint8 rtapMinRate; /* def=0 */
591 kal_uint8 rtapMaxRate; /* def=5 */ /* PHY0/1, RTM0/1/2: Rate: 0-5 */
592 kal_uint8 configuredPacketPayloadSizeMode;
593 kal_uint8 rtapMinPayloadSize; /* def=0 */
594 kal_uint8 rtapMaxPayloadSize; /* def=12 */ /* PHY2, RTM3: PayloadSz: 0-12 */
595
596 kal_uint8 RtmSpyTxHistInterval;
597 kal_uint8 RpcTestMode;
598} RtmTestCfgMsgT;
599
600/* RtmTestModes */
601typedef enum
602{
603 RTM_TEST_REAL = 0, /* Not test mode */
604 RTM_TEST_TXHW,
605 RTM_TEST_DEACTIVATE,
606 RTM_TEST_ACTIVATE_RCPSIG,
607 RTM_TEST_INIT_RCPSIG,
608 RTM_TEST_CONT_RCPSIG,
609 RTM_TEST_ADD_BYTES,
610 RTM_TEST_RF_RELEASE,
611 RTM_TEST_RF_READY,
612 RTM_TEST_RTAP,
613 RTM_TEST_PACKETAPP
614} RtmTestModeT;
615
616
617/* RpcTestMode */
618typedef enum
619{
620 RPC_TEST_UP = 0,
621 RPC_TEST_DOWN,
622 RPC_TEST_ALTERNATE,
623 RPC_TEST_REAL
624} RpcTestModeT;
625
626/* RpcBitValue */
627typedef enum
628{
629 RPC_BIT_UP = 0,
630 RPC_BIT_DOWN,
631 RPC_BIT_INVALID
632} RpcBitValueT;
633
634/* RTM_TEST_MBPMACBITSOUTPUT_MSG */
635typedef struct
636{
637 RtmMbpMacBitsT macBits;
638
639} RtmTestMbpMacBitsOutputMsgT;
640
641
642
643/* RTM_TEST_MFCGRANTCAL23_MSG */
644typedef struct
645{
646 PcpAcmRtmGrantAllocationT grant;
647
648} RtmTestMfcGrantCal23MsgT;
649
650
651
652/*-----------------------*/
653/* RTM Parm Get/Set Cmds */
654/*-----------------------*/
655/* RTM_TEST_PARM_GET_CMD */
656typedef struct
657{
658 /* RtmScm Data */
659 /*-------------*/
660 /* from RTM_OMP_SECTORPARMS_MSG */
661 kal_uint8 revlinkSilenceDuration; /* frames */
662 kal_uint8 revlinkSilencePeriod;
663
664 /* from RTM_RUP_TCHASSIGN_MSG */
665 kal_uint8 frameOffset; /* slots */
666 kal_uint8 drcLen; /* 0=1, 1=2slots, 2=4slots, 3=8slots */
667 kal_int8 drcChanGainBase; /* 0.5db, valid range (-9dB,+6dB) */
668 kal_int8 dscChanGainBase; /* 0.5db */
669 kal_int8 ackChanGain; /* 0.5db, valid range (-9dB,+6dB) */
670
671 /* from RTM_FTM_CFG_DATA_MSG */
672 kal_uint8 drcGating; /* 0=cont, 1=disc */
673 kal_uint8 dscLen; /* units = 8 slots */
674 kal_uint8 drcBoostLen; /* units = 2 slots */
675 kal_uint8 dscBoostLen; /* units = 8 slots */
676 kal_uint8 drcChanGainBoost; /* db */
677 kal_uint8 dscChanGainBoost; /* db */
678 kal_uint8 deltaAckChanGainMUP; /* units = 0.5db */
679
680
681 /* RTM SessConfig Data */
682 /*---------------------*/
683 kal_uint8 rpcStep; /* 0=0.5db, 1=1.0db */
684
685 /* RTM0/1: Channel Gains from pilotpwr, in 0.5db/0.25db, 2'complement */
686 kal_int8 dataOffNom_01; /* 0.5db (Q1) */
687 kal_int8 dataOff9k6_01; /* 0.25db (Q2) */
688 kal_int8 dataOff19k2_01;
689 kal_int8 dataOff38k4_01;
690 kal_int8 dataOff76k8_01;
691 kal_int8 dataOff153k6_01;
692
693 /* RTM3: TxHw config params */
694 kal_int8 auxPilotChanGain; /* relative to Traffic. In db, from -15 to 0db. */
695 kal_uint8 auxPilotMinPayload; /* 0 to 0xb, units of 128bits to represent payload bits */
696
697
698 /* RTM3: ChanGains -> fixed for testing purposes, in RtmScm */
699 kal_uint16 rriGainScale_3; /* Q7 linear */
700 kal_uint16 dataGainScale0_3;
701 kal_uint16 dataGainScale1_3;
702 kal_uint16 dataGainScale2_3;
703 kal_uint16 dataGainScale3_3;
704} RtmTestParmT;
705
706
707typedef struct
708{
709 ExeRspMsgT RspInfo;
710} RtmTestParmGetMsgT;
711
712
713typedef struct
714{
715 RtmTestParmT parm; /* Get current params */
716} RtmTestParmGetRspMsgT;
717
718
719
720/* RTM_TEST_PARM_SET_CMD */
721typedef struct
722{
723 kal_uint8 type; /* 0=default, 1=new */
724 RtmTestParmT parm;
725} RtmTestParmSetMsgT;
726
727
728
729/* RTM_TEST_TXCHANSTAT_GET_CMD */
730typedef struct
731{
732 ExeRspMsgT RspInfo;
733} RtmTestTxChanStatGetMsgT;
734
735typedef struct
736{
737 kal_uint16 pilotChanGain; /* Q6: Pilot Scale uses <9,3,u> format */
738 kal_uint16 drcChanGain; /* Q7: DRC Scale uses <9,2,u> format */
739 kal_uint16 ackChanGain; /* Q6: SUP ACK Scale uses <9,3,u> format */
740 kal_uint16 dataChanGain; /* Q5: Data Scale ACK uses <11,6,u> format */
741 kal_uint16 rriChanGain; /* Q6: RRI ACK Scale uses <9,3,u> format */
742 kal_uint16 drcLockPeriod; /* From FTM */
743} RtmTestTxChanStatGetRspMsgT;
744
745
746
747
748/*----------*/
749/* ETS Spys */
750/*----------*/
751/* RtmSpyStatesT */
752typedef struct
753{
754 kal_uint8 RtmSubtype;
755 RcpModeT RcpMode;
756 RtmRmmStateT RtmState;
757 kal_uint8 RtmSilentState;
758 kal_uint8 currChip;
759 kal_uint8 currSlot; /* 0-15, in 1 frame */
760 kal_uint8 currSubframe; /* 0-11, in 80ms count */
761 kal_uint8 RtmCurrSubframeCnt;
762 kal_uint8 RtmCurrInterlace;
763 kal_uint8 RtmPrevInterlace;
764 kal_uint8 RtmPrevPrevInterlace;
765 kal_uint8 RtmCurrTxHistSubframe;
766 kal_uint8 frameOffset; /* slots */
767 kal_uint8 currRate; /* RTM0/1: CurrentRate */
768 kal_uint8 prevRate; /* RTM0/1: Last Rate */
769} RtmSpyStatesT;
770
771/* Rtm3SpyStatesT */
772typedef struct
773{
774 kal_uint8 macFlowIDAck;
775 kal_uint8 macFlowIDNak;
776 kal_uint8 macFlowID;
777 kal_uint16 grantByteSizeAck;
778 kal_uint16 grantByteSizeNak;
779 kal_uint16 grantByteSize;
780} Rtm3FlowSpyStatesT;
781
782typedef struct
783{
784 kal_uint8 maxNumSubPkt; /* 0~3 */
785 kal_uint8 RtmCurrInterlace; /* 0~2 */
786 kal_uint8 ArqMode; /* bit 0 : h/l mode - 1:h, 0:l, bit 1 : p valid - 1:valid */
787 kal_uint8 Arq; /* bit 0 : HL Arq, bit1 : Parq */
788 kal_uint32 SubframeCnt;
789 kal_uint8 subPktNum; /* 0~maxNumSubPkt */
790 kal_uint8 subPktNumAck; /* 0~maxNumSubPkt */
791 kal_uint8 subPktNumNak; /* 0~maxNumSubPkt */
792 kal_uint8 pktSzIdxAck; /* 0~12 */
793 kal_uint8 pktSzIdxNak; /* 0~12 */
794 kal_uint8 pktSzIdx; /* 0~12 */
795 kal_uint8 TransmitModeAck; /* 1-LowLatency, 0-HighCapacity. */
796 kal_uint8 TransmitModeNak; /* 1-LowLatency, 0-HighCapacity. */
797 kal_uint8 TransmitMode; /* 1-LowLatency, 0-HighCapacity. */
798
799 Rtm3FlowSpyStatesT Rtm3FlowSpyStates[MAX_MAC_FLOW_NUM];
800
801} Rtm3SpyStatesT;
802
803/* RtmQoSSpyDataT for UTS : EVDORevAReverseLinkT2PStatisticsEvent() */
804typedef struct
805{
806 kal_uint8 macFlowID; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 0 */
807 kal_uint16 grantByteSize; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 1 */
808 kal_int32 t2POutflow; /* Q8 */ /* 0 ~ 2000 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 2 */
809 kal_int32 bucketLevelSat; /* Q8->Q6 to avoid overflow */ /* -1000000~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 3 */
810 kal_uint8 qrab; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 4 */
811 kal_int32 deltaT2PInflow; /* Q8 */ /* -1000~1000 : -32 to 31.75 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 5 */
812 kal_int32 t2PInflow; /* Q8 */ /* -1000000~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 6 */
813 kal_uint8 tT2PHold; /* 0 to 15 frames */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 7 */
814 kal_int32 bucketLevel; /* Q8->Q6 to avoid overflow */ /* -1000000~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 8 */
815 kal_int32 bucketFactor; /* Q8 */ /* 0~1000000 : 0 to 63.5 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_FLOW_INFO_INDEX - index 9 */
816} RtmQoSFlowSpyDataT;
817
818
819typedef struct
820{
821 kal_uint16 txT2P; /* Q8 */ /* 0~1000 */ /* output to Tx Pwr ctrl */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 0 */
822 kal_uint8 SubpktId; /* 0~3 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 1 */
823 kal_uint32 SubframeCnt; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 2 */
824 kal_uint16 revPktSzInBits; /* 0~12288 */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 3 */
825 kal_uint16 SumPayload; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 4 */
826
827 kal_uint8 HRDStatus; /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 5 */
828
829 kal_int16 pilotStrength; /* Q2 dB */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 6 */
830 kal_int8 frab; /* signed Q7 */ /* Soft value FRABn */ /* EEVDO_SYS_REVA_REV_LINK_T2P_STATISTICS_INDEX - index 7 */
831 kal_bool qrabPs;
832 kal_uint8 activeFlowNo; /* 1~4 */
833
834 RtmQoSFlowSpyDataT RtmQoSFlowSpyData[MAX_MAC_FLOW_NUM];
835} RtmQoSSpyDataT;
836
837
838/* RtmSpyHarqT */
839typedef struct
840{
841 kal_uint8 revMacPktId;
842 kal_uint8 revRate;
843 kal_uint8 revPktSz;
844
845 kal_uint8 subPktIndex;
846 kal_uint8 maxSubPktReached;
847 kal_uint8 larqPresentFlag;
848 kal_uint8 nextHLarqType;
849
850 kal_uint32 pktListHead;
851 kal_uint32 pktListLen;
852 kal_uint16 dataGainScale;
853 kal_uint16 dataGainScale1;
854 kal_uint16 dataGainScale2;
855 kal_uint16 dataGainScale3;
856 kal_uint16 rriGainScale;
857
858 kal_uint8 grantTxNumFlows;
859 kal_uint8 macFlowID0;
860 kal_uint16 grantByteSize0;
861} RtmSpyHarqT;
862
863
864/* Rtm3PktInfoSpyStatesT for UTS : EVDORevAReverseLinkPacketInfoEvent() */
865typedef struct
866{
867 kal_uint8 macFlowID; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 0 */
868 kal_uint8 NonEmpty; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 1 */
869 kal_uint8 eligible; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 2 */
870 kal_uint32 InitialQueueSize; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 3 */
871 kal_uint32 potentialT2POutflow; /* Q8 */ /* 0~1000000 */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 4 */
872 kal_uint32 queueOutflow; /* in Bytes */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 5 */
873 kal_uint16 grantByteSize; /* in Bytes */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 6 */
874 kal_uint16 grantByteSizeSent; /* in Bytes */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_FLOW_INFO_INDEX - index 7 */
875} Rtm3SpyPktInfoFlowStatesT;
876
877
878typedef struct
879{
880 kal_uint32 SubframeCnt; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 0 */
881 kal_uint16 CandidatePktSzIdxSet; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 1 */
882 kal_uint16 pktSzInBits; /* 0~12288 */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 2 */
883 kal_uint8 TransmitMode; /* 1-LowLatency, 0-HighCapacity. */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 3 */
884 kal_int16 txT2Pmax; /* 0x0~0x80 (0~32dB per 0.25dB) unsigned Q2 */ /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 4 */
885 kal_uint16 smallestDataUnit; /* EEVDO_SYS_REVA_REV_LINK_PACKET_INFO_INDEX - index 5 */
886 kal_uint8 activeFlowNo; /* 1~4 */
887
888 Rtm3SpyPktInfoFlowStatesT Rtm3SpyPktInfoFlowStates[MAX_MAC_FLOW_NUM];
889} Rtm3SpyPktInfoStatesT;
890
891
892/* RtmSpyTxHistT */
893typedef struct
894{
895 kal_uint8 revMacId;
896 kal_uint8 firstSubPkt;
897 kal_int16 hlarqPcomb0;
898 kal_int16 hlarqPcomb1;
899 kal_int16 hlarqPcomb2;
900 kal_int16 hlarqPcomb3;
901 kal_int16 hlarqPcomb4;
902 kal_int16 hlarqPcomb5;
903} RtmSpyTxHistT;
904
905/*----------------------------------------------------------------------------
906 Local Typedefs
907----------------------------------------------------------------------------*/
908/*-----*/
909/* RMM */
910/*-----*/
911/* RtmTmrID */
912/* RTM Timers IDs */
913typedef enum
914{
915 RTM_TMR_SETUP_ID=0
916} RtmTmrIdT;
917
918/* RtmTmrStat */
919typedef enum
920{
921 RTM_TMR_NOT_STARTED,
922 RTM_TMR_ACTIVE,
923 RTM_TMR_EXPIRED
924} RtmTmrStatT;
925
926
927/* Harq for each Interlace */
928typedef struct
929{
930 RevMacPktGT *revMacPkt; /* The revMacPkt transmitted and saved for this interlace */
931 kal_uint8 subPktIndex; /* Set to RTM_NEWPKT=0xff in the beginning.
932 - reset to 0 when a new pkt is saved.
933 - incremented when a pkt is retx due to Nak rx. */
934 kal_bool maxSubPktReached; /* T=>maxSubpkt reached, subPktIndex reset to 0 */
935
936 kal_bool larqPresentFlag;/* If T => no Ack was rx yet on an Interlace before
937 maxSubpktNum was reached, hence the need to softcombine
938 the L-ARQ and P-ARQ bit in the next subframe. */
939
940 kal_uint8 nextHLarqType; /* Next expected ARQ=H/L. L if maxSubPkt reached. For MAChw */
941 /* 0=H, 1=L */
942
943 PcpAcmRtmGrantAllocationT grantTx; /* The grant that was tx for this pkt. Valid for all subpkts. */
944} RtmRmmHarqT;
945
946
947/* TxHistory */
948typedef struct
949{
950 kal_uint8 revMacId; /* The revMacId of the revMacPkt that was transmitted */
951 kal_bool firstSubPkt; /* Indicates if this is the 1st Subpkt.
952 This is used for deciding if P-ARQ needs to be processed. */
953
954 kal_int32 hlarqPcomb[SYS_MAX_ACTIVE_LIST_PILOTS];
955 kal_uint32 ciPcomb[SYS_MAX_ACTIVE_LIST_PILOTS];
956 kal_uint8 hlarqTypePcomb;
957 /* Store the last HARQ & CI (for 6 secs) (ack) for this pkt, if early term.
958 Or the LARQ. This will then be sent to MBP for P-ARQ combining later */
959} RtmTxHistoryT;
960
961
962/* RMM data structure */
963typedef struct
964{
965 /* RTOS Timers */
966 /*-------------*/
967#if defined (RCP_RI_HRT_DEV)
968 kal_uint32 tmrSetup;
969#else
970 eventid tmrSetup; /* T_RTCMPATSETUP */
971#endif
972 RtmTmrStatT tmrSetupStatus; /* Tmr Status */
973
974#if (!defined (RCP_RI_HRT_DEV))
975 /* RCP_TASK_SIG actionTime */
976 /*-------------------------*/
977 kal_uint32 rcpTaskSigFrame; /* The action time frame for RCP_TASK_SIG registration. Periodic reg starts at next frame */
978 kal_uint8 rcpTaskSigSlot; /* The action time slot for RCP_TASK_SIG registration */
979#endif
980
981 /* RevLinkSilentTime */
982 /*-------------------*/
983 kal_uint64 revSilentStart; /* The next revLink silent start frame */
984 kal_uint64 revSilentEnd; /* The current revLink silent end frame */
985 kal_uint32 revSilentInt; /* The revLink silent Interval between 2 start times, in frames */
986
987 /* Harq */
988 /*--------*/
989 RtmRmmHarqT txHarq[RTM_MAX_INTERLACE]; /* Harq struct for 3 interlaces. (Phy 2) */
990 kal_uint8 revMacIdCounter; /* Running counter, incremented if new revMacId requested */
991 RtmTxHistoryT txHistory[RTM_MAX_TXHISTORY];
992 /* Contains the RevMacId for the last 14 subframes transmitted */
993
994 /* FuncPtrs */
995 /*----------*/
996 void (*ProcPhyAckNak)( void ); /* Func ptr to ProcPhyAckNak proc */
997 kal_bool (*TransmitPkt)( kal_uint32 dummy ); /* Func ptr to TxPkt functions */
998} RtmRmmT;
999
1000
1001/*-----*/
1002/* RRC */
1003/*-----*/
1004
1005/* RRC data structure (RTM 0/1) */
1006typedef struct
1007{
1008 /* CurrentRate */
1009 /*-------------*/
1010 kal_uint8 currRate; /* CurrentRate */
1011 kal_uint8 prevRate; /* Last Rate */
1012
1013 /* RateLimit (from AN Msg) */
1014 /*-------------------------*/
1015 kal_uint8 currRateLimitAN; /* CurrentRateLimit from AN msg */
1016 kal_uint8 rateLimitInMsg; /* The RateLimit value from BC/Uni RevRateLimMsg */
1017 kal_bool dlyRateLimUpdate; /* KAL_TRUE=delay currRateLim update till 1 frame later */
1018
1019 /* MaxRate limit (from Transition Prob Table) */
1020 /*--------------------------------------------*/
1021 kal_uint8 combBusyBit; /* from RAB. 1=Busy, i.e. RAB is 1 from any Active Sector. */
1022 kal_uint8 maxRate; /* Rate:
1023 0 = 0kbps
1024 1 = 9.6kbps
1025 2 = 19.2kbps
1026 3 = 38.4kbps
1027 4 = 76.8kbps
1028 5 = 153.6kbps */
1029} RtmRrcT;
1030/*----------------------------------------------------------------------------
1031 Global Data
1032----------------------------------------------------------------------------*/
1033
1034extern RtmRmmSubtypeT RtmInCfgSubtype; /* RTCMAC subtype: 0, 1, 2, 3*/
1035extern RtmRmmSubtypeT RtmSubtype; /* RTCMAC subtype: 0, 1, 2, 3*/
1036extern RtmRmmStateT RtmState; /* RMM State */
1037extern kal_uint8 RtmSilentState; /* RLSilent State */
1038extern kal_uint8 RtmDrcSilentState; /* RLSilent State due to DRC Supv */
1039extern kal_bool RtmOverlap1x; /* overlap with 1X or not */
1040
1041extern kal_uint32 RtmQueueSz[ MAX_MAC_FLOW_NUM ];
1042extern RtmScmT RtmScm; /* Config Data that are not in the SessCfg attrib */
1043extern RtmCfgDataT RtmInUse; /* InUse Data */
1044extern RtmRtapT RtmRtap; /* RTAP Data */
1045
1046extern RtmTestModeT RtmTestMode;
1047
1048extern RpcTestModeT RtmRpcTestMode;
1049
1050extern kal_uint32 deadline_slot;
1051
1052extern RtmCfgDataT RtmInUse; /* InUse Data */
1053
1054/*------*/
1055/* RMM */
1056/*------*/
1057extern RtmRmmT RtmRmm; /* The RMM data struct */
1058extern kal_uint8 RtmCurrInterlace; /* Current interlace (s) */
1059extern kal_uint8 RtmPrevInterlace; /* Prev interlace (s-1) */
1060extern kal_uint8 RtmPrevPrevInterlace; /* Prev interlace (s-2) */
1061extern kal_uint8 RtmCurrSubframeCnt; /* Current subframe counter, from 0-3 */
1062extern kal_uint8 RtmCurrTxHistSubframe; /* Current TxHistory subframe counter, from 0-251 */
1063extern kal_bool RtmFwdChanValid; /* FwdChan valid or not. T=>Valid */
1064extern kal_int16 RtmPwrRef; /* The PwrRef base pwr when TCH is first activated */
1065extern RevMacPktGT *RtmCurrRevMacPkt; /* The current revMacPkt that is formatted. */
1066extern RtmMbpMacBitsT RtmMbpMacBits; /* The current MAC Bits from MACHw */
1067extern PcpAcmRtmGrantAllocationT RtmGrant; /* The grant for each frame/subframe that was serviced by PCP/Upplayer. */
1068extern kal_bool RtmSetupTimerEnable; /* KAL_TRUE=>RTM start setup timer when activate */
1069
1070
1071/*-----*/
1072/* RRC */
1073/*-----*/
1074extern RtmRrcT RtmRrc; /* The RRC data struct */
1075extern const kal_int16 RtmRrcDataGainBase[ RTM_MAX_REV_RATE ] ;
1076
1077/*-----*/
1078/* Test */
1079/*-----*/
1080extern kal_uint8 RtmTestBBCapture;
1081extern RtmTxStateT RtmTxSt;
1082
1083
1084/*----------------------------------------------------------------------------
1085 Global Function Prototypes
1086----------------------------------------------------------------------------*/
1087extern void RtmInit( void );
1088extern void RtmHandleRupActivateMsg( void );
1089extern void RtmHandleRupDeactivateMsg( void );
1090extern void RtmHandleRupTchAssignMsg( RtmRupTchAssignMsgT *pMsg );
1091extern void RtmHandleRmcRfReadyMsg( void );
1092extern void RtmHandleRmcRfReleaseMsg( void );
1093extern void RtmHandleAmpTxAtiUpdateMsg( AcmAmpATIListMsgT *pMsg );
1094extern void RtmHandleOmpSectorParmsMsg( RtmOmpSectorParmsMsgT *pMsg );
1095extern void RtmHandleFtmCfgDataMsg( RtmFtmCfgDataMsgT *pMsg );
1096extern void RtmHandleSmpSessionOpenMsg( RtmSmpSessionOpenMsgT *pMsg );
1097extern void RtmHandleCssSearchEndMsg( RtmCssSearchEndMsgT *pMsg );
1098extern void RtmHandleRtapModeMsg( RtmRtapModeMsgT *pMsg );
1099extern void RtmHandleTmrExpiredMsg( kal_uint32 userId );
1100extern void RtmHandleDrcTxControlMsg( RtmDrcTxControlMsgT *pMsg );
1101extern void RtmHandleDsafFwdMsg( DsaFwdMsgT *pMsg );
1102extern void RtmTimerCallBack(kal_uint32 id);
1103extern kal_bool RtmProcPhyAckNak( void );
1104extern kal_bool RtmTransmitPkt( PcpAcmRtmGrantAllocationT *grant, DatapktlistGT *pktList, kal_uint32 totalPadSize);
1105extern kal_bool RtmCalculateGrant( PcpAcmRtmGrantAllocationT *grant );
1106extern kal_uint8 RtmGetCurrRevRate( void );
1107extern kal_uint8 RtmGetCurrRevPktSz( void );
1108extern void RtmHandleTxOffInitBufferMsg(kal_bool isSilent);
1109extern void RtmTxhProgNullDataPhy(void);
1110extern void RtmMbpSectorInfoUpdata(RcpUpdateSectorInfoMsg *pUpdataSectorInfoMsg);
1111
1112#ifdef MTK_DEV_ENGINEER_MODE
1113extern void RtmHandleRfTstPowerControlMsg(RcpRfTstPowerControlMsgT *pMsg);
1114#endif
1115
1116extern void Rtm23SpyStates( void );
1117
1118
1119/* RMM */
1120extern void RtmRmmHarqInit( void );
1121extern void RtmRmmAbortHarq( void );
1122extern void RtmRmmProcAckNakPhy2( void );
1123extern void RtmRmmProcAckNakPhy01( void );
1124extern kal_bool RtmRmmTransmitPktPhy2( kal_uint32 dummy );
1125extern kal_bool RtmRmmTransmitPktPhy01( kal_uint32 dummy );
1126extern void RtmRmmSilentChk( kal_uint8 callerID );
1127extern void RtmRmmSilentEntry( void );
1128extern void RtmRmmSilentExit( void );
1129extern void RtmRmmStartTimer( RtmTmrIdT tmrId );
1130extern void RtmRmmRtcInitialSetChanScale(void);
1131extern void RtmRmmCloseTxPath (void);
1132
1133
1134/* Test Msgs */
1135extern void RtmHandleTestCfgMsg( RtmTestCfgMsgT *pMsg );
1136#if defined (MTK_PLT_ON_PC)
1137extern void RtmHandleTestMbpMacBitsOutputMsg( RtmTestMbpMacBitsOutputMsgT *pMsg );
1138extern void RtmHandleTestMfcGrant23Msg( RtmTestMfcGrantCal23MsgT *pMsg );
1139extern void RtmHandleTestParmGetMsg( RtmTestParmGetMsgT *MsgPtr );
1140extern void RtmHandleTestParmSetMsg( RtmTestParmSetMsgT *MsgPtr );
1141extern void RtmHandleTestTxChanStatGetMsg( RtmTestTxChanStatGetMsgT *MsgPtr );
1142extern void StreamHandleEtsCfgAppMsg(EtsAppCfgT* pData);
1143#endif
1144
1145extern void RtmHandleTestTxhw( kal_uint8 rtmSubtype, kal_uint8 testRate, kal_uint8 testPktSz, kal_int16 pwrRef, kal_uint8 RpcTestMode );
1146
1147extern void RtmSetMaxNumSubPkt( kal_uint8 maxNumSubPkt);
1148
1149extern void RcpPerfDataReset( void );
1150
1151extern void RtmHandleTxChanSweepActivateCmd (void);
1152extern void RtmHandleTxChanSweepDeactivateCmd (void);
1153extern void RtmTransmitPktForTxChanSweepMode (void);
1154extern void RtmStateHandle(kal_uint32 event);
1155extern kal_uint8 RtmRmmGetRevMacId( void );
1156extern void RtmOpenTxSettleDownStHandleRcpTaskSig(void);
1157#if defined (RCP_RI_HRT_DEV)
1158extern void RcpRiAlignCurTime (kal_uint64 *curTimePtr);
1159#endif
1160extern kal_uint8 RtmReturnNextArqMode (void);
1161/*---------------------------------------------------------------*/
1162/* RTM: TODO */
1163/* temporary declarations */
1164
1165
1166/* MsgEnc/Dec functions */
1167/*----------------------*/
1168extern kal_bool RtmRmmDecConfigRspMsg
1169(
1170 kal_uint8 *pData,
1171 kal_uint16 offset,
1172 kal_uint16 len,
1173 RtmOtaConfigMsgT *pDecMsg );
1174
1175extern kal_bool RtmRmmDecConfigReqMsg
1176(
1177 kal_uint8 *pData,
1178 kal_uint16 offset,
1179 kal_uint16 len,
1180 RtmOtaConfigMsgT *pDecMsg );
1181
1182
1183
1184extern kal_uint32 RtmSubFrameNumber;
1185extern kal_uint8 RtmDummyMacPktId;
1186extern kal_bool RtmT2pBoostMode;
1187
1188
1189
1190/*****************************************************************************
1191* End of File
1192*****************************************************************************/
1193#endif
1194
1195