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)
119 SGetMsg(region, pool, &pBuf);
120 //#if defined(SCH_STATS) || defined(TENB_STATS)
121 pst.dstEnt = STATS_DSTENT;
122 pst.dstInst = STATS_DSTINST;
123 pst.selector = CL_DSTENT_SELECTOR;
125 pst.srcProcId = STATS_SRCPROCID;
126 pst.dstProcId = STATS_DSTPROCID;
127 pst.srcEnt = STATS_SRCENT;
128 pst.event = TENBSTATSINIT;
136 * Fun: TSInfTrigStats
138 * Desc: Trigger Sending L2 Stats
153 Void TSInfTrigStats(region, pool)
159 TSInfTrigL2Stats(region, pool);
166 PRIVATE Buffer* TSInfUtlAllocMsg
171 PRIVATE Buffer* TSInfUtlAllocMsg(pst)
178 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
179 printf("\n MBuf Allocation failed\n");
185 PRIVATE Void TSInfUtlPackUeInfo
188 TSInfL2UeStats *stats
191 PRIVATE Void TSInfUtlPackUeInfo(mBuf, stats)
193 TSInfL2UeStats *stats;
200 CMCHKPK(oduUnpackUInt32, stats->persistent.numDeactivation, mBuf);
201 CMCHKPK(oduUnpackUInt32, stats->persistent.numActivation, mBuf);
202 CMCHKPK(oduUnpackUInt32, stats->persistent.activatedSCells, mBuf);
204 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.rlc.dlMaxWindowSz, mBuf);
205 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.rlc.dlMaxPktsInSduQ, mBuf);
206 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.rlc.ulReOdrTmrExpCnt, mBuf);
208 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.pdcp.dlFlowCtrlDropCnt, mBuf);
209 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.pdcp.dlPdcpAckWaitDropCnt, mBuf);
210 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.pdcp.dlPdcpDropCnt, mBuf);
213 for (k = 0; k < L2_STATS_MAX_CELLS; k++)
215 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulTpt, mBuf);
216 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulNumiTbs, mBuf);
217 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulSumiTbs, mBuf);
218 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulNumCqi, mBuf);
219 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulSumCqi, mBuf);
220 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulDtxCnt, mBuf);
221 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulNackCnt, mBuf);
222 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulAckNackCnt, mBuf);
223 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulPrbUsg, mBuf);
224 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulRetxOccns, mBuf);
225 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].ulTxOccns, mBuf);
226 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlTpt, mBuf);
227 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlBo, mBuf);
230 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].riCnt[i], mBuf);
234 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlPdbLvl[i], mBuf);
236 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].cqiDropCnt, mBuf);
237 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw1iTbs, mBuf);
238 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw1iTbs, mBuf);
239 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw0iTbs, mBuf);
240 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw0iTbs, mBuf);
241 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw1Cqi, mBuf);
242 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw1Cqi, mBuf);
243 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNumCw0Cqi, mBuf);
244 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlSumCw0Cqi, mBuf);
247 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlDtxCnt[i], mBuf);
251 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlAckNackCnt[i], mBuf);
255 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlNackCnt[i], mBuf);
257 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlPrbUsg, mBuf);
258 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlRetxOccns, mBuf);
259 CMCHKPK(oduUnpackUInt32, stats->nonPersistent.sch[k].dlTxOccns, mBuf);
261 CMCHKPK(oduUnpackUInt32, stats->rnti, mBuf);
266 PRIVATE Void TSInfUtlPackCellInfo
269 TSInfL2CellStats *stats
272 PRIVATE Void TSInfUtlPackCellInfo(mBuf, stats)
274 TSInfL2CellStats *stats;
280 CMCHKPK(oduUnpackUInt32, stats->rlc.reOdrTmrExp, mBuf);
281 CMCHKPK(oduUnpackUInt32, stats->rlc.maxRlcDrbRetxFail, mBuf);
282 CMCHKPK(oduUnpackUInt32, stats->rlc.maxRlcSrbRetxFail, mBuf);
284 CMCHKPK(oduUnpackUInt32, stats->sch.ulNumiTbs, mBuf);
285 CMCHKPK(oduUnpackUInt32, stats->sch.ulSumiTbs, mBuf);
286 CMCHKPK(oduUnpackUInt32, stats->sch.ulNumCqi, mBuf);
287 CMCHKPK(oduUnpackUInt32, stats->sch.ulSumCqi, mBuf);
289 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfRbAllocFail, mBuf);
290 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfPdcchSend, mBuf);
291 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeFnlzReAdd, mBuf);
292 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeRmvFnlzZeroBo, mBuf);
293 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeRbAllocDone, mBuf);
294 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfAllocAllocated, mBuf);
295 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfPdcchSchd, mBuf);
296 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfUeSchPick, mBuf);
297 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfBsrRecv, mBuf);
298 CMCHKPK(oduUnpackUInt32, stats->sch.ul5gtfSrRecv, mBuf);
300 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfPdschCons, mBuf);
301 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfPdcchSend, mBuf);
302 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfBoUpd, mBuf);
303 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfFnlzFail, mBuf);
304 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfFnlzPass, mBuf);
305 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfRbAllocFail, mBuf);
306 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfRbAllocPass, mBuf);
307 CMCHKPK(oduUnpackUInt32, stats->sch.dl5gtfUePick, mBuf);
309 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime500, mBuf);
310 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime600, mBuf);
311 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime700, mBuf);
312 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime800, mBuf);
313 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime900, mBuf);
314 CMCHKPK(oduUnpackUInt32, stats->sch.cntTtiProcTime1000, mBuf);
315 CMCHKPK(oduUnpackUInt32, stats->sch.avgTtiProcTime, mBuf);
318 CMCHKPK(oduUnpackUInt32, stats->sch.dlPdbRatio[i], mBuf);
322 CMCHKPK(oduUnpackUInt32, stats->sch.ulPrbUsage[i], mBuf);
326 CMCHKPK(oduUnpackUInt32, stats->sch.dlPrbUsage[i], mBuf);
330 CMCHKPK(oduUnpackUInt32, stats->sch.ulDtx[i], mBuf);
334 CMCHKPK(oduUnpackUInt32, stats->sch.ulAckNack[i], mBuf);
338 CMCHKPK(oduUnpackUInt32, stats->sch.ulNack[i], mBuf);
344 CMCHKPK(oduUnpackUInt32, stats->sch.dlDtx[i][j], mBuf);
351 CMCHKPK(oduUnpackUInt32, stats->sch.dlAckNack[i][j], mBuf);
358 CMCHKPK(oduUnpackUInt32, stats->sch.dlNack[i][j], mBuf);
363 CMCHKPK(oduUnpackUInt32, stats->sch.riCnt[i], mBuf);
365 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw1iTbs, mBuf);
366 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw1iTbs, mBuf);
367 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw0iTbs, mBuf);
368 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw0iTbs, mBuf);
369 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw1Cqi, mBuf);
370 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw1Cqi, mBuf);
371 CMCHKPK(oduUnpackUInt32, stats->sch.dlNumCw0Cqi, mBuf);
372 CMCHKPK(oduUnpackUInt32, stats->sch.dlSumCw0Cqi, mBuf);
373 CMCHKPK(oduUnpackUInt32, stats->sch.msg3Fail, mBuf);
374 CMCHKPK(oduUnpackUInt32, stats->sch.msg4Fail, mBuf);
376 CMCHKPK(oduUnpackUInt32, stats->cellId, mBuf);
382 PRIVATE Void TSInfUtlUnpkUeInfo
385 TSInfL2UeStats *stats
388 PRIVATE Void TSInfUtlUnpkUeInfo(mBuf, stats)
390 TSInfL2UeStats *stats;
397 CMCHKUNPK(oduPackUInt32, &stats->rnti, mBuf);
399 for (k = L2_STATS_MAX_CELLS; k > 0; k--)
401 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlTxOccns, mBuf);
402 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlRetxOccns, mBuf);
403 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlPrbUsg, mBuf);
406 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNackCnt[i], mBuf);
410 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlAckNackCnt[i], mBuf);
414 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlDtxCnt[i], mBuf);
416 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw0Cqi, mBuf);
417 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw0Cqi, mBuf);
418 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw1Cqi, mBuf);
419 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw1Cqi, mBuf);
420 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw0iTbs, mBuf);
421 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw0iTbs, mBuf);
422 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlSumCw1iTbs, mBuf);
423 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlNumCw1iTbs, mBuf);
424 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].cqiDropCnt, mBuf);
427 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlPdbLvl[i], mBuf);
431 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].riCnt[i], mBuf);
433 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlBo, mBuf);
434 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].dlTpt, mBuf);
435 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulTxOccns, mBuf);
436 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulRetxOccns, mBuf);
437 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulPrbUsg, mBuf);
438 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulAckNackCnt, mBuf);
439 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulNackCnt, mBuf);
440 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulDtxCnt, mBuf);
441 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulSumCqi, mBuf);
442 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulNumCqi, mBuf);
443 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulSumiTbs, mBuf);
444 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulNumiTbs, mBuf);
445 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.sch[k-1].ulTpt, mBuf);
448 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.pdcp.dlPdcpDropCnt, mBuf);
449 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.pdcp.dlPdcpAckWaitDropCnt, mBuf);
450 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.pdcp.dlFlowCtrlDropCnt, mBuf);
452 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.rlc.ulReOdrTmrExpCnt, mBuf);
453 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.rlc.dlMaxPktsInSduQ, mBuf);
454 CMCHKUNPK(oduPackUInt32, &stats->nonPersistent.rlc.dlMaxWindowSz, mBuf);
456 CMCHKUNPK(oduPackUInt32, &stats->persistent.activatedSCells, mBuf);
457 CMCHKUNPK(oduPackUInt32, &stats->persistent.numActivation, mBuf);
458 CMCHKUNPK(oduPackUInt32, &stats->persistent.numDeactivation, mBuf);
464 PRIVATE Void TSInfUtlUnpkCellInfo
467 TSInfL2CellStats *stats
470 PRIVATE Void TSInfUtlUnpkCellInfo(mBuf, stats)
472 TSInfL2CellStats *stats;
478 CMCHKUNPK(oduPackUInt32, &stats->cellId, mBuf);
480 CMCHKUNPK(oduPackUInt32, &stats->sch.msg4Fail, mBuf);
481 CMCHKUNPK(oduPackUInt32, &stats->sch.msg3Fail, mBuf);
482 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw0Cqi, mBuf);
483 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw0Cqi, mBuf);
484 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw1Cqi, mBuf);
485 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw1Cqi, mBuf);
486 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw0iTbs, mBuf);
487 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw0iTbs, mBuf);
488 CMCHKUNPK(oduPackUInt32, &stats->sch.dlSumCw1iTbs, mBuf);
489 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNumCw1iTbs, mBuf);
492 CMCHKUNPK(oduPackUInt32, &stats->sch.riCnt[i], mBuf);
498 CMCHKUNPK(oduPackUInt32, &stats->sch.dlNack[i][j], mBuf);
505 CMCHKUNPK(oduPackUInt32, &stats->sch.dlAckNack[i][j], mBuf);
512 CMCHKUNPK(oduPackUInt32, &stats->sch.dlDtx[i][j], mBuf);
517 CMCHKUNPK(oduPackUInt32, &stats->sch.ulNack[i], mBuf);
521 CMCHKUNPK(oduPackUInt32, &stats->sch.ulAckNack[i], mBuf);
525 CMCHKUNPK(oduPackUInt32, &stats->sch.ulDtx[i], mBuf);
529 CMCHKUNPK(oduPackUInt32, &stats->sch.dlPrbUsage[i], mBuf);
533 CMCHKUNPK(oduPackUInt32, &stats->sch.ulPrbUsage[i], mBuf);
537 CMCHKUNPK(oduPackUInt32, &stats->sch.dlPdbRatio[i], mBuf);
539 CMCHKUNPK(oduPackUInt32, &stats->sch.avgTtiProcTime, mBuf);
540 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime1000, mBuf);
541 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime900, mBuf);
542 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime800, mBuf);
543 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime700, mBuf);
544 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime600, mBuf);
545 CMCHKUNPK(oduPackUInt32, &stats->sch.cntTtiProcTime500, mBuf);
547 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfUePick, mBuf);
548 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfRbAllocPass, mBuf);
549 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfRbAllocFail, mBuf);
550 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfFnlzPass, mBuf);
551 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfFnlzFail, mBuf);
552 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfBoUpd, mBuf);
553 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfPdcchSend, mBuf);
554 CMCHKUNPK(oduPackUInt32, &stats->sch.dl5gtfPdschCons, mBuf);
556 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfSrRecv, mBuf);
557 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfBsrRecv, mBuf);
558 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeSchPick, mBuf);
559 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfPdcchSchd, mBuf);
560 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfAllocAllocated, mBuf);
561 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeRbAllocDone, mBuf);
562 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeRmvFnlzZeroBo, mBuf);
563 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfUeFnlzReAdd, mBuf);
564 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfPdcchSend, mBuf);
565 CMCHKUNPK(oduPackUInt32, &stats->sch.ul5gtfRbAllocFail, mBuf);
567 CMCHKUNPK(oduPackUInt32, &stats->sch.ulSumCqi, mBuf);
568 CMCHKUNPK(oduPackUInt32, &stats->sch.ulNumCqi, mBuf);
569 CMCHKUNPK(oduPackUInt32, &stats->sch.ulSumiTbs, mBuf);
570 CMCHKUNPK(oduPackUInt32, &stats->sch.ulNumiTbs, mBuf);
572 CMCHKUNPK(oduPackUInt32, &stats->rlc.maxRlcSrbRetxFail, mBuf);
573 CMCHKUNPK(oduPackUInt32, &stats->rlc.maxRlcDrbRetxFail, mBuf);
574 CMCHKUNPK(oduPackUInt32, &stats->rlc.reOdrTmrExp, mBuf);
580 Void TSInfPkSndL2UeStats
584 TSInfL2UeStats *stats
587 Void TSInfPkSndL2UeStats(pst, suId, stats)
590 TSInfL2UeStats *stats;
596 mBuf = TSInfUtlAllocMsg(pst);
597 TSInfUtlPackUeInfo(mBuf, stats);
599 pst->event = (Event) EVTTENBL2UESTATS;
605 Void TSInfUnpkL2UeStats
607 TSInfL2UeStatsInd func,
612 Void TSInfUnpkL2UeStats(func, pst, mBuf)
613 TSInfL2UeStatsInd func;
619 TSInfL2UeStats stats;
622 SUnpkS16(&suId, mBuf);
623 TSInfUtlUnpkUeInfo(mBuf, &stats);
625 (*func)(pst, suId, &stats);
630 Void TSInfPkSndL2CellStats
634 TSInfL2CellStats *stats
637 Void TSInfPkSndL2CellStats(pst, suId, stats)
640 TSInfL2Cellstats *stats;
646 mBuf = TSInfUtlAllocMsg(pst);
647 TSInfUtlPackCellInfo(mBuf, stats);
649 pst->event = (Event) EVTTENBL2CELLSTATS;
655 Void TSInfUnpkL2CellStats
657 TSInfL2CellStatsInd func,
662 Void TSInfUnpkL2CellStats(func, pst, mBuf)
663 TSInfL2CellStatsInd func;
669 TSInfL2CellStats stats;
672 SUnpkS16(&suId, mBuf);
673 TSInfUtlUnpkCellInfo(mBuf, &stats);
675 (*func)(pst, suId, &stats);
678 #endif /* TENB_STATS */
680 /**********************************************************************
682 **********************************************************************/