1 /*******************************************************************************
2 ################################################################################
3 # Copyright (c) [2017-2019] [Radisys] #
5 # Licensed under the Apache License, Version 2.0 (the "License"); #
6 # you may not use this file except in compliance with the License. #
7 # You may obtain a copy of the License at #
9 # http://www.apache.org/licenses/LICENSE-2.0 #
11 # Unless required by applicable law or agreed to in writing, software #
12 # distributed under the License is distributed on an "AS IS" BASIS, #
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. #
14 # See the License for the specific language governing permissions and #
15 # limitations under the License. #
16 ################################################################################
17 *******************************************************************************/
19 /**********************************************************************
29 **********************************************************************/
31 /** @file cm_tenb_stats.c
32 @brief This file contains
36 * The defines in this file correspond to structures and variables
37 * used by the following TRILLIUM software:
39 * part no. description
40 * -------- ----------------------------------------------
43 /* header include files (.h) */
45 #include "envopt.h" /* Environment options */
46 #include "envdep.h" /* Environment dependent */
47 #include "envind.h" /* Environment independent */
48 #include "gen.h" /* General */
49 #include "ssi.h" /* System services interface */
50 #include "cm_lte.h" /* Common LTE header file */
51 #include "cm_llist.h" /* Linked list header file */
52 #include "cm_tkns.h" /* Common tokens header file */
55 /* header/extern include files (.x) */
57 #include "gen.x" /* General */
58 #include "ssi.x" /* System services interface */
59 #include "cm_lib.x" /* Common lib header file */
60 #include "cm_llist.x" /* Linked list header file */
61 #include "cm_tkns.x" /* Common tokens header file */
62 #include "cm_lte.x" /* Common LTE header file */
68 #include "cm_tenb_stats.x" /* Total EnodeB Stats declarations */
71 PRIVATE Void TSInfUtlPackUeInfo ARGS((
75 PRIVATE Void TSInfUtlPackCellInfo ARGS((
77 TSInfL2CellStats *stats
79 PRIVATE Void TSInfUtlUnpkUeInfo ARGS((
83 PRIVATE Void TSInfUtlUnpkCellInfo ARGS((
85 TSInfL2CellStats *stats
87 PRIVATE Buffer* TSInfUtlAllocMsg ARGS((
93 * Fun: TSInfTrigL2Stats
95 * Desc: Indicate PDCP UL to initiate Stats procedure
104 PRIVATE Void TSInfTrigL2Stats
110 PRIVATE Void TSInfTrigL2Stats(region, pool)
118 TRC2(TSInfTrigL2Stats)
120 SGetMsg(region, pool, &pBuf);
121 //#if defined(SCH_STATS) || defined(TENB_STATS)
122 pst.dstEnt = STATS_DSTENT;
123 pst.dstInst = STATS_DSTINST;
124 pst.selector = CL_DSTENT_SELECTOR;
126 pst.srcProcId = STATS_SRCPROCID;
127 pst.dstProcId = STATS_DSTPROCID;
128 pst.srcEnt = STATS_SRCENT;
129 pst.event = TENBSTATSINIT;
137 * Fun: TSInfTrigStats
139 * Desc: Trigger Sending L2 Stats
154 Void TSInfTrigStats(region, pool)
161 TSInfTrigL2Stats(region, pool);
168 PRIVATE Buffer* TSInfUtlAllocMsg
173 PRIVATE Buffer* TSInfUtlAllocMsg(pst)
179 TRC2(TSInfUtlAllocMsg)
181 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
182 printf("\n MBuf Allocation failed\n");
188 PRIVATE Void TSInfUtlPackUeInfo
191 TSInfL2UeStats *stats
194 PRIVATE Void TSInfUtlPackUeInfo(mBuf, stats)
196 TSInfL2UeStats *stats;
202 TRC2(TSInfUtlPackUeInfo)
204 CMCHKPK(oduUnpackUInt32, stats->persistent.numDeactivation, mBuf);
205 CMCHKPK(oduUnpackUInt32, stats->persistent.numActivation, mBuf);
206 CMCHKPK(oduUnpackUInt32, stats->persistent.activatedSCells, mBuf);
208 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.rlc.dlMaxWindowSz, mBuf);
209 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.rlc.dlMaxPktsInSduQ, mBuf);
210 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.rlc.ulReOdrTmrExpCnt, mBuf);
212 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.pdcp.dlFlowCtrlDropCnt, mBuf);
213 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.pdcp.dlPdcpAckWaitDropCnt, mBuf);
214 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.pdcp.dlPdcpDropCnt, mBuf);
217 for (k = 0; k < L2_STATS_MAX_CELLS; k++)
219 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulTpt, mBuf);
220 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulNumiTbs, mBuf);
221 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulSumiTbs, mBuf);
222 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulNumCqi, mBuf);
223 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulSumCqi, mBuf);
224 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulDtxCnt, mBuf);
225 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulNackCnt, mBuf);
226 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulAckNackCnt, mBuf);
227 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulPrbUsg, mBuf);
228 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulRetxOccns, mBuf);
229 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulTxOccns, mBuf);
230 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlTpt, mBuf);
231 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlBo, mBuf);
234 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].riCnt[i], mBuf);
238 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlPdbLvl[i], mBuf);
240 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].cqiDropCnt, mBuf);
241 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw1iTbs, mBuf);
242 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw1iTbs, mBuf);
243 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw0iTbs, mBuf);
244 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw0iTbs, mBuf);
245 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw1Cqi, mBuf);
246 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw1Cqi, mBuf);
247 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw0Cqi, mBuf);
248 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw0Cqi, mBuf);
251 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlDtxCnt[i], mBuf);
255 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlAckNackCnt[i], mBuf);
259 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNackCnt[i], mBuf);
261 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlPrbUsg, mBuf);
262 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlRetxOccns, mBuf);
263 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlTxOccns, mBuf);
265 CMCHKPK(oduUnpackUInt32, stats->rnti, mBuf);
270 PRIVATE Void TSInfUtlPackCellInfo
273 TSInfL2CellStats *stats
276 PRIVATE Void TSInfUtlPackCellInfo(mBuf, stats)
278 TSInfL2CellStats *stats;
283 TRC2(TSInfUtlPackCellInfo)
285 CMCHKPK(oduUnpackUInt32, stats->rlc.reOdrTmrExp, mBuf);
286 CMCHKPK(oduUnpackUInt32, stats->rlc.maxRlcDrbRetxFail, mBuf);
287 CMCHKPK(oduUnpackUInt32, stats->rlc.maxRlcSrbRetxFail, mBuf);
289 CMCHKPK(oduUnpackUInt32, stats->sch.ulNumiTbs, mBuf);
290 CMCHKPK(oduUnpackUInt32, stats->sch.ulSumiTbs, mBuf);
291 CMCHKPK(oduUnpackUInt32, stats->sch.ulNumCqi, mBuf);
292 CMCHKPK(oduUnpackUInt32, stats->sch.ulSumCqi, mBuf);
294 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfRbAllocFail, mBuf);
295 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfPdcchSend, mBuf);
296 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeFnlzReAdd, mBuf);
297 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeRmvFnlzZeroBo, mBuf);
298 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeRbAllocDone, mBuf);
299 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfAllocAllocated, mBuf);
300 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfPdcchSchd, mBuf);
301 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeSchPick, mBuf);
302 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfBsrRecv, mBuf);
303 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfSrRecv, mBuf);
305 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfPdschCons, mBuf);
306 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfPdcchSend, mBuf);
307 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfBoUpd, mBuf);
308 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfFnlzFail, mBuf);
309 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfFnlzPass, mBuf);
310 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfRbAllocFail, mBuf);
311 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfRbAllocPass, mBuf);
312 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfUePick, mBuf);
314 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime500, mBuf);
315 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime600, mBuf);
316 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime700, mBuf);
317 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime800, mBuf);
318 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime900, mBuf);
319 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime1000, mBuf);
320 CMCHKPK(oduUnpackUInt32, stats->sch.avgTtiProcTime, mBuf);
323 CMCHKPK(oduUnpackUInt32, stats->sch.dlPdbRatio[i], mBuf);
327 CMCHKPK(oduUnpackUInt32, stats->sch.ulPrbUsage[i], mBuf);
331 CMCHKPK(oduUnpackUInt32, stats->sch.dlPrbUsage[i], mBuf);
335 CMCHKPK(oduUnpackUInt32, stats->sch.ulDtx[i], mBuf);
339 CMCHKPK(oduUnpackUInt32, stats->sch.ulAckNack[i], mBuf);
343 CMCHKPK(oduUnpackUInt32, stats->sch.ulNack[i], mBuf);
349 CMCHKPK(oduUnpackUInt32, stats->sch.dlDtx[i][j], mBuf);
356 CMCHKPK(oduUnpackUInt32, stats->sch.dlAckNack[i][j], mBuf);
363 CMCHKPK(oduUnpackUInt32, stats->sch.dlNack[i][j], mBuf);
368 CMCHKPK(oduUnpackUInt32, stats->sch.riCnt[i], mBuf);
370 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw1iTbs, mBuf);
371 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw1iTbs, mBuf);
372 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw0iTbs, mBuf);
373 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw0iTbs, mBuf);
374 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw1Cqi, mBuf);
375 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw1Cqi, mBuf);
376 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw0Cqi, mBuf);
377 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw0Cqi, mBuf);
378 CMCHKPK(oduUnpackUInt32, stats->sch.msg3Fail, mBuf);
379 CMCHKPK(oduUnpackUInt32, stats->sch.msg4Fail, mBuf);
381 CMCHKPK(oduUnpackUInt32, stats->cellId, mBuf);
387 PRIVATE Void TSInfUtlUnpkUeInfo
390 TSInfL2UeStats *stats
393 PRIVATE Void TSInfUtlUnpkUeInfo(mBuf, stats)
395 TSInfL2UeStats *stats;
401 TRC2(TSInfUtlUnpkUeInfo)
403 CMCHKUNPK(oduPackUInt32, &stats->rnti, mBuf);
405 for (k = L2_STATS_MAX_CELLS; k > 0; k--)
407 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlTxOccns, mBuf);
408 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlRetxOccns, mBuf);
409 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlPrbUsg, mBuf);
412 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNackCnt[i], mBuf);
416 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlAckNackCnt[i], mBuf);
420 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlDtxCnt[i], mBuf);
422 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw0Cqi, mBuf);
423 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw0Cqi, mBuf);
424 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw1Cqi, mBuf);
425 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw1Cqi, mBuf);
426 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw0iTbs, mBuf);
427 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw0iTbs, mBuf);
428 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw1iTbs, mBuf);
429 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw1iTbs, mBuf);
430 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].cqiDropCnt, mBuf);
433 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlPdbLvl[i], mBuf);
437 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].riCnt[i], mBuf);
439 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlBo, mBuf);
440 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlTpt, mBuf);
441 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulTxOccns, mBuf);
442 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulRetxOccns, mBuf);
443 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulPrbUsg, mBuf);
444 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulAckNackCnt, mBuf);
445 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulNackCnt, mBuf);
446 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulDtxCnt, mBuf);
447 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulSumCqi, mBuf);
448 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulNumCqi, mBuf);
449 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulSumiTbs, mBuf);
450 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulNumiTbs, mBuf);
451 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulTpt, mBuf);
454 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.pdcp.dlPdcpDropCnt, mBuf);
455 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.pdcp.dlPdcpAckWaitDropCnt, mBuf);
456 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.pdcp.dlFlowCtrlDropCnt, mBuf);
458 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.rlc.ulReOdrTmrExpCnt, mBuf);
459 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.rlc.dlMaxPktsInSduQ, mBuf);
460 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.rlc.dlMaxWindowSz, mBuf);
462 CMCHKUNPK(oduPackUInt32, &stats->persistent.activatedSCells, mBuf);
463 CMCHKUNPK(oduPackUInt32, &stats->persistent.numActivation, mBuf);
464 CMCHKUNPK(oduPackUInt32, &stats->persistent.numDeactivation, mBuf);
470 PRIVATE Void TSInfUtlUnpkCellInfo
473 TSInfL2CellStats *stats
476 PRIVATE Void TSInfUtlUnpkCellInfo(mBuf, stats)
478 TSInfL2CellStats *stats;
483 TRC2(TSInfUtlUnpkCellInfo)
485 CMCHKUNPK(oduPackUInt32, &stats->cellId, mBuf);
487 CMCHKUNPK(oduPackUInt32, &stats->sch.msg4Fail, mBuf);
488 CMCHKUNPK(oduPackUInt32, &stats->sch.msg3Fail, mBuf);
489 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw0Cqi, mBuf);
490 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw0Cqi, mBuf);
491 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw1Cqi, mBuf);
492 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw1Cqi, mBuf);
493 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw0iTbs, mBuf);
494 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw0iTbs, mBuf);
495 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw1iTbs, mBuf);
496 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw1iTbs, mBuf);
499 CMCHKUNPK(oduPackUInt32, &stats->sch.riCnt[i], mBuf);
505 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNack[i][j], mBuf);
512 CMCHKUNPK(oduPackUInt32, &stats->sch.dlAckNack[i][j], mBuf);
519 CMCHKUNPK(oduPackUInt32, &stats->sch.dlDtx[i][j], mBuf);
524 CMCHKUNPK(oduPackUInt32, &stats->sch.ulNack[i], mBuf);
528 CMCHKUNPK(oduPackUInt32, &stats->sch.ulAckNack[i], mBuf);
532 CMCHKUNPK(oduPackUInt32, &stats->sch.ulDtx[i], mBuf);
536 CMCHKUNPK(oduPackUInt32, &stats->sch.dlPrbUsage[i], mBuf);
540 CMCHKUNPK(oduPackUInt32, &stats->sch.ulPrbUsage[i], mBuf);
544 CMCHKUNPK(oduPackUInt32, &stats->sch.dlPdbRatio[i], mBuf);
546 CMCHKUNPK(oduPackUInt32, &stats->sch.avgTtiProcTime, mBuf);
547 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime1000, mBuf);
548 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime900, mBuf);
549 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime800, mBuf);
550 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime700, mBuf);
551 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime600, mBuf);
552 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime500, mBuf);
554 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfUePick, mBuf);
555 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfRbAllocPass, mBuf);
556 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfRbAllocFail, mBuf);
557 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfFnlzPass, mBuf);
558 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfFnlzFail, mBuf);
559 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfBoUpd, mBuf);
560 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfPdcchSend, mBuf);
561 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfPdschCons, mBuf);
563 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfSrRecv, mBuf);
564 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfBsrRecv, mBuf);
565 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeSchPick, mBuf);
566 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfPdcchSchd, mBuf);
567 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfAllocAllocated, mBuf);
568 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeRbAllocDone, mBuf);
569 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeRmvFnlzZeroBo, mBuf);
570 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeFnlzReAdd, mBuf);
571 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfPdcchSend, mBuf);
572 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfRbAllocFail, mBuf);
574 CMCHKUNPK(oduPackUInt32, &stats->sch.ulSumCqi, mBuf);
575 CMCHKUNPK(oduPackUInt32, &stats->sch.ulNumCqi, mBuf);
576 CMCHKUNPK(oduPackUInt32, &stats->sch.ulSumiTbs, mBuf);
577 CMCHKUNPK(oduPackUInt32, &stats->sch.ulNumiTbs, mBuf);
579 CMCHKUNPK(oduPackUInt32, &stats->rlc.maxRlcSrbRetxFail, mBuf);
580 CMCHKUNPK(oduPackUInt32, &stats->rlc.maxRlcDrbRetxFail, mBuf);
581 CMCHKUNPK(oduPackUInt32, &stats->rlc.reOdrTmrExp, mBuf);
587 Void TSInfPkSndL2UeStats
591 TSInfL2UeStats *stats
594 Void TSInfPkSndL2UeStats(pst, suId, stats)
597 TSInfL2UeStats *stats;
602 TRC2(TSInfPkSndL2UeStats)
604 mBuf = TSInfUtlAllocMsg(pst);
605 TSInfUtlPackUeInfo(mBuf, stats);
607 pst->event = (Event) EVTTENBL2UESTATS;
613 Void TSInfUnpkL2UeStats
615 TSInfL2UeStatsInd func,
620 Void TSInfUnpkL2UeStats(func, pst, mBuf)
621 TSInfL2UeStatsInd func;
627 TSInfL2UeStats stats;
629 TRC2(TSInfUnpkL2UeStats)
631 SUnpkS16(&suId, mBuf);
632 TSInfUtlUnpkUeInfo(mBuf, &stats);
634 (*func)(pst, suId, &stats);
639 Void TSInfPkSndL2CellStats
643 TSInfL2CellStats *stats
646 Void TSInfPkSndL2CellStats(pst, suId, stats)
649 TSInfL2Cellstats *stats;
654 TRC2(TSInfPkSndL2CellStats)
656 mBuf = TSInfUtlAllocMsg(pst);
657 TSInfUtlPackCellInfo(mBuf, stats);
659 pst->event = (Event) EVTTENBL2CELLSTATS;
665 Void TSInfUnpkL2CellStats
667 TSInfL2CellStatsInd func,
672 Void TSInfUnpkL2CellStats(func, pst, mBuf)
673 TSInfL2CellStatsInd func;
679 TSInfL2CellStats stats;
681 TRC2(TSInfUnpkL2CellStats)
683 SUnpkS16(&suId, mBuf);
684 TSInfUtlUnpkCellInfo(mBuf, &stats);
686 (*func)(pst, suId, &stats);
689 #endif /* TENB_STATS */
691 /**********************************************************************
693 **********************************************************************/