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 *******************************************************************************/
20 /************************************************************************
26 Desc: C source code for pack/unpack of TFU interface primitives.
30 **********************************************************************/
33 @brief This file contains the packing/unpacking code for the TFU interface
37 /* header include files (.h) */
38 #include "common_def.h"
39 #include "tfu.h" /* RGU Interface defines */
41 /* header/extern include files (.x) */
42 #include "tfu.x" /* RGU Interface includes */
44 #include "du_app_mac_inf.h"
45 //#include "mac_sch_interface.h"
50 /***********************************************************
52 * Func : cmPkTfuBndReq
55 * Desc : This API is used to send a Bind Request from MAC to PHY.
56 * @param pst Pointer to the post structure.
57 * @param suId SAP ID of the service user.
58 * @param spId SAP ID of the service provider.
68 **********************************************************/
70 PUBLIC S16 cmPkTfuBndReq
77 PUBLIC S16 cmPkTfuBndReq(pst, suId, spId)
86 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
87 #if (ERRCLASS & ERRCLS_ADD_RES)
88 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
89 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
90 (ErrVal)ETFU001, (ErrVal)0, "Packing failed");
94 if (SPkS16(spId, mBuf) != ROK) {
95 #if (ERRCLASS & ERRCLS_ADD_RES)
96 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
97 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
98 (ErrVal)ETFU002, (ErrVal)0, "Packing failed");
103 if (SPkS16(suId, mBuf) != ROK) {
104 #if (ERRCLASS & ERRCLS_ADD_RES)
105 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
106 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
107 (ErrVal)ETFU003, (ErrVal)0, "Packing failed");
112 pst->event = (Event) EVTTFUBNDREQ;
113 RETVALUE(SPstTsk(pst,mBuf));
117 /***********************************************************
119 * Func : cmUnpkTfuBndReq
122 * Desc : This API is used to send a Bind Request from MAC to PHY.
123 * @param pst Pointer to the post structure.
124 * @param suId SAP ID of the service user.
125 * @param spId SAP ID of the service provider.
126 * @return ROK/RFAILED
135 **********************************************************/
137 PUBLIC S16 cmUnpkTfuBndReq
144 PUBLIC S16 cmUnpkTfuBndReq(func, pst, mBuf)
153 TRC3(cmUnpkTfuBndReq)
155 if (SUnpkS16(&suId, mBuf) != ROK) {
157 #if (ERRCLASS & ERRCLS_ADD_RES)
158 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
159 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
160 (ErrVal)ETFU004, (ErrVal)0, "Packing failed");
164 if (SUnpkS16(&spId, mBuf) != ROK) {
166 #if (ERRCLASS & ERRCLS_ADD_RES)
167 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
168 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
169 (ErrVal)ETFU005, (ErrVal)0, "Packing failed");
174 RETVALUE((*func)(pst, suId, spId));
178 /***********************************************************
180 * Func : cmPkTfuBndCfm
183 * Desc : This API is used to receive a Bind Confirm from PHY to MAC.
184 * @param pst Pointer to the post structure.
185 * @param suId SAP ID of the service user.
186 * @param status Status of the bind request.
187 * @return ROK/RFAILED
196 **********************************************************/
198 PUBLIC S16 cmPkTfuBndCfm
205 PUBLIC S16 cmPkTfuBndCfm(pst, suId, status)
211 Buffer *mBuf = NULLP;
214 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
215 #if (ERRCLASS & ERRCLS_ADD_RES)
216 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
217 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
218 (ErrVal)ETFU006, (ErrVal)0, "Packing failed");
222 if (SPkU8(status, mBuf) != ROK) {
223 #if (ERRCLASS & ERRCLS_ADD_RES)
224 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
225 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
226 (ErrVal)ETFU007, (ErrVal)0, "Packing failed");
231 if (SPkS16(suId, mBuf) != ROK) {
232 #if (ERRCLASS & ERRCLS_ADD_RES)
233 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
234 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
235 (ErrVal)ETFU008, (ErrVal)0, "Packing failed");
240 pst->event = (Event) EVTTFUBNDCFM;
241 RETVALUE(SPstTsk(pst,mBuf));
245 /***********************************************************
247 * Func : cmUnpkTfuBndCfm
250 * Desc : This API is used to receive a Bind Confirm from PHY to MAC.
251 * @param pst Pointer to the post structure.
252 * @param suId SAP ID of the service user.
253 * @param status Status of the bind request.
254 * @return ROK/RFAILED
263 **********************************************************/
265 PUBLIC S16 cmUnpkTfuBndCfm
272 PUBLIC S16 cmUnpkTfuBndCfm(func, pst, mBuf)
281 TRC3(cmUnpkTfuBndCfm)
283 if (SUnpkS16(&suId, mBuf) != ROK) {
285 #if (ERRCLASS & ERRCLS_ADD_RES)
286 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
287 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
288 (ErrVal)ETFU009, (ErrVal)0, "Packing failed");
292 if (SUnpkU8(&status, mBuf) != ROK) {
294 #if (ERRCLASS & ERRCLS_ADD_RES)
295 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
296 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
297 (ErrVal)ETFU010, (ErrVal)0, "Packing failed");
302 RETVALUE((*func)(pst, suId, status));
306 /***********************************************************
308 * Func : cmPkTfuUbndReq
311 * Desc : This API is used to send an Unbind Request from MAC to PHY.
312 * @param pst Pointer to the post structure.
313 * @param suId SAP ID of the service provider.
314 * @param reason Reason for Unbind request.
315 * @return ROK/RFAILED
324 **********************************************************/
326 PUBLIC S16 cmPkTfuUbndReq
333 PUBLIC S16 cmPkTfuUbndReq(pst, spId, reason)
339 Buffer *mBuf = NULLP;
342 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
343 #if (ERRCLASS & ERRCLS_ADD_RES)
344 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
345 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
346 (ErrVal)ETFU011, (ErrVal)0, "Packing failed");
350 if (SPkS16(reason, mBuf) != ROK) {
351 #if (ERRCLASS & ERRCLS_ADD_RES)
352 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
353 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
354 (ErrVal)ETFU012, (ErrVal)0, "Packing failed");
359 if (SPkS16(spId, mBuf) != ROK) {
360 #if (ERRCLASS & ERRCLS_ADD_RES)
361 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
362 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
363 (ErrVal)ETFU013, (ErrVal)0, "Packing failed");
368 pst->event = (Event) EVTTFUUBNDREQ;
369 RETVALUE(SPstTsk(pst,mBuf));
373 /***********************************************************
375 * Func : cmUnpkTfuUbndReq
378 * Desc : This API is used to send an Unbind Request from MAC to PHY.
379 * @param pst Pointer to the post structure.
380 * @param suId SAP ID of the service provider.
381 * @param reason Reason for Unbind request.
382 * @return ROK/RFAILED
391 **********************************************************/
393 PUBLIC S16 cmUnpkTfuUbndReq
400 PUBLIC S16 cmUnpkTfuUbndReq(func, pst, mBuf)
409 TRC3(cmUnpkTfuUbndReq)
411 if (SUnpkS16(&spId, mBuf) != ROK) {
413 #if (ERRCLASS & ERRCLS_ADD_RES)
414 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
415 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
416 (ErrVal)ETFU014, (ErrVal)0, "Packing failed");
420 if (SUnpkS16(&reason, mBuf) != ROK) {
422 #if (ERRCLASS & ERRCLS_ADD_RES)
423 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
424 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
425 (ErrVal)ETFU015, (ErrVal)0, "Packing failed");
430 RETVALUE((*func)(pst, spId, reason));
434 /***********************************************************
436 * Func : cmPkTfuSchBndReq
439 * Desc : This API is used to send a Bind Request from Scheduler to PHY.
440 * @param pst Pointer to the post structure.
441 * @param suId SAP ID of the service user.
442 * @param spId SAP ID of the service provider.
443 * @return ROK/RFAILED
452 **********************************************************/
454 PUBLIC S16 cmPkTfuSchBndReq
461 PUBLIC S16 cmPkTfuSchBndReq(pst, suId, spId)
467 Buffer *mBuf = NULLP;
468 TRC3(cmPkTfuSchBndReq)
470 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
471 #if (ERRCLASS & ERRCLS_ADD_RES)
472 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
473 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
474 (ErrVal)ETFU016, (ErrVal)0, "Packing failed");
478 if (SPkS16(spId, mBuf) != ROK) {
479 #if (ERRCLASS & ERRCLS_ADD_RES)
480 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
481 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
482 (ErrVal)ETFU017, (ErrVal)0, "Packing failed");
487 if (SPkS16(suId, mBuf) != ROK) {
488 #if (ERRCLASS & ERRCLS_ADD_RES)
489 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
490 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
491 (ErrVal)ETFU018, (ErrVal)0, "Packing failed");
496 pst->event = (Event) EVTTFUSCHBNDREQ;
497 RETVALUE(SPstTsk(pst,mBuf));
501 /***********************************************************
503 * Func : cmUnpkTfuSchBndReq
506 * Desc : This API is used to send a Bind Request from Scheduler to PHY.
507 * @param pst Pointer to the post structure.
508 * @param suId SAP ID of the service user.
509 * @param spId SAP ID of the service provider.
510 * @return ROK/RFAILED
519 **********************************************************/
521 PUBLIC S16 cmUnpkTfuSchBndReq
528 PUBLIC S16 cmUnpkTfuSchBndReq(func, pst, mBuf)
537 TRC3(cmUnpkTfuSchBndReq)
539 if (SUnpkS16(&suId, mBuf) != ROK) {
541 #if (ERRCLASS & ERRCLS_ADD_RES)
542 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
543 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
544 (ErrVal)ETFU019, (ErrVal)0, "Packing failed");
548 if (SUnpkS16(&spId, mBuf) != ROK) {
550 #if (ERRCLASS & ERRCLS_ADD_RES)
551 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
552 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
553 (ErrVal)ETFU020, (ErrVal)0, "Packing failed");
558 RETVALUE((*func)(pst, suId, spId));
562 /***********************************************************
564 * Func : cmPkTfuSchBndCfm
567 * Desc : This API is used to receive a Bind Confirm from PHY to Scheduler.
568 * @param pst Pointer to the post structure.
569 * @param suId SAP ID of the service user.
570 * @param status Status of the bind request.
571 * @return ROK/RFAILED
580 **********************************************************/
582 PUBLIC S16 cmPkTfuSchBndCfm
589 PUBLIC S16 cmPkTfuSchBndCfm(pst, suId, status)
595 Buffer *mBuf = NULLP;
596 TRC3(cmPkTfuSchBndCfm)
598 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
599 #if (ERRCLASS & ERRCLS_ADD_RES)
600 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
601 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
602 (ErrVal)ETFU021, (ErrVal)0, "Packing failed");
606 if (SPkU8(status, mBuf) != ROK) {
607 #if (ERRCLASS & ERRCLS_ADD_RES)
608 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
609 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
610 (ErrVal)ETFU022, (ErrVal)0, "Packing failed");
615 if (SPkS16(suId, mBuf) != ROK) {
616 #if (ERRCLASS & ERRCLS_ADD_RES)
617 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
618 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
619 (ErrVal)ETFU023, (ErrVal)0, "Packing failed");
624 pst->event = (Event) EVTTFUSCHBNDCFM;
625 RETVALUE(SPstTsk(pst,mBuf));
629 /***********************************************************
631 * Func : cmUnpkTfuSchBndCfm
634 * Desc : This API is used to receive a Bind Confirm from PHY to Scheduler.
635 * @param pst Pointer to the post structure.
636 * @param suId SAP ID of the service user.
637 * @param status Status of the bind request.
638 * @return ROK/RFAILED
647 **********************************************************/
649 PUBLIC S16 cmUnpkTfuSchBndCfm
656 PUBLIC S16 cmUnpkTfuSchBndCfm(func, pst, mBuf)
665 TRC3(cmUnpkTfuSchBndCfm)
667 if (SUnpkS16(&suId, mBuf) != ROK) {
669 #if (ERRCLASS & ERRCLS_ADD_RES)
670 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
671 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
672 (ErrVal)ETFU024, (ErrVal)0, "Packing failed");
676 if (SUnpkU8(&status, mBuf) != ROK) {
678 #if (ERRCLASS & ERRCLS_ADD_RES)
679 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
680 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
681 (ErrVal)ETFU025, (ErrVal)0, "Packing failed");
686 RETVALUE((*func)(pst, suId, status));
690 /***********************************************************
692 * Func : cmPkTfuSchUbndReq
695 * Desc : This API is used to send an Unbind Request from Scheduler to PHY.
696 * @param pst Pointer to the post structure.
697 * @param suId SAP ID of the service provider.
698 * @param reason Reason for Unbind request.
699 * @return ROK/RFAILED
708 **********************************************************/
710 PUBLIC S16 cmPkTfuSchUbndReq
717 PUBLIC S16 cmPkTfuSchUbndReq(pst, spId, reason)
723 Buffer *mBuf = NULLP;
724 TRC3(cmPkTfuSchUbndReq)
726 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
727 #if (ERRCLASS & ERRCLS_ADD_RES)
728 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
729 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
730 (ErrVal)ETFU026, (ErrVal)0, "Packing failed");
734 if (SPkS16(reason, mBuf) != ROK) {
735 #if (ERRCLASS & ERRCLS_ADD_RES)
736 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
737 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
738 (ErrVal)ETFU027, (ErrVal)0, "Packing failed");
743 if (SPkS16(spId, mBuf) != ROK) {
744 #if (ERRCLASS & ERRCLS_ADD_RES)
745 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
746 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
747 (ErrVal)ETFU028, (ErrVal)0, "Packing failed");
752 pst->event = (Event) EVTTFUSCHUBNDREQ;
753 RETVALUE(SPstTsk(pst,mBuf));
757 /***********************************************************
759 * Func : cmUnpkTfuSchUbndReq
762 * Desc : This API is used to send an Unbind Request from Scheduler to PHY.
763 * @param pst Pointer to the post structure.
764 * @param suId SAP ID of the service provider.
765 * @param reason Reason for Unbind request.
766 * @return ROK/RFAILED
775 **********************************************************/
777 PUBLIC S16 cmUnpkTfuSchUbndReq
784 PUBLIC S16 cmUnpkTfuSchUbndReq(func, pst, mBuf)
793 TRC3(cmUnpkTfuSchUbndReq)
795 if (SUnpkS16(&spId, mBuf) != ROK) {
797 #if (ERRCLASS & ERRCLS_ADD_RES)
798 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
799 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
800 (ErrVal)ETFU029, (ErrVal)0, "Packing failed");
804 if (SUnpkS16(&reason, mBuf) != ROK) {
806 #if (ERRCLASS & ERRCLS_ADD_RES)
807 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
808 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
809 (ErrVal)ETFU030, (ErrVal)0, "Packing failed");
814 RETVALUE((*func)(pst, spId, reason));
818 /***********************************************************
820 * Func : cmPkTfuRaReqInd
823 * Desc : This API is used to indication Random Access Request reception from
825 * @details This primitive is used by physical layer to indicate the reception
826 * of a Random Access Request from a set of UEs. The information passed consists
827 * of the RA-RNTI and the list of preambles received.
828 * @param pst Pointer to the post structure.
829 * @param suId SAP ID of the service user.
830 * @param raReqInd Pointer to the TfuRaReqIndInfo structure.
831 * @return ROK/RFAILED
840 **********************************************************/
842 PUBLIC S16 cmPkTfuRaReqInd
846 TfuRaReqIndInfo * raReqInd
849 PUBLIC S16 cmPkTfuRaReqInd(pst, suId, raReqInd)
852 TfuRaReqIndInfo * raReqInd;
855 Buffer *mBuf = NULLP;
856 TRC3(cmPkTfuRaReqInd)
858 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
859 #if (ERRCLASS & ERRCLS_ADD_RES)
860 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
861 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
862 (ErrVal)ETFU031, (ErrVal)0, "Packing failed");
864 TFU_FREE_MEM(raReqInd);
867 if (pst->selector == ODU_SELECTOR_LC) {
868 if (cmPkTfuRaReqIndInfo(raReqInd, mBuf) != ROK) {
869 #if (ERRCLASS & ERRCLS_ADD_RES)
870 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
871 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
872 (ErrVal)ETFU032, (ErrVal)0, "Packing failed");
874 TFU_FREE_MEM(raReqInd);
879 else if(pst->selector == ODU_SELECTOR_LWLC)
881 if (cmPkPtr((PTR)raReqInd, mBuf) != ROK)
883 #if (ERRCLASS & ERRCLS_ADD_RES)
884 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
885 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
886 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
888 TFU_FREE_MEM(raReqInd);
894 if (SPkS16(suId, mBuf) != ROK) {
895 #if (ERRCLASS & ERRCLS_ADD_RES)
896 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
897 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
898 (ErrVal)ETFU033, (ErrVal)0, "Packing failed");
900 TFU_FREE_MEM(raReqInd);
904 if (pst->selector != ODU_SELECTOR_LWLC) {
905 TFU_FREE_MEM(raReqInd);
908 pst->event = (Event) EVTTFURAREQIND;
909 RETVALUE(SPstTsk(pst,mBuf));
913 /***********************************************************
915 * Func : cmUnpkTfuRaReqInd
918 * Desc : This API is used to indication Random Access Request reception from
920 * @details This primitive is used by physical layer to indicate the reception
921 * of a Random Access Request from a set of UEs. The information passed consists
922 * of the RA-RNTI and the list of preambles received.
923 * @param pst Pointer to the post structure.
924 * @param suId SAP ID of the service user.
925 * @param raReqInd Pointer to the TfuRaReqIndInfo structure.
926 * @return ROK/RFAILED
935 **********************************************************/
937 PUBLIC S16 cmUnpkTfuRaReqInd
944 PUBLIC S16 cmUnpkTfuRaReqInd(func, pst, mBuf)
951 TfuRaReqIndInfo *raReqInd;
953 TRC3(cmUnpkTfuRaReqInd)
955 if (SUnpkS16(&suId, mBuf) != ROK) {
957 #if (ERRCLASS & ERRCLS_ADD_RES)
958 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
959 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
960 (ErrVal)ETFU034, (ErrVal)0, "Packing failed");
964 if (pst->selector != ODU_SELECTOR_LWLC) {
966 sMem.region = pst->region;
967 sMem.pool = pst->pool;
968 if ((cmAllocEvnt(sizeof(TfuRaReqIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&raReqInd)) != ROK) {
969 #if (ERRCLASS & ERRCLS_ADD_RES)
970 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
971 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
972 (ErrVal)ETFU035, (ErrVal)0, "Packing failed");
980 if (pst->selector == ODU_SELECTOR_LC)
982 if (cmUnpkTfuRaReqIndInfo(raReqInd, mBuf) != ROK) {
983 TFU_FREE_MEM(raReqInd);
985 #if (ERRCLASS & ERRCLS_ADD_RES)
986 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
987 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
988 (ErrVal)ETFU036, (ErrVal)0, "Packing failed");
993 else if(pst->selector == ODU_SELECTOR_LWLC)
995 if (cmUnpkPtr((PTR *)&raReqInd, mBuf) != ROK)
997 #if (ERRCLASS & ERRCLS_ADD_RES)
998 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
999 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1000 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
1002 TFU_FREE_MEM(raReqInd);
1008 RETVALUE((*func)(pst, suId, raReqInd));
1012 /***********************************************************
1014 * Func : cmPkTfuRecpReq
1017 * Desc : This primitive is sent from Scheduler to PHY.
1018 * @details This primitive provides PHY with all the information required by
1019 * PHY to decode transmissions from the UE on either PUCCH or PUSCH.
1020 * -# On PUCCH UE can transmit the following
1026 * -# On PUSCH UE can transmit the following
1029 * -# Data + HARQ Feedback
1030 * This primitive carries all the information for the expected subframe for all
1031 * the UEs that have been scheduled to transmit.
1032 * @param pst Pointer to the post structure.
1033 * @param spId SAP ID of the service provider.
1034 * @param recpReq Pointer to the TfuRecpReqInfo structure.
1035 * @return ROK/RFAILED
1044 **********************************************************/
1046 PUBLIC S16 cmPkTfuRecpReq
1050 TfuRecpReqInfo * recpReq
1053 PUBLIC S16 cmPkTfuRecpReq(pst, spId, recpReq)
1056 TfuRecpReqInfo * recpReq;
1059 Buffer *mBuf = NULLP;
1060 TRC3(cmPkTfuRecpReq)
1062 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1063 #if (ERRCLASS & ERRCLS_ADD_RES)
1064 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1065 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1066 (ErrVal)ETFU037, (ErrVal)0, "Packing failed");
1068 TFU_FREE_MEM(recpReq);
1071 if (pst->selector == ODU_SELECTOR_LC) {
1072 if (cmPkTfuRecpReqInfo(recpReq, mBuf) != ROK) {
1073 #if (ERRCLASS & ERRCLS_ADD_RES)
1074 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1075 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1076 (ErrVal)ETFU038, (ErrVal)0, "Packing failed");
1078 TFU_FREE_MEM(recpReq);
1083 else if(pst->selector == ODU_SELECTOR_LWLC)
1085 if (cmPkPtr((PTR)recpReq, mBuf) != ROK)
1087 #if (ERRCLASS & ERRCLS_ADD_RES)
1088 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1089 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1090 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
1092 TFU_FREE_MEM(recpReq);
1099 if (SPkS16(spId, mBuf) != ROK) {
1100 #if (ERRCLASS & ERRCLS_ADD_RES)
1101 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1102 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1103 (ErrVal)ETFU039, (ErrVal)0, "Packing failed");
1105 TFU_FREE_MEM(recpReq);
1109 if (pst->selector != ODU_SELECTOR_LWLC) {
1110 TFU_FREE_MEM(recpReq);
1113 pst->event = (Event) EVTTFURECPREQ;
1114 RETVALUE(SPstTsk(pst,mBuf));
1118 /***********************************************************
1120 * Func : cmUnpkTfuRecpReq
1123 * Desc : This primitive is sent from Scheduler to PHY.
1124 * @details This primitive provides PHY with all the information required by
1125 * PHY to decode transmissions from the UE on either PUCCH or PUSCH.
1126 * -# On PUCCH UE can transmit the following
1132 * -# On PUSCH UE can transmit the following
1135 * -# Data + HARQ Feedback
1136 * This primitive carries all the information for the expected subframe for all
1137 * the UEs that have been scheduled to transmit.
1138 * @param pst Pointer to the post structure.
1139 * @param spId SAP ID of the service provider.
1140 * @param recpReq Pointer to the TfuRecpReqInfo structure.
1141 * @return ROK/RFAILED
1150 **********************************************************/
1152 PUBLIC S16 cmUnpkTfuRecpReq
1159 PUBLIC S16 cmUnpkTfuRecpReq(func, pst, mBuf)
1166 TfuRecpReqInfo *recpReq;
1168 TRC3(cmUnpkTfuRecpReq)
1170 if (SUnpkS16(&spId, mBuf) != ROK) {
1172 #if (ERRCLASS & ERRCLS_ADD_RES)
1173 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1174 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1175 (ErrVal)ETFU040, (ErrVal)0, "Packing failed");
1179 if (pst->selector != ODU_SELECTOR_LWLC) {
1181 sMem.region = pst->region;
1182 sMem.pool = pst->pool;
1183 if ((cmAllocEvnt(sizeof(TfuRecpReqInfo), TFU_BLKSZ, &sMem, (Ptr *)&recpReq)) != ROK) {
1184 #if (ERRCLASS & ERRCLS_ADD_RES)
1185 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1186 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1187 (ErrVal)ETFU041, (ErrVal)0, "Packing failed");
1193 else if(pst->selector == ODU_SELECTOR_LWLC)
1195 if (cmUnpkPtr((PTR *)&recpReq, mBuf) != ROK)
1197 #if (ERRCLASS & ERRCLS_ADD_RES)
1198 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1199 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1200 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
1202 TFU_FREE_MEM(recpReq);
1208 if (pst->selector == ODU_SELECTOR_LC)
1210 if (cmUnpkTfuRecpReqInfo(recpReq, (Ptr)&recpReq->memCp, mBuf) != ROK) {
1211 TFU_FREE_MEM(recpReq);
1213 #if (ERRCLASS & ERRCLS_ADD_RES)
1214 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1215 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1216 (ErrVal)ETFU042, (ErrVal)0, "Packing failed");
1221 else if(pst->selector == ODU_SELECTOR_LWLC)
1223 if (cmUnpkPtr((PTR*)&recpReq, mBuf) != ROK)
1225 #if (ERRCLASS & ERRCLS_ADD_RES)
1226 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1227 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1228 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
1230 TFU_FREE_MEM(recpReq);
1237 RETVALUE((*func)(pst, spId, recpReq));
1241 /***********************************************************
1243 * Func : cmPkTfuUlCqiInd
1246 * Desc : This API is used to indicate CQI reporting from PHY to Scheduler
1247 * @details This primitive carries an estimate of the uplink Channel quality
1248 * index (CQI) for a list of UEs. This is an extimate of the uplink channel
1249 * quality i.e. the transmission from UE as calculated at the Physical layer at
1251 * It carries a list of subband CQIs for each UE.
1252 * @param pst Pointer to the post structure.
1253 * @param suId SAP ID of the service user.
1254 * @param ulCqiInd Pointer to the TfuUlCqiIndInfo structure.
1255 * @return ROK/RFAILED
1264 **********************************************************/
1266 PUBLIC S16 cmPkTfuUlCqiInd
1270 TfuUlCqiIndInfo * ulCqiInd
1273 PUBLIC S16 cmPkTfuUlCqiInd(pst, suId, ulCqiInd)
1276 TfuUlCqiIndInfo * ulCqiInd;
1279 Buffer *mBuf = NULLP;
1280 TRC3(cmPkTfuUlCqiInd)
1282 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1283 #if (ERRCLASS & ERRCLS_ADD_RES)
1284 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1285 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1286 (ErrVal)ETFU043, (ErrVal)0, "Packing failed");
1288 TFU_FREE_MEM(ulCqiInd);
1291 if (pst->selector == ODU_SELECTOR_LC) {
1292 if (cmPkTfuUlCqiIndInfo(ulCqiInd, mBuf) != ROK) {
1293 #if (ERRCLASS & ERRCLS_ADD_RES)
1294 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1295 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1296 (ErrVal)ETFU044, (ErrVal)0, "Packing failed");
1298 TFU_FREE_MEM(ulCqiInd);
1303 else if(pst->selector == ODU_SELECTOR_LWLC)
1305 if (cmPkPtr((PTR)ulCqiInd, mBuf) != ROK)
1307 #if (ERRCLASS & ERRCLS_ADD_RES)
1308 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1309 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1310 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
1312 TFU_FREE_MEM(ulCqiInd);
1318 if (SPkS16(suId, mBuf) != ROK) {
1319 #if (ERRCLASS & ERRCLS_ADD_RES)
1320 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1321 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1322 (ErrVal)ETFU045, (ErrVal)0, "Packing failed");
1324 TFU_FREE_MEM(ulCqiInd);
1328 if (pst->selector != ODU_SELECTOR_LWLC) {
1329 TFU_FREE_MEM(ulCqiInd);
1332 pst->event = (Event) EVTTFUULCQIIND;
1333 RETVALUE(SPstTsk(pst,mBuf));
1337 /***********************************************************
1339 * Func : cmUnpkTfuUlCqiInd
1342 * Desc : This API is used to indicate CQI reporting from PHY to Scheduler
1343 * @details This primitive carries an estimate of the uplink Channel quality
1344 * index (CQI) for a list of UEs. This is an extimate of the uplink channel
1345 * quality i.e. the transmission from UE as calculated at the Physical layer at
1347 * It carries a list of subband CQIs for each UE.
1348 * @param pst Pointer to the post structure.
1349 * @param suId SAP ID of the service user.
1350 * @param ulCqiInd Pointer to the TfuUlCqiIndInfo structure.
1351 * @return ROK/RFAILED
1360 **********************************************************/
1362 PUBLIC S16 cmUnpkTfuUlCqiInd
1369 PUBLIC S16 cmUnpkTfuUlCqiInd(func, pst, mBuf)
1376 TfuUlCqiIndInfo *ulCqiInd;
1378 TRC3(cmUnpkTfuUlCqiInd)
1380 if (SUnpkS16(&suId, mBuf) != ROK) {
1382 #if (ERRCLASS & ERRCLS_ADD_RES)
1383 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1384 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1385 (ErrVal)ETFU046, (ErrVal)0, "Packing failed");
1389 if (pst->selector != ODU_SELECTOR_LWLC) {
1391 sMem.region = pst->region;
1392 sMem.pool = pst->pool;
1393 if ((cmAllocEvnt(sizeof(TfuUlCqiIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&ulCqiInd)) != ROK) {
1394 #if (ERRCLASS & ERRCLS_ADD_RES)
1395 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1396 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1397 (ErrVal)ETFU047, (ErrVal)0, "Packing failed");
1405 if (pst->selector == ODU_SELECTOR_LC)
1407 if (cmUnpkTfuUlCqiIndInfo(ulCqiInd, (Ptr)&ulCqiInd->memCp, mBuf) != ROK) {
1408 TFU_FREE_MEM(ulCqiInd);
1410 #if (ERRCLASS & ERRCLS_ADD_RES)
1411 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1412 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1413 (ErrVal)ETFU048, (ErrVal)0, "Packing failed");
1418 else if(pst->selector == ODU_SELECTOR_LWLC)
1420 if (cmUnpkPtr((PTR *)&ulCqiInd, mBuf) != ROK)
1422 #if (ERRCLASS & ERRCLS_ADD_RES)
1423 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1424 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1425 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
1427 TFU_FREE_MEM(ulCqiInd);
1433 RETVALUE((*func)(pst, suId, ulCqiInd));
1437 /***********************************************************
1439 * Func : cmPkTfuHqInd
1442 * Desc : This Primitive carries the HARQ Feedback from PHY to scheduler
1443 * @details HARQ feedback is sent by the UE to the eNodeB, an ACK is sent if UE
1444 * could successfully recieve the data transmitted by the eNodeB, else a NACK is
1445 * sent. This feedback is utilized by MAC for further scheduling, for instance
1446 * it could schedule an adaptive retransmission of the same data.
1449 * @param tfuHqInd pointer to TfuHqIndInfo
1459 **********************************************************/
1461 PUBLIC S16 cmPkTfuHqInd
1465 TfuHqIndInfo * hqInd
1468 PUBLIC S16 cmPkTfuHqInd(pst, spId, hqInd)
1471 TfuHqIndInfo * hqInd;
1474 Buffer *mBuf = NULLP;
1477 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1478 #if (ERRCLASS & ERRCLS_ADD_RES)
1479 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1480 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1481 (ErrVal)ETFU049, (ErrVal)0, "Packing failed");
1483 TFU_FREE_MEM(hqInd);
1486 if (pst->selector == ODU_SELECTOR_LC) {
1487 if (cmPkTfuHqIndInfo(hqInd, mBuf) != ROK) {
1488 #if (ERRCLASS & ERRCLS_ADD_RES)
1489 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1490 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1491 (ErrVal)ETFU050, (ErrVal)0, "Packing failed");
1493 TFU_FREE_MEM(hqInd);
1498 else if(pst->selector == ODU_SELECTOR_LWLC)
1500 if (cmPkPtr((PTR)hqInd, mBuf) != ROK)
1502 #if (ERRCLASS & ERRCLS_ADD_RES)
1503 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1504 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1505 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
1507 TFU_FREE_MEM(hqInd);
1513 if (SPkS16(spId, mBuf) != ROK) {
1514 #if (ERRCLASS & ERRCLS_ADD_RES)
1515 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1516 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1517 (ErrVal)ETFU051, (ErrVal)0, "Packing failed");
1519 TFU_FREE_MEM(hqInd);
1523 if (pst->selector != ODU_SELECTOR_LWLC) {
1524 TFU_FREE_MEM(hqInd);
1527 pst->event = (Event) EVTTFUHQIND;
1528 RETVALUE(SPstTsk(pst,mBuf));
1532 /***********************************************************
1534 * Func : cmUnpkTfuHqInd
1537 * Desc : This Primitive carries the HARQ Feedback from PHY to scheduler
1538 * @details HARQ feedback is sent by the UE to the eNodeB, an ACK is sent if UE
1539 * could successfully recieve the data transmitted by the eNodeB, else a NACK is
1540 * sent. This feedback is utilized by MAC for further scheduling, for instance
1541 * it could schedule an adaptive retransmission of the same data.
1544 * @param tfuHqInd pointer to TfuHqIndInfo
1554 **********************************************************/
1556 PUBLIC S16 cmUnpkTfuHqInd
1563 PUBLIC S16 cmUnpkTfuHqInd(func, pst, mBuf)
1570 TfuHqIndInfo *hqInd;
1572 TRC3(cmUnpkTfuHqInd)
1574 if (SUnpkS16(&spId, mBuf) != ROK) {
1576 #if (ERRCLASS & ERRCLS_ADD_RES)
1577 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1578 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1579 (ErrVal)ETFU052, (ErrVal)0, "Packing failed");
1583 if (pst->selector != ODU_SELECTOR_LWLC) {
1585 sMem.region = pst->region;
1586 sMem.pool = pst->pool;
1587 if ((cmAllocEvnt(sizeof(TfuHqIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&hqInd)) != ROK) {
1588 #if (ERRCLASS & ERRCLS_ADD_RES)
1589 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1590 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1591 (ErrVal)ETFU053, (ErrVal)0, "Packing failed");
1599 if (pst->selector == ODU_SELECTOR_LC)
1601 if (cmUnpkTfuHqIndInfo(hqInd, (Ptr)&hqInd->memCp, mBuf) != ROK) {
1602 TFU_FREE_MEM(hqInd);
1604 #if (ERRCLASS & ERRCLS_ADD_RES)
1605 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1606 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1607 (ErrVal)ETFU054, (ErrVal)0, "Packing failed");
1612 else if(pst->selector == ODU_SELECTOR_LWLC)
1614 if (cmUnpkPtr((PTR *)&hqInd, mBuf) != ROK)
1616 #if (ERRCLASS & ERRCLS_ADD_RES)
1617 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1618 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1619 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
1621 TFU_FREE_MEM(hqInd);
1627 RETVALUE((*func)(pst, spId, hqInd));
1631 /***********************************************************
1633 * Func : cmPkTfuSrInd
1636 * Desc : This Primitive carries the SR Indication from PHY to scheduler.
1637 * @details Scheduling Request (SR) is sent by the UE to the eNodeB to request
1638 * for Uplink (UL) grant. This primitive carries a list of SRs for a number of
1639 * UEs received in the indicated subframe.
1642 * @param tfqSrInd pointer to TfuSrIndInfo
1652 **********************************************************/
1654 PUBLIC S16 cmPkTfuSrInd
1658 TfuSrIndInfo * srInd
1661 PUBLIC S16 cmPkTfuSrInd(pst, spId, srInd)
1664 TfuSrIndInfo * srInd;
1667 Buffer *mBuf = NULLP;
1670 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1671 #if (ERRCLASS & ERRCLS_ADD_RES)
1672 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1673 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1674 (ErrVal)ETFU055, (ErrVal)0, "Packing failed");
1676 TFU_FREE_MEM(srInd);
1679 if (pst->selector == ODU_SELECTOR_LC) {
1680 if (cmPkTfuSrIndInfo(srInd, mBuf) != ROK) {
1681 #if (ERRCLASS & ERRCLS_ADD_RES)
1682 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1683 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1684 (ErrVal)ETFU056, (ErrVal)0, "Packing failed");
1686 TFU_FREE_MEM(srInd);
1691 else if(pst->selector == ODU_SELECTOR_LWLC)
1693 if (cmPkPtr((PTR)srInd, mBuf) != ROK)
1695 #if (ERRCLASS & ERRCLS_ADD_RES)
1696 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1697 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1698 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
1700 TFU_FREE_MEM(srInd);
1706 if (SPkS16(spId, mBuf) != ROK) {
1707 #if (ERRCLASS & ERRCLS_ADD_RES)
1708 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1709 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1710 (ErrVal)ETFU057, (ErrVal)0, "Packing failed");
1712 TFU_FREE_MEM(srInd);
1716 if (pst->selector != ODU_SELECTOR_LWLC) {
1717 TFU_FREE_MEM(srInd);
1720 pst->event = (Event) EVTTFUSRIND;
1721 RETVALUE(SPstTsk(pst,mBuf));
1725 /***********************************************************
1727 * Func : cmUnpkTfuSrInd
1730 * Desc : This Primitive carries the SR Indication from PHY to scheduler.
1731 * @details Scheduling Request (SR) is sent by the UE to the eNodeB to request
1732 * for Uplink (UL) grant. This primitive carries a list of SRs for a number of
1733 * UEs received in the indicated subframe.
1736 * @param tfqSrInd pointer to TfuSrIndInfo
1746 **********************************************************/
1748 PUBLIC S16 cmUnpkTfuSrInd
1755 PUBLIC S16 cmUnpkTfuSrInd(func, pst, mBuf)
1762 TfuSrIndInfo *srInd;
1764 TRC3(cmUnpkTfuSrInd)
1766 if (SUnpkS16(&spId, mBuf) != ROK) {
1768 #if (ERRCLASS & ERRCLS_ADD_RES)
1769 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1770 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1771 (ErrVal)ETFU058, (ErrVal)0, "Packing failed");
1775 if (pst->selector != ODU_SELECTOR_LWLC) {
1777 sMem.region = pst->region;
1778 sMem.pool = pst->pool;
1779 if ((cmAllocEvnt(sizeof(TfuSrIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&srInd)) != ROK) {
1780 #if (ERRCLASS & ERRCLS_ADD_RES)
1781 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1782 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1783 (ErrVal)ETFU059, (ErrVal)0, "Packing failed");
1791 if (pst->selector == ODU_SELECTOR_LC)
1793 if (cmUnpkTfuSrIndInfo(srInd, (Ptr)&srInd->memCp, mBuf) != ROK) {
1794 TFU_FREE_MEM(srInd);
1796 #if (ERRCLASS & ERRCLS_ADD_RES)
1797 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1798 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1799 (ErrVal)ETFU060, (ErrVal)0, "Packing failed");
1804 else if(pst->selector == ODU_SELECTOR_LWLC)
1806 if (cmUnpkPtr((PTR *)&srInd, mBuf) != ROK)
1808 #if (ERRCLASS & ERRCLS_ADD_RES)
1809 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1810 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1811 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
1813 TFU_FREE_MEM(srInd);
1819 RETVALUE((*func)(pst, spId, srInd));
1823 /***********************************************************
1825 * Func : cmPkTfuDlCqiInd
1828 * Desc : This API is used to indicate the reception of CQI report from PHY to
1829 * Scheduler, also carries the RI.
1830 * @param pst Pointer to the post structure.
1831 * @param suId SAP ID of the service user.
1832 * @param dlCqiInd Pointer to the TfuDlCqiIndInfo structure.
1833 * @return ROK/RFAILED
1842 **********************************************************/
1844 PUBLIC S16 cmPkTfuDlCqiInd
1848 TfuDlCqiIndInfo * dlCqiInd
1851 PUBLIC S16 cmPkTfuDlCqiInd(pst, suId, dlCqiInd)
1854 TfuDlCqiIndInfo * dlCqiInd;
1857 Buffer *mBuf = NULLP;
1858 TRC3(cmPkTfuDlCqiInd)
1860 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
1861 #if (ERRCLASS & ERRCLS_ADD_RES)
1862 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1863 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1864 (ErrVal)ETFU061, (ErrVal)0, "Packing failed");
1866 TFU_FREE_MEM(dlCqiInd);
1869 if (pst->selector == ODU_SELECTOR_LC) {
1870 if (cmPkTfuDlCqiIndInfo(dlCqiInd, mBuf) != ROK) {
1871 #if (ERRCLASS & ERRCLS_ADD_RES)
1872 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1873 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1874 (ErrVal)ETFU062, (ErrVal)0, "Packing failed");
1876 TFU_FREE_MEM(dlCqiInd);
1881 else if(pst->selector == ODU_SELECTOR_LWLC)
1883 if (cmPkPtr((PTR)dlCqiInd, mBuf) != ROK)
1885 #if (ERRCLASS & ERRCLS_ADD_RES)
1886 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1887 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1888 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
1890 TFU_FREE_MEM(dlCqiInd);
1896 if (SPkS16(suId, mBuf) != ROK) {
1897 #if (ERRCLASS & ERRCLS_ADD_RES)
1898 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1899 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1900 (ErrVal)ETFU063, (ErrVal)0, "Packing failed");
1902 TFU_FREE_MEM(dlCqiInd);
1906 if (pst->selector != ODU_SELECTOR_LWLC) {
1907 TFU_FREE_MEM(dlCqiInd);
1909 pst->event = (Event) EVTTFUDLCQIIND;
1910 RETVALUE(SPstTsk(pst,mBuf));
1914 /***********************************************************
1916 * Func : cmUnpkTfuDlCqiInd
1919 * Desc : This API is used to indicate the reception of CQI report from PHY to
1920 * Scheduler, also carries the RI.
1921 * @param pst Pointer to the post structure.
1922 * @param suId SAP ID of the service user.
1923 * @param dlCqiInd Pointer to the TfuDlCqiIndInfo structure.
1924 * @return ROK/RFAILED
1933 **********************************************************/
1935 PUBLIC S16 cmUnpkTfuDlCqiInd
1942 PUBLIC S16 cmUnpkTfuDlCqiInd(func, pst, mBuf)
1949 TfuDlCqiIndInfo *dlCqiInd;
1951 TRC3(cmUnpkTfuDlCqiInd)
1953 if (SUnpkS16(&suId, mBuf) != ROK) {
1955 #if (ERRCLASS & ERRCLS_ADD_RES)
1956 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1957 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1958 (ErrVal)ETFU064, (ErrVal)0, "Packing failed");
1962 if (pst->selector != ODU_SELECTOR_LWLC) {
1964 sMem.region = pst->region;
1965 sMem.pool = pst->pool;
1966 if ((cmAllocEvnt(sizeof(TfuDlCqiIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&dlCqiInd)) != ROK) {
1967 #if (ERRCLASS & ERRCLS_ADD_RES)
1968 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1969 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1970 (ErrVal)ETFU065, (ErrVal)0, "Packing failed");
1978 if (pst->selector == ODU_SELECTOR_LC)
1980 if (cmUnpkTfuDlCqiIndInfo(dlCqiInd, (Ptr)&dlCqiInd->memCp, mBuf) != ROK) {
1981 TFU_FREE_MEM(dlCqiInd);
1983 #if (ERRCLASS & ERRCLS_ADD_RES)
1984 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1985 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1986 (ErrVal)ETFU066, (ErrVal)0, "Packing failed");
1991 else if(pst->selector == ODU_SELECTOR_LWLC)
1993 if (cmUnpkPtr((PTR *)&dlCqiInd, mBuf) != ROK)
1995 #if (ERRCLASS & ERRCLS_ADD_RES)
1996 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
1997 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
1998 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
2000 TFU_FREE_MEM(dlCqiInd);
2006 RETVALUE((*func)(pst, suId, dlCqiInd));
2013 /***********************************************************
2015 * Func : cmPkTfuRawCqiInd
2018 * Desc : This Primitive is used to convey the Raw CQI information
2019 * transmitted by the UE.
2020 * @details Raw CQI report is the actual bits transmitted by the UE when
2021 * reporting CQI/PMI/RI. The interpretation of these bits to CQI/subband CQI
2022 * etc. shall be done by MAC.
2024 * @param pst Pointer to the post structure.
2025 * @param suId SAP ID of the service user.
2026 * @param cqiInd Pointer to the TfuRawCqiIndInfo structure.
2027 * @return ROK/RFAILED
2036 **********************************************************/
2038 PUBLIC S16 cmPkTfuRawCqiInd
2042 TfuRawCqiIndInfo * rawCqiInd
2045 PUBLIC S16 cmPkTfuRawCqiInd(pst, suId, rawCqiInd)
2048 TfuRawCqiIndInfo * rawCqiInd;
2051 Buffer *mBuf = NULLP;
2052 TRC3(cmPkTfuRawCqiInd)
2054 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
2055 #if (ERRCLASS & ERRCLS_ADD_RES)
2056 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2057 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2058 (ErrVal)ETFU067, (ErrVal)0, "Packing failed");
2060 TFU_FREE_MEM(rawCqiInd);
2063 cmPkTfuRawCqiIndInfo(rawCqiInd, mBuf);
2064 if (SPkS16(suId, mBuf) != ROK) {
2065 #if (ERRCLASS & ERRCLS_ADD_RES)
2066 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2067 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2068 (ErrVal)ETFU068, (ErrVal)0, "Packing failed");
2070 TFU_FREE_MEM(rawCqiInd);
2074 TFU_FREE_MEM(rawCqiInd);
2075 pst->event = (Event) EVTTFURAWCQIIND;
2076 RETVALUE(SPstTsk(pst,mBuf));
2080 /***********************************************************
2082 * Func : cmUnpkTfuRawCqiInd
2085 * Desc : This Primitive is used to convey the Raw CQI information
2086 * transmitted by the UE.
2087 * @details Raw CQI report is the actual bits transmitted by the UE when
2088 * reporting CQI/PMI/RI. The interpretation of these bits to CQI/subband CQI
2089 * etc. shall be done by MAC.
2091 * @param pst Pointer to the post structure.
2092 * @param suId SAP ID of the service user.
2093 * @param cqiInd Pointer to the TfuRawCqiIndInfo structure.
2094 * @return ROK/RFAILED
2103 **********************************************************/
2105 PUBLIC S16 cmUnpkTfuRawCqiInd
2112 PUBLIC S16 cmUnpkTfuRawCqiInd(func, pst, mBuf)
2119 TfuRawCqiIndInfo *rawCqiInd;
2121 TRC3(cmUnpkTfuRawCqiInd)
2123 if (SUnpkS16(&suId, mBuf) != ROK) {
2125 #if (ERRCLASS & ERRCLS_ADD_RES)
2126 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2127 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2128 (ErrVal)ETFU069, (ErrVal)0, "Packing failed");
2134 sMem.region = pst->region;
2135 sMem.pool = pst->pool;
2136 if ((cmAllocEvnt(sizeof(TfuRawCqiIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&rawCqiInd)) != ROK) {
2137 #if (ERRCLASS & ERRCLS_ADD_RES)
2138 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2139 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2140 (ErrVal)ETFU070, (ErrVal)0, "Packing failed");
2146 cmUnpkTfuRawCqiIndInfo(rawCqiInd, (Ptr)&rawCqiInd->memCp, mBuf);
2148 RETVALUE((*func)(pst, suId, rawCqiInd));
2152 /***********************************************************
2154 * Func : cmPkTfuSrsInd
2157 * Desc : This Primitive is used to convey the information derived by the
2158 * physical layer from the SRS transmission from the UE.
2159 * @details This primitive carries information derived from the SRS transmission
2162 * @param pst Pointer to the post structure.
2163 * @param suId SAP ID of the service user.
2164 * @param srsInd Pointer to the TfuSrIndInfo structure.
2165 * @return ROK/RFAILED
2174 **********************************************************/
2176 PUBLIC S16 cmPkTfuSrsInd
2180 TfuSrsIndInfo * srsInd
2183 PUBLIC S16 cmPkTfuSrsInd(pst, suId, srsInd)
2186 TfuSrsIndInfo * srsInd;
2189 Buffer *mBuf = NULLP;
2192 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
2193 #if (ERRCLASS & ERRCLS_ADD_RES)
2194 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2195 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2196 (ErrVal)ETFU071, (ErrVal)0, "Packing failed");
2198 TFU_FREE_MEM(srsInd);
2201 cmPkTfuSrsIndInfo(srsInd, mBuf);
2202 if (SPkS16(suId, mBuf) != ROK) {
2203 #if (ERRCLASS & ERRCLS_ADD_RES)
2204 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2205 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2206 (ErrVal)ETFU072, (ErrVal)0, "Packing failed");
2208 TFU_FREE_MEM(srsInd);
2212 TFU_FREE_MEM(srsInd);
2213 pst->event = (Event) EVTTFUSRSIND;
2214 RETVALUE(SPstTsk(pst,mBuf));
2218 /***********************************************************
2220 * Func : cmUnpkTfuSrsInd
2223 * Desc : This Primitive is used to convey the information derived by the
2224 * physical layer from the SRS transmission from the UE.
2225 * @details This primitive carries information derived from the SRS transmission
2228 * @param pst Pointer to the post structure.
2229 * @param suId SAP ID of the service user.
2230 * @param srsInd Pointer to the TfuSrIndInfo structure.
2231 * @return ROK/RFAILED
2240 **********************************************************/
2242 PUBLIC S16 cmUnpkTfuSrsInd
2249 PUBLIC S16 cmUnpkTfuSrsInd(func, pst, mBuf)
2256 TfuSrsIndInfo *srsInd;
2258 TRC3(cmUnpkTfuSrsInd)
2260 if (SUnpkS16(&suId, mBuf) != ROK) {
2262 #if (ERRCLASS & ERRCLS_ADD_RES)
2263 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2264 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2265 (ErrVal)ETFU073, (ErrVal)0, "Packing failed");
2271 sMem.region = pst->region;
2272 sMem.pool = pst->pool;
2273 if ((cmAllocEvnt(sizeof(TfuSrsIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&srsInd)) != ROK) {
2274 #if (ERRCLASS & ERRCLS_ADD_RES)
2275 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2276 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2277 (ErrVal)ETFU074, (ErrVal)0, "Packing failed");
2283 cmUnpkTfuSrsIndInfo(srsInd, (Ptr)&srsInd->memCp, mBuf);
2285 RETVALUE((*func)(pst, suId, srsInd));
2291 /***********************************************************
2293 * Func : cmPkTfuDatInd
2296 * Desc : This Primitive carries the Data PDUs from PHY to MAC.
2297 * @details The uplink Data i.e. the data transmitted by the UEs received by the
2298 * physical layer at the eNodeB in the subframe (indicated by the timingInfo),
2299 * is relayed to MAC using this primitive.
2302 * @param tfuDatInd pointer to TfuDatIndInfo
2312 **********************************************************/
2314 PUBLIC S16 cmPkTfuDatInd
2318 TfuDatIndInfo * datInd
2321 PUBLIC S16 cmPkTfuDatInd(pst, spId, datInd)
2324 TfuDatIndInfo * datInd;
2327 Buffer *mBuf = NULLP;
2330 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
2331 #if (ERRCLASS & ERRCLS_ADD_RES)
2332 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2333 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2334 (ErrVal)ETFU075, (ErrVal)0, "Packing failed");
2336 TFU_FREE_MEM(datInd);
2339 if (pst->selector == ODU_SELECTOR_LC) {
2340 if (cmPkTfuDatIndInfo(datInd, mBuf) != ROK) {
2341 #if (ERRCLASS & ERRCLS_ADD_RES)
2342 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2343 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2344 (ErrVal)ETFU076, (ErrVal)0, "Packing failed");
2346 TFU_FREE_MEM(datInd);
2351 else if(pst->selector == ODU_SELECTOR_LWLC)
2353 if(cmPkPtr((PTR)datInd, mBuf) != ROK)
2355 #if (ERRCLASS & ERRCLS_ADD_RES)
2356 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2357 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2358 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
2360 TFU_FREE_MEM(datInd);
2366 if (SPkS16(spId, mBuf) != ROK) {
2367 #if (ERRCLASS & ERRCLS_ADD_RES)
2368 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2369 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2370 (ErrVal)ETFU077, (ErrVal)0, "Packing failed");
2372 TFU_FREE_MEM(datInd);
2376 if (pst->selector != ODU_SELECTOR_LWLC) {
2377 TFU_FREE_MEM(datInd);
2380 pst->event = (Event) EVTTFUDATIND;
2381 RETVALUE(SPstTsk(pst,mBuf));
2385 /***********************************************************
2387 * Func : cmUnpkTfuDatInd
2390 * Desc : This Primitive carries the Data PDUs from PHY to MAC.
2391 * @details The uplink Data i.e. the data transmitted by the UEs received by the
2392 * physical layer at the eNodeB in the subframe (indicated by the timingInfo),
2393 * is relayed to MAC using this primitive.
2396 * @param tfuDatInd pointer to TfuDatIndInfo
2406 **********************************************************/
2408 PUBLIC S16 cmUnpkTfuDatInd
2415 PUBLIC S16 cmUnpkTfuDatInd(func, pst, mBuf)
2422 TfuDatIndInfo *datInd;
2424 TRC3(cmUnpkTfuDatInd)
2426 if (SUnpkS16(&spId, mBuf) != ROK) {
2428 #if (ERRCLASS & ERRCLS_ADD_RES)
2429 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2430 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2431 (ErrVal)ETFU078, (ErrVal)0, "Packing failed");
2435 if (pst->selector != ODU_SELECTOR_LWLC) {
2437 sMem.region = pst->region;
2438 sMem.pool = pst->pool;
2439 if ((cmAllocEvnt(sizeof(TfuDatIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&datInd)) != ROK) {
2440 #if (ERRCLASS & ERRCLS_ADD_RES)
2441 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2442 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2443 (ErrVal)ETFU079, (ErrVal)0, "Packing failed");
2451 if (pst->selector == ODU_SELECTOR_LC)
2453 if (cmUnpkTfuDatIndInfo(datInd, (Ptr)&datInd->memCp, mBuf) != ROK) {
2454 TFU_FREE_MEM(datInd);
2456 #if (ERRCLASS & ERRCLS_ADD_RES)
2457 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2458 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2459 (ErrVal)ETFU080, (ErrVal)0, "Packing failed");
2464 else if(pst->selector == ODU_SELECTOR_LWLC)
2466 if(cmUnpkPtr((PTR *)&datInd, mBuf) != ROK)
2468 #if (ERRCLASS & ERRCLS_ADD_RES)
2469 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2470 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2471 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
2473 TFU_FREE_MEM(datInd);
2479 RETVALUE((*func)(pst, spId, datInd));
2483 /***********************************************************
2485 * Func : cmPkTfuCrcInd
2488 * Desc : This API is used by the Physical layer to indicate if the CRC Check
2489 * on the PUSCH Data was successful or not.
2490 * @details This primitive carries CRC indication for a list of UEs. This
2491 * is utilized in the scenario where MAC requested the reception of uplink data
2492 * for a particular UE. On reception of the PUSCH data, the CRC check on it
2493 * failed. This CRC failure is indicated to MAC, which would utillize this
2494 * information for further scheduling.
2495 * Physical layer would indicate failure or success for each PUSCH transmission.
2496 * @param pst Pointer to the post structure.
2497 * @param suId SAP ID of the service user.
2498 * @param crcInd Pointer to the TfuCrcIndInfo.
2499 * @return ROK/RFAILED
2508 **********************************************************/
2510 PUBLIC S16 cmPkTfuCrcInd
2514 TfuCrcIndInfo * crcIndInfo
2517 PUBLIC S16 cmPkTfuCrcInd(pst, suId, crcIndInfo)
2520 TfuCrcIndInfo * crcIndInfo;
2523 Buffer *mBuf = NULLP;
2526 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
2527 #if (ERRCLASS & ERRCLS_ADD_RES)
2528 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2529 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2530 (ErrVal)ETFU081, (ErrVal)0, "Packing failed");
2532 TFU_FREE_MEM(crcIndInfo);
2535 if (pst->selector == ODU_SELECTOR_LC) {
2536 if (cmPkTfuCrcIndInfo(crcIndInfo, mBuf) != ROK) {
2537 #if (ERRCLASS & ERRCLS_ADD_RES)
2538 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2539 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2540 (ErrVal)ETFU082, (ErrVal)0, "Packing failed");
2542 TFU_FREE_MEM(crcIndInfo);
2547 else if(pst->selector == ODU_SELECTOR_LWLC)
2549 if (cmPkPtr((PTR)crcIndInfo, mBuf) != ROK)
2551 #if (ERRCLASS & ERRCLS_ADD_RES)
2552 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2553 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2554 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
2556 TFU_FREE_MEM(crcIndInfo);
2563 if (SPkS16(suId, mBuf) != ROK) {
2564 #if (ERRCLASS & ERRCLS_ADD_RES)
2565 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2566 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2567 (ErrVal)ETFU083, (ErrVal)0, "Packing failed");
2569 TFU_FREE_MEM(crcIndInfo);
2573 if (pst->selector != ODU_SELECTOR_LWLC) {
2574 TFU_FREE_MEM(crcIndInfo);
2577 pst->event = (Event) EVTTFUCRCIND;
2578 RETVALUE(SPstTsk(pst,mBuf));
2582 /***********************************************************
2584 * Func : cmUnpkTfuCrcInd
2587 * Desc : This API is used by the Physical layer to indicate if the CRC Check
2588 * on the PUSCH Data was successful or not.
2589 * @details This primitive carries CRC indication for a list of UEs. This
2590 * is utilized in the scenario where MAC requested the reception of uplink data
2591 * for a particular UE. On reception of the PUSCH data, the CRC check on it
2592 * failed. This CRC failure is indicated to MAC, which would utillize this
2593 * information for further scheduling.
2594 * Physical layer would indicate failure or success for each PUSCH transmission.
2595 * @param pst Pointer to the post structure.
2596 * @param suId SAP ID of the service user.
2597 * @param crcInd Pointer to the TfuCrcIndInfo.
2598 * @return ROK/RFAILED
2607 **********************************************************/
2609 PUBLIC S16 cmUnpkTfuCrcInd
2616 PUBLIC S16 cmUnpkTfuCrcInd(func, pst, mBuf)
2623 TfuCrcIndInfo *crcIndInfo;
2625 TRC3(cmUnpkTfuCrcInd)
2627 if (SUnpkS16(&suId, mBuf) != ROK) {
2629 #if (ERRCLASS & ERRCLS_ADD_RES)
2630 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2631 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2632 (ErrVal)ETFU084, (ErrVal)0, "Packing failed");
2636 if (pst->selector != ODU_SELECTOR_LWLC) {
2638 sMem.region = pst->region;
2639 sMem.pool = pst->pool;
2640 if ((cmAllocEvnt(sizeof(TfuCrcIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&crcIndInfo)) != ROK) {
2641 #if (ERRCLASS & ERRCLS_ADD_RES)
2642 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2643 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2644 (ErrVal)ETFU085, (ErrVal)0, "Packing failed");
2652 if (pst->selector == ODU_SELECTOR_LC)
2654 if (cmUnpkTfuCrcIndInfo(crcIndInfo, (Ptr)&crcIndInfo->memCp, mBuf) != ROK) {
2655 TFU_FREE_MEM(crcIndInfo);
2657 #if (ERRCLASS & ERRCLS_ADD_RES)
2658 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2659 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2660 (ErrVal)ETFU086, (ErrVal)0, "Packing failed");
2665 else if(pst->selector == ODU_SELECTOR_LWLC)
2667 if (cmUnpkPtr((PTR *)&crcIndInfo, mBuf) != ROK)
2669 #if (ERRCLASS & ERRCLS_ADD_RES)
2670 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2671 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2672 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
2674 TFU_FREE_MEM(crcIndInfo);
2680 RETVALUE((*func)(pst, suId, crcIndInfo));
2684 /***********************************************************
2686 * Func : cmPkTfuTimingAdvInd
2689 * Desc : This API is used to indicate a Timing Advance from PHY to Scheduler .
2690 * @details This primitive carries timing advance information for a number of
2691 * UEs that may need timing advance. Timing advance information is an estimate
2692 * of the timing adjustment that a UE would need to apply in order to be
2693 * synchronized in uplink. This estimate is to be calculated by physical layer.
2694 * @param pst Pointer to the post structure.
2695 * @param suId SAP ID of the service user.
2696 * @param timingAdvInd Pointer to the TfuTimingAdvIndInfo structure.
2697 * @return ROK/RFAILED
2706 **********************************************************/
2708 PUBLIC S16 cmPkTfuTimingAdvInd
2712 TfuTimingAdvIndInfo * timingAdvInd
2715 PUBLIC S16 cmPkTfuTimingAdvInd(pst, suId, timingAdvInd)
2718 TfuTimingAdvIndInfo * timingAdvInd;
2721 Buffer *mBuf = NULLP;
2722 TRC3(cmPkTfuTimingAdvInd)
2724 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
2725 #if (ERRCLASS & ERRCLS_ADD_RES)
2726 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2727 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2728 (ErrVal)ETFU087, (ErrVal)0, "Packing failed");
2730 TFU_FREE_MEM(timingAdvInd);
2733 if (pst->selector == ODU_SELECTOR_LC) {
2734 if (cmPkTfuTimingAdvIndInfo(timingAdvInd, mBuf) != ROK) {
2735 #if (ERRCLASS & ERRCLS_ADD_RES)
2736 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2737 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2738 (ErrVal)ETFU088, (ErrVal)0, "Packing failed");
2740 TFU_FREE_MEM(timingAdvInd);
2745 else if(pst->selector == ODU_SELECTOR_LWLC)
2747 if (cmPkPtr((PTR)timingAdvInd, mBuf) != ROK)
2749 #if (ERRCLASS & ERRCLS_ADD_RES)
2750 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2751 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2752 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
2754 TFU_FREE_MEM(timingAdvInd);
2760 if (SPkS16(suId, mBuf) != ROK) {
2761 #if (ERRCLASS & ERRCLS_ADD_RES)
2762 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2763 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2764 (ErrVal)ETFU089, (ErrVal)0, "Packing failed");
2766 TFU_FREE_MEM(timingAdvInd);
2770 if (pst->selector != ODU_SELECTOR_LWLC) {
2771 TFU_FREE_MEM(timingAdvInd);
2774 pst->event = (Event) EVTTFUTIMINGADVIND;
2775 RETVALUE(SPstTsk(pst,mBuf));
2779 /***********************************************************
2781 * Func : cmUnpkTfuTimingAdvInd
2784 * Desc : This API is used to indicate a Timing Advance from PHY to Scheduler .
2785 * @details This primitive carries timing advance information for a number of
2786 * UEs that may need timing advance. Timing advance information is an estimate
2787 * of the timing adjustment that a UE would need to apply in order to be
2788 * synchronized in uplink. This estimate is to be calculated by physical layer.
2789 * @param pst Pointer to the post structure.
2790 * @param suId SAP ID of the service user.
2791 * @param timingAdvInd Pointer to the TfuTimingAdvIndInfo structure.
2792 * @return ROK/RFAILED
2801 **********************************************************/
2803 PUBLIC S16 cmUnpkTfuTimingAdvInd
2805 TfuTimingAdvInd func,
2810 PUBLIC S16 cmUnpkTfuTimingAdvInd(func, pst, mBuf)
2811 TfuTimingAdvInd func;
2817 TfuTimingAdvIndInfo *timingAdvInd;
2819 TRC3(cmUnpkTfuTimingAdvInd)
2821 if (SUnpkS16(&suId, mBuf) != ROK) {
2823 #if (ERRCLASS & ERRCLS_ADD_RES)
2824 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2825 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2826 (ErrVal)ETFU090, (ErrVal)0, "Packing failed");
2830 if (pst->selector != ODU_SELECTOR_LWLC) {
2832 sMem.region = pst->region;
2833 sMem.pool = pst->pool;
2834 if ((cmAllocEvnt(sizeof(TfuTimingAdvIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&timingAdvInd)) != ROK) {
2835 #if (ERRCLASS & ERRCLS_ADD_RES)
2836 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2837 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2838 (ErrVal)ETFU091, (ErrVal)0, "Packing failed");
2846 if (pst->selector == ODU_SELECTOR_LC)
2848 if (cmUnpkTfuTimingAdvIndInfo(timingAdvInd, (Ptr)&timingAdvInd->memCp, mBuf) != ROK) {
2849 TFU_FREE_MEM(timingAdvInd);
2851 #if (ERRCLASS & ERRCLS_ADD_RES)
2852 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2853 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2854 (ErrVal)ETFU092, (ErrVal)0, "Packing failed");
2859 else if(pst->selector == ODU_SELECTOR_LWLC)
2861 if (cmUnpkPtr((PTR *)&timingAdvInd, mBuf) != ROK)
2863 #if (ERRCLASS & ERRCLS_ADD_RES)
2864 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2865 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2866 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
2868 TFU_FREE_MEM(timingAdvInd);
2874 RETVALUE((*func)(pst, suId, timingAdvInd));
2878 /***********************************************************
2880 * Func : cmPkTfuDatReq
2883 * Desc : This Primitive carries the Data PDUs from MAC to PHY for
2885 * @details The data being sent in this primitive is meant to be transmitted on
2886 * the downlink channel PDSCH and PBCH (if present). To facilitate physical
2887 * layer processing, requisite control information is also sent along with the
2889 * @sa TfUiTfuCntrlReq
2892 * @param tfuDatReq pointer to TfuDatReqInfo
2902 **********************************************************/
2904 PUBLIC S16 cmPkTfuDatReq
2908 TfuDatReqInfo * datReq
2911 PUBLIC S16 cmPkTfuDatReq(pst, spId, datReq)
2914 TfuDatReqInfo * datReq;
2917 Buffer *mBuf = NULLP;
2920 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
2921 #if (ERRCLASS & ERRCLS_ADD_RES)
2922 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2923 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2924 (ErrVal)ETFU093, (ErrVal)0, "Packing failed");
2926 TFU_FREE_MEM(datReq);
2929 if (pst->selector == ODU_SELECTOR_LC) {
2930 if (cmPkTfuDatReqInfo(datReq, mBuf) != ROK) {
2931 #if (ERRCLASS & ERRCLS_ADD_RES)
2932 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2933 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2934 (ErrVal)ETFU094, (ErrVal)0, "Packing failed");
2936 TFU_FREE_MEM(datReq);
2941 else if(pst->selector == ODU_SELECTOR_LWLC)
2943 if(cmPkPtr((PTR)datReq, mBuf) != ROK)
2945 #if (ERRCLASS & ERRCLS_ADD_RES)
2946 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2947 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2948 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
2950 TFU_FREE_MEM(datReq);
2956 if (SPkS16(spId, mBuf) != ROK) {
2957 #if (ERRCLASS & ERRCLS_ADD_RES)
2958 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
2959 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
2960 (ErrVal)ETFU095, (ErrVal)0, "Packing failed");
2962 TFU_FREE_MEM(datReq);
2966 if (pst->selector != ODU_SELECTOR_LWLC) {
2967 TFU_FREE_MEM(datReq);
2970 pst->event = (Event) EVTTFUDATREQ;
2971 RETVALUE(SPstTsk(pst,mBuf));
2975 /***********************************************************
2977 * Func : cmUnpkTfuDatReq
2980 * Desc : This Primitive carries the Data PDUs from MAC to PHY for
2982 * @details The data being sent in this primitive is meant to be transmitted on
2983 * the downlink channel PDSCH and PBCH (if present). To facilitate physical
2984 * layer processing, requisite control information is also sent along with the
2986 * @sa TfUiTfuCntrlReq
2989 * @param tfuDatReq pointer to TfuDatReqInfo
2999 **********************************************************/
3001 PUBLIC S16 cmUnpkTfuDatReq
3008 PUBLIC S16 cmUnpkTfuDatReq(func, pst, mBuf)
3015 TfuDatReqInfo *datReq;
3017 TRC3(cmUnpkTfuDatReq)
3019 if (SUnpkS16(&spId, mBuf) != ROK) {
3021 #if (ERRCLASS & ERRCLS_ADD_RES)
3022 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3023 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3024 (ErrVal)ETFU096, (ErrVal)0, "Packing failed");
3028 if (pst->selector != ODU_SELECTOR_LWLC) {
3030 sMem.region = pst->region;
3031 sMem.pool = pst->pool;
3032 if ((cmAllocEvnt(sizeof(TfuDatReqInfo), TFU_BLKSZ, &sMem, (Ptr *)&datReq)) != ROK) {
3033 #if (ERRCLASS & ERRCLS_ADD_RES)
3034 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3035 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3036 (ErrVal)ETFU097, (ErrVal)0, "Packing failed");
3044 if (pst->selector == ODU_SELECTOR_LC)
3046 if (cmUnpkTfuDatReqInfo(datReq, (Ptr)&datReq->memCp, mBuf) != ROK) {
3047 TFU_FREE_MEM(datReq);
3049 #if (ERRCLASS & ERRCLS_ADD_RES)
3050 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3051 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3052 (ErrVal)ETFU098, (ErrVal)0, "Unpacking failed");
3057 else if (pst->selector == ODU_SELECTOR_LWLC)
3059 if(cmUnpkPtr((PTR *)&datReq, mBuf) != ROK)
3061 TFU_FREE_MEM(datReq);
3063 #if (ERRCLASS & ERRCLS_ADD_RES)
3064 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3065 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3066 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Un-Packing failed");
3072 RETVALUE((*func)(pst, spId, datReq));
3076 /***********************************************************
3078 * Func : cmPkTfuCntrlReq
3081 * Desc : This Primitive is sent from Scheduler to PHY. It provides PHY with
3082 * all the control information
3083 * @details This primitive carries the information sent on the following
3091 * @param cntrlReq pointer to TfuCntrlReqInfo
3092 * @return ROK/RFAILED
3101 **********************************************************/
3103 PUBLIC S16 cmPkTfuCntrlReq
3107 TfuCntrlReqInfo * cntrlReq
3110 PUBLIC S16 cmPkTfuCntrlReq(pst, spId, cntrlReq)
3113 TfuCntrlReqInfo * cntrlReq;
3116 Buffer *mBuf = NULLP;
3117 TRC3(cmPkTfuCntrlReq)
3119 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
3120 #if (ERRCLASS & ERRCLS_ADD_RES)
3121 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3122 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3123 (ErrVal)ETFU099, (ErrVal)0, "Packing failed");
3125 TFU_FREE_MEM(cntrlReq);
3128 if (pst->selector == ODU_SELECTOR_LC) {
3129 if (cmPkTfuCntrlReqInfo(cntrlReq, mBuf) != ROK) {
3130 #if (ERRCLASS & ERRCLS_ADD_RES)
3131 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3132 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3133 (ErrVal)ETFU100, (ErrVal)0, "Packing failed");
3135 TFU_FREE_MEM(cntrlReq);
3140 else if(pst->selector == ODU_SELECTOR_LWLC)
3142 if (cmPkPtr((PTR)cntrlReq, mBuf) != ROK)
3144 #if (ERRCLASS & ERRCLS_ADD_RES)
3145 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3146 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3147 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
3149 TFU_FREE_MEM(cntrlReq);
3156 if (SPkS16(spId, mBuf) != ROK) {
3157 #if (ERRCLASS & ERRCLS_ADD_RES)
3158 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3159 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3160 (ErrVal)ETFU101, (ErrVal)0, "Packing failed");
3162 TFU_FREE_MEM(cntrlReq);
3166 if (pst->selector != ODU_SELECTOR_LWLC) {
3167 TFU_FREE_MEM(cntrlReq);
3170 pst->event = (Event) EVTTFUCNTRLREQ;
3171 RETVALUE(SPstTsk(pst,mBuf));
3175 /***********************************************************
3177 * Func : cmUnpkTfuCntrlReq
3180 * Desc : This Primitive is sent from Scheduler to PHY. It provides PHY with
3181 * all the control information
3182 * @details This primitive carries the information sent on the following
3190 * @param cntrlReq pointer to TfuCntrlReqInfo
3191 * @return ROK/RFAILED
3200 **********************************************************/
3202 PUBLIC S16 cmUnpkTfuCntrlReq
3209 PUBLIC S16 cmUnpkTfuCntrlReq(func, pst, mBuf)
3216 TfuCntrlReqInfo *cntrlReq;
3218 TRC3(cmUnpkTfuCntrlReq)
3220 if (SUnpkS16(&spId, mBuf) != ROK) {
3222 #if (ERRCLASS & ERRCLS_ADD_RES)
3223 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3224 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3225 (ErrVal)ETFU102, (ErrVal)0, "Packing failed");
3229 if (pst->selector != ODU_SELECTOR_LWLC) {
3231 sMem.region = pst->region;
3232 sMem.pool = pst->pool;
3233 if ((cmAllocEvnt(sizeof(TfuCntrlReqInfo), TFU_BLKSZ, &sMem, (Ptr *)&cntrlReq)) != ROK) {
3234 #if (ERRCLASS & ERRCLS_ADD_RES)
3235 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3236 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3237 (ErrVal)ETFU103, (ErrVal)0, "Packing failed");
3245 if (pst->selector == ODU_SELECTOR_LC)
3247 if (cmUnpkTfuCntrlReqInfo(cntrlReq, (Ptr)&cntrlReq->memCp, mBuf) != ROK) {
3248 TFU_FREE_MEM(cntrlReq);
3250 #if (ERRCLASS & ERRCLS_ADD_RES)
3251 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3252 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3253 (ErrVal)ETFU104, (ErrVal)0, "Packing failed");
3258 else if(pst->selector == ODU_SELECTOR_LWLC)
3260 if (cmUnpkPtr((PTR *)&cntrlReq, mBuf) != ROK)
3262 #if (ERRCLASS & ERRCLS_ADD_RES)
3263 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3264 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3265 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
3267 TFU_FREE_MEM(cntrlReq);
3273 RETVALUE((*func)(pst, spId, cntrlReq));
3278 /***********************************************************
3280 * Func : cmPkTfuTtiInd
3283 * Desc : This API is the TTI indication from PHY to MAC .
3284 * @details This primitive provides the timing information (SFN and subframe)
3285 * which is currently running on the physical layer.
3286 * @param pst Pointer to the post structure.
3287 * @param suId SAP ID of the service user.
3288 * @param ttiInd Pointer to the TfuTtiIndInfo.
3289 * @return ROK/RFAILED
3298 **********************************************************/
3300 PUBLIC S16 cmPkTfuTtiInd
3304 TfuTtiIndInfo * ttiInd
3307 PUBLIC S16 cmPkTfuTtiInd(pst, suId, ttiInd)
3310 TfuTtiIndInfo * ttiInd;
3313 Buffer *mBuf = NULLP;
3316 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
3317 #if (ERRCLASS & ERRCLS_ADD_RES)
3318 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3319 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3320 (ErrVal)ETFU105, (ErrVal)0, "Packing failed");
3322 SPutSBuf(pst->region, pst->pool, (Data *)ttiInd, sizeof(TfuTtiIndInfo));
3325 if (pst->selector == ODU_SELECTOR_LC) {
3326 if (cmPkTfuTtiIndInfo(ttiInd, mBuf) != ROK) {
3327 #if (ERRCLASS & ERRCLS_ADD_RES)
3328 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3329 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3330 (ErrVal)ETFU106, (ErrVal)0, "Packing failed");
3332 SPutSBuf(pst->region, pst->pool, (Data *)ttiInd, sizeof(TfuTtiIndInfo));
3337 else if(pst->selector == ODU_SELECTOR_LWLC)
3339 if (cmPkPtr((PTR)ttiInd, mBuf) != ROK)
3341 #if (ERRCLASS & ERRCLS_ADD_RES)
3342 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3343 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3344 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
3347 /*MS_FIX:71858:Changed to SPutSBuf as being allocated with SGetSBuf*/
3348 SPutSBuf(pst->region, pst->pool, (Data *)ttiInd, sizeof(TfuTtiIndInfo));
3354 if (SPkS16(suId, mBuf) != ROK) {
3355 #if (ERRCLASS & ERRCLS_ADD_RES)
3356 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3357 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3358 (ErrVal)ETFU107, (ErrVal)0, "Packing failed");
3360 SPutSBuf(pst->region, pst->pool, (Data *)ttiInd, sizeof(TfuTtiIndInfo));
3364 if (pst->selector != ODU_SELECTOR_LWLC) {
3365 if (SPutSBuf(pst->region, pst->pool, (Data *)ttiInd, sizeof(TfuTtiIndInfo)) != ROK) {
3366 #if (ERRCLASS & ERRCLS_ADD_RES)
3367 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3368 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3369 (ErrVal)ETFU108, (ErrVal)0, "Packing failed");
3376 pst->event = (Event) EVENT_SLOT_IND_TO_MAC;
3377 RETVALUE(SPstTsk(pst,mBuf));
3381 /***********************************************************
3383 * Func : cmUnpackSlotInd
3386 * Desc : This API is the TTI indication from PHY to MAC .
3387 * @details This primitive provides the timing information (SFN and subframe)
3388 * which is currently running on the physical layer.
3389 * @param pst Pointer to the post structure.
3390 * @param suId SAP ID of the service user.
3391 * @param ttiInd Pointer to the TfuTtiIndInfo.
3392 * @return ROK/RFAILED
3401 **********************************************************/
3402 PUBLIC S16 cmUnpackSlotInd
3410 SlotIndInfo *slotInd;
3412 TRC3(cmUnpackSlotInd)
3414 if (SUnpkS16(&suId, mBuf) != ROK) {
3416 #if (ERRCLASS & ERRCLS_ADD_RES)
3417 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3418 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3419 (ErrVal)ETFU109, (ErrVal)0, "Packing failed");
3423 if (pst->selector != ODU_SELECTOR_LWLC) {
3424 if ((SGetSBuf(pst->region, pst->pool, (Data **)&slotInd, sizeof(SlotIndInfo))) != ROK) {
3425 #if (ERRCLASS & ERRCLS_ADD_RES)
3426 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3427 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3428 (ErrVal)ETFU110, (ErrVal)0, "Packing failed");
3435 if (pst->selector == ODU_SELECTOR_LC)
3437 if (cmUnpackSlotIndInfo(slotInd, mBuf) != ROK) {
3438 SPutSBuf(pst->region, pst->pool, (Data *)slotInd, sizeof(SlotIndInfo));
3440 #if (ERRCLASS & ERRCLS_ADD_RES)
3441 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3442 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3443 (ErrVal)ETFU111, (ErrVal)0, "Packing failed");
3448 else if(pst->selector == ODU_SELECTOR_LWLC)
3450 if (cmUnpkPtr((PTR *)&slotInd, mBuf) != ROK)
3452 #if (ERRCLASS & ERRCLS_ADD_RES)
3453 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3454 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3455 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
3457 SPutSBuf(pst->region, pst->pool, (Data *)slotInd, sizeof(SlotIndInfo));
3464 RETVALUE((*func)(pst, slotInd));
3467 #if defined(TENB_T2K3K_SPECIFIC_CHANGES) && defined(LTE_TDD)
3468 /***********************************************************
3470 * Func : cmPkTfuNonRtInd
3473 * Desc : This API is the Non-Rt indication from CL to MAC .
3474 * @param pst Pointer to the post structure.
3475 * @param suId SAP ID of the service user.
3476 * @return ROK/RFAILED
3485 **********************************************************/
3487 PUBLIC S16 cmPkTfuNonRtInd
3493 PUBLIC S16 cmPkTfuNonRtInd(pst, suId)
3498 Buffer *mBuf = NULLP;
3499 TRC3(cmPkTfuNonRtInd)
3501 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
3502 #if (ERRCLASS & ERRCLS_ADD_RES)
3503 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3504 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3505 (ErrVal)ETFU105, (ErrVal)0, "Packing failed");
3509 if (SPkS16(suId, mBuf) != ROK) {
3510 #if (ERRCLASS & ERRCLS_ADD_RES)
3511 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3512 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3513 (ErrVal)ETFU107, (ErrVal)0, "Packing failed");
3518 pst->event = (Event) EVTTFUNONRTIND;
3519 RETVALUE(SPstTsk(pst,mBuf));
3522 /***********************************************************
3524 * Func : cmUnpkTfuNonRtInd
3527 * Desc : This API is the Non Rt indication from PHY to MAC .
3528 * @param pst Pointer to the post structure.
3529 * @param suId SAP ID of the service user.
3530 * @return ROK/RFAILED
3539 **********************************************************/
3541 PUBLIC S16 cmUnpkTfuNonRtInd
3548 PUBLIC S16 cmUnpkTfuNonRtInd(func, pst, mBuf)
3555 TRC3(cmUnpkTfuNonRtInd)
3557 if (SUnpkS16(&suId, mBuf) != ROK) {
3559 #if (ERRCLASS & ERRCLS_ADD_RES)
3560 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3561 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3562 (ErrVal)ETFU109, (ErrVal)0, "Packing failed");
3567 RETVALUE((*func)(pst, suId));
3572 /***********************************************************
3574 * Func : cmUnpackMacSchSlotInd
3577 * Desc : This API is the TTI indication from PHY to scheduler.
3578 * @details This primitive provides the timing information (SFN and subframe)
3579 * which is currently running on the physical layer.
3580 * @param pst Pointer to the post structure.
3581 * @param suId SAP ID of the service user.
3582 * @param ttiInd Pointer to the TfuTtiIndInfo.
3583 * @return ROK/RFAILED
3592 **********************************************************/
3593 PUBLIC S16 cmUnpackMacSchSlotInd
3595 MacSchSlotIndFunc func,
3602 SlotIndInfo *slotInd;
3604 TRC3(cmUnpackMacSchSlotInd)
3606 if (SUnpkS16(&suId, mBuf) != ROK) {
3608 #if (ERRCLASS & ERRCLS_ADD_RES)
3609 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3610 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3611 (ErrVal)ETFU116, (ErrVal)0, "Packing failed");
3615 if (pst->selector != ODU_SELECTOR_LWLC) {
3616 if ((SGetSBuf(pst->region, pst->pool, (Data **)&slotInd, sizeof(SlotIndInfo))) != ROK) {
3617 #if (ERRCLASS & ERRCLS_ADD_RES)
3618 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3619 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3620 (ErrVal)ETFU117, (ErrVal)0, "Packing failed");
3627 if (pst->selector == ODU_SELECTOR_LC)
3629 if (cmUnpackSlotIndInfo(slotInd, mBuf) != ROK) {
3630 SPutSBuf(pst->region, pst->pool, (Data *)slotInd, sizeof(SlotIndInfo));
3632 #if (ERRCLASS & ERRCLS_ADD_RES)
3633 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3634 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3635 (ErrVal)ETFU118, (ErrVal)0, "Packing failed");
3640 else if(pst->selector == ODU_SELECTOR_LWLC)
3642 if (cmUnpkPtr((PTR *)&slotInd, mBuf) != ROK)
3644 #if (ERRCLASS & ERRCLS_ADD_RES)
3645 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3646 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3647 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
3649 SPutSBuf(pst->region, pst->pool, (Data *)slotInd, sizeof(SlotIndInfo));
3655 /* [ccpu00141698]-MOD- MAC/SCH does not free the TTI ind anymore */
3656 // (*func)(pst, suId, slotInd);
3657 (*func)(pst, slotInd);
3658 SPutSBuf(pst->region, pst->pool, (Data *)slotInd, sizeof(SlotIndInfo));
3664 /***********************************************************
3666 * Func : cmPkTfuPucchDeltaPwr
3669 * Desc : This Primitive is used to convey PUCCH Delta power calculated by the
3671 * This information is utilized by Scheduler for power control.
3672 * @param pst Pointer to the post structure.
3673 * @param suId SAP ID of the service user.
3674 * @param Pointer to the TfuPucchDeltaPwrIndInfo structure.
3675 * @return ROK/RFAILED
3684 **********************************************************/
3686 PUBLIC S16 cmPkTfuPucchDeltaPwr
3690 TfuPucchDeltaPwrIndInfo * pucchDeltaPwr
3693 PUBLIC S16 cmPkTfuPucchDeltaPwr(pst, suId, pucchDeltaPwr)
3696 TfuPucchDeltaPwrIndInfo * pucchDeltaPwr;
3699 Buffer *mBuf = NULLP;
3700 TRC3(cmPkTfuPucchDeltaPwr)
3702 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
3703 #if (ERRCLASS & ERRCLS_ADD_RES)
3704 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3705 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3706 (ErrVal)ETFU119, (ErrVal)0, "Packing failed");
3708 SPutSBuf(pst->region, pst->pool, (Data *)pucchDeltaPwr, sizeof(TfuPucchDeltaPwrIndInfo));
3711 if (pst->selector == ODU_SELECTOR_LC) {
3712 if (cmPkTfuPucchDeltaPwrIndInfo(pucchDeltaPwr, mBuf) != ROK) {
3713 #if (ERRCLASS & ERRCLS_ADD_RES)
3714 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3715 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3716 (ErrVal)ETFU120, (ErrVal)0, "Packing failed");
3718 TFU_FREE_MEM(pucchDeltaPwr);
3723 else if(pst->selector == ODU_SELECTOR_LWLC)
3725 if (cmPkPtr((PTR)pucchDeltaPwr, mBuf) != ROK)
3727 #if (ERRCLASS & ERRCLS_ADD_RES)
3728 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3729 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3730 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
3732 TFU_FREE_MEM(pucchDeltaPwr);
3738 if (SPkS16(suId, mBuf) != ROK) {
3739 #if (ERRCLASS & ERRCLS_ADD_RES)
3740 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3741 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3742 (ErrVal)ETFU121, (ErrVal)0, "Packing failed");
3744 TFU_FREE_MEM(pucchDeltaPwr);
3748 if (pst->selector != ODU_SELECTOR_LWLC) {
3749 TFU_FREE_MEM(pucchDeltaPwr);
3751 pst->event = (Event) EVTTFUPUCCHDELPWR;
3752 RETVALUE(SPstTsk(pst,mBuf));
3756 /***********************************************************
3758 * Func : cmUnpkTfuPucchDeltaPwr
3761 * Desc : This Primitive is used to convey PUCCH Delta power calculated by the
3763 * This information is utilized by Scheduler for power control.
3764 * @param pst Pointer to the post structure.
3765 * @param suId SAP ID of the service user.
3766 * @param Pointer to the TfuPucchDeltaPwrIndInfo structure.
3767 * @return ROK/RFAILED
3776 **********************************************************/
3778 PUBLIC S16 cmUnpkTfuPucchDeltaPwr
3780 TfuPucchDeltaPwrInd func,
3785 PUBLIC S16 cmUnpkTfuPucchDeltaPwr(func, pst, mBuf)
3786 TfuPucchDeltaPwrInd func;
3792 TfuPucchDeltaPwrIndInfo *pucchDeltaPwr;
3794 TRC3(cmUnpkTfuPucchDeltaPwr)
3796 if (SUnpkS16(&suId, mBuf) != ROK) {
3798 #if (ERRCLASS & ERRCLS_ADD_RES)
3799 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3800 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3801 (ErrVal)ETFU122, (ErrVal)0, "Packing failed");
3805 if (pst->selector != ODU_SELECTOR_LWLC) {
3807 sMem.region = pst->region;
3808 sMem.pool = pst->pool;
3809 if ((cmAllocEvnt(sizeof(TfuPucchDeltaPwrIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&pucchDeltaPwr)) != ROK) {
3810 #if (ERRCLASS & ERRCLS_ADD_RES)
3811 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3812 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3813 (ErrVal)ETFU123, (ErrVal)0, "Packing failed");
3820 if (pst->selector == ODU_SELECTOR_LC)
3822 if (cmUnpkTfuPucchDeltaPwrIndInfo(pucchDeltaPwr, (Ptr)&pucchDeltaPwr->memCp, mBuf) != ROK) {
3823 TFU_FREE_MEM(pucchDeltaPwr);
3825 #if (ERRCLASS & ERRCLS_ADD_RES)
3826 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3827 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3828 (ErrVal)ETFU124, (ErrVal)0, "Packing failed");
3833 else if(pst->selector == ODU_SELECTOR_LWLC)
3835 if (cmUnpkPtr((PTR *)&pucchDeltaPwr, mBuf) != ROK)
3837 #if (ERRCLASS & ERRCLS_ADD_RES)
3838 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
3839 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
3840 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
3842 TFU_FREE_MEM(pucchDeltaPwr);
3848 RETVALUE((*func)(pst, suId, pucchDeltaPwr));
3853 /***********************************************************
3855 * Func : cmPkTfuRbAssignA1Val324
3858 * Desc : This structure contains the information needed to convey RIV value 324.
3867 **********************************************************/
3869 PUBLIC S16 cmPkTfuRbAssignA1Val324
3871 TfuRbAssignA1Val324 *param,
3875 PUBLIC S16 cmPkTfuRbAssignA1Val324(param, mBuf)
3876 TfuRbAssignA1Val324 *param;
3881 TRC3(cmPkTfuRbAssignA1Val324)
3883 CMCHKPK(SPkU8, param->ndi, mBuf);
3884 CMCHKPK(SPkU8, param->mcs, mBuf);
3885 CMCHKPK(SPkU8, param->hqProcId, mBuf);
3887 printf("cmPkTfuRbAssignA1Val324 param->ndi %d mcs %d param->hqProcId %d \n",param->ndi,param->mcs,param->hqProcId);
3893 /***********************************************************
3895 * Func : cmPkTfuRbAssignB1Val324
3898 * Desc : This structure contains the information needed to convey RIV value 324.
3907 **********************************************************/
3909 PUBLIC S16 cmPkTfuRbAssignB1Val324
3911 TfuRbAssignB1Val324 *param,
3915 PUBLIC S16 cmPkTfuRbAssignB1Val324(param, mBuf)
3916 TfuRbAssignB1Val324 *param;
3921 TRC3(cmPkTfuRbAssignB1Val324)
3923 CMCHKPK(SPkU8, param->bmiHqAckNack, mBuf);
3924 CMCHKPK(SPkU8, param->RV, mBuf);
3925 CMCHKPK(SPkU8, param->ndi, mBuf);
3926 CMCHKPK(SPkU8, param->mcs, mBuf);
3927 CMCHKPK(SPkU8, param->hqProcId, mBuf);
3932 /***********************************************************
3934 * Func : cmPkTfuRbAssignVal326
3937 * Desc : This structure contains the information needed to convey RIV value 326.
3946 **********************************************************/
3948 PUBLIC S16 cmPkTfuRbAssignVal326
3950 TfuRbAssignVal326 *param,
3954 PUBLIC S16 cmPkTfuRbAssignVal326(param, mBuf)
3955 TfuRbAssignVal326 *param;
3960 TRC3(cmPkTfuRbAssignVal326)
3962 CMCHKPK(SPkU8, param->CyclicShiftInd, mBuf);
3963 CMCHKPK(SPkU8, param->OCCInd, mBuf);
3964 CMCHKPK(SPkU8, param->FreqBandIdx, mBuf);
3969 /***********************************************************
3971 * Func : cmUnpkTfuRbAssignA1Val324
3974 * Desc : This structure contains the information needed to convey RIV value 324.
3983 **********************************************************/
3985 PUBLIC S16 cmUnpkTfuRbAssignA1Val324
3987 TfuRbAssignA1Val324 *param,
3991 PUBLIC S16 cmUnpkTfuRbAssignA1Val324(param, mBuf)
3992 TfuRbAssignA1Val324 *param;
3997 TRC3(cmUnpkTfuRbAssignA1Val324)
3999 CMCHKUNPK(SUnpkU8, ¶m->hqProcId, mBuf);
4000 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
4001 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
4006 /***********************************************************
4008 * Func : cmUnpkTfuRbAssignB1Val324
4011 * Desc : This structure contains the information needed to convey RIV value 324.
4020 **********************************************************/
4022 PUBLIC S16 cmUnpkTfuRbAssignB1Val324
4024 TfuRbAssignB1Val324 *param,
4028 PUBLIC S16 cmUnpkTfuRbAssignB1Val324(param, mBuf)
4029 TfuRbAssignB1Val324 *param;
4034 TRC3(cmUnpkTfuRbAssignB1Val324)
4036 CMCHKUNPK(SUnpkU8, ¶m->hqProcId, mBuf);
4037 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
4038 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
4039 CMCHKUNPK(SUnpkU8, ¶m->RV, mBuf);
4040 CMCHKUNPK(SUnpkU8, ¶m->bmiHqAckNack, mBuf);
4045 /***********************************************************
4047 * Func : cmUnpkTfuRbAssignVal326
4050 * Desc : This structure contains the information needed to convey RIV value 326.
4059 **********************************************************/
4061 PUBLIC S16 cmUnpkTfuRbAssignVal326
4063 TfuRbAssignVal326 *param,
4067 PUBLIC S16 cmUnpkTfuRbAssignVal326(param, mBuf)
4068 TfuRbAssignVal326 *param;
4073 TRC3(cmUnpkTfuRbAssignVal326)
4075 CMCHKUNPK(SUnpkU8, ¶m->FreqBandIdx, mBuf);
4076 CMCHKUNPK(SUnpkU8, ¶m->OCCInd, mBuf);
4077 CMCHKUNPK(SUnpkU8, ¶m->CyclicShiftInd, mBuf);
4083 /***********************************************************
4085 * Func : cmPkTfuDciFormatA1A2Info
4088 * Desc : This structure contains the information needed to convey DCI format A1/A2.
4097 **********************************************************/
4099 PUBLIC S16 cmPkTfuDciFormatA1A2Info
4101 TfuDciFormatA1Info *param,
4105 PUBLIC S16 cmPkTfuDciFormatA1A2Info(param, mBuf)
4106 TfuDciFormatA1Info *param;
4111 TRC3(cmPkTfuDciFormatA1A2Info)
4113 //printf("5GTF_DBG: cmPkTfuDciFormatA1Info() called by eNB\n");
4114 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
4115 CMCHKPK(SPkU8, param->UL_PCRS, mBuf);
4116 CMCHKPK(SPkU8, param->PMI, mBuf);
4117 CMCHKPK(SPkU8, param->SCID, mBuf);
4119 CMCHKPK(SPkU8, param->REMapIdx_DMRS_PCRS_numLayers, mBuf);
4120 CMCHKPK(SPkU8, param->SRS_Symbol, mBuf);
4121 CMCHKPK(SPkU8, param->SRS_Config, mBuf);
4122 CMCHKPK(SPkU8, param->beamSwitch, mBuf);
4123 CMCHKPK(SPkU8, param->uciOnxPUSCH, mBuf);
4125 CMCHKPK(SPkU8, param->numBSI_Reports, mBuf);
4126 CMCHKPK(SPkU8, param->CSIRS_BRRS_ProcInd, mBuf);
4127 CMCHKPK(SPkU8, param->CSI_BRRS_Indicator, mBuf);
4128 CMCHKPK(SPkU8, param->CSIRS_BRRS_SymbIdx, mBuf);
4129 CMCHKPK(SPkU8, param->CSIRS_BRRS_TxTiming, mBuf);
4130 CMCHKPK(SPkU8, param->CSI_BSI_BRI_Req, mBuf);
4132 if(param->RBAssign <= TFU_RIV_324)
4134 CMCHKPK(cmPkTfuRbAssignA1Val324, ¶m->u.rbAssignA1Val324, mBuf);
4136 else if (param->RBAssign == TFU_RIV_326)
4138 CMCHKPK(cmPkTfuRbAssignVal326, ¶m->u.rbAssignVal326, mBuf);
4141 CMCHKPK(SPkU8, param->rv, mBuf);
4142 CMCHKPK(SPkU8, param->symbIdx, mBuf);
4143 CMCHKPK(SPkU8, param->beamIndex, mBuf);
4144 CMCHKPK(SPkU16, param->RBAssign, mBuf);
4145 CMCHKPK(SPkU8, param->xPUSCH_TxTiming, mBuf);
4146 CMCHKPK(SPkU8, param->xPUSCHRange, mBuf);
4147 CMCHKPK(SPkU8, param->formatType, mBuf);
4152 /***********************************************************
4154 * Func : cmPkTfuDciFormatB1B2Info
4157 * Desc : This structure contains the information needed to convey DCI format B1/B2.
4166 **********************************************************/
4168 PUBLIC S16 cmPkTfuDciFormatB1B2Info
4170 TfuDciFormatB1Info *param,
4174 PUBLIC S16 cmPkTfuDciFormatB1B2Info(param, mBuf)
4175 TfuDciFormatB1Info *param;
4180 TRC3(cmPkTfuDciFormatB1B2Info)
4182 CMCHKPK(SPkU8, param->DL_PCRS, mBuf);
4183 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
4184 CMCHKPK(SPkU8, param->SCID, mBuf);
4186 CMCHKPK(SPkU8, param->AntPorts_numLayers, mBuf);
4187 CMCHKPK(SPkU8, param->SRS_Symbol, mBuf);
4188 CMCHKPK(SPkU8, param->SRS_Config, mBuf);
4189 CMCHKPK(SPkU8, param->beamSwitch, mBuf);
4190 CMCHKPK(SPkU8, param->freqResIdx_xPUCCH, mBuf);
4192 CMCHKPK(SPkU8, param->xPUCCH_TxTiming, mBuf);
4194 CMCHKPK(SPkU8, param->numBSI_Reports, mBuf);
4195 CMCHKPK(SPkU8, param->CSIRS_BRRS_ProcInd, mBuf);
4196 CMCHKPK(SPkU8, param->CSI_BRRS_Indicator, mBuf);
4197 CMCHKPK(SPkU8, param->CSIRS_BRRS_SymbIdx, mBuf);
4198 CMCHKPK(SPkU8, param->CSIRS_BRRS_TxTiming, mBuf);
4199 CMCHKPK(SPkU8, param->CSI_BSI_BRI_Req, mBuf);
4201 if(param->RBAssign <= TFU_RIV_324)
4203 CMCHKPK(cmPkTfuRbAssignB1Val324, ¶m->u.rbAssignB1Val324, mBuf);
4205 else if (param->RBAssign == TFU_RIV_326)
4207 CMCHKPK(cmPkTfuRbAssignVal326, ¶m->u.rbAssignVal326, mBuf);
4210 CMCHKPK(SPkU8, param->symbIdx, mBuf);
4211 CMCHKPK(SPkU8, param->beamIndex, mBuf);
4212 CMCHKPK(SPkU16, param->RBAssign, mBuf);
4213 CMCHKPK(SPkU8, param->xPDSCHRange, mBuf);
4214 CMCHKPK(SPkU8, param->formatType, mBuf);
4220 /***********************************************************
4222 * Func : cmUnpkTfuDciFormatA1A2Info
4225 * Desc : This structure contains the information needed to convey DCI format A1/A2.
4234 **********************************************************/
4236 PUBLIC S16 cmUnpkTfuDciFormatA1A2Info
4238 TfuDciFormatA1Info *param,
4242 PUBLIC S16 cmUnpkTfuDciFormatA1A2Info(param, mBuf)
4243 TfuDciFormatA1Info *param;
4248 TRC3(cmUnpkTfuDciFormatA1A2Info)
4250 CMCHKUNPK(SUnpkU8, ¶m->formatType, mBuf);
4251 CMCHKUNPK(SUnpkU8, ¶m->xPUSCHRange, mBuf);
4252 CMCHKUNPK(SUnpkU8, ¶m->xPUSCH_TxTiming, mBuf);
4253 CMCHKUNPK(SUnpkU16, ¶m->RBAssign, mBuf);
4254 CMCHKUNPK(SUnpkU8, ¶m->beamIndex, mBuf);
4255 CMCHKUNPK(SUnpkU8, ¶m->symbIdx, mBuf);
4256 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
4258 if(param->RBAssign <= TFU_RIV_324)
4260 CMCHKUNPK(cmUnpkTfuRbAssignA1Val324, ¶m->u.rbAssignA1Val324, mBuf);
4262 else if(param->RBAssign == TFU_RIV_326)
4264 CMCHKUNPK(cmUnpkTfuRbAssignVal326, ¶m->u.rbAssignVal326, mBuf);
4267 CMCHKUNPK(SUnpkU8, ¶m->CSI_BSI_BRI_Req, mBuf);
4268 CMCHKUNPK(SUnpkU8, ¶m->CSIRS_BRRS_TxTiming, mBuf);
4269 CMCHKUNPK(SUnpkU8, ¶m->CSIRS_BRRS_SymbIdx, mBuf);
4270 CMCHKUNPK(SUnpkU8, ¶m->CSI_BRRS_Indicator, mBuf);
4271 CMCHKUNPK(SUnpkU8, ¶m->CSIRS_BRRS_ProcInd, mBuf);
4272 CMCHKUNPK(SUnpkU8, ¶m->numBSI_Reports, mBuf);
4274 CMCHKUNPK(SUnpkU8, ¶m->uciOnxPUSCH, mBuf);
4275 CMCHKUNPK(SUnpkU8, ¶m->beamSwitch, mBuf);
4276 CMCHKUNPK(SUnpkU8, ¶m->SRS_Config, mBuf);
4277 CMCHKUNPK(SUnpkU8, ¶m->SRS_Symbol, mBuf);
4278 CMCHKUNPK(SUnpkU8, ¶m->REMapIdx_DMRS_PCRS_numLayers, mBuf);
4280 CMCHKUNPK(SUnpkU8, ¶m->SCID, mBuf);
4281 CMCHKUNPK(SUnpkU8, ¶m->PMI, mBuf);
4282 CMCHKUNPK(SUnpkU8, ¶m->UL_PCRS, mBuf);
4283 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
4289 /***********************************************************
4291 * Func : cmUnpkTfuDciFormatB1B2Info
4294 * Desc : This structure contains the information needed to convey DCI format B1/B2.
4303 **********************************************************/
4305 PUBLIC S16 cmUnpkTfuDciFormatB1B2Info
4307 TfuDciFormatB1Info *param,
4311 PUBLIC S16 cmUnpkTfuDciFormatB1B2Info(param, mBuf)
4312 TfuDciFormatB1Info *param;
4317 TRC3(cmUnpkTfuDciFormatB1B2Info)
4319 CMCHKUNPK(SUnpkU8, ¶m->formatType, mBuf);
4320 CMCHKUNPK(SUnpkU8, ¶m->xPDSCHRange, mBuf);
4321 CMCHKUNPK(SUnpkU16, ¶m->RBAssign, mBuf);
4322 CMCHKUNPK(SUnpkU8, ¶m->beamIndex, mBuf);
4323 CMCHKUNPK(SUnpkU8, ¶m->symbIdx, mBuf);
4325 if(param->RBAssign <= TFU_RIV_324)
4327 CMCHKUNPK(cmUnpkTfuRbAssignB1Val324, ¶m->u.rbAssignB1Val324, mBuf);
4329 else if (param->RBAssign == TFU_RIV_326)
4331 CMCHKUNPK(cmUnpkTfuRbAssignVal326, ¶m->u.rbAssignVal326, mBuf);
4334 CMCHKUNPK(SUnpkU8, ¶m->CSI_BSI_BRI_Req, mBuf);
4335 CMCHKUNPK(SUnpkU8, ¶m->CSIRS_BRRS_TxTiming, mBuf);
4336 CMCHKUNPK(SUnpkU8, ¶m->CSIRS_BRRS_SymbIdx, mBuf);
4337 CMCHKUNPK(SUnpkU8, ¶m->CSI_BRRS_Indicator, mBuf);
4338 CMCHKUNPK(SUnpkU8, ¶m->CSIRS_BRRS_ProcInd, mBuf);
4339 CMCHKUNPK(SUnpkU8, ¶m->numBSI_Reports, mBuf);
4341 CMCHKUNPK(SUnpkU8, ¶m->xPUCCH_TxTiming, mBuf);
4342 CMCHKUNPK(SUnpkU8, ¶m->freqResIdx_xPUCCH, mBuf);
4343 CMCHKUNPK(SUnpkU8, ¶m->beamSwitch, mBuf);
4344 CMCHKUNPK(SUnpkU8, ¶m->SRS_Config, mBuf);
4345 CMCHKUNPK(SUnpkU8, ¶m->SRS_Symbol, mBuf);
4346 CMCHKUNPK(SUnpkU8, ¶m->AntPorts_numLayers, mBuf);
4347 CMCHKUNPK(SUnpkU8, ¶m->SCID, mBuf);
4348 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
4349 CMCHKUNPK(SUnpkU8, ¶m->DL_PCRS, mBuf);
4355 #endif /* TFU_5GTF */
4358 /***********************************************************
4360 * Func : cmPkTfuDciFormat0Info
4363 * Desc : This structure contains the information needed to convey DCI format 0.
4372 **********************************************************/
4374 PUBLIC S16 cmPkTfuDciFormat0Info
4376 TfuDciFormat0Info *param,
4380 PUBLIC S16 cmPkTfuDciFormat0Info(param, mBuf)
4381 TfuDciFormat0Info *param;
4386 TRC3(cmPkTfuDciFormat0Info)
4388 /* tfu_c_001.main_3: Adding pack for hqProcId */
4389 CMCHKPK(SPkU8, param->hqProcId, mBuf);
4390 CMCHKPK(SPkU8, param->txAntenna, mBuf);
4391 CMCHKPK(SPkU8, param->numCqiBit, mBuf);
4392 CMCHKPK(SPkU8, param->cqiReq, mBuf);
4393 CMCHKPK(SPkU8, param->nDmrs, mBuf);
4396 CMCHKPK(SPkU8, param->dai, mBuf);
4397 CMCHKPK(SPkU8, param->ulIdx, mBuf);
4400 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
4401 CMCHKPK(SPkU8, param->ndi, mBuf);
4402 CMCHKPK(SPkU8, param->mcs, mBuf);
4403 CMCHKPK(SPkU8, param->hoppingBits, mBuf);
4404 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
4406 CMCHKPK(SPkU32, param->riv, mBuf);
4408 CMCHKPK(SPkU8, param->numRb, mBuf);
4409 CMCHKPK(SPkU8, param->rbStart, mBuf);
4410 CMCHKPK(SPkU8, param->hoppingEnbld, mBuf);
4416 /***********************************************************
4418 * Func : cmUnpkTfuDciFormat0Info
4421 * Desc : This structure contains the information needed to convey DCI format 0.
4430 **********************************************************/
4432 PUBLIC S16 cmUnpkTfuDciFormat0Info
4434 TfuDciFormat0Info *param,
4438 PUBLIC S16 cmUnpkTfuDciFormat0Info(param, mBuf)
4439 TfuDciFormat0Info *param;
4444 TRC3(cmUnpkTfuDciFormat0Info)
4446 CMCHKUNPK(SUnpkU8, ¶m->hoppingEnbld, mBuf);
4447 CMCHKUNPK(SUnpkU8, ¶m->rbStart, mBuf);
4448 CMCHKUNPK(SUnpkU8, ¶m->numRb, mBuf);
4450 CMCHKUNPK(SUnpkU32, ¶m->riv, mBuf);
4451 #endif /* TFU_UPGRADE */
4452 CMCHKUNPK(SUnpkU8, ¶m->hoppingBits, mBuf);
4453 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
4454 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
4455 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
4458 CMCHKUNPK(SUnpkU8, ¶m->ulIdx, mBuf);
4459 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
4462 CMCHKUNPK(SUnpkU8, ¶m->nDmrs, mBuf);
4463 CMCHKUNPK(SUnpkU8, ¶m->cqiReq, mBuf);
4464 CMCHKUNPK(SUnpkU8, ¶m->numCqiBit, mBuf);
4465 CMCHKUNPK(SUnpkU8, ¶m->txAntenna, mBuf);
4466 /* tfu_c_001.main_3: Adding unpack for hqProcId */
4467 CMCHKUNPK(SUnpkU8, ¶m->hqProcId, mBuf);
4474 /***********************************************************
4476 * Func : cmPkTfuAllocMapOrRiv
4479 * Desc : This Structure could either contain a resource allocation bit map OR a
4480 * RIV Value as defined in 213 - 7.1.6.
4489 **********************************************************/
4491 PUBLIC S16 cmPkTfuAllocMapOrRiv
4493 TfuAllocMapOrRiv *param,
4497 PUBLIC S16 cmPkTfuAllocMapOrRiv(param, mBuf)
4498 TfuAllocMapOrRiv *param;
4504 TRC3(cmPkTfuAllocMapOrRiv)
4506 switch(param->type) {
4507 /*tfu_c_001.main_7 - ADD - TFU_RESMAP_CHANGE support */
4508 #ifdef TFU_RESMAP_CHANGE
4510 CMCHKPK(cmPkTfuAllocMap, ¶m->u.allocMap, mBuf);
4515 /*tfu_c_001.main_7 - ADD - TFU_RESMAP_CHANGE support */
4516 #ifndef TFU_RESMAP_CHANGE
4517 case TFU_ALLOC_TYPE_MAP:
4518 for (i=TFU_MAX_ALLOC_BYTES-1; i >= 0; i--) {
4519 CMCHKPK(SPkU8, param->u.resAllocMap[i], mBuf);
4524 case TFU_ALLOC_TYPE_RIV:
4525 CMCHKPK(SPkU32, param->u.riv, mBuf);
4530 CMCHKPK(SPkU32, param->type, mBuf);
4536 /***********************************************************
4538 * Func : cmUnpkTfuAllocMapOrRiv
4541 * Desc : This Structure could either contain a resource allocation bit map OR a
4542 * RIV Value as defined in 213 - 7.1.6.
4551 **********************************************************/
4553 PUBLIC S16 cmUnpkTfuAllocMapOrRiv
4555 TfuAllocMapOrRiv *param,
4559 PUBLIC S16 cmUnpkTfuAllocMapOrRiv(param, mBuf)
4560 TfuAllocMapOrRiv *param;
4566 TRC3(cmUnpkTfuAllocMapOrRiv)
4568 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
4569 switch(param->type) {
4570 case TFU_ALLOC_TYPE_RIV:
4571 CMCHKUNPK(SUnpkU32, ¶m->u.riv, mBuf);
4574 /*tfu_c_001.main_7 - ADD - TFU_RESMAP_CHANGE support */
4575 #ifndef TFU_RESMAP_CHANGE
4576 case TFU_ALLOC_TYPE_MAP:
4577 for (i=0; i<TFU_MAX_ALLOC_BYTES; i++) {
4578 CMCHKUNPK(SUnpkU8, ¶m->u.resAllocMap[i], mBuf);
4584 /*tfu_c_001.main_7 - ADD - TFU_RESMAP_CHANGE support */
4585 #ifdef TFU_RESMAP_CHANGE
4587 CMCHKUNPK(cmUnpkTfuAllocMap, ¶m->u.allocMap, mBuf);
4599 /***********************************************************
4601 * Func : cmPkTfuDciFormat1AllocInfo
4604 * Desc : This structure contains only the allocation information, thats part
4606 * @details Allocation information also contains parameters necessary
4607 * for Physical layer to process Downlink Data. This structure accompanies the
4608 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
4609 * @sa TfuDciFormat1Info
4618 **********************************************************/
4620 PUBLIC S16 cmPkTfuDciFormat1AllocInfo
4622 TfuDciFormat1AllocInfo *param,
4626 PUBLIC S16 cmPkTfuDciFormat1AllocInfo(param, mBuf)
4627 TfuDciFormat1AllocInfo *param;
4633 TRC3(cmPkTfuDciFormat1AllocInfo)
4635 CMCHKPK(SPkU8, param->rv, mBuf);
4636 CMCHKPK(SPkU8, param->mcs, mBuf);
4637 CMCHKPK(SPkU8, param->ndi, mBuf);
4638 CMCHKPK(SPkU8, param->harqProcId, mBuf);
4639 for (i=TFU_MAX_ALLOC_BYTES-1; i >= 0; i--) {
4640 CMCHKPK(SPkU8, param->resAllocMap[i], mBuf);
4642 CMCHKPK(SPkU8, param->isAllocType0, mBuf);
4648 /***********************************************************
4650 * Func : cmUnpkTfuDciFormat1AllocInfo
4653 * Desc : This structure contains only the allocation information, thats part
4655 * @details Allocation information also contains parameters necessary
4656 * for Physical layer to process Downlink Data. This structure accompanies the
4657 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
4658 * @sa TfuDciFormat1Info
4667 **********************************************************/
4669 PUBLIC S16 cmUnpkTfuDciFormat1AllocInfo
4671 TfuDciFormat1AllocInfo *param,
4675 PUBLIC S16 cmUnpkTfuDciFormat1AllocInfo(param, mBuf)
4676 TfuDciFormat1AllocInfo *param;
4682 TRC3(cmUnpkTfuDciFormat1AllocInfo)
4684 CMCHKUNPK(SUnpkU8, ¶m->isAllocType0, mBuf);
4685 for (i=0; i<TFU_MAX_ALLOC_BYTES; i++) {
4686 CMCHKUNPK(SUnpkU8, ¶m->resAllocMap[i], mBuf);
4688 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
4689 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
4690 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
4691 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
4696 /***********************************************************
4698 * Func : cmPkTfuDciFormat1Info
4701 * Desc : This structure contains the information needed to convey DCI format 1.
4702 * @details Allocation information is separated from the other control
4703 * information carried in this format. This separation is needed as Data shall
4704 * also carry some control information, essentially allocation information,
4705 * along with it, in order to aid physical layer processing of the data.
4714 **********************************************************/
4716 PUBLIC S16 cmPkTfuDciFormat1Info
4718 TfuDciFormat1Info *param,
4722 PUBLIC S16 cmPkTfuDciFormat1Info(param, mBuf)
4723 TfuDciFormat1Info *param;
4728 TRC3(cmPkTfuDciFormat1Info)
4730 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
4733 CMCHKPK(SPkU8, param->dai, mBuf);
4736 CMCHKPK(cmPkTfuDciFormat1AllocInfo, ¶m->allocInfo, mBuf);
4742 /***********************************************************
4744 * Func : cmUnpkTfuDciFormat1Info
4747 * Desc : This structure contains the information needed to convey DCI format 1.
4748 * @details Allocation information is separated from the other control
4749 * information carried in this format. This separation is needed as Data shall
4750 * also carry some control information, essentially allocation information,
4751 * along with it, in order to aid physical layer processing of the data.
4760 **********************************************************/
4762 PUBLIC S16 cmUnpkTfuDciFormat1Info
4764 TfuDciFormat1Info *param,
4768 PUBLIC S16 cmUnpkTfuDciFormat1Info(param, mBuf)
4769 TfuDciFormat1Info *param;
4774 TRC3(cmUnpkTfuDciFormat1Info)
4776 CMCHKUNPK(cmUnpkTfuDciFormat1AllocInfo, ¶m->allocInfo, mBuf);
4779 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
4782 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
4788 /***********************************************************
4790 * Func : cmPkTfuDciFormat2AAllocInfo
4793 * Desc : This structure contains only the allocation information, that is part
4795 * @details Allocation information also contains parameters necessary
4796 * for Physical layer to process Downlink data. This structure accompanies the
4797 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
4798 * @sa TfuDciFormat2AInfo
4807 **********************************************************/
4809 PUBLIC S16 cmPkTfuDciFormat2AAllocInfo
4811 TfuDciFormat2AAllocInfo *param,
4815 PUBLIC S16 cmPkTfuDciFormat2AAllocInfo(param, mBuf)
4816 TfuDciFormat2AAllocInfo *param;
4822 TRC3(cmPkTfuDciFormat2AAllocInfo)
4824 CMCHKPK(SPkU8, param->transSwap, mBuf);
4825 CMCHKPK(SPkU8, param->precoding, mBuf);
4827 for (i=1; i >= 0; i--) {
4828 CMCHKPK(cmPkTfuDciFormatTbInfo, ¶m->tbInfo[i], mBuf);
4831 CMCHKPK(SPkU8, param->harqProcId, mBuf);
4832 for (i=TFU_MAX_ALLOC_BYTES-1; i >= 0; i--) {
4833 CMCHKPK(SPkU8, param->resAllocMap[i], mBuf);
4836 CMCHKPK(SPkU8, param->isAllocType0, mBuf);
4843 /***********************************************************
4845 * Func : cmUnpkTfuDciFormat2AAllocInfo
4848 * Desc : This structure contains only the allocation information, that is part
4850 * @details Allocation information also contains parameters necessary
4851 * for Physical layer to process Downlink data. This structure accompanies the
4852 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
4853 * @sa TfuDciFormat2AInfo
4862 **********************************************************/
4864 PUBLIC S16 cmUnpkTfuDciFormat2AAllocInfo
4866 TfuDciFormat2AAllocInfo *param,
4870 PUBLIC S16 cmUnpkTfuDciFormat2AAllocInfo(param, mBuf)
4871 TfuDciFormat2AAllocInfo *param;
4877 TRC3(cmUnpkTfuDciFormat2AAllocInfo)
4880 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
4881 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
4882 CMCHKUNPK(SUnpkU8, ¶m->isAllocType0, mBuf);
4885 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
4886 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
4887 for (i=0; i<TFU_MAX_ALLOC_BYTES; i++) {
4888 CMCHKUNPK(SUnpkU8, ¶m->resAllocMap[i], mBuf);
4890 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
4892 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
4893 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
4895 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
4896 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
4897 for (i=0; i<=1; i++) {
4898 CMCHKUNPK(cmUnpkTfuDciFormatTbInfo, ¶m->tbInfo[i], mBuf);
4901 CMCHKUNPK(SUnpkU8, ¶m->precoding, mBuf);
4902 CMCHKUNPK(SUnpkU8, ¶m->transSwap, mBuf);
4907 /***********************************************************
4909 * Func : cmPkTfuDciFormat6AAllocInfo
4912 * Desc : This structure contains only the allocation information, that is part
4913 * of DCI format 6-1A.
4914 * @details Allocation information also contains parameters necessary
4915 * for Physical layer to process Downlink data. This structure accompanies the
4916 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
4917 * @sa TfuDciFormat61aInfo
4926 **********************************************************/
4928 PUBLIC S16 cmPkTfuDciFormat6AAllocInfo
4930 TfuDciFormat61AllocInfo *param,
4934 PUBLIC S16 cmPkTfuDciFormat6AAllocInfo(param, mBuf)
4935 TfuDciFormat61AllocInfo *param;
4940 TRC3(cmPkTfuDciFormat6AAllocInfo)
4942 CMCHKPK(SPkU8, param->rv, mBuf);
4943 CMCHKPK(SPkU8, param->mcs, mBuf);
4944 CMCHKPK(SPkU8, param->ndi, mBuf);
4945 CMCHKPK(SPkU8, param->harqProcId, mBuf);
4946 CMCHKPK(SPkU32, param->riv, mBuf);
4953 /***********************************************************
4955 * Func : cmUnpkTfuDciFormat6AAllocInfo
4958 * Desc : This structure contains only the allocation information, that is part
4959 * of DCI format 6-1A.
4960 * @details Allocation information also contains parameters necessary
4961 * for Physical layer to process Downlink data. This structure accompanies the
4962 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
4963 * @sa TfuDciFormat61aInfo
4972 **********************************************************/
4974 PUBLIC S16 cmUnpkTfuDciFormat6AAllocInfo
4976 TfuDciFormat61AllocInfo *param,
4980 PUBLIC S16 cmUnpkTfuDciFormat6AAllocInfo(param, mBuf)
4981 TfuDciFormat61AllocInfo *param;
4986 TRC3(cmUnpkTfuDciFormat6AAllocInfo)
4988 CMCHKUNPK(SUnpkU32, ¶m->riv, mBuf);
4989 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
4990 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
4991 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
4992 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
4993 printf("In cmUnpkTfuDciFormat6AAllocInfo :: Passed \n");
5000 /***********************************************************
5002 * Func : cmPkTfuDciFormat2AInfo
5005 * Desc : This structure contains the information carried by DCI format 2A.
5006 * @details It carries the allocation information and other control information.
5015 **********************************************************/
5017 PUBLIC S16 cmPkTfuDciFormat2AInfo
5019 TfuDciFormat2AInfo *param,
5023 PUBLIC S16 cmPkTfuDciFormat2AInfo(param, mBuf)
5024 TfuDciFormat2AInfo *param;
5029 TRC3(cmPkTfuDciFormat2AInfo)
5031 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
5034 CMCHKPK(SPkU8, param->dai, mBuf);
5037 CMCHKPK(cmPkTfuDciFormat2AAllocInfo, ¶m->allocInfo, mBuf);
5043 /***********************************************************
5045 * Func : cmUnpkTfuDciFormat2AInfo
5048 * Desc : This structure contains the information carried by DCI format 2A.
5049 * @details It carries the allocation information and other control information.
5058 **********************************************************/
5060 PUBLIC S16 cmUnpkTfuDciFormat2AInfo
5062 TfuDciFormat2AInfo *param,
5066 PUBLIC S16 cmUnpkTfuDciFormat2AInfo(param, mBuf)
5067 TfuDciFormat2AInfo *param;
5072 TRC3(cmUnpkTfuDciFormat2AInfo)
5074 CMCHKUNPK(cmUnpkTfuDciFormat2AAllocInfo, ¶m->allocInfo, mBuf);
5077 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
5080 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
5086 /***********************************************************
5088 * Func : cmPkTfuDciFormat2AllocInfo
5091 * Desc : This structure contains only the allocation information, that is part
5093 * @details Allocation information also contains parameters necessary
5094 * for Physical layer to process Downlink data. This structure accompanies the
5095 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
5096 * @sa TfuDciFormat2Info
5105 **********************************************************/
5107 PUBLIC S16 cmPkTfuDciFormat2AllocInfo
5109 TfuDciFormat2AllocInfo *param,
5113 PUBLIC S16 cmPkTfuDciFormat2AllocInfo(param, mBuf)
5114 TfuDciFormat2AllocInfo *param;
5120 TRC3(cmPkTfuDciFormat2AllocInfo)
5123 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5124 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5125 for (i=1; i >= 0; i--) {
5126 CMCHKPK(cmPkTfuDciFormatTbInfo, ¶m->tbInfo[i], mBuf);
5128 CMCHKPK(SPkU8, param->harqProcId, mBuf);
5130 CMCHKPK(SPkU8, param->precoding, mBuf);
5131 CMCHKPK(SPkU8, param->transSwap, mBuf);
5133 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5134 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5137 CMCHKPK(SPkU8, param->dai, mBuf);
5140 for (i=TFU_MAX_ALLOC_BYTES-1; i >= 0; i--) {
5141 CMCHKPK(SPkU8, param->resAllocMap[i], mBuf);
5144 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5145 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5147 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5148 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5149 CMCHKPK(SPkU8, param->isAllocType0, mBuf);
5156 /***********************************************************
5158 * Func : cmUnpkTfuDciFormat2AllocInfo
5161 * Desc : This structure contains only the allocation information, that is part
5163 * @details Allocation information also contains parameters necessary
5164 * for Physical layer to process Downlink data. This structure accompanies the
5165 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
5166 * @sa TfuDciFormat2Info
5175 **********************************************************/
5177 PUBLIC S16 cmUnpkTfuDciFormat2AllocInfo
5179 TfuDciFormat2AllocInfo *param,
5183 PUBLIC S16 cmUnpkTfuDciFormat2AllocInfo(param, mBuf)
5184 TfuDciFormat2AllocInfo *param;
5190 TRC3(cmUnpkTfuDciFormat2AllocInfo)
5193 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5194 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5195 CMCHKUNPK(SUnpkU8, ¶m->isAllocType0, mBuf);
5198 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5199 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5200 for (i=0; i<TFU_MAX_ALLOC_BYTES; i++) {
5201 CMCHKUNPK(SUnpkU8, ¶m->resAllocMap[i], mBuf);
5205 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
5209 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5210 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5211 CMCHKUNPK(SUnpkU8, ¶m->transSwap, mBuf);
5212 CMCHKUNPK(SUnpkU8, ¶m->precoding, mBuf);
5214 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5215 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5216 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
5217 for (i=0; i<=1; i++) {
5218 CMCHKUNPK(cmUnpkTfuDciFormatTbInfo, ¶m->tbInfo[i], mBuf);
5226 /***********************************************************
5228 * Func : cmPkTfuDciFormat2Info
5231 * Desc : This structure contains the information carried by DCI format 2.
5232 * @details Allocation information is separated from the other control
5233 * information carried in this format. This separation is needed as Data must
5234 * also carry some control information, essentially, allocation information
5235 * along with it, in order to aid physical layer processing of the data.
5244 **********************************************************/
5246 PUBLIC S16 cmPkTfuDciFormat2Info
5248 TfuDciFormat2Info *param,
5252 PUBLIC S16 cmPkTfuDciFormat2Info(param, mBuf)
5253 TfuDciFormat2Info *param;
5258 TRC3(cmPkTfuDciFormat2Info)
5261 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5262 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5265 CMCHKPK(SPkU8, param->dai, mBuf);
5269 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
5271 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5272 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5273 CMCHKPK(cmPkTfuDciFormat2AllocInfo, ¶m->allocInfo, mBuf);
5279 /***********************************************************
5281 * Func : cmUnpkTfuDciFormat2Info
5284 * Desc : This structure contains the information carried by DCI format 2.
5285 * @details Allocation information is separated from the other control
5286 * information carried in this format. This separation is needed as Data must
5287 * also carry some control information, essentially, allocation information
5288 * along with it, in order to aid physical layer processing of the data.
5297 **********************************************************/
5299 PUBLIC S16 cmUnpkTfuDciFormat2Info
5301 TfuDciFormat2Info *param,
5305 PUBLIC S16 cmUnpkTfuDciFormat2Info(param, mBuf)
5306 TfuDciFormat2Info *param;
5311 TRC3(cmUnpkTfuDciFormat2Info)
5313 CMCHKUNPK(cmUnpkTfuDciFormat2AllocInfo, ¶m->allocInfo, mBuf);
5315 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5316 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5317 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
5319 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
5320 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
5323 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
5332 /***********************************************************
5334 * Func : cmPkTfuDciFormat3Info
5337 * Desc : This structure contains the information carried in DCI format 3.
5346 **********************************************************/
5348 PUBLIC S16 cmPkTfuDciFormat3Info
5350 TfuDciFormat3Info *param,
5354 PUBLIC S16 cmPkTfuDciFormat3Info(param, mBuf)
5355 TfuDciFormat3Info *param;
5361 TRC3(cmPkTfuDciFormat3Info)
5363 CMCHKPK(SPkU8, param->isPucch, mBuf);
5364 for (i=TFU_MAX_2BIT_TPC-1; i >= 0; i--) {
5365 CMCHKPK(SPkU8, param->tpcCmd[i], mBuf);
5372 /***********************************************************
5374 * Func : cmUnpkTfuDciFormat3Info
5377 * Desc : This structure contains the information carried in DCI format 3.
5386 **********************************************************/
5388 PUBLIC S16 cmUnpkTfuDciFormat3Info
5390 TfuDciFormat3Info *param,
5394 PUBLIC S16 cmUnpkTfuDciFormat3Info(param, mBuf)
5395 TfuDciFormat3Info *param;
5401 TRC3(cmUnpkTfuDciFormat3Info)
5403 for (i=0; i<TFU_MAX_2BIT_TPC; i++) {
5404 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd[i], mBuf);
5406 CMCHKUNPK(SUnpkU8, ¶m->isPucch, mBuf);
5412 /***********************************************************
5414 * Func : cmPkTfuDciFormat3AInfo
5417 * Desc : This structure contains the information carried by DCI format 3A.
5426 **********************************************************/
5428 PUBLIC S16 cmPkTfuDciFormat3AInfo
5430 TfuDciFormat3AInfo *param,
5434 PUBLIC S16 cmPkTfuDciFormat3AInfo(param, mBuf)
5435 TfuDciFormat3AInfo *param;
5441 TRC3(cmPkTfuDciFormat3AInfo)
5442 CMCHKPK(SPkU8, param->isPucch, mBuf);
5443 for (i=TFU_MAX_2BIT_TPC-1; i >= 0; i--) {
5444 CMCHKPK(SPkU8, param->tpcCmd[i], mBuf);
5451 /***********************************************************
5453 * Func : cmUnpkTfuDciFormat3AInfo
5456 * Desc : This structure contains the information carried by DCI format 3A.
5465 **********************************************************/
5467 PUBLIC S16 cmUnpkTfuDciFormat3AInfo
5469 TfuDciFormat3AInfo *param,
5473 PUBLIC S16 cmUnpkTfuDciFormat3AInfo(param, mBuf)
5474 TfuDciFormat3AInfo *param;
5480 TRC3(cmUnpkTfuDciFormat3AInfo)
5482 for (i=0; i<TFU_MAX_2BIT_TPC; i++) {
5483 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd[i], mBuf);
5485 CMCHKUNPK(SUnpkU8, ¶m->isPucch, mBuf);
5492 /***********************************************************
5494 * Func : cmPkTfuDciFormat60aInfo
5497 * Desc : This structure contains the information that is carried in DCI
5507 ************************************************************/
5510 PRIVATE S16 cmPkTfuDciFormat60aInfo
5512 TfuDciFormat60aInfo *param,
5516 PRIVATE S16 cmPkTfuDciFormat60aInfo(param, mBuf)
5517 TfuDciFormat60aInfo *param;
5522 TRC3(cmPkTfuDciFormat60aInfo)
5524 CMCHKPK(SPkU8, param->dciRep, mBuf);
5525 CMCHKPK(SPkU8, param->isSrs, mBuf);
5526 CMCHKPK(SPkU8, param->cqiReq, mBuf);
5528 CMCHKPK(SPkU8, param->dai, mBuf);
5529 CMCHKPK(SPkU8, param->ulIdx, mBuf);
5531 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
5532 CMCHKPK(SPkU8, param->rv, mBuf);
5533 CMCHKPK(SPkU8, param->ndi, mBuf);
5534 CMCHKPK(SPkU8, param->hqProcId, mBuf);
5535 CMCHKPK(SPkU8, param->rep, mBuf);
5536 CMCHKPK(SPkU8, param->mcs, mBuf);
5537 CMCHKPK(SPkU32, param->riv, mBuf);
5538 CMCHKPK(SPkU8, param->hoppingEnbld, mBuf);
5541 /***********************************************************
5543 * Func : cmPkTfuPdcchOrderInfoEmtc
5546 * Desc : This structure contains the information that is carried in DCI
5547 * format 6-1A in the case of a PDCCH order.
5556 **********************************************************/
5558 PRIVATE S16 cmPkTfuPdcchOrderInfoEmtc
5560 TfuPdcchOrderInfoEmtc *param,
5564 PRIVATE S16 cmPkTfuPdcchOrderInfoEmtc(param, mBuf)
5565 TfuPdcchOrderInfoEmtc *param;
5570 TRC3(cmPkTfuPdcchOrderInfoEmtc)
5572 CMCHKPK(SPkU8, param->ceLevel, mBuf);
5573 CMCHKPK(SPkU8, param->prachMaskIdx, mBuf);
5574 CMCHKPK(SPkU8, param->preambleIdx, mBuf);
5575 CMCHKPK(SPkU32, param->riv, mBuf);
5579 /***********************************************************
5581 * Func : cmPkTfudciformat61aPdsch
5584 * Desc : This structure contains the information carried in DCI format 6-1A
5585 * when it is NOT used for a PDCCH order.
5594 **********************************************************/
5596 PRIVATE S16 cmPkTfudciformat61aPdsch
5598 Tfudciformat61aPdsch *param,
5602 PRIVATE S16 cmPkTfudciformat61aPdsch(param, mBuf)
5603 Tfudciformat61aPdsch *param;
5608 TRC3(cmPkTfudciformat61aPdsch)
5610 CMCHKPK(SPkU8, param->isTBMsg4, mBuf);
5611 CMCHKPK(SPkU8, param->dciRep, mBuf);
5612 CMCHKPK(SPkU8, param->harqAckOffst, mBuf);
5613 CMCHKPK(SPkU8, param->pmiCfm, mBuf);
5614 CMCHKPK(SPkU8, param->tPmi, mBuf);
5615 CMCHKPK(SPkU8, param->isSrs, mBuf);
5616 CMCHKPK(SPkU8, param->antPortAndScrId, mBuf);
5619 CMCHKPK(SPkU8, param->dai, mBuf);
5621 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
5622 CMCHKPK(SPkU8, param->rep, mBuf);
5623 CMCHKPK(SPkU8, param->hoppingEnbld, mBuf);
5624 CMCHKPK(cmPkTfuDciFormat6AAllocInfo, ¶m->allocInfo, mBuf);
5629 /***********************************************************
5631 * Func : cmPkTfuDciFormat61aInfo
5634 * Desc : This structure contains the information needed to convey DCI format 6-1A.
5635 * @details Format can possibly carry PDSCH allocation or information needed for
5636 * a PDCCH order, used to initiate a RACH procedure in cases where UE looses
5646 **********************************************************/
5648 PUBLIC S16 cmPkTfuDciFormat61aInfo
5650 TfuDciFormat61aInfo *param,
5654 PUBLIC S16 cmPkTfuDciFormat61aInfo(param, mBuf)
5655 TfuDciFormat61aInfo *param;
5660 TRC3(cmPkTfuDciFormat61aInfo)
5662 switch(param->isPdcchOrder) {
5664 CMCHKPK(cmPkTfudciformat61aPdsch, ¶m->t.pdschInfo, mBuf);
5667 CMCHKPK(cmPkTfuPdcchOrderInfoEmtc, ¶m->t.pdcchOrder, mBuf);
5672 CMCHKPK(SPkU8, param->isPdcchOrder, mBuf);
5677 /***********************************************************
5679 * Func : cmUnpkTfuDciFormat60aInfo
5682 * Desc : This structure contains the information that is carried in DCI
5692 * **********************************************************/
5695 PRIVATE S16 cmUnpkTfuDciFormat60aInfo
5697 TfuDciFormat60aInfo *param,
5701 PRIVATE S16 cmUnpkTfuDciFormat60aInfo(param, mBuf)
5702 TfuDciFormat60aInfo *param;
5707 TRC3(cmUnpkTfuDciFormat60aInfo)
5709 printf("In cmUnpkTfuDciFormat60aInfo :: Entry \n");
5710 CMCHKUNPK(SUnpkU8, ¶m->hoppingEnbld, mBuf);
5711 CMCHKUNPK(SUnpkU32, ¶m->riv, mBuf);
5712 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
5713 CMCHKUNPK(SUnpkU8, ¶m->rep, mBuf);
5714 CMCHKUNPK(SUnpkU8, ¶m->hqProcId, mBuf);
5715 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
5716 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
5717 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
5719 CMCHKUNPK(SUnpkU8, ¶m->ulIdx, mBuf);
5720 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
5722 CMCHKUNPK(SUnpkU8, ¶m->cqiReq, mBuf);
5723 CMCHKUNPK(SUnpkU8, ¶m->isSrs, mBuf);
5724 CMCHKUNPK(SUnpkU8, ¶m->dciRep, mBuf);
5725 printf("In cmUnpkTfuDciFormat60aInfo :: Exit \n");
5728 /***********************************************************
5730 * Func : cmUnpkTfuPdcchOrderInfoEmtc
5733 * Desc : This structure contains the information that is carried in DCI
5734 * format 6-1A in the case of a PDCCH order.
5743 **********************************************************/
5745 PRIVATE S16 cmUnpkTfuPdcchOrderInfoEmtc
5747 TfuPdcchOrderInfoEmtc *param,
5751 PRIVATE S16 cmUnpkTfuPdcchOrderInfoEmtc(param, mBuf)
5752 TfuPdcchOrderInfoEmtc *param;
5757 TRC3(cmUnpkTfuPdcchOrderInfoEmtc)
5759 printf("In cmUnpkTfuPdcchOrderInfoEmtc :: Entry \n");
5760 CMCHKUNPK(SUnpkU32, ¶m->riv, mBuf);
5761 CMCHKUNPK(SUnpkU8, ¶m->preambleIdx, mBuf);
5762 CMCHKUNPK(SUnpkU8, ¶m->prachMaskIdx, mBuf);
5763 CMCHKUNPK(SUnpkU8, ¶m->ceLevel, mBuf);
5764 printf("In cmUnpkTfuPdcchOrderInfoEmtc :: Passed \n");
5768 /***********************************************************
5770 * Func : cmUnpkTfuDciFormat61aInfo
5773 * Desc : This structure contains the information carried by DCI format 6-1A.
5782 **********************************************************/
5784 PUBLIC S16 cmUnpkTfuDciFormat61aInfo
5786 TfuDciFormat61aInfo *param,
5790 PUBLIC S16 cmUnpkTfuDciFormat61aInfo(param, mBuf)
5791 TfuDciFormat61aInfo *param;
5796 TRC3(cmUnpkTfuDciFormat61aInfo)
5798 CMCHKUNPK(SUnpkU8, ¶m->isPdcchOrder, mBuf);
5799 printf("1. cmUnpkTfuDciFormat61aInfo :: isPdcchOrder %d \n", param->isPdcchOrder);
5800 switch(param->isPdcchOrder) {
5802 CMCHKUNPK(cmUnpkTfuPdcchOrderInfoEmtc, ¶m->t.pdcchOrder, mBuf);
5805 CMCHKUNPK(cmUnpkTfudciformat61aPdsch, ¶m->t.pdschInfo, mBuf);
5814 /***********************************************************
5816 * Func : cmPkTfuDciFormat1dAllocInfo
5819 * Desc : This structure contains only the allocation information, thats part
5821 * @details Allocation information also contains parameters necessary
5822 * for Physical layer to process Downlink Data. This structure accompanies the
5823 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
5824 * @sa TfuDciFormat1dInfo
5833 **********************************************************/
5835 PUBLIC S16 cmPkTfuDciFormat1dAllocInfo
5837 TfuDciFormat1dAllocInfo *param,
5841 PUBLIC S16 cmPkTfuDciFormat1dAllocInfo(param, mBuf)
5842 TfuDciFormat1dAllocInfo *param;
5847 TRC3(cmPkTfuDciFormat1dAllocInfo)
5849 CMCHKPK(SPkU8, param->tPmi, mBuf);
5850 CMCHKPK(SPkU8, param->rv, mBuf);
5851 CMCHKPK(SPkU8, param->mcs, mBuf);
5852 CMCHKPK(cmPkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
5853 CMCHKPK(cmPkTknU8, ¶m->nGap2, mBuf);
5854 CMCHKPK(SPkU8, param->isLocal, mBuf);
5860 /***********************************************************
5862 * Func : cmUnpkTfuDciFormat1dAllocInfo
5865 * Desc : This structure contains only the allocation information, thats part
5867 * @details Allocation information also contains parameters necessary
5868 * for Physical layer to process Downlink Data. This structure accompanies the
5869 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
5870 * @sa TfuDciFormat1dInfo
5879 **********************************************************/
5881 PUBLIC S16 cmUnpkTfuDciFormat1dAllocInfo
5883 TfuDciFormat1dAllocInfo *param,
5887 PUBLIC S16 cmUnpkTfuDciFormat1dAllocInfo(param, mBuf)
5888 TfuDciFormat1dAllocInfo *param;
5893 TRC3(cmUnpkTfuDciFormat1dAllocInfo)
5895 CMCHKUNPK(SUnpkU8, ¶m->isLocal, mBuf);
5896 CMCHKUNPK(cmUnpkTknU8, ¶m->nGap2, mBuf);
5897 CMCHKUNPK(cmUnpkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
5898 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
5899 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
5900 CMCHKUNPK(SUnpkU8, ¶m->tPmi, mBuf);
5906 /***********************************************************
5908 * Func : cmPkTfuDciFormat1dInfo
5911 * Desc : This structure contains the information carried by DCI format 1D.
5912 * @details Allocation information is separated from the other control
5913 * information carried in this format. This separation is needed as Data shall
5914 * also carry some control information, essentially allocation information,
5915 * along with it, in order to aid physical layer processing of the data.
5924 **********************************************************/
5926 PUBLIC S16 cmPkTfuDciFormat1dInfo
5928 TfuDciFormat1dInfo *param,
5932 PUBLIC S16 cmPkTfuDciFormat1dInfo(param, mBuf)
5933 TfuDciFormat1dInfo *param;
5938 TRC3(cmPkTfuDciFormat1dInfo)
5940 CMCHKPK(SPkU8, param->dlPwrOffset, mBuf);
5943 CMCHKPK(SPkU8, param->dai, mBuf);
5946 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
5947 CMCHKPK(SPkU8, param->ndi, mBuf);
5948 CMCHKPK(SPkU8, param->harqProcId, mBuf);
5949 CMCHKPK(cmPkTfuDciFormat1dAllocInfo, ¶m->allocInfo, mBuf);
5955 /***********************************************************
5957 * Func : cmUnpkTfuDciFormat1dInfo
5960 * Desc : This structure contains the information carried by DCI format 1D.
5961 * @details Allocation information is separated from the other control
5962 * information carried in this format. This separation is needed as Data shall
5963 * also carry some control information, essentially allocation information,
5964 * along with it, in order to aid physical layer processing of the data.
5973 **********************************************************/
5975 PUBLIC S16 cmUnpkTfuDciFormat1dInfo
5977 TfuDciFormat1dInfo *param,
5981 PUBLIC S16 cmUnpkTfuDciFormat1dInfo(param, mBuf)
5982 TfuDciFormat1dInfo *param;
5987 TRC3(cmUnpkTfuDciFormat1dInfo)
5989 CMCHKUNPK(cmUnpkTfuDciFormat1dAllocInfo, ¶m->allocInfo, mBuf);
5990 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
5991 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
5992 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
5995 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
5998 CMCHKUNPK(SUnpkU8, ¶m->dlPwrOffset, mBuf);
6004 /***********************************************************
6006 * Func : cmPkTfuDciFormat1cInfo
6009 * Desc : This structure contains only the allocation information, thats part
6011 * @details Allocation information also contains parameters necessary
6012 * for Physical layer to process Downlink Data. This structure accompanies the
6013 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6014 * @sa TfuDciFormat1CInfo
6023 **********************************************************/
6025 PUBLIC S16 cmPkTfuDciFormat1cInfo
6027 TfuDciFormat1cInfo *param,
6031 PUBLIC S16 cmPkTfuDciFormat1cInfo(param, mBuf)
6032 TfuDciFormat1cInfo *param;
6037 TRC3(cmPkTfuDciFormat1cInfo)
6039 CMCHKPK(SPkU8, param->iTbs, mBuf);
6040 CMCHKPK(cmPkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
6041 CMCHKPK(cmPkTknU8, ¶m->nGap2, mBuf);
6047 /***********************************************************
6049 * Func : cmUnpkTfuDciFormat1cInfo
6052 * Desc : This structure contains only the allocation information, thats part
6054 * @details Allocation information also contains parameters necessary
6055 * for Physical layer to process Downlink Data. This structure accompanies the
6056 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6057 * @sa TfuDciFormat1CInfo
6066 **********************************************************/
6068 PUBLIC S16 cmUnpkTfuDciFormat1cInfo
6070 TfuDciFormat1cInfo *param,
6074 PUBLIC S16 cmUnpkTfuDciFormat1cInfo(param, mBuf)
6075 TfuDciFormat1cInfo *param;
6080 TRC3(cmUnpkTfuDciFormat1cInfo)
6082 CMCHKUNPK(cmUnpkTknU8, ¶m->nGap2, mBuf);
6083 CMCHKUNPK(cmUnpkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
6084 CMCHKUNPK(SUnpkU8, ¶m->iTbs, mBuf);
6090 /***********************************************************
6092 * Func : cmPkTfuDciFormat1bAllocInfo
6095 * Desc : This structure contains only the allocation information, thats part
6096 * of DCI format 1 B.
6097 * @details Allocation information also contains parameters necessary
6098 * for Physical layer to process Downlink Data. This structure accompanies the
6099 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6100 * @sa TfuDciFormat1BInfo
6109 **********************************************************/
6111 PUBLIC S16 cmPkTfuDciFormat1bAllocInfo
6113 TfuDciFormat1bAllocInfo *param,
6117 PUBLIC S16 cmPkTfuDciFormat1bAllocInfo(param, mBuf)
6118 TfuDciFormat1bAllocInfo *param;
6123 TRC3(cmPkTfuDciFormat1bAllocInfo)
6125 CMCHKPK(SPkU8, param->pmiCfm, mBuf);
6126 CMCHKPK(SPkU8, param->tPmi, mBuf);
6127 CMCHKPK(SPkU8, param->ndi, mBuf);
6128 CMCHKPK(SPkU8, param->harqProcId, mBuf);
6129 CMCHKPK(SPkU8, param->rv, mBuf);
6130 CMCHKPK(SPkU8, param->mcs, mBuf);
6131 CMCHKPK(cmPkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
6132 CMCHKPK(cmPkTknU8, ¶m->nGap2, mBuf);
6133 CMCHKPK(SPkU8, param->isLocal, mBuf);
6139 /***********************************************************
6141 * Func : cmUnpkTfuDciFormat1bAllocInfo
6144 * Desc : This structure contains only the allocation information, thats part
6145 * of DCI format 1 B.
6146 * @details Allocation information also contains parameters necessary
6147 * for Physical layer to process Downlink Data. This structure accompanies the
6148 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6149 * @sa TfuDciFormat1BInfo
6158 **********************************************************/
6160 PUBLIC S16 cmUnpkTfuDciFormat1bAllocInfo
6162 TfuDciFormat1bAllocInfo *param,
6166 PUBLIC S16 cmUnpkTfuDciFormat1bAllocInfo(param, mBuf)
6167 TfuDciFormat1bAllocInfo *param;
6172 TRC3(cmUnpkTfuDciFormat1bAllocInfo)
6174 CMCHKUNPK(SUnpkU8, ¶m->isLocal, mBuf);
6175 CMCHKUNPK(cmUnpkTknU8, ¶m->nGap2, mBuf);
6176 CMCHKUNPK(cmUnpkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
6177 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
6178 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
6179 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
6180 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
6181 CMCHKUNPK(SUnpkU8, ¶m->tPmi, mBuf);
6182 CMCHKUNPK(SUnpkU8, ¶m->pmiCfm, mBuf);
6188 /***********************************************************
6190 * Func : cmPkTfuPdcchOrderInfo
6193 * Desc : This structure contains the information that is carried in DCI
6194 * format 1A in the case of a PDCCH order.
6203 **********************************************************/
6205 PUBLIC S16 cmPkTfuPdcchOrderInfo
6207 TfuPdcchOrderInfo *param,
6211 PUBLIC S16 cmPkTfuPdcchOrderInfo(param, mBuf)
6212 TfuPdcchOrderInfo *param;
6217 TRC3(cmPkTfuPdcchOrderInfo)
6219 CMCHKPK(SPkU8, param->prachMaskIdx, mBuf);
6220 CMCHKPK(SPkU8, param->preambleIdx, mBuf);
6226 /***********************************************************
6228 * Func : cmUnpkTfuPdcchOrderInfo
6231 * Desc : This structure contains the information that is carried in DCI
6232 * format 1A in the case of a PDCCH order.
6241 **********************************************************/
6243 PUBLIC S16 cmUnpkTfuPdcchOrderInfo
6245 TfuPdcchOrderInfo *param,
6249 PUBLIC S16 cmUnpkTfuPdcchOrderInfo(param, mBuf)
6250 TfuPdcchOrderInfo *param;
6255 TRC3(cmUnpkTfuPdcchOrderInfo)
6257 CMCHKUNPK(SUnpkU8, ¶m->preambleIdx, mBuf);
6258 CMCHKUNPK(SUnpkU8, ¶m->prachMaskIdx, mBuf);
6264 /***********************************************************
6266 * Func : cmPkTfuDciFormat1aAllocInfo
6269 * Desc : This structure contains only the allocation information, thats part
6271 * @details Allocation information also contains parameters necessary
6272 * for Physical layer to process Downlink Data. This structure accompanies the
6273 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6274 * @sa TfuDciFormat1AInfo
6283 **********************************************************/
6285 PUBLIC S16 cmPkTfuDciFormat1aAllocInfo
6287 TfuDciFormat1aAllocInfo *param,
6291 PUBLIC S16 cmPkTfuDciFormat1aAllocInfo(param, mBuf)
6292 TfuDciFormat1aAllocInfo *param;
6297 TRC3(cmPkTfuDciFormat1aAllocInfo)
6299 CMCHKPK(SPkU8, param->ndi, mBuf);
6300 CMCHKPK(cmPkTknU8, ¶m->harqProcId, mBuf);
6301 CMCHKPK(SPkU8, param->rv, mBuf);
6302 CMCHKPK(SPkU8, param->mcs, mBuf);
6303 CMCHKPK(cmPkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
6304 CMCHKPK(cmPkTknU8, ¶m->nGap2, mBuf);
6305 CMCHKPK(SPkU8, param->isLocal, mBuf);
6311 /***********************************************************
6313 * Func : cmUnpkTfuDciFormat1aAllocInfo
6316 * Desc : This structure contains only the allocation information, thats part
6318 * @details Allocation information also contains parameters necessary
6319 * for Physical layer to process Downlink Data. This structure accompanies the
6320 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6321 * @sa TfuDciFormat1AInfo
6330 **********************************************************/
6332 PUBLIC S16 cmUnpkTfuDciFormat1aAllocInfo
6334 TfuDciFormat1aAllocInfo *param,
6338 PUBLIC S16 cmUnpkTfuDciFormat1aAllocInfo(param, mBuf)
6339 TfuDciFormat1aAllocInfo *param;
6344 TRC3(cmUnpkTfuDciFormat1aAllocInfo)
6346 CMCHKUNPK(SUnpkU8, ¶m->isLocal, mBuf);
6347 CMCHKUNPK(cmUnpkTknU8, ¶m->nGap2, mBuf);
6348 CMCHKUNPK(cmUnpkTfuAllocMapOrRiv, ¶m->alloc, mBuf);
6349 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
6350 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
6351 CMCHKUNPK(cmUnpkTknU8, ¶m->harqProcId, mBuf);
6352 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
6358 /***********************************************************
6360 * Func : cmPkTfudciformat1aPdsch
6363 * Desc : This structure contains the information carried in DCI format 1A
6364 * when it is NOT used for a PDCCH order.
6373 **********************************************************/
6375 PUBLIC S16 cmPkTfudciformat1aPdsch
6377 Tfudciformat1aPdsch *param,
6381 PUBLIC S16 cmPkTfudciformat1aPdsch(param, mBuf)
6382 Tfudciformat1aPdsch *param;
6387 TRC3(cmPkTfudciformat1aPdsch)
6389 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
6392 CMCHKPK(cmPkTknU8, ¶m->dai, mBuf);
6395 CMCHKPK(cmPkTfuDciFormat1aAllocInfo, ¶m->allocInfo, mBuf);
6401 /***********************************************************
6403 * Func : cmUnpkTfudciformat1aPdsch
6406 * Desc : This structure contains the information carried in DCI format 1A
6407 * when it is NOT used for a PDCCH order.
6416 **********************************************************/
6418 PUBLIC S16 cmUnpkTfudciformat1aPdsch
6420 Tfudciformat1aPdsch *param,
6424 PUBLIC S16 cmUnpkTfudciformat1aPdsch(param, mBuf)
6425 Tfudciformat1aPdsch *param;
6430 TRC3(cmUnpkTfudciformat1aPdsch)
6432 CMCHKUNPK(cmUnpkTfuDciFormat1aAllocInfo, ¶m->allocInfo, mBuf);
6435 CMCHKUNPK(cmUnpkTknU8, ¶m->dai, mBuf);
6438 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
6445 /***********************************************************
6447 * Func : cmUnpkTfudciformat61aPdsch
6450 * Desc : This structure contains the information carried in DCI format 6-1A
6451 * when it is NOT used for a PDCCH order.
6460 **********************************************************/
6462 PUBLIC S16 cmUnpkTfudciformat61aPdsch
6464 Tfudciformat61aPdsch *param,
6468 PUBLIC S16 cmUnpkTfudciformat61aPdsch(param, mBuf)
6469 Tfudciformat61aPdsch *param;
6474 TRC3(cmUnpkTfudciformat61aPdsch)
6476 printf("1. cmUnpkTfudciformat61aPdsch :: Entry \n");
6477 CMCHKUNPK(cmUnpkTfuDciFormat6AAllocInfo, ¶m->allocInfo, mBuf);
6478 printf("2. cmUnpkTfudciformat61aPdsch :: Entry \n");
6479 CMCHKUNPK(SUnpkU8, ¶m->hoppingEnbld, mBuf);
6480 printf("3. cmUnpkTfudciformat61aPdsch :: Entry \n");
6481 CMCHKUNPK(SUnpkU8, ¶m->rep, mBuf);
6482 printf("4. cmUnpkTfudciformat61aPdsch :: Entry \n");
6483 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
6484 printf("5. cmUnpkTfudciformat61aPdsch :: Entry \n");
6486 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
6487 printf("6. cmUnpkTfudciformat61aPdsch :: Entry \n");
6489 CMCHKUNPK(SUnpkU8, ¶m->antPortAndScrId, mBuf);
6490 printf("7. cmUnpkTfudciformat61aPdsch :: Entry \n");
6491 CMCHKUNPK(SUnpkU8, ¶m->isSrs, mBuf);
6492 printf("8. cmUnpkTfudciformat61aPdsch :: Entry \n");
6493 CMCHKUNPK(SUnpkU8, ¶m->tPmi, mBuf);
6494 printf("9. cmUnpkTfudciformat61aPdsch :: Entry \n");
6495 CMCHKUNPK(SUnpkU8, ¶m->pmiCfm, mBuf);
6496 printf("10. cmUnpkTfudciformat61aPdsch :: Entry \n");
6497 CMCHKUNPK(SUnpkU8, ¶m->harqAckOffst, mBuf);
6498 printf("11. cmUnpkTfudciformat61aPdsch :: Entry \n");
6499 CMCHKUNPK(SUnpkU8, ¶m->dciRep, mBuf);
6500 printf("12. cmUnpkTfudciformat61aPdsch :: Entry \n");
6501 CMCHKUNPK(SUnpkU8, ¶m->isTBMsg4, mBuf);
6502 printf("1. cmUnpkTfudciformat61aPdsch :: Passed \n");
6505 /***********************************************************
6507 * Func : cmUnpkTfuDirectIndication
6510 * Desc : This structure contains the information that is carried in DCI
6511 * format 6-2 in the case of a Direct information indication.
6520 **********************************************************/
6522 PRIVATE S16 cmUnpkTfuDirectIndication
6524 TfuDirectIndication *param,
6528 PRIVATE S16 cmUnpkTfuDirectIndication(param, mBuf)
6529 TfuDirectIndication *param;
6534 TRC3(cmUnpkTfuDirectIndication)
6535 CMCHKUNPK(SUnpkU8, ¶m->directInd, mBuf);
6541 /***********************************************************
6543 * Func : cmUnpkTfuDciFormat62AllocInfo
6546 * Desc : This structure contains only the allocation information, that is part
6547 * of DCI format 6-2.
6548 * @details Allocation information also contains parameters necessary
6549 * for Physical layer to process Downlink data. This structure accompanies the
6550 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6551 * @sa TfuDciFormat62Info
6560 **********************************************************/
6562 PUBLIC S16 cmUnpkTfuDciFormat62AllocInfo
6564 TfuDciFormat62AllocInfo *param,
6568 PUBLIC S16 cmUnpkTfuDciFormat62AllocInfo(param, mBuf)
6569 TfuDciFormat62AllocInfo *param;
6573 TRC3(cmUnpkTfuDciFormat62AllocInfo)
6574 CMCHKUNPK(SUnpkU8, ¶m->riv, mBuf);
6575 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
6576 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
6581 /***********************************************************
6583 * Func : cmUnpkTfudciformat62Pdsch
6586 * Desc : This structure contains the information carried in DCI format 6-2
6587 * when It is used for Paging message.
6596 **********************************************************/
6598 PRIVATE S16 cmUnpkTfudciformat62Pdsch
6600 Tfudciformat62Pdsch *param,
6604 PRIVATE S16 cmUnpkTfudciformat62Pdsch(param, mBuf)
6605 Tfudciformat62Pdsch *param;
6610 TRC3(cmUnpkTfudciformat62Pdsch)
6613 CMCHKUNPK(cmUnpkTfuDciFormat62AllocInfo, ¶m->format62AllocInfo, mBuf);
6614 CMCHKUNPK(SUnpkU8, ¶m->repNum, mBuf);
6615 CMCHKUNPK(SUnpkU8, ¶m->dciSubRepNum, mBuf);
6620 /***********************************************************
6622 * Func : cmUnpkTfuDciFormat62Info
6625 * Desc : This structure contains the information needed to convey DCI format 6-2.
6626 * @details Format can possibly carry PDSCH allocation or information needed for
6627 * a Direct information Indication.
6637 **********************************************************/
6639 PUBLIC S16 cmUnpkTfuDciFormat62Info
6641 TfuDciFormat62Info *param,
6645 PUBLIC S16 cmUnpkTfuDciFormat62Info(param, mBuf)
6646 TfuDciFormat62Info *param;
6651 TRC3(cmUnpkTfuDciFormat62Info)
6652 CMCHKUNPK(SUnpkU8, ¶m->isPaging, mBuf);
6653 switch(param->isPaging) {
6655 CMCHKUNPK(cmUnpkTfuDirectIndication, ¶m->t.directIndication, mBuf);
6658 CMCHKUNPK(cmUnpkTfudciformat62Pdsch, ¶m->t.pdschInfo, mBuf);
6679 /***********************************************************
6681 * Func : cmPkTfuDirectIndication
6684 * Desc : This structure contains the information that is carried in DCI
6685 * format 6-2 in the case of a Direct information indication.
6694 **********************************************************/
6696 PRIVATE S16 cmPkTfuDirectIndication
6698 TfuDirectIndication *param,
6702 PRIVATE S16 cmPkTfuDirectIndication(param, mBuf)
6703 TfuDirectIndication *param;
6708 TRC3(cmPkTfuDirectIndication)
6709 CMCHKPK(SPkU8, param->directInd, mBuf);
6717 /***********************************************************
6719 * Func : cmPkTfuDciFormat62AllocInfo
6722 * Desc : This structure contains only the allocation information, that is part
6723 * of DCI format 6-2.
6724 * @details Allocation information also contains parameters necessary
6725 * for Physical layer to process Downlink data. This structure accompanies the
6726 * Data that is sent from MAC to PHY in the TfUiTfuDatReq primitive.
6727 * @sa TfuDciFormat62Info
6736 **********************************************************/
6738 PUBLIC S16 cmPkTfuDciFormat62AllocInfo
6740 TfuDciFormat62AllocInfo *param,
6744 PUBLIC S16 cmPkTfuDciFormat62AllocInfo(param, mBuf)
6745 TfuDciFormat62AllocInfo *param;
6750 TRC3(cmPkTfuDciFormat6AAllocInfo)
6752 CMCHKPK(SPkU8, param->rv, mBuf);
6753 CMCHKPK(SPkU8, param->mcs, mBuf);
6754 CMCHKPK(SPkU8, param->riv, mBuf);
6761 /***********************************************************
6763 * Func : cmPkTfudciformat62Pdsch
6766 * Desc : This structure contains the information carried in DCI format 6-2
6767 * when It is used for Paging message.
6776 **********************************************************/
6778 PRIVATE S16 cmPkTfudciformat62Pdsch
6780 Tfudciformat62Pdsch *param,
6784 PRIVATE S16 cmPkTfudciformat62Pdsch(param, mBuf)
6785 Tfudciformat62Pdsch *param;
6790 TRC3(cmPkTfudciformat62Pdsch)
6791 CMCHKPK(SPkU8, param->dciSubRepNum, mBuf);
6792 CMCHKPK(SPkU8, param->repNum, mBuf);
6793 CMCHKPK(cmPkTfuDciFormat62AllocInfo, ¶m->format62AllocInfo, mBuf);
6800 /***********************************************************
6802 * Func : cmPkTfuDciFormat62Info
6805 * Desc : This structure contains the information needed to convey DCI format 6-2.
6806 * @details Format can possibly carry PDSCH allocation or information needed for
6807 * a Direct information Indication.
6817 **********************************************************/
6819 PUBLIC S16 cmPkTfuDciFormat62Info
6821 TfuDciFormat62Info *param,
6825 PUBLIC S16 cmPkTfuDciFormat62Info(param, mBuf)
6826 TfuDciFormat62Info *param;
6831 TRC3(cmPkTfuDciFormat62Info)
6833 switch(param->isPaging) {
6835 CMCHKPK(cmPkTfudciformat62Pdsch, ¶m->t.pdschInfo, mBuf);
6838 CMCHKPK(cmPkTfuDirectIndication, ¶m->t.directIndication, mBuf);
6843 CMCHKPK(SPkU8, param->isPaging, mBuf);
6856 /***********************************************************
6858 * Func : cmPkTfuDciFormat1aInfo
6861 * Desc : This structure contains the information needed to convey DCI format 1A.
6862 * @details Format can possibly carry PDSCH allocation or information needed for
6863 * a PDCCH order, used to initiate a RACH procedure in cases where UE looses
6873 **********************************************************/
6875 PUBLIC S16 cmPkTfuDciFormat1aInfo
6877 TfuDciFormat1aInfo *param,
6881 PUBLIC S16 cmPkTfuDciFormat1aInfo(param, mBuf)
6882 TfuDciFormat1aInfo *param;
6887 TRC3(cmPkTfuDciFormat1aInfo)
6889 switch(param->isPdcchOrder) {
6891 CMCHKPK(cmPkTfudciformat1aPdsch, ¶m->t.pdschInfo, mBuf);
6894 CMCHKPK(cmPkTfuPdcchOrderInfo, ¶m->t.pdcchOrder, mBuf);
6899 CMCHKPK(SPkU8, param->isPdcchOrder, mBuf);
6906 /***********************************************************
6908 * Func : cmUnpkTfuDciFormat1aInfo
6911 * Desc : This structure contains the information needed to convey DCI format 1A.
6912 * @details Format can possibly carry PDSCH allocation or information needed for
6913 * a PDCCH order, used to initiate a RACH procedure in cases where UE looses
6923 **********************************************************/
6925 PUBLIC S16 cmUnpkTfuDciFormat1aInfo
6927 TfuDciFormat1aInfo *param,
6931 PUBLIC S16 cmUnpkTfuDciFormat1aInfo(param, mBuf)
6932 TfuDciFormat1aInfo *param;
6937 TRC3(cmUnpkTfuDciFormat1aInfo)
6939 CMCHKUNPK(SUnpkU8, ¶m->isPdcchOrder, mBuf);
6940 switch(param->isPdcchOrder) {
6942 CMCHKUNPK(cmUnpkTfuPdcchOrderInfo, ¶m->t.pdcchOrder, mBuf);
6945 CMCHKUNPK(cmUnpkTfudciformat1aPdsch, ¶m->t.pdschInfo, mBuf);
6955 /***********************************************************
6957 * Func : cmPkTfuDciFormat1bInfo
6960 * Desc : This structure contains the information needed to convey DCI format 1A.
6961 * @details Allocation information is separated from the other control
6962 * information carried in this format. This separation is needed as Data shall
6963 * also carry some control information, essentially allocation information,
6964 * along with it, in order to aid physical layer processing of the data.
6973 **********************************************************/
6975 PUBLIC S16 cmPkTfuDciFormat1bInfo
6977 TfuDciFormat1bInfo *param,
6981 PUBLIC S16 cmPkTfuDciFormat1bInfo(param, mBuf)
6982 TfuDciFormat1bInfo *param;
6987 TRC3(cmPkTfuDciFormat1bInfo)
6989 CMCHKPK(SPkU8, param->tpcCmd, mBuf);
6992 CMCHKPK(SPkU8, param->dai, mBuf);
6995 CMCHKPK(cmPkTfuDciFormat1bAllocInfo, ¶m->allocInfo, mBuf);
7001 /***********************************************************
7003 * Func : cmUnpkTfuDciFormat1bInfo
7006 * Desc : This structure contains the information needed to convey DCI format 1A.
7007 * @details Allocation information is separated from the other control
7008 * information carried in this format. This separation is needed as Data shall
7009 * also carry some control information, essentially allocation information,
7010 * along with it, in order to aid physical layer processing of the data.
7019 **********************************************************/
7021 PUBLIC S16 cmUnpkTfuDciFormat1bInfo
7023 TfuDciFormat1bInfo *param,
7027 PUBLIC S16 cmUnpkTfuDciFormat1bInfo(param, mBuf)
7028 TfuDciFormat1bInfo *param;
7033 TRC3(cmUnpkTfuDciFormat1bInfo)
7035 CMCHKUNPK(cmUnpkTfuDciFormat1bAllocInfo, ¶m->allocInfo, mBuf);
7038 CMCHKUNPK(SUnpkU8, ¶m->dai, mBuf);
7041 CMCHKUNPK(SUnpkU8, ¶m->tpcCmd, mBuf);
7047 /***********************************************************
7049 * Func : cmPkTfuDciInfo
7052 * Desc : This structure contains the information needed to convey the possible DCI
7053 * formats. The following are the supported formats -
7054 * -# Format 0 - used for PUSCH scheduling
7055 * -# Format 1 - used for PDSCH scheduling
7056 * -# Format 1A - used for compact scheduling of PDSCH or RA procedure
7057 * intitiated by a PDCCH order.
7058 * -# Format 1B - used for compact scheduling of PDSCH with precoding
7060 * -# Format 1C - used for very compact scheduling of PDSCH.
7061 * -# Format 1D - used for compact scheduling for PDSCH with precoding
7062 * information with power offset.
7063 * -# Format 2 - used for PDSCH Scheduling
7064 * -# Format 2A - used for PDSCH Scheduling
7065 * -# Format 3 - used for power control
7066 * -# Format 3A - used for power control
7075 **********************************************************/
7077 PUBLIC S16 cmPkTfuDciInfo
7083 PUBLIC S16 cmPkTfuDciInfo(param, mBuf)
7089 TRC3(cmPkTfuDciInfo)
7091 switch(param->dciFormat) {
7093 case TFU_DCI_FORMAT_B1:
7094 CMCHKPK(cmPkTfuDciFormatB1B2Info, ¶m->u.formatB1Info, mBuf);
7096 case TFU_DCI_FORMAT_B2:
7097 CMCHKPK(cmPkTfuDciFormatB1B2Info, ¶m->u.formatB2Info, mBuf);
7099 case TFU_DCI_FORMAT_A1:
7100 CMCHKPK(cmPkTfuDciFormatA1A2Info, ¶m->u.formatA1Info, mBuf);
7102 case TFU_DCI_FORMAT_A2:
7103 CMCHKPK(cmPkTfuDciFormatA1A2Info, ¶m->u.formatA2Info, mBuf);
7107 case TFU_DCI_FORMAT_6_2:
7108 CMCHKPK(cmPkTfuDciFormat62Info, ¶m->u.format62Info, mBuf);
7110 case TFU_DCI_FORMAT_6_1A:
7111 CMCHKPK(cmPkTfuDciFormat61aInfo, ¶m->u.format61aInfo, mBuf);
7113 case TFU_DCI_FORMAT_6_0A:
7114 CMCHKPK(cmPkTfuDciFormat60aInfo, ¶m->u.format60aInfo, mBuf);
7117 case TFU_DCI_FORMAT_3A:
7118 CMCHKPK(cmPkTfuDciFormat3AInfo, ¶m->u.format3AInfo, mBuf);
7120 case TFU_DCI_FORMAT_3:
7121 CMCHKPK(cmPkTfuDciFormat3Info, ¶m->u.format3Info, mBuf);
7123 case TFU_DCI_FORMAT_2A:
7124 CMCHKPK(cmPkTfuDciFormat2AInfo, ¶m->u.format2AInfo, mBuf);
7126 case TFU_DCI_FORMAT_2:
7127 CMCHKPK(cmPkTfuDciFormat2Info, ¶m->u.format2Info, mBuf);
7129 case TFU_DCI_FORMAT_1D:
7130 CMCHKPK(cmPkTfuDciFormat1dInfo, ¶m->u.format1dInfo, mBuf);
7132 case TFU_DCI_FORMAT_1C:
7133 CMCHKPK(cmPkTfuDciFormat1cInfo, ¶m->u.format1cInfo, mBuf);
7135 case TFU_DCI_FORMAT_1B:
7136 CMCHKPK(cmPkTfuDciFormat1bInfo, ¶m->u.format1bInfo, mBuf);
7138 case TFU_DCI_FORMAT_1A:
7139 CMCHKPK(cmPkTfuDciFormat1aInfo, ¶m->u.format1aInfo, mBuf);
7141 case TFU_DCI_FORMAT_1:
7142 CMCHKPK(cmPkTfuDciFormat1Info, ¶m->u.format1Info, mBuf);
7144 case TFU_DCI_FORMAT_0:
7145 CMCHKPK(cmPkTfuDciFormat0Info, ¶m->u.format0Info, mBuf);
7150 CMCHKPK(SPkU32, param->dciFormat, mBuf);
7156 /***********************************************************
7158 * Func : cmUnpkTfuDciInfo
7161 * Desc : This structure contains the information needed to convey the possible DCI
7162 * formats. The following are the supported formats -
7163 * -# Format 0 - used for PUSCH scheduling
7164 * -# Format 1 - used for PDSCH scheduling
7165 * -# Format 1A - used for compact scheduling of PDSCH or RA procedure
7166 * intitiated by a PDCCH order.
7167 * -# Format 1B - used for compact scheduling of PDSCH with precoding
7169 * -# Format 1C - used for very compact scheduling of PDSCH.
7170 * -# Format 1D - used for compact scheduling for PDSCH with precoding
7171 * information with power offset.
7172 * -# Format 2 - used for PDSCH Scheduling
7173 * -# Format 2A - used for PDSCH Scheduling
7174 * -# Format 3 - used for power control
7175 * -# Format 3A - used for power control
7184 **********************************************************/
7186 PUBLIC S16 cmUnpkTfuDciInfo
7192 PUBLIC S16 cmUnpkTfuDciInfo(param, mBuf)
7198 TRC3(cmUnpkTfuDciInfo)
7201 CMCHKUNPK(SUnpkU32, (U32 *)¶m->dciFormat, mBuf);
7202 switch(param->dciFormat) {
7203 case TFU_DCI_FORMAT_0:
7204 CMCHKUNPK(cmUnpkTfuDciFormat0Info, ¶m->u.format0Info, mBuf);
7206 case TFU_DCI_FORMAT_1:
7207 CMCHKUNPK(cmUnpkTfuDciFormat1Info, ¶m->u.format1Info, mBuf);
7209 case TFU_DCI_FORMAT_1A:
7210 CMCHKUNPK(cmUnpkTfuDciFormat1aInfo, ¶m->u.format1aInfo, mBuf);
7212 case TFU_DCI_FORMAT_1B:
7213 CMCHKUNPK(cmUnpkTfuDciFormat1bInfo, ¶m->u.format1bInfo, mBuf);
7215 case TFU_DCI_FORMAT_1C:
7216 CMCHKUNPK(cmUnpkTfuDciFormat1cInfo, ¶m->u.format1cInfo, mBuf);
7218 case TFU_DCI_FORMAT_1D:
7219 CMCHKUNPK(cmUnpkTfuDciFormat1dInfo, ¶m->u.format1dInfo, mBuf);
7221 case TFU_DCI_FORMAT_2:
7222 CMCHKUNPK(cmUnpkTfuDciFormat2Info, ¶m->u.format2Info, mBuf);
7224 case TFU_DCI_FORMAT_2A:
7225 CMCHKUNPK(cmUnpkTfuDciFormat2AInfo, ¶m->u.format2AInfo, mBuf);
7227 case TFU_DCI_FORMAT_3:
7228 CMCHKUNPK(cmUnpkTfuDciFormat3Info, ¶m->u.format3Info, mBuf);
7230 case TFU_DCI_FORMAT_3A:
7231 CMCHKUNPK(cmUnpkTfuDciFormat3AInfo, ¶m->u.format3AInfo, mBuf);
7234 case TFU_DCI_FORMAT_6_0A:
7235 CMCHKUNPK(cmUnpkTfuDciFormat60aInfo, ¶m->u.format60aInfo, mBuf);
7236 printf("2. cmUnpkTfuDciInfo :: dciFormat %d \n", param->dciFormat);
7238 case TFU_DCI_FORMAT_6_1A:
7239 CMCHKUNPK(cmUnpkTfuDciFormat61aInfo, ¶m->u.format61aInfo, mBuf);
7240 printf("2. cmUnpkTfuDciInfo :: dciFormat %d \n", param->dciFormat);
7242 case TFU_DCI_FORMAT_6_2:
7243 CMCHKUNPK(cmUnpkTfuDciFormat62Info, ¶m->u.format62Info, mBuf);
7248 case TFU_DCI_FORMAT_A1:
7249 CMCHKUNPK(cmUnpkTfuDciFormatA1A2Info, ¶m->u.formatA1Info, mBuf);
7251 case TFU_DCI_FORMAT_A2:
7252 CMCHKUNPK(cmUnpkTfuDciFormatA1A2Info, ¶m->u.formatA2Info, mBuf);
7254 case TFU_DCI_FORMAT_B1:
7255 CMCHKUNPK(cmUnpkTfuDciFormatB1B2Info, ¶m->u.formatB1Info, mBuf);
7257 case TFU_DCI_FORMAT_B2:
7258 CMCHKUNPK(cmUnpkTfuDciFormatB1B2Info, ¶m->u.formatB2Info, mBuf);
7269 /***********************************************************
7271 * Func : cmPkTfuSubbandInfo
7274 * Desc : This structure contains the information needed to convey the start and size
7275 * of the subband in the CQI report.
7284 **********************************************************/
7286 PUBLIC S16 cmPkTfuSubbandInfo
7288 TfuSubbandInfo *param,
7292 PUBLIC S16 cmPkTfuSubbandInfo(param, mBuf)
7293 TfuSubbandInfo *param;
7298 TRC3(cmPkTfuSubbandInfo)
7300 CMCHKPK(SPkU8, param->numRb, mBuf);
7301 CMCHKPK(SPkU8, param->rbStart, mBuf);
7307 /***********************************************************
7309 * Func : cmUnpkTfuSubbandInfo
7312 * Desc : This structure contains the information needed to convey the start and size
7313 * of the subband in the CQI report.
7322 **********************************************************/
7324 PUBLIC S16 cmUnpkTfuSubbandInfo
7326 TfuSubbandInfo *param,
7330 PUBLIC S16 cmUnpkTfuSubbandInfo(param, mBuf)
7331 TfuSubbandInfo *param;
7336 TRC3(cmUnpkTfuSubbandInfo)
7338 CMCHKUNPK(SUnpkU8, ¶m->rbStart, mBuf);
7339 CMCHKUNPK(SUnpkU8, ¶m->numRb, mBuf);
7346 /***********************************************************
7348 * Func : cmPkTfuSubbandCqiInfo
7351 * Desc : This structure is used to convey the subbannd CQI reported.
7360 **********************************************************/
7362 PUBLIC S16 cmPkTfuSubbandCqiInfo
7364 TfuSubbandCqiInfo *param,
7368 PUBLIC S16 cmPkTfuSubbandCqiInfo(param, mBuf)
7369 TfuSubbandCqiInfo *param;
7374 TRC3(cmPkTfuSubbandCqiInfo)
7376 CMCHKPK(SPkU8, param->cqiIdx, mBuf);
7377 CMCHKPK(cmPkTfuSubbandInfo, ¶m->subband, mBuf);
7383 /***********************************************************
7385 * Func : cmUnpkTfuSubbandCqiInfo
7388 * Desc : This structure is used to convey the subbannd CQI reported.
7397 **********************************************************/
7399 PUBLIC S16 cmUnpkTfuSubbandCqiInfo
7401 TfuSubbandCqiInfo *param,
7405 PUBLIC S16 cmUnpkTfuSubbandCqiInfo(param, mBuf)
7406 TfuSubbandCqiInfo *param;
7411 TRC3(cmUnpkTfuSubbandCqiInfo)
7413 CMCHKUNPK(cmUnpkTfuSubbandInfo, ¶m->subband, mBuf);
7414 CMCHKUNPK(SUnpkU8, ¶m->cqiIdx, mBuf);
7420 /***********************************************************
7422 * Func : cmPkTfuPdcchCceInfo
7425 * Desc : This structure conveys the CCE information.
7434 **********************************************************/
7436 PUBLIC S16 cmPkTfuPdcchCceInfo
7438 TfuPdcchCceInfo *param,
7442 PUBLIC S16 cmPkTfuPdcchCceInfo(param, mBuf)
7443 TfuPdcchCceInfo *param;
7448 TRC3(cmPkTfuPdcchCceInfo)
7450 CMCHKPK(cmPkLteAggrLvl, param->aggrLvl, mBuf);
7451 CMCHKPK(SPkU8, param->cceIdx, mBuf);
7457 /***********************************************************
7459 * Func : cmUnpkTfuPdcchCceInfo
7462 * Desc : This structure conveys the CCE information.
7471 **********************************************************/
7473 PUBLIC S16 cmUnpkTfuPdcchCceInfo
7475 TfuPdcchCceInfo *param,
7479 PUBLIC S16 cmUnpkTfuPdcchCceInfo(param, mBuf)
7480 TfuPdcchCceInfo *param;
7485 TRC3(cmUnpkTfuPdcchCceInfo)
7487 CMCHKUNPK(SUnpkU8, ¶m->cceIdx, mBuf);
7488 CMCHKUNPK(cmUnpkLteAggrLvl,(U32 *)¶m->aggrLvl, mBuf);
7494 /***********************************************************
7496 * Func : cmPkTfuCqiPucchMode10
7499 * Desc : This structure maps to the CQI mode 10. The report could either
7500 * convey a Rank index or a wideband CQI.
7509 **********************************************************/
7511 PUBLIC S16 cmPkTfuCqiPucchMode10
7513 TfuCqiPucchMode10 *param,
7517 PUBLIC S16 cmPkTfuCqiPucchMode10(param, mBuf)
7518 TfuCqiPucchMode10 *param;
7523 TRC3(cmPkTfuCqiPucchMode10)
7525 switch(param->type) {
7527 CMCHKPK(SPkU8, param->u.cqi, mBuf);
7530 CMCHKPK(SPkU8, param->u.ri, mBuf);
7535 CMCHKPK(SPkU32, param->type, mBuf);
7541 /***********************************************************
7543 * Func : cmUnpkTfuCqiPucchMode10
7546 * Desc : This structure maps to the CQI mode 10. The report could either
7547 * convey a Rank index or a wideband CQI.
7556 **********************************************************/
7558 PUBLIC S16 cmUnpkTfuCqiPucchMode10
7560 TfuCqiPucchMode10 *param,
7564 PUBLIC S16 cmUnpkTfuCqiPucchMode10(param, mBuf)
7565 TfuCqiPucchMode10 *param;
7570 TRC3(cmUnpkTfuCqiPucchMode10)
7572 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
7573 switch(param->type) {
7575 CMCHKUNPK(SUnpkU8, ¶m->u.ri, mBuf);
7578 CMCHKUNPK(SUnpkU8, ¶m->u.cqi, mBuf);
7588 /***********************************************************
7590 * Func : cmPkTfuCqiMode11Cqi
7593 * Desc : This structure contains a wideband CQI, PMI and optionally a
7594 * wideband differential CQI.
7603 **********************************************************/
7605 PUBLIC S16 cmPkTfuCqiMode11Cqi
7607 TfuCqiMode11Cqi *param,
7611 PUBLIC S16 cmPkTfuCqiMode11Cqi(param, mBuf)
7612 TfuCqiMode11Cqi *param;
7617 TRC3(cmPkTfuCqiMode11Cqi)
7619 CMCHKPK(cmPkTknU8, ¶m->wideDiffCqi, mBuf);
7620 CMCHKPK(SPkU8, param->pmi, mBuf);
7621 CMCHKPK(SPkU8, param->cqi, mBuf);
7627 /***********************************************************
7629 * Func : cmUnpkTfuCqiMode11Cqi
7632 * Desc : This structure contains a wideband CQI, PMI and optionally a
7633 * wideband differential CQI.
7642 **********************************************************/
7644 PUBLIC S16 cmUnpkTfuCqiMode11Cqi
7646 TfuCqiMode11Cqi *param,
7650 PUBLIC S16 cmUnpkTfuCqiMode11Cqi(param, mBuf)
7651 TfuCqiMode11Cqi *param;
7656 TRC3(cmUnpkTfuCqiMode11Cqi)
7658 CMCHKUNPK(SUnpkU8, ¶m->cqi, mBuf);
7659 CMCHKUNPK(SUnpkU8, ¶m->pmi, mBuf);
7660 CMCHKUNPK(cmUnpkTknU8, ¶m->wideDiffCqi, mBuf);
7666 /***********************************************************
7668 * Func : cmPkTfuCqiPucchMode11
7671 * Desc : This structure maps to the CQI mode 11. The report could either
7672 * convey a Rank index or a CQI report.
7681 **********************************************************/
7683 PUBLIC S16 cmPkTfuCqiPucchMode11
7685 TfuCqiPucchMode11 *param,
7689 PUBLIC S16 cmPkTfuCqiPucchMode11(param, mBuf)
7690 TfuCqiPucchMode11 *param;
7695 TRC3(cmPkTfuCqiPucchMode11)
7697 switch(param->type) {
7699 CMCHKPK(cmPkTfuCqiMode11Cqi, ¶m->u.cqi, mBuf);
7702 CMCHKPK(SPkU8, param->u.ri, mBuf);
7707 CMCHKPK(SPkU32, param->type, mBuf);
7713 /***********************************************************
7715 * Func : cmUnpkTfuCqiPucchMode11
7718 * Desc : This structure maps to the CQI mode 11. The report could either
7719 * convey a Rank index or a CQI report.
7728 **********************************************************/
7730 PUBLIC S16 cmUnpkTfuCqiPucchMode11
7732 TfuCqiPucchMode11 *param,
7736 PUBLIC S16 cmUnpkTfuCqiPucchMode11(param, mBuf)
7737 TfuCqiPucchMode11 *param;
7742 TRC3(cmUnpkTfuCqiPucchMode11)
7744 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
7745 switch(param->type) {
7747 CMCHKUNPK(SUnpkU8, ¶m->u.ri, mBuf);
7750 CMCHKUNPK(cmUnpkTfuCqiMode11Cqi, ¶m->u.cqi, mBuf);
7760 /***********************************************************
7762 * Func : cmPkTfuCqiMode20SubCqi
7765 * Desc : This structure contains the SubBand CQI for mode 2-0.
7774 **********************************************************/
7776 PUBLIC S16 cmPkTfuCqiMode20SubCqi
7778 TfuCqiMode20SubCqi *param,
7782 PUBLIC S16 cmPkTfuCqiMode20SubCqi(param, mBuf)
7783 TfuCqiMode20SubCqi *param;
7788 TRC3(cmPkTfuCqiMode20SubCqi)
7790 CMCHKPK(SPkU8, param->l, mBuf);
7791 CMCHKPK(SPkU8, param->cqi, mBuf);
7797 /***********************************************************
7799 * Func : cmUnpkTfuCqiMode20SubCqi
7802 * Desc : This structure contains the SubBand CQI for mode 2-0.
7811 **********************************************************/
7813 PUBLIC S16 cmUnpkTfuCqiMode20SubCqi
7815 TfuCqiMode20SubCqi *param,
7819 PUBLIC S16 cmUnpkTfuCqiMode20SubCqi(param, mBuf)
7820 TfuCqiMode20SubCqi *param;
7825 TRC3(cmUnpkTfuCqiMode20SubCqi)
7827 CMCHKUNPK(SUnpkU8, ¶m->cqi, mBuf);
7828 CMCHKUNPK(SUnpkU8, ¶m->l, mBuf);
7834 /***********************************************************
7836 * Func : cmPkTfuCqiMode20Cqi
7839 * Desc : This structure contains Mode20 CQI report. It could either be a
7840 * wideband CQI or a sub-band CQI.
7849 **********************************************************/
7851 PUBLIC S16 cmPkTfuCqiMode20Cqi
7853 TfuCqiMode20Cqi *param,
7857 PUBLIC S16 cmPkTfuCqiMode20Cqi(param, mBuf)
7858 TfuCqiMode20Cqi *param;
7863 TRC3(cmPkTfuCqiMode20Cqi)
7865 switch(param->isWideband) {
7867 CMCHKPK(cmPkTfuCqiMode20SubCqi, ¶m->u.subCqi, mBuf);
7870 CMCHKPK(SPkU8, param->u.wideCqi, mBuf);
7875 CMCHKPK(SPkU8, param->isWideband, mBuf);
7881 /***********************************************************
7883 * Func : cmUnpkTfuCqiMode20Cqi
7886 * Desc : This structure contains Mode20 CQI report. It could either be a
7887 * wideband CQI or a sub-band CQI.
7896 **********************************************************/
7898 PUBLIC S16 cmUnpkTfuCqiMode20Cqi
7900 TfuCqiMode20Cqi *param,
7904 PUBLIC S16 cmUnpkTfuCqiMode20Cqi(param, mBuf)
7905 TfuCqiMode20Cqi *param;
7910 TRC3(cmUnpkTfuCqiMode20Cqi)
7912 CMCHKUNPK(SUnpkU8, ¶m->isWideband, mBuf);
7913 switch(param->isWideband) {
7915 CMCHKUNPK(SUnpkU8, ¶m->u.wideCqi, mBuf);
7918 CMCHKUNPK(cmUnpkTfuCqiMode20SubCqi, ¶m->u.subCqi, mBuf);
7928 /***********************************************************
7930 * Func : cmPkTfuCqiPucchMode20
7933 * Desc : This structure maps to CQI mode 20. The report either contains a
7934 * Rank Index or a CQI report.
7943 **********************************************************/
7945 PUBLIC S16 cmPkTfuCqiPucchMode20
7947 TfuCqiPucchMode20 *param,
7951 PUBLIC S16 cmPkTfuCqiPucchMode20(param, mBuf)
7952 TfuCqiPucchMode20 *param;
7957 TRC3(cmPkTfuCqiPucchMode20)
7959 switch(param->type) {
7961 CMCHKPK(cmPkTfuCqiMode20Cqi, ¶m->u.cqi, mBuf);
7964 CMCHKPK(SPkU8, param->u.ri, mBuf);
7969 CMCHKPK(SPkU32, param->type, mBuf);
7975 /***********************************************************
7977 * Func : cmUnpkTfuCqiPucchMode20
7980 * Desc : This structure maps to CQI mode 20. The report either contains a
7981 * Rank Index or a CQI report.
7990 **********************************************************/
7992 PUBLIC S16 cmUnpkTfuCqiPucchMode20
7994 TfuCqiPucchMode20 *param,
7998 PUBLIC S16 cmUnpkTfuCqiPucchMode20(param, mBuf)
7999 TfuCqiPucchMode20 *param;
8004 TRC3(cmUnpkTfuCqiPucchMode20)
8006 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
8007 switch(param->type) {
8009 CMCHKUNPK(SUnpkU8, ¶m->u.ri, mBuf);
8012 CMCHKUNPK(cmUnpkTfuCqiMode20Cqi, ¶m->u.cqi, mBuf);
8022 /***********************************************************
8024 * Func : cmPkTfuCqiMode21SubCqi
8027 * Desc : This structure contains the sub-band CQI report for mode 2-1.
8028 * It carries a CQI, 'L' bit sub-band label, and optionally a differential CQI.
8037 **********************************************************/
8039 PUBLIC S16 cmPkTfuCqiMode21SubCqi
8041 TfuCqiMode21SubCqi *param,
8045 PUBLIC S16 cmPkTfuCqiMode21SubCqi(param, mBuf)
8046 TfuCqiMode21SubCqi *param;
8051 TRC3(cmPkTfuCqiMode21SubCqi)
8053 CMCHKPK(cmPkTknU8, ¶m->diffCqi, mBuf);
8054 CMCHKPK(SPkU8, param->l, mBuf);
8055 CMCHKPK(SPkU8, param->cqi, mBuf);
8061 /***********************************************************
8063 * Func : cmUnpkTfuCqiMode21SubCqi
8066 * Desc : This structure contains the sub-band CQI report for mode 2-1.
8067 * It carries a CQI, 'L' bit sub-band label, and optionally a differential CQI.
8076 **********************************************************/
8078 PUBLIC S16 cmUnpkTfuCqiMode21SubCqi
8080 TfuCqiMode21SubCqi *param,
8084 PUBLIC S16 cmUnpkTfuCqiMode21SubCqi(param, mBuf)
8085 TfuCqiMode21SubCqi *param;
8090 TRC3(cmUnpkTfuCqiMode21SubCqi)
8092 CMCHKUNPK(SUnpkU8, ¶m->cqi, mBuf);
8093 CMCHKUNPK(SUnpkU8, ¶m->l, mBuf);
8094 CMCHKUNPK(cmUnpkTknU8, ¶m->diffCqi, mBuf);
8100 /***********************************************************
8102 * Func : cmPkTfuCqiMode21WideCqi
8105 * Desc : This structure contains the wideband CQI report for mode 2-1.
8106 * It carries a wideband CQI, PMI and optionally a differential CQI.
8115 **********************************************************/
8117 PUBLIC S16 cmPkTfuCqiMode21WideCqi
8119 TfuCqiMode21WideCqi *param,
8123 PUBLIC S16 cmPkTfuCqiMode21WideCqi(param, mBuf)
8124 TfuCqiMode21WideCqi *param;
8129 TRC3(cmPkTfuCqiMode21WideCqi)
8131 CMCHKPK(cmPkTknU8, ¶m->diffCqi, mBuf);
8132 CMCHKPK(SPkU8, param->pmi, mBuf);
8133 CMCHKPK(SPkU8, param->cqi, mBuf);
8139 /***********************************************************
8141 * Func : cmUnpkTfuCqiMode21WideCqi
8144 * Desc : This structure contains the wideband CQI report for mode 2-1.
8145 * It carries a wideband CQI, PMI and optionally a differential CQI.
8154 **********************************************************/
8156 PUBLIC S16 cmUnpkTfuCqiMode21WideCqi
8158 TfuCqiMode21WideCqi *param,
8162 PUBLIC S16 cmUnpkTfuCqiMode21WideCqi(param, mBuf)
8163 TfuCqiMode21WideCqi *param;
8168 TRC3(cmUnpkTfuCqiMode21WideCqi)
8170 CMCHKUNPK(SUnpkU8, ¶m->cqi, mBuf);
8171 CMCHKUNPK(SUnpkU8, ¶m->pmi, mBuf);
8172 CMCHKUNPK(cmUnpkTknU8, ¶m->diffCqi, mBuf);
8178 /***********************************************************
8180 * Func : cmPkTfuCqiMode21Cqi
8183 * Desc : This structure conveys CQI report for mode 2-1. The reported value
8184 * could either be wideband or sub-band.
8193 **********************************************************/
8195 PUBLIC S16 cmPkTfuCqiMode21Cqi
8197 TfuCqiMode21Cqi *param,
8201 PUBLIC S16 cmPkTfuCqiMode21Cqi(param, mBuf)
8202 TfuCqiMode21Cqi *param;
8207 TRC3(cmPkTfuCqiMode21Cqi)
8209 switch(param->isWideband) {
8211 CMCHKPK(cmPkTfuCqiMode21SubCqi, ¶m->u.subCqi, mBuf);
8214 CMCHKPK(cmPkTfuCqiMode21WideCqi, ¶m->u.wideCqi, mBuf);
8219 CMCHKPK(SPkU8, param->isWideband, mBuf);
8225 /***********************************************************
8227 * Func : cmUnpkTfuCqiMode21Cqi
8230 * Desc : This structure conveys CQI report for mode 2-1. The reported value
8231 * could either be wideband or sub-band.
8240 **********************************************************/
8242 PUBLIC S16 cmUnpkTfuCqiMode21Cqi
8244 TfuCqiMode21Cqi *param,
8248 PUBLIC S16 cmUnpkTfuCqiMode21Cqi(param, mBuf)
8249 TfuCqiMode21Cqi *param;
8254 TRC3(cmUnpkTfuCqiMode21Cqi)
8256 CMCHKUNPK(SUnpkU8, ¶m->isWideband, mBuf);
8257 switch(param->isWideband) {
8259 CMCHKUNPK(cmUnpkTfuCqiMode21WideCqi, ¶m->u.wideCqi, mBuf);
8262 CMCHKUNPK(cmUnpkTfuCqiMode21SubCqi, ¶m->u.subCqi, mBuf);
8272 /***********************************************************
8274 * Func : cmPkTfuCqiPucchMode21
8277 * Desc : This structure maps to the CQI reporting mode 2-1. The report either
8278 * conveys a Rank Indicator or a CQI report.
8287 **********************************************************/
8289 PUBLIC S16 cmPkTfuCqiPucchMode21
8291 TfuCqiPucchMode21 *param,
8295 PUBLIC S16 cmPkTfuCqiPucchMode21(param, mBuf)
8296 TfuCqiPucchMode21 *param;
8301 TRC3(cmPkTfuCqiPucchMode21)
8303 switch(param->type) {
8305 CMCHKPK(cmPkTfuCqiMode21Cqi, ¶m->u.cqi, mBuf);
8308 CMCHKPK(SPkU8, param->u.ri, mBuf);
8313 CMCHKPK(SPkU32, param->type, mBuf);
8319 /***********************************************************
8321 * Func : cmUnpkTfuCqiPucchMode21
8324 * Desc : This structure maps to the CQI reporting mode 2-1. The report either
8325 * conveys a Rank Indicator or a CQI report.
8334 **********************************************************/
8336 PUBLIC S16 cmUnpkTfuCqiPucchMode21
8338 TfuCqiPucchMode21 *param,
8342 PUBLIC S16 cmUnpkTfuCqiPucchMode21(param, mBuf)
8343 TfuCqiPucchMode21 *param;
8348 TRC3(cmUnpkTfuCqiPucchMode21)
8350 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
8351 switch(param->type) {
8353 CMCHKUNPK(SUnpkU8, ¶m->u.ri, mBuf);
8356 CMCHKUNPK(cmUnpkTfuCqiMode21Cqi, ¶m->u.cqi, mBuf);
8366 /***********************************************************
8368 * Func : cmPkTfuDlCqiPucch
8371 * Desc : This structure conveys the Downlink CQI reported on PUCCH.
8380 **********************************************************/
8382 PUBLIC S16 cmPkTfuDlCqiPucch
8384 TfuDlCqiPucch *param,
8388 PUBLIC S16 cmPkTfuDlCqiPucch(param, mBuf)
8389 TfuDlCqiPucch *param;
8394 TRC3(cmPkTfuDlCqiPucch)
8396 switch(param->mode) {
8397 case TFU_PUCCH_CQI_MODE21:
8398 CMCHKPK(cmPkTfuCqiPucchMode21, ¶m->u.mode21Info, mBuf);
8400 case TFU_PUCCH_CQI_MODE20:
8401 CMCHKPK(cmPkTfuCqiPucchMode20, ¶m->u.mode20Info, mBuf);
8403 case TFU_PUCCH_CQI_MODE11:
8404 CMCHKPK(cmPkTfuCqiPucchMode11, ¶m->u.mode11Info, mBuf);
8406 case TFU_PUCCH_CQI_MODE10:
8407 CMCHKPK(cmPkTfuCqiPucchMode10, ¶m->u.mode10Info, mBuf);
8412 CMCHKPK(SPkU32, param->mode, mBuf);
8413 CMCHKPK(SPkU8, param->cellIdx, mBuf);
8419 /***********************************************************
8421 * Func : cmUnpkTfuDlCqiPucch
8424 * Desc : This structure conveys the Downlink CQI reported on PUCCH.
8433 **********************************************************/
8435 PUBLIC S16 cmUnpkTfuDlCqiPucch
8437 TfuDlCqiPucch *param,
8441 PUBLIC S16 cmUnpkTfuDlCqiPucch(param, mBuf)
8442 TfuDlCqiPucch *param;
8447 TRC3(cmUnpkTfuDlCqiPucch)
8449 CMCHKUNPK(SUnpkU8, ¶m->cellIdx, mBuf);
8450 CMCHKUNPK(SUnpkU32, (U32 *)¶m->mode, mBuf);
8451 switch(param->mode) {
8452 case TFU_PUCCH_CQI_MODE10:
8453 CMCHKUNPK(cmUnpkTfuCqiPucchMode10, ¶m->u.mode10Info, mBuf);
8455 case TFU_PUCCH_CQI_MODE11:
8456 CMCHKUNPK(cmUnpkTfuCqiPucchMode11, ¶m->u.mode11Info, mBuf);
8458 case TFU_PUCCH_CQI_MODE20:
8459 CMCHKUNPK(cmUnpkTfuCqiPucchMode20, ¶m->u.mode20Info, mBuf);
8461 case TFU_PUCCH_CQI_MODE21:
8462 CMCHKUNPK(cmUnpkTfuCqiPucchMode21, ¶m->u.mode21Info, mBuf);
8472 /***********************************************************
8474 * Func : cmPkTfuSubbandMode12
8477 * Desc : This structure carries subband information and PMI, in the CQI
8478 * reporting format 1-2.
8487 **********************************************************/
8489 PUBLIC S16 cmPkTfuSubbandMode12
8491 TfuSubbandMode12 *param,
8495 PUBLIC S16 cmPkTfuSubbandMode12(param, mBuf)
8496 TfuSubbandMode12 *param;
8501 TRC3(cmPkTfuSubbandMode12)
8503 CMCHKPK(cmPkTfuSubbandInfo, ¶m->subBand, mBuf);
8504 CMCHKPK(SPkU8, param->pmi, mBuf);
8510 /***********************************************************
8512 * Func : cmUnpkTfuSubbandMode12
8515 * Desc : This structure carries subband information and PMI, in the CQI
8516 * reporting format 1-2.
8525 **********************************************************/
8527 PUBLIC S16 cmUnpkTfuSubbandMode12
8529 TfuSubbandMode12 *param,
8533 PUBLIC S16 cmUnpkTfuSubbandMode12(param, mBuf)
8534 TfuSubbandMode12 *param;
8539 TRC3(cmUnpkTfuSubbandMode12)
8541 CMCHKUNPK(SUnpkU8, ¶m->pmi, mBuf);
8542 CMCHKUNPK(cmUnpkTfuSubbandInfo, ¶m->subBand, mBuf);
8548 /***********************************************************
8550 * Func : cmPkTfuCqiPuschMode12
8553 * Desc : This structure conveys information present in CQI reporting mode 1-2 received
8563 **********************************************************/
8565 PUBLIC S16 cmPkTfuCqiPuschMode12
8567 TfuCqiPuschMode12 *param,
8571 PUBLIC S16 cmPkTfuCqiPuschMode12(param, mBuf)
8572 TfuCqiPuschMode12 *param;
8578 TRC3(cmPkTfuCqiPuschMode12)
8580 for (i=TFU_MAX_DL_SUBBAND-1; i >= 0; i--) {
8581 CMCHKPK(cmPkTfuSubbandMode12, ¶m->subbandArr[i], mBuf);
8583 for (i=TFU_MAX_TB-1; i >= 0; i--) {
8584 CMCHKPK(SPkU8, param->cqiIdx[i], mBuf);
8586 CMCHKPK(SPkU8, param->numSubband, mBuf);
8592 /***********************************************************
8594 * Func : cmUnpkTfuCqiPuschMode12
8597 * Desc : This structure conveys information present in CQI reporting mode 1-2 received
8607 **********************************************************/
8609 PUBLIC S16 cmUnpkTfuCqiPuschMode12
8611 TfuCqiPuschMode12 *param,
8615 PUBLIC S16 cmUnpkTfuCqiPuschMode12(param, mBuf)
8616 TfuCqiPuschMode12 *param;
8622 TRC3(cmUnpkTfuCqiPuschMode12)
8624 CMCHKUNPK(SUnpkU8, ¶m->numSubband, mBuf);
8625 for (i=0; i<TFU_MAX_TB; i++) {
8626 CMCHKUNPK(SUnpkU8, ¶m->cqiIdx[i], mBuf);
8628 for (i=0; i<TFU_MAX_DL_SUBBAND; i++) {
8629 CMCHKUNPK(cmUnpkTfuSubbandMode12, ¶m->subbandArr[i], mBuf);
8636 /***********************************************************
8638 * Func : cmPkTfuCqiPuschMode20
8641 * Desc : This structure conveys information present in CQI reporting mode 2-0 received
8642 * over PUSCH. This mode is for UE selected sub-band feedback.
8651 **********************************************************/
8653 PUBLIC S16 cmPkTfuCqiPuschMode20
8655 TfuCqiPuschMode20 *param,
8659 PUBLIC S16 cmPkTfuCqiPuschMode20(param, mBuf)
8660 TfuCqiPuschMode20 *param;
8666 TRC3(cmPkTfuCqiPuschMode20)
8668 for (i=TFU_MAX_DL_SUBBAND-1; i >= 0; i--) {
8669 CMCHKPK(cmPkTfuSubbandInfo, ¶m->subbandArr[i], mBuf);
8671 CMCHKPK(SPkU8, param->numSubband, mBuf);
8672 CMCHKPK(SPkU8, param->wideBandCqi, mBuf);
8673 CMCHKPK(SPkU8, param->cqiIdx, mBuf);
8679 /***********************************************************
8681 * Func : cmUnpkTfuCqiPuschMode20
8684 * Desc : This structure conveys information present in CQI reporting mode 2-0 received
8685 * over PUSCH. This mode is for UE selected sub-band feedback.
8694 **********************************************************/
8696 PUBLIC S16 cmUnpkTfuCqiPuschMode20
8698 TfuCqiPuschMode20 *param,
8702 PUBLIC S16 cmUnpkTfuCqiPuschMode20(param, mBuf)
8703 TfuCqiPuschMode20 *param;
8709 TRC3(cmUnpkTfuCqiPuschMode20)
8711 CMCHKUNPK(SUnpkU8, ¶m->cqiIdx, mBuf);
8712 CMCHKUNPK(SUnpkU8, ¶m->wideBandCqi, mBuf);
8713 CMCHKUNPK(SUnpkU8, ¶m->numSubband, mBuf);
8714 for (i=0; i<TFU_MAX_DL_SUBBAND; i++) {
8715 CMCHKUNPK(cmUnpkTfuSubbandInfo, ¶m->subbandArr[i], mBuf);
8721 /***********************************************************
8723 * Func : cmPkTfuCqiPuschMode22
8726 * Desc : This structure conveys information present in CQI reporting mode 2-2 received
8736 **********************************************************/
8738 PUBLIC S16 cmPkTfuCqiPuschMode22
8740 TfuCqiPuschMode22 *param,
8744 PUBLIC S16 cmPkTfuCqiPuschMode22(param, mBuf)
8745 TfuCqiPuschMode22 *param;
8751 TRC3(cmPkTfuCqiPuschMode22)
8754 for (i=TFU_MAX_DL_SUBBAND-1; i >= 0; i--) {
8755 CMCHKPK(cmPkTfuSubbandInfo, ¶m->subbandArr[i], mBuf);
8758 CMCHKPK(SPkU8, param->numSubband, mBuf);
8759 CMCHKPK(SPkU8, param->wideBandPmi, mBuf);
8760 for (i=TFU_MAX_TB-1; i >= 0; i--) {
8761 CMCHKPK(SPkU8, param->wideBandCqi[i], mBuf);
8763 CMCHKPK(SPkU8, param->pmi, mBuf);
8764 for (i=TFU_MAX_TB-1; i >= 0; i--) {
8765 CMCHKPK(SPkU8, param->cqi[i], mBuf);
8772 /***********************************************************
8774 * Func : cmUnpkTfuCqiPuschMode22
8777 * Desc : This structure conveys information present in CQI reporting mode 2-2 received
8787 **********************************************************/
8789 PUBLIC S16 cmUnpkTfuCqiPuschMode22
8791 TfuCqiPuschMode22 *param,
8795 PUBLIC S16 cmUnpkTfuCqiPuschMode22(param, mBuf)
8796 TfuCqiPuschMode22 *param;
8802 TRC3(cmUnpkTfuCqiPuschMode22)
8804 for (i=0; i<TFU_MAX_TB; i++) {
8805 CMCHKUNPK(SUnpkU8, ¶m->cqi[i], mBuf);
8807 CMCHKUNPK(SUnpkU8, ¶m->pmi, mBuf);
8808 for (i=0; i<TFU_MAX_TB; i++) {
8809 CMCHKUNPK(SUnpkU8, ¶m->wideBandCqi[i], mBuf);
8811 CMCHKUNPK(SUnpkU8, ¶m->wideBandPmi, mBuf);
8812 CMCHKUNPK(SUnpkU8, ¶m->numSubband, mBuf);
8814 for (i=0; i<TFU_MAX_DL_SUBBAND; i++) {
8815 CMCHKUNPK(cmUnpkTfuSubbandInfo, ¶m->subbandArr[i], mBuf);
8823 PUBLIC S16 cmPkTfuSubbandMode30
8825 TfuSubbandMode30 *param,
8829 PUBLIC S16 cmPkTfuSubbandMode30(param, mBuf)
8830 TfuSubbandMode30 *param;
8835 TRC3(cmPkTfuSubbandMode30)
8837 CMCHKPK(cmPkTfuSubbandInfo, ¶m->subBand, mBuf);
8838 CMCHKPK(SPkU8, param->cqi, mBuf);
8844 PUBLIC S16 cmUnpkTfuSubbandMode30
8846 TfuSubbandMode30 *param,
8850 PUBLIC S16 cmUnpkTfuSubbandMode30(param, mBuf)
8851 TfuSubbandMode30 *param;
8856 TRC3(cmUnpkTfuSubbandMode30)
8858 CMCHKUNPK(SUnpkU8, ¶m->cqi, mBuf);
8859 CMCHKUNPK(cmUnpkTfuSubbandInfo, ¶m->subBand, mBuf);
8865 /***********************************************************
8867 * Func : cmPkTfuCqiPuschMode30
8870 * Desc : This structure conveys information present in CQI reporting mode 3-0
8871 * received over PUSCH.
8880 **********************************************************/
8882 PUBLIC S16 cmPkTfuCqiPuschMode30
8884 TfuCqiPuschMode30 *param,
8888 PUBLIC S16 cmPkTfuCqiPuschMode30(param, mBuf)
8889 TfuCqiPuschMode30 *param;
8895 TRC3(cmPkTfuCqiPuschMode30)
8897 for (i=TFU_MAX_DL_SUBBAND-1; i >= 0; i--) {
8898 CMCHKPK(cmPkTfuSubbandMode30, ¶m->subbandArr[i], mBuf);
8900 CMCHKPK(SPkU8, param->numSubband, mBuf);
8901 CMCHKPK(SPkU8, param->wideBandCqi, mBuf);
8907 /***********************************************************
8909 * Func : cmUnpkTfuCqiPuschMode30
8912 * Desc : This structure conveys information present in CQI reporting mode 3-0
8913 * received over PUSCH.
8922 **********************************************************/
8924 PUBLIC S16 cmUnpkTfuCqiPuschMode30
8926 TfuCqiPuschMode30 *param,
8930 PUBLIC S16 cmUnpkTfuCqiPuschMode30(param, mBuf)
8931 TfuCqiPuschMode30 *param;
8937 TRC3(cmUnpkTfuCqiPuschMode30)
8939 CMCHKUNPK(SUnpkU8, ¶m->wideBandCqi, mBuf);
8940 CMCHKUNPK(SUnpkU8, ¶m->numSubband, mBuf);
8941 for (i=0; i<TFU_MAX_DL_SUBBAND; i++) {
8942 CMCHKUNPK(cmUnpkTfuSubbandMode30, ¶m->subbandArr[i], mBuf);
8949 PUBLIC S16 cmPkTfuSubbandMode31
8951 TfuSubbandMode31 *param,
8955 PUBLIC S16 cmPkTfuSubbandMode31(param, mBuf)
8956 TfuSubbandMode31 *param;
8962 TRC3(cmPkTfuSubbandMode31)
8964 CMCHKPK(cmPkTfuSubbandInfo, ¶m->subBand, mBuf);
8965 for (i=TFU_MAX_TB-1; i >= 0; i--) {
8966 CMCHKPK(SPkU8, param->cqi[i], mBuf);
8973 PUBLIC S16 cmUnpkTfuSubbandMode31
8975 TfuSubbandMode31 *param,
8979 PUBLIC S16 cmUnpkTfuSubbandMode31(param, mBuf)
8980 TfuSubbandMode31 *param;
8986 TRC3(cmUnpkTfuSubbandMode31)
8988 for (i=0; i<TFU_MAX_TB; i++) {
8989 CMCHKUNPK(SUnpkU8, ¶m->cqi[i], mBuf);
8991 CMCHKUNPK(cmUnpkTfuSubbandInfo, ¶m->subBand, mBuf);
8997 /***********************************************************
8999 * Func : cmPkTfuCqiPuschMode31
9002 * Desc : This structure conveys information present in CQI reporting mode 3-1
9003 * received over PUSCH.
9012 **********************************************************/
9014 PUBLIC S16 cmPkTfuCqiPuschMode31
9016 TfuCqiPuschMode31 *param,
9020 PUBLIC S16 cmPkTfuCqiPuschMode31(param, mBuf)
9021 TfuCqiPuschMode31 *param;
9027 TRC3(cmPkTfuCqiPuschMode31)
9030 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
9031 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
9033 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
9034 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
9035 for (i=param->numSubband-1; i >= 0; i--) {
9036 CMCHKPK(cmPkTfuSubbandDlCqiInfo, ¶m->subbandCqiArr[i], mBuf);
9039 CMCHKPK(SPkU8, param->numSubband, mBuf);
9040 for (i=TFU_MAX_TB-1; i >= 0; i--) {
9041 CMCHKPK(SPkU8, param->wideBandCqi[i], mBuf);
9043 CMCHKPK(SPkU8, param->pmi, mBuf);
9049 /***********************************************************
9051 * Func : cmUnpkTfuCqiPuschMode31
9054 * Desc : This structure conveys information present in CQI reporting mode 3-1
9055 * received over PUSCH.
9064 **********************************************************/
9066 PUBLIC S16 cmUnpkTfuCqiPuschMode31
9068 TfuCqiPuschMode31 *param,
9072 PUBLIC S16 cmUnpkTfuCqiPuschMode31(param, mBuf)
9073 TfuCqiPuschMode31 *param;
9079 TRC3(cmUnpkTfuCqiPuschMode31)
9081 CMCHKUNPK(SUnpkU8, ¶m->pmi, mBuf);
9082 for (i=0; i<TFU_MAX_TB; i++) {
9083 CMCHKUNPK(SUnpkU8, ¶m->wideBandCqi[i], mBuf);
9085 CMCHKUNPK(SUnpkU8, ¶m->numSubband, mBuf);
9087 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
9088 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
9089 for (i=0; i<param->numSubband; i++) {
9090 CMCHKUNPK(cmUnpkTfuSubbandDlCqiInfo, ¶m->subbandCqiArr[i], mBuf);
9094 /* tfu_c_001.main_4 - Changes for MIMO feature addition */
9095 /* tfu_c_001.main_5 - Removed dependency on MIMO compile-time flag */
9102 /***********************************************************
9104 * Func : cmPkTfuDlCqiPusch
9107 * Desc : This structure conveys Downlink CQI information (mode and corresponding
9108 * CQI) received over PUSCH.
9117 **********************************************************/
9119 PUBLIC S16 cmPkTfuDlCqiPusch
9121 TfuDlCqiPusch *param,
9125 PUBLIC S16 cmPkTfuDlCqiPusch(param, mBuf)
9126 TfuDlCqiPusch *param;
9131 TRC3(cmPkTfuDlCqiPusch)
9133 switch(param->mode) {
9134 case TFU_PUSCH_CQI_MODE_31:
9135 CMCHKPK(cmPkTfuCqiPuschMode31, ¶m->u.mode31Info, mBuf);
9137 case TFU_PUSCH_CQI_MODE_30:
9138 CMCHKPK(cmPkTfuCqiPuschMode30, ¶m->u.mode30Info, mBuf);
9140 case TFU_PUSCH_CQI_MODE_22:
9141 CMCHKPK(cmPkTfuCqiPuschMode22, ¶m->u.mode22Info, mBuf);
9143 case TFU_PUSCH_CQI_MODE_20:
9144 CMCHKPK(cmPkTfuCqiPuschMode20, ¶m->u.mode20Info, mBuf);
9146 case TFU_PUSCH_CQI_MODE_12:
9147 CMCHKPK(cmPkTfuCqiPuschMode12, ¶m->u.mode12Info, mBuf);
9153 CMCHKPK(cmPkTknU8, ¶m->ri, mBuf);
9154 CMCHKPK(SPkU32, param->mode, mBuf);
9156 CMCHKPK(SPkU8, param->cellIdx, mBuf);
9162 /***********************************************************
9164 * Func : cmUnpkTfuDlCqiPusch
9167 * Desc : This structure conveys Downlink CQI information (mode and corresponding
9168 * CQI) received over PUSCH.
9177 **********************************************************/
9179 PUBLIC S16 cmUnpkTfuDlCqiPusch
9181 TfuDlCqiPusch *param,
9185 PUBLIC S16 cmUnpkTfuDlCqiPusch(param, mBuf)
9186 TfuDlCqiPusch *param;
9191 TRC3(cmUnpkTfuDlCqiPusch)
9193 CMCHKUNPK(SUnpkU8, ¶m->cellIdx, mBuf);
9194 CMCHKUNPK(SUnpkU32, (U32 *)¶m->mode, mBuf);
9195 CMCHKUNPK(cmUnpkTknU8, ¶m->ri, mBuf);
9196 switch(param->mode) {
9197 case TFU_PUSCH_CQI_MODE_12:
9198 CMCHKUNPK(cmUnpkTfuCqiPuschMode12, ¶m->u.mode12Info, mBuf);
9200 case TFU_PUSCH_CQI_MODE_20:
9201 CMCHKUNPK(cmUnpkTfuCqiPuschMode20, ¶m->u.mode20Info, mBuf);
9203 case TFU_PUSCH_CQI_MODE_22:
9204 CMCHKUNPK(cmUnpkTfuCqiPuschMode22, ¶m->u.mode22Info, mBuf);
9206 case TFU_PUSCH_CQI_MODE_30:
9207 CMCHKUNPK(cmUnpkTfuCqiPuschMode30, ¶m->u.mode30Info, mBuf);
9209 case TFU_PUSCH_CQI_MODE_31:
9210 CMCHKUNPK(cmUnpkTfuCqiPuschMode31, ¶m->u.mode31Info, mBuf);
9219 /***********************************************************
9221 * Func : cmPkTfuDlCqiInfo
9224 * Desc : This structure contains CQI information received over PUCCH or PUSCH.
9233 **********************************************************/
9235 PUBLIC S16 cmPkTfuDlCqiInfo
9238 TfuDlCqiInfo *param,
9242 PUBLIC S16 cmPkTfuDlCqiInfo(selector, param, mBuf)
9244 TfuDlCqiInfo *param;
9250 TRC3(cmPkTfuDlCqiInfo)
9254 for (idx = 0; idx < param->pusch.numOfCells; idx++)
9256 CMCHKPK(cmPkTfuDlCqiPusch, ¶m->pusch.puschCqi[idx], mBuf);
9258 CMCHKPK(SPkU8, param->pusch.numOfCells, mBuf);
9261 CMCHKPK(cmPkTfuDlCqiPucch, ¶m->pucchCqi, mBuf);
9271 /***********************************************************
9273 * Func : cmUnpkTfuDlCqiInfo
9276 * Desc : This structure contains CQI information received over PUCCH or PUSCH.
9285 **********************************************************/
9287 PUBLIC S16 cmUnpkTfuDlCqiInfo
9290 TfuDlCqiInfo *param,
9294 PUBLIC S16 cmUnpkTfuDlCqiInfo(selector, param, mBuf)
9296 TfuDlCqiInfo *param;
9302 TRC3(cmUnpkTfuDlCqiInfo)
9306 CMCHKUNPK(cmUnpkTfuDlCqiPucch, ¶m->pucchCqi, mBuf);
9309 CMCHKUNPK(SUnpkU8, ¶m->pusch.numOfCells, mBuf);
9310 for (idx = param->pusch.numOfCells; idx > 0; idx--)
9312 CMCHKUNPK(cmUnpkTfuDlCqiPusch, ¶m->pusch.puschCqi[idx-1], mBuf);
9323 /***********************************************************
9325 * Func : cmPkTfuRecpReqInfo
9328 * Desc : This structure is sent from Scheduler to PHY. This includes params
9329 * needed by PHY to decode the following
9331 * 2. HARQ Feedback on PUCCH
9334 * 5. SR Indications.
9335 * This structure carries the reception information for all the scheduled UE.
9344 **********************************************************/
9346 PUBLIC S16 cmPkTfuRecpReqInfo
9348 TfuRecpReqInfo *param,
9352 PUBLIC S16 cmPkTfuRecpReqInfo(param, mBuf)
9353 TfuRecpReqInfo *param;
9359 TfuUeRecpReqInfo *tfuUeRecpReqInfo;
9361 TRC3(cmPkTfuRecpReqInfo)
9363 /*ccpu00116923 - ADD - SRS present support*/
9364 /*tfu_c_001.main_7 - ADD - SRS present field inclusion */
9366 CMCHKPK(SPkU8, param->srsPres, mBuf);
9368 count = param->ueRecpReqLst.count;
9369 node = param->ueRecpReqLst.last;
9371 tfuUeRecpReqInfo = (TfuUeRecpReqInfo *)node->node;
9373 CMCHKPK(cmPkTfuUeRecpReqInfo, tfuUeRecpReqInfo, mBuf);
9374 cmLListDelFrm(¶m->ueRecpReqLst, &tfuUeRecpReqInfo->lnk);
9375 tfuUeRecpReqInfo->lnk.node = (PTR)NULLP;
9377 CMCHKPK(SPkU32, count, mBuf);
9378 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
9379 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
9385 /***********************************************************
9387 * Func : cmUnpkTfuRecpReqInfo
9390 * Desc : This structure is sent from Scheduler to PHY. This includes params
9391 * needed by PHY to decode the following
9393 * 2. HARQ Feedback on PUCCH
9396 * 5. SR Indications.
9397 * This structure carries the reception information for all the scheduled UE.
9406 **********************************************************/
9408 PUBLIC S16 cmUnpkTfuRecpReqInfo
9410 TfuRecpReqInfo *param,
9415 PUBLIC S16 cmUnpkTfuRecpReqInfo(param, memCp, mBuf)
9416 TfuRecpReqInfo *param;
9423 TfuUeRecpReqInfo *tfuUeRecpReqInfo;
9425 TRC3(cmUnpkTfuRecpReqInfo)
9427 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
9428 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
9429 cmLListInit(¶m->ueRecpReqLst);
9430 CMCHKUNPK(SUnpkU32, &count, mBuf);
9431 for (loopCnt=0; loopCnt<count; loopCnt++) {
9432 cmGetMem((Ptr)memCp, sizeof(*tfuUeRecpReqInfo), (Ptr *)&tfuUeRecpReqInfo);
9433 CMCHKUNPK(cmUnpkTfuUeRecpReqInfo, tfuUeRecpReqInfo, mBuf);
9434 cmLListAdd2Tail(¶m->ueRecpReqLst, &tfuUeRecpReqInfo->lnk);
9435 tfuUeRecpReqInfo->lnk.node = (PTR)tfuUeRecpReqInfo;
9437 /*ccpu00116923 - ADD - SRS present support*/
9438 /*tfu_c_001.main_7 - ADD - SRS present field inclusion */
9440 CMCHKUNPK(SUnpkU8, ¶m->srsPres, mBuf);
9447 /***********************************************************
9449 * Func : cmPkTfuPdcchInfo
9452 * Desc : This structure contains the PDCCH to be sent on PHY i.e. DCI
9453 * formats. This information is associated with an RNTI.
9462 **********************************************************/
9464 PUBLIC S16 cmPkTfuPdcchInfo
9466 TfuPdcchInfo *param,
9470 PUBLIC S16 cmPkTfuPdcchInfo(param, mBuf)
9471 TfuPdcchInfo *param;
9476 TRC3(cmPkTfuPdcchInfo)
9478 CMCHKPK(SPkU8, param->grpId, mBuf);
9479 CMCHKPK(SPkU8, param->sccIdx, mBuf);
9480 CMCHKPK(SPkU8, param->sectorId, mBuf);
9481 #endif /* TFU_5GTF */
9482 CMCHKPK(cmPkTfuDciInfo, ¶m->dci, mBuf);
9483 CMCHKPK(SPkU8, param->dciNumOfBits, mBuf);
9484 CMCHKPK(cmPkLteAggrLvl, param->aggrLvl, mBuf);
9485 CMCHKPK(SPkU16, param->nCce, mBuf);
9487 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
9488 CMCHKPK(SPkU8, param->isSpsRnti, mBuf);
9490 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
9496 /***********************************************************
9498 * Func : cmUnpkTfuPdcchInfo
9501 * Desc : This structure contains the PDCCH to be sent on PHY i.e. DCI
9502 * formats. This information is associated with an RNTI.
9511 **********************************************************/
9513 PUBLIC S16 cmUnpkTfuPdcchInfo
9515 TfuPdcchInfo *param,
9519 PUBLIC S16 cmUnpkTfuPdcchInfo(param, mBuf)
9520 TfuPdcchInfo *param;
9525 TRC3(cmUnpkTfuPdcchInfo)
9527 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
9529 CMCHKUNPK(SUnpkU8, ¶m->isSpsRnti, mBuf);
9530 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
9532 CMCHKUNPK(SUnpkU16, ¶m->nCce, mBuf);
9533 CMCHKUNPK(cmUnpkLteAggrLvl, (U32*)¶m->aggrLvl, mBuf);
9534 CMCHKUNPK(SUnpkU8, ¶m->dciNumOfBits, mBuf);
9535 CMCHKUNPK(cmUnpkTfuDciInfo, ¶m->dci, mBuf);
9537 CMCHKUNPK(SUnpkU8, ¶m->sectorId, mBuf);
9538 CMCHKUNPK(SUnpkU8, ¶m->sccIdx, mBuf);
9539 CMCHKUNPK(SUnpkU8, ¶m->grpId, mBuf);
9540 #endif /* TFU_5GTF */
9546 /***********************************************************
9548 * Func : cmPkTfuPhichInfo
9551 * Desc : This structure contains one PHICH information. In order to locate the
9552 * resources to be used for PHICH the following information is provided along
9553 * with the feedback -
9564 **********************************************************/
9566 PUBLIC S16 cmPkTfuPhichInfo
9568 TfuPhichInfo *param,
9572 PUBLIC S16 cmPkTfuPhichInfo(param, mBuf)
9573 TfuPhichInfo *param;
9578 TRC3(cmPkTfuPhichInfo)
9579 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
9581 CMCHKPK(SPkU16, param->txPower, mBuf);
9584 CMCHKPK(SPkU8, param->iPhich, mBuf);
9586 CMCHKPK(SPkU8, param->isAck, mBuf);
9587 CMCHKPK(SPkU8, param->nDmrs, mBuf);
9588 CMCHKPK(SPkU8, param->rbStart, mBuf);
9594 /***********************************************************
9596 * Func : cmUnpkTfuPhichInfo
9599 * Desc : This structure contains one PHICH information. In order to locate the
9600 * resources to be used for PHICH the following information is provided along
9601 * with the feedback -
9612 **********************************************************/
9614 PUBLIC S16 cmUnpkTfuPhichInfo
9616 TfuPhichInfo *param,
9620 PUBLIC S16 cmUnpkTfuPhichInfo(param, mBuf)
9621 TfuPhichInfo *param;
9626 TRC3(cmUnpkTfuPhichInfo)
9628 CMCHKUNPK(SUnpkU8, ¶m->rbStart, mBuf);
9629 CMCHKUNPK(SUnpkU8, ¶m->nDmrs, mBuf);
9630 CMCHKUNPK(SUnpkU8, ¶m->isAck, mBuf);
9631 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
9633 CMCHKUNPK(SUnpkU8, ¶m->iPhich, mBuf);
9636 CMCHKUNPK(SUnpkU16, ¶m->txPower, mBuf);
9643 /***********************************************************
9645 * Func : cmPkTfuCntrlReqInfo
9648 * Desc : This structure is sent from Scheduler to PHY. This includes all the
9649 * control information to be sent to the UE.
9650 * -# PDCCH Physical Downlink Control Channel
9651 * -# PHICH Physical HARQ Indicator Channel
9652 * -# PCFICH Physical Control Format Indicator Channel
9661 **********************************************************/
9663 PUBLIC S16 cmPkTfuCntrlReqInfo
9665 TfuCntrlReqInfo *param,
9669 PUBLIC S16 cmPkTfuCntrlReqInfo(param, mBuf)
9670 TfuCntrlReqInfo *param;
9675 TfuPdcchInfo *tfuPdcchInfo;
9676 TfuPhichInfo *tfuPhichInfo;
9680 TRC3(cmPkTfuCntrlReqInfo)
9682 count = param->dlMpdcchLst.count;
9683 node = param->dlMpdcchLst.last;
9685 tfuPdcchInfo = (TfuPdcchInfo *)node->node;
9687 CMCHKPK(cmPkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9688 cmLListDelFrm(¶m->dlMpdcchLst, &tfuPdcchInfo->lnk);
9689 tfuPdcchInfo->lnk.node = (PTR)NULLP;
9691 CMCHKPK(SPkU32, count, mBuf);
9692 count = param->ulMpdcchLst.count;
9693 node = param->ulMpdcchLst.last;
9695 tfuPdcchInfo = (TfuPdcchInfo *)node->node;
9697 CMCHKPK(cmPkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9698 cmLListDelFrm(¶m->ulMpdcchLst, &tfuPdcchInfo->lnk);
9699 tfuPdcchInfo->lnk.node = (PTR)NULLP;
9701 CMCHKPK(SPkU32, count, mBuf);
9703 #ifdef LTEMAC_SPS /* SPS_NEW_CHGS */
9704 CMCHKPK(cmPkBool, param->isSPSOcc, mBuf);
9706 count = param->phichLst.count;
9707 node = param->phichLst.last;
9709 tfuPhichInfo = (TfuPhichInfo *)node->node;
9711 CMCHKPK(cmPkTfuPhichInfo, tfuPhichInfo, mBuf);
9712 cmLListDelFrm(¶m->phichLst, &tfuPhichInfo->lnk);
9713 tfuPhichInfo->lnk.node = (PTR)NULLP;
9715 CMCHKPK(SPkU32, count, mBuf);
9716 count = param->dlPdcchLst.count;
9717 node = param->dlPdcchLst.last;
9719 tfuPdcchInfo = (TfuPdcchInfo *)node->node;
9721 CMCHKPK(cmPkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9722 cmLListDelFrm(¶m->dlPdcchLst, &tfuPdcchInfo->lnk);
9723 tfuPdcchInfo->lnk.node = (PTR)NULLP;
9725 CMCHKPK(SPkU32, count, mBuf);
9726 count = param->ulPdcchLst.count;
9727 node = param->ulPdcchLst.last;
9729 tfuPdcchInfo = (TfuPdcchInfo *)node->node;
9732 printf("ulPdcchLst count %d time[ %d %d] \n",count,param->ulTiming.sfn,param->ulTiming.subframe);
9734 CMCHKPK(cmPkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9735 cmLListDelFrm(¶m->ulPdcchLst, &tfuPdcchInfo->lnk);
9736 tfuPdcchInfo->lnk.node = (PTR)NULLP;
9738 CMCHKPK(SPkU32, count, mBuf);
9739 CMCHKPK(SPkU8, param->cfi, mBuf);
9740 CMCHKPK(cmPkLteTimingInfo, ¶m->dlTiming, mBuf);
9741 CMCHKPK(cmPkLteTimingInfo, ¶m->ulTiming, mBuf);
9742 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
9748 /***********************************************************
9750 * Func : cmUnpkTfuCntrlReqInfo
9753 * Desc : This structure is sent from Scheduler to PHY. This includes all the
9754 * control information to be sent to the UE.
9755 * -# PDCCH Physical Downlink Control Channel
9756 * -# PHICH Physical HARQ Indicator Channel
9757 * -# PCFICH Physical Control Format Indicator Channel
9766 **********************************************************/
9768 PUBLIC S16 cmUnpkTfuCntrlReqInfo
9770 TfuCntrlReqInfo *param,
9775 PUBLIC S16 cmUnpkTfuCntrlReqInfo(param, memCp, mBuf)
9776 TfuCntrlReqInfo *param;
9782 TfuPdcchInfo *tfuPdcchInfo;
9784 TfuPhichInfo *tfuPhichInfo;
9786 TRC3(cmUnpkTfuCntrlReqInfo)
9788 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
9789 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->ulTiming, mBuf);
9790 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->dlTiming, mBuf);
9791 CMCHKUNPK(SUnpkU8, ¶m->cfi, mBuf);
9792 cmLListInit(¶m->ulPdcchLst);
9793 CMCHKUNPK(SUnpkU32, &count, mBuf);
9794 for (loopCnt=0; loopCnt<count; loopCnt++) {
9795 cmGetMem((Ptr)memCp, sizeof(*tfuPdcchInfo), (Ptr *)&tfuPdcchInfo);
9796 CMCHKUNPK(cmUnpkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9797 cmLListAdd2Tail(¶m->ulPdcchLst, &tfuPdcchInfo->lnk);
9798 tfuPdcchInfo->lnk.node = (PTR)tfuPdcchInfo;
9800 cmLListInit(¶m->dlPdcchLst);
9801 CMCHKUNPK(SUnpkU32, &count, mBuf);
9802 for (loopCnt=0; loopCnt<count; loopCnt++) {
9803 cmGetMem((Ptr)memCp, sizeof(*tfuPdcchInfo), (Ptr *)&tfuPdcchInfo);
9804 CMCHKUNPK(cmUnpkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9805 cmLListAdd2Tail(¶m->dlPdcchLst, &tfuPdcchInfo->lnk);
9806 tfuPdcchInfo->lnk.node = (PTR)tfuPdcchInfo;
9808 cmLListInit(¶m->phichLst);
9809 CMCHKUNPK(SUnpkU32, &count, mBuf);
9810 for (loopCnt=0; loopCnt<count; loopCnt++) {
9811 cmGetMem((Ptr)memCp, sizeof(*tfuPhichInfo), (Ptr *)&tfuPhichInfo);
9812 CMCHKUNPK(cmUnpkTfuPhichInfo, tfuPhichInfo, mBuf);
9813 cmLListAdd2Tail(¶m->phichLst, &tfuPhichInfo->lnk);
9814 tfuPhichInfo->lnk.node = (PTR)tfuPhichInfo;
9817 #ifdef LTEMAC_SPS /* SPS_NEW_CHGS */
9818 CMCHKUNPK(cmUnpkBool, ¶m->isSPSOcc, mBuf);
9821 cmLListInit(¶m->ulMpdcchLst);
9822 CMCHKUNPK(SUnpkU32, &count, mBuf);
9823 for (loopCnt=0; loopCnt<count; loopCnt++) {
9824 cmGetMem((Ptr)memCp, sizeof(*tfuPdcchInfo), (Ptr *)&tfuPdcchInfo);
9825 CMCHKUNPK(cmUnpkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9826 cmLListAdd2Tail(¶m->ulMpdcchLst, &tfuPdcchInfo->lnk);
9827 tfuPdcchInfo->lnk.node = (PTR)tfuPdcchInfo;
9829 cmLListInit(¶m->dlMpdcchLst);
9830 CMCHKUNPK(SUnpkU32, &count, mBuf);
9831 printf("4. cmUnpkTfuCntrlReqInfo :: count %ld \n", count);
9832 for (loopCnt=0; loopCnt<count; loopCnt++) {
9833 cmGetMem((Ptr)memCp, sizeof(*tfuPdcchInfo), (Ptr *)&tfuPdcchInfo);
9834 CMCHKUNPK(cmUnpkTfuPdcchInfo, tfuPdcchInfo, mBuf);
9835 cmLListAdd2Tail(¶m->dlMpdcchLst, &tfuPdcchInfo->lnk);
9836 tfuPdcchInfo->lnk.node = (PTR)tfuPdcchInfo;
9837 printf("5. cmUnpkTfuCntrlReqInfo :: Failed \n");
9845 /***********************************************************
9847 * Func : cmPkTfuPdschDciInfo
9850 * Desc : This structure Carries the control information that would be needed
9851 * by the Physical layer to process the data to be sent on PDSCH.
9860 **********************************************************/
9862 PUBLIC S16 cmPkTfuPdschDciInfo
9864 TfuPdschDciInfo *param,
9868 PUBLIC S16 cmPkTfuPdschDciInfo(param, mBuf)
9869 TfuPdschDciInfo *param;
9874 TRC3(cmPkTfuPdschDciInfo)
9876 switch(param->format) {
9878 case TFU_DCI_FORMAT_B1:
9880 if (param->u.formatB1Info.RBAssign <= 324)
9882 printf("DCI Format: [B1] RBAssign: [%d] MCS: [%d]",
9883 param->u.formatB1Info.RBAssign,
9884 param->u.formatB1Info.u.rbAssignB1Val324.mcs);
9887 CMCHKPK(cmPkTfuDciFormatB1B2Info, ¶m->u.formatB1Info, mBuf);
9889 case TFU_DCI_FORMAT_B2:
9891 if (param->u.formatB2Info.RBAssign <= 324)
9893 printf("DCI Format: [B2] RBAssign: [%d] MCS: [%d]",
9894 param->u.formatB2Info.RBAssign,
9895 param->u.formatB2Info.u.rbAssignB1Val324.mcs);
9898 CMCHKPK(cmPkTfuDciFormatB1B2Info, ¶m->u.formatB2Info, mBuf);
9900 case TFU_DCI_FORMAT_A1:
9901 CMCHKPK(cmPkTfuDciFormatA1A2Info, ¶m->u.formatA1Info, mBuf);
9903 case TFU_DCI_FORMAT_A2:
9904 CMCHKPK(cmPkTfuDciFormatA1A2Info, ¶m->u.formatA2Info, mBuf);
9908 case TFU_DCI_FORMAT_6_2:
9909 CMCHKPK(cmPkTfuDciFormat62AllocInfo, ¶m->u.format62AllocInfo, mBuf);
9911 case TFU_DCI_FORMAT_6_1A:
9912 CMCHKPK(cmPkTfuDciFormat6AAllocInfo, ¶m->u.format61AllocInfo, mBuf);
9915 case TFU_DCI_FORMAT_2A:
9916 CMCHKPK(cmPkTfuDciFormat2AAllocInfo, ¶m->u.format2AAllocInfo, mBuf);
9918 case TFU_DCI_FORMAT_2:
9919 CMCHKPK(cmPkTfuDciFormat2AllocInfo, ¶m->u.format2AllocInfo, mBuf);
9921 case TFU_DCI_FORMAT_1D:
9922 CMCHKPK(cmPkTfuDciFormat1dAllocInfo, ¶m->u.format1dAllocInfo, mBuf);
9924 case TFU_DCI_FORMAT_1C:
9925 CMCHKPK(cmPkTfuDciFormat1cInfo, ¶m->u.format1cAllocInfo, mBuf);
9927 case TFU_DCI_FORMAT_1B:
9928 CMCHKPK(cmPkTfuDciFormat1bAllocInfo, ¶m->u.format1bAllocInfo, mBuf);
9930 case TFU_DCI_FORMAT_1A:
9931 CMCHKPK(cmPkTfuDciFormat1aAllocInfo, ¶m->u.format1aAllocInfo, mBuf);
9933 case TFU_DCI_FORMAT_1:
9934 CMCHKPK(cmPkTfuDciFormat1AllocInfo, ¶m->u.format1AllocInfo, mBuf);
9939 CMCHKPK(SPkU32, param->format, mBuf);
9945 /***********************************************************
9947 * Func : cmUnpkTfuPdschDciInfo
9950 * Desc : This structure Carries the control information that would be needed
9951 * by the Physical layer to process the data to be sent on PDSCH.
9960 **********************************************************/
9962 PUBLIC S16 cmUnpkTfuPdschDciInfo
9964 TfuPdschDciInfo *param,
9968 PUBLIC S16 cmUnpkTfuPdschDciInfo(param, mBuf)
9969 TfuPdschDciInfo *param;
9974 TRC3(cmUnpkTfuPdschDciInfo)
9976 CMCHKUNPK(SUnpkU32, (U32 *)¶m->format, mBuf);
9977 switch(param->format) {
9978 case TFU_DCI_FORMAT_1:
9979 CMCHKUNPK(cmUnpkTfuDciFormat1AllocInfo, ¶m->u.format1AllocInfo, mBuf);
9981 case TFU_DCI_FORMAT_1A:
9982 CMCHKUNPK(cmUnpkTfuDciFormat1aAllocInfo, ¶m->u.format1aAllocInfo, mBuf);
9984 case TFU_DCI_FORMAT_1B:
9985 CMCHKUNPK(cmUnpkTfuDciFormat1bAllocInfo, ¶m->u.format1bAllocInfo, mBuf);
9987 case TFU_DCI_FORMAT_1C:
9988 CMCHKUNPK(cmUnpkTfuDciFormat1cInfo, ¶m->u.format1cAllocInfo, mBuf);
9990 case TFU_DCI_FORMAT_1D:
9991 CMCHKUNPK(cmUnpkTfuDciFormat1dAllocInfo, ¶m->u.format1dAllocInfo, mBuf);
9993 case TFU_DCI_FORMAT_2:
9994 CMCHKUNPK(cmUnpkTfuDciFormat2AllocInfo, ¶m->u.format2AllocInfo, mBuf);
9996 case TFU_DCI_FORMAT_2A:
9997 CMCHKUNPK(cmUnpkTfuDciFormat2AAllocInfo, ¶m->u.format2AAllocInfo, mBuf);
10000 case TFU_DCI_FORMAT_6_1A:
10001 CMCHKUNPK(cmUnpkTfuDciFormat6AAllocInfo, ¶m->u.format61AllocInfo, mBuf);
10003 case TFU_DCI_FORMAT_6_2:
10004 CMCHKUNPK(cmUnpkTfuDciFormat62AllocInfo, ¶m->u.format62AllocInfo, mBuf);
10008 case TFU_DCI_FORMAT_A1:
10009 CMCHKUNPK(cmUnpkTfuDciFormatA1A2Info, ¶m->u.formatA1Info, mBuf);
10011 case TFU_DCI_FORMAT_A2:
10012 CMCHKUNPK(cmUnpkTfuDciFormatA1A2Info, ¶m->u.formatA2Info, mBuf);
10014 case TFU_DCI_FORMAT_B1:
10015 CMCHKUNPK(cmUnpkTfuDciFormatB1B2Info, ¶m->u.formatB1Info, mBuf);
10017 case TFU_DCI_FORMAT_B2:
10018 CMCHKUNPK(cmUnpkTfuDciFormatB1B2Info, ¶m->u.formatB2Info, mBuf);
10026 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
10028 /***********************************************************
10030 * Func : cmPkTfuBfVectorInfo
10033 * Desc : This structure conveys the BeamForming Vector
10034 * Information that hold relevance to Tx Mode 7
10043 **********************************************************/
10045 PUBLIC S16 cmPkTfuBfVectorInfo
10047 TfuBfVectorInfo *param,
10051 PUBLIC S16 cmPkTfuBfVectorInfo(param, mBuf)
10052 TfuBfVectorInfo *param;
10057 TRC3(cmPkTfuBfVectorInfo)
10058 for(idx=TFU_MAX_DL_SUBBAND-1;idx>=0; idx--)
10060 for (idx2=param->numPhyAnt -1; idx2 >= 0; idx2--) {
10061 CMCHKPK(SPkU16, param->bfValue[idx2], mBuf);}
10062 CMCHKPK(SPkU8, param->numPhyAnt, mBuf);
10063 CMCHKPK(SPkU8, param->sbIndex, mBuf);
10068 /***********************************************************
10070 * Func : cmUnpkTfuBfVectorInfo
10073 * Desc : This structure conveys the BeamForming Vector
10074 * Information that hold relevance to Tx Mode 7
10083 **********************************************************/
10085 PUBLIC S16 cmUnpkTfuBfVectorInfo
10087 TfuBfVectorInfo *param,
10091 PUBLIC S16 cmUnpkTfuBfVectorInfo(param, mBuf)
10092 TfuBfVectorInfo *param;
10097 TRC3(cmUnpkTfuBfVectorInfo)
10098 for(idx=0;idx<TFU_MAX_DL_SUBBAND; idx++)
10100 CMCHKUNPK(SUnpkU8, ¶m->sbIndex, mBuf);
10101 CMCHKUNPK(SUnpkU8, ¶m->numPhyAnt, mBuf);
10102 for (idx2=0; idx2 <param->numPhyAnt; idx2++) {
10103 CMCHKUNPK(SUnpkU16, ¶m->bfValue[idx2], mBuf);}
10110 /***********************************************************
10112 * Func : cmPkTfuDatReqPduInfo
10115 * Desc : Pack Function for Tfu Dat Req PDU.
10124 **********************************************************/
10126 PUBLIC S16 cmPkTfuDatReqPduInfo
10128 TfuDatReqPduInfo *param,
10132 PUBLIC S16 cmPkTfuDatReqPduInfo(param, mBuf)
10133 TfuDatReqPduInfo *param;
10141 U32 lchIdx, pduIdx;
10144 TRC3(cmPkTfuDatReqPduInfo)
10146 /* LTE_ADV_FLAG_REMOVED_START */
10147 CMCHKPK(SPkU8, param->isEnbSFR, mBuf);
10148 /* LTE_ADV_FLAG_REMOVED_END */
10150 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
10152 CMCHKPK(SPkU16, param->txPwrOffset, mBuf);
10153 if(param->transMode == TFU_UE_TM_7)
10155 CMCHKPK(cmPkTfuBfVectorInfo, param->bfVector, mBuf);
10156 CMCHKPK(SPkU8, param->numBfVectors, mBuf);
10157 CMCHKPK(SPkU8, param->numBfPrbPerSb, mBuf);
10159 CMCHKPK(SPkU8, param->deltaPowOffIdx, mBuf);
10160 /* LTE_ADV_FLAG_REMOVED_START */
10161 CMCHKPK(SPkU8, param->pa, mBuf);
10162 /* LTE_ADV_FLAG_REMOVED_END */
10163 CMCHKPK(SPkU8, param->numLayers, mBuf);
10165 CMCHKPK(cmPkBool, param->isTApres, mBuf);
10166 CMCHKPK(cmPkTknU32, ¶m->doa, mBuf);
10167 CMCHKPK(SPkU32, param->transMode, mBuf);
10168 CMCHKPK(cmPkTfuDlCqiPuschInfo, ¶m->puschPmiInfo, mBuf);
10169 CMCHKPK(SPkU8, param->puschRptUsd, mBuf);
10170 for (i = 0; i < TFU_MAX_TB; i++)
10173 if (param->mBuf[i] != NULLP)
10175 tbMask = tbMask | (1 << i);
10177 #else /* L2_OPTMZ */
10178 for(lchIdx = 0; lchIdx < param->tbInfo[i].numLch; lchIdx++)
10180 for(pduIdx = 0; pduIdx < param->tbInfo[i].lchInfo[lchIdx].numPdu;
10183 if (param->tbInfo[i].lchInfo[lchIdx].mBuf[pduIdx] != NULLP)
10185 tbMask = tbMask | (1 << i);
10189 #endif /* L2_OPTMZ */
10191 /* tfu_c_001.main_2: Packing should consider nmbOfTBs.*/
10192 for (i=TFU_MAX_TB - 1; i >= 0; i--) {
10194 if (param->mBuf[i] != NULLP)
10196 CMCHKPK(cmPkBuffer, ¶m->mBuf[i], mBuf);
10199 // CMCHKPK(cmPkBuffer, ¶m->tbInfo[i].macPad, mBuf);
10200 for(lchIdx = 0; lchIdx < param->tbInfo[i].numLch; lchIdx++)
10202 for(pduIdx = 0; pduIdx < param->tbInfo[i].lchInfo[lchIdx].numPdu;
10205 CMCHKPK(cmPkBuffer, ¶m->tbInfo[i].lchInfo[lchIdx].mBuf[pduIdx],
10209 CMCHKPK(SPkU32, param->tbInfo[i].lchInfo[lchIdx].numPdu, mBuf);
10211 CMCHKPK(SPkU32, param->tbInfo[i].numLch, mBuf);
10212 CMCHKPK(SPkU32, param->tbInfo[i].padSize, mBuf);
10213 CMCHKPK(cmPkBuffer, ¶m->tbInfo[i].macCes, mBuf);
10214 CMCHKPK(cmPkBuffer, ¶m->tbInfo[i].macHdr, mBuf);
10215 CMCHKPK(cmPkMsgLen, param->tbInfo[i].tbSize, mBuf);
10216 CMCHKPK(cmPkBool, param->tbInfo[i].tbPres, mBuf);
10219 CMCHKPK(SPkU8, tbMask, mBuf);
10220 CMCHKPK(SPkU8, param->nmbOfTBs, mBuf);
10221 CMCHKPK(cmPkTfuPdschDciInfo, ¶m->dciInfo, mBuf);
10222 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
10228 /***********************************************************
10230 * Func : cmUnpkTfuDatReqPduInfo
10233 * Desc : UnPack function for Tfu Dat req pdu .
10242 **********************************************************/
10244 PUBLIC S16 cmUnpkTfuDatReqPduInfo
10246 TfuDatReqPduInfo *param,
10250 PUBLIC S16 cmUnpkTfuDatReqPduInfo(param, mBuf)
10251 TfuDatReqPduInfo *param;
10259 U32 lchIdx, pduIdx;
10261 TRC3(cmUnpkTfuDatReqPduInfo)
10263 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
10264 CMCHKUNPK(cmUnpkTfuPdschDciInfo, ¶m->dciInfo, mBuf);
10265 CMCHKUNPK(SUnpkU8, ¶m->nmbOfTBs, mBuf);
10267 CMCHKUNPK(SUnpkU8, &tbMask, mBuf);
10268 for (i=0; i<TFU_MAX_TB; i++) {
10270 if (tbMask & (1<<i))
10272 CMCHKUNPK(cmUnpkBuffer, ¶m->mBuf[i], mBuf);
10276 param->mBuf[i] = NULLP;
10278 #else /* L2_OPTMZ*/
10279 CMCHKUNPK(cmUnpkBool, ¶m->tbInfo[i].tbPres, mBuf);
10280 CMCHKUNPK(cmUnpkMsgLen, ¶m->tbInfo[i].tbSize, mBuf);
10281 CMCHKUNPK(cmUnpkBuffer, ¶m->tbInfo[i].macHdr, mBuf);
10282 CMCHKUNPK(cmUnpkBuffer, ¶m->tbInfo[i].macCes, mBuf);
10283 CMCHKUNPK(SUnpkU32, ¶m->tbInfo[i].padSize, mBuf);
10284 CMCHKUNPK(SUnpkU32, (U32 *)¶m->tbInfo[i].numLch, mBuf);
10285 for(lchIdx = 0; lchIdx < param->tbInfo[i].numLch; lchIdx++)
10287 CMCHKUNPK(SUnpkU32, (U32 *)¶m->tbInfo[i].lchInfo[lchIdx].numPdu,
10289 for(pduIdx = 0; pduIdx < param->tbInfo[i].lchInfo[lchIdx].numPdu;
10292 if (tbMask & (1<<i))
10294 CMCHKUNPK(cmUnpkBuffer, ¶m->tbInfo[i].lchInfo[lchIdx].\
10295 mBuf[pduIdx], mBuf);
10299 param->tbInfo[i].lchInfo[lchIdx].mBuf[pduIdx] = NULLP;
10303 //CMCHKUNPK(cmUnpkBuffer, ¶m->tbInfo[i].macPad, mBuf);
10304 #endif /* L2_OPTMZ*/
10307 CMCHKUNPK(SUnpkU8, ¶m->puschRptUsd, mBuf);
10308 CMCHKUNPK(cmUnpkTfuDlCqiPuschInfo, ¶m->puschPmiInfo, mBuf);
10309 CMCHKUNPK(SUnpkU32, (U32 *)¶m->transMode, mBuf);
10310 CMCHKUNPK(cmUnpkTknU32, ¶m->doa, mBuf);
10311 CMCHKUNPK(cmUnpkBool, ¶m->isTApres, mBuf);
10312 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
10314 CMCHKUNPK(SUnpkU8, ¶m->numLayers, mBuf);
10315 /* LTE_ADV_FLAG_REMOVED_START */
10316 CMCHKUNPK(SUnpkU8, ¶m->pa, mBuf);
10317 /* LTE_ADV_FLAG_REMOVED_END */
10318 CMCHKUNPK(SUnpkU8, ¶m->deltaPowOffIdx, mBuf);
10319 if(param->transMode == TFU_UE_TM_7)
10321 CMCHKUNPK(SUnpkU8, ¶m->numBfPrbPerSb, mBuf);
10322 CMCHKUNPK(SUnpkU8, ¶m->numBfVectors, mBuf);
10323 CMCHKUNPK(cmUnpkTfuBfVectorInfo, param->bfVector, mBuf);
10325 CMCHKUNPK(SUnpkU16, ¶m->txPwrOffset, mBuf);
10328 /* LTE_ADV_FLAG_REMOVED_START */
10329 CMCHKUNPK(SUnpkU8, ¶m->isEnbSFR, mBuf);
10330 /* LTE_ADV_FLAG_REMOVED_END */
10337 /***********************************************************
10339 * Func : cmPkTfuDatReqInfo
10342 * Desc : This structure contains the Data PDUs
10343 * @details This structure contains Data meant to be sent on both PBCH and
10344 * PDSCH. Control information necessary for processing of the data is sent along
10354 **********************************************************/
10356 PUBLIC S16 cmPkTfuDatReqInfo
10358 TfuDatReqInfo *param,
10362 PUBLIC S16 cmPkTfuDatReqInfo(param, mBuf)
10363 TfuDatReqInfo *param;
10370 TfuDatReqPduInfo *tfuDatReqPduInfo;
10372 TRC3(cmPkTfuDatReqInfo)
10374 count = param->pdus.count;
10375 node = param->pdus.last;
10377 tfuDatReqPduInfo = (TfuDatReqPduInfo *)node->node;
10379 CMCHKPK(cmPkTfuDatReqPduInfo, tfuDatReqPduInfo, mBuf);
10380 cmLListDelFrm(¶m->pdus, &tfuDatReqPduInfo->lnk);
10381 tfuDatReqPduInfo->lnk.node = (PTR)NULLP;
10383 CMCHKPK(SPkU32, count, mBuf);
10384 CMCHKPK(cmPkTknBuf, ¶m->bchDat, mBuf);
10385 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
10386 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
10392 /***********************************************************
10394 * Func : cmUnpkTfuDatReqInfo
10397 * Desc : This structure contains the Data PDUs
10398 * @details This structure contains Data meant to be sent on both PBCH and
10399 * PDSCH. Control information necessary for processing of the data is sent along
10409 **********************************************************/
10411 PUBLIC S16 cmUnpkTfuDatReqInfo
10413 TfuDatReqInfo *param,
10418 PUBLIC S16 cmUnpkTfuDatReqInfo(param, memCp, mBuf)
10419 TfuDatReqInfo *param;
10425 U32 count, loopCnt;
10426 TfuDatReqPduInfo *tfuDatReqPduInfo;
10428 TRC3(cmUnpkTfuDatReqInfo)
10430 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
10431 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
10432 CMCHKUNPK(cmUnpkTknBuf, ¶m->bchDat, &mBuf);
10433 cmLListInit(¶m->pdus);
10434 CMCHKUNPK(SUnpkU32, &count, mBuf);
10435 for (loopCnt=0; loopCnt<count; loopCnt++) {
10436 cmGetMem((Ptr)memCp, sizeof(*tfuDatReqPduInfo), (Ptr *)&tfuDatReqPduInfo);
10437 CMCHKUNPK(cmUnpkTfuDatReqPduInfo, tfuDatReqPduInfo, mBuf);
10438 cmLListAdd2Tail(¶m->pdus, &tfuDatReqPduInfo->lnk);
10439 tfuDatReqPduInfo->lnk.node = (PTR)tfuDatReqPduInfo;
10446 /***********************************************************
10448 * Func : cmPkTfuDatInfo
10451 * Desc : This structure contains the Data PDU and the RNTI of the UE.
10460 **********************************************************/
10462 PUBLIC S16 cmPkTfuDatInfo
10468 PUBLIC S16 cmPkTfuDatInfo(param, mBuf)
10474 TRC3(cmPkTfuDatInfo)
10476 CMCHKPK(cmPkBuffer, ¶m->mBuf, mBuf);
10477 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
10483 /***********************************************************
10485 * Func : cmUnpkTfuDatInfo
10488 * Desc : This structure contains the Data PDU and the RNTI of the UE.
10497 **********************************************************/
10499 PUBLIC S16 cmUnpkTfuDatInfo
10505 PUBLIC S16 cmUnpkTfuDatInfo(param, mBuf)
10511 TRC3(cmUnpkTfuDatInfo)
10513 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
10514 CMCHKUNPK(cmUnpkBuffer, ¶m->mBuf, mBuf);
10520 /***********************************************************
10522 * Func : cmPkTfuDatIndInfo
10525 * Desc : This structure contains the Data PDUs received at Physical Layer.
10526 * @details All the PDUs received by Physical layer in one subframe are clubbed
10527 * together into a single data structure and sent to MAC for processing.
10536 **********************************************************/
10538 PUBLIC S16 cmPkTfuDatIndInfo
10540 TfuDatIndInfo *param,
10544 PUBLIC S16 cmPkTfuDatIndInfo(param, mBuf)
10545 TfuDatIndInfo *param;
10552 TfuDatInfo *tfuDatInfo;
10554 TRC3(cmPkTfuDatIndInfo)
10557 CMCHKPK(SPkU8, param->sccIdx, mBuf);
10558 CMCHKPK(SPkU8, param->sectorId, mBuf);
10559 #endif /* TFU_5GTF */
10560 count = param->datIndLst.count;
10561 node = param->datIndLst.last;
10563 tfuDatInfo = (TfuDatInfo *)node->node;
10565 CMCHKPK(cmPkTfuDatInfo, tfuDatInfo, mBuf);
10566 cmLListDelFrm(¶m->datIndLst, &tfuDatInfo->lnk);
10567 tfuDatInfo->lnk.node = (PTR)NULLP;
10569 CMCHKPK(SPkU32, count, mBuf);
10570 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
10571 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
10577 /***********************************************************
10579 * Func : cmUnpkTfuDatIndInfo
10582 * Desc : This structure contains the Data PDUs received at Physical Layer.
10583 * @details All the PDUs received by Physical layer in one subframe are clubbed
10584 * together into a single data structure and sent to MAC for processing.
10593 **********************************************************/
10595 PUBLIC S16 cmUnpkTfuDatIndInfo
10597 TfuDatIndInfo *param,
10602 PUBLIC S16 cmUnpkTfuDatIndInfo(param, memCp, mBuf)
10603 TfuDatIndInfo *param;
10609 U32 count, loopCnt;
10610 TfuDatInfo *tfuDatInfo;
10612 TRC3(cmUnpkTfuDatIndInfo)
10614 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
10615 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
10616 cmLListInit(¶m->datIndLst);
10617 CMCHKUNPK(SUnpkU32, &count, mBuf);
10618 for (loopCnt=0; loopCnt<count; loopCnt++) {
10619 cmGetMem((Ptr)memCp, sizeof(*tfuDatInfo), (Ptr *)&tfuDatInfo);
10620 CMCHKUNPK(cmUnpkTfuDatInfo, tfuDatInfo, mBuf);
10621 cmLListAdd2Tail(¶m->datIndLst, &tfuDatInfo->lnk);
10622 tfuDatInfo->lnk.node = (PTR)tfuDatInfo;
10625 CMCHKUNPK(SUnpkU8, ¶m->sectorId, mBuf);
10626 CMCHKUNPK(SUnpkU8, ¶m->sccIdx, mBuf);
10627 #endif /* TFU_5GTF */
10633 /***********************************************************
10635 * Func : cmPkTfuSrInfo
10638 * Desc : This structure contains the SR indication for a UE, identified by
10639 * the given RNTI. The structure also contains a PUCCH Delta power, that is
10640 * calculated by the physical layer, and is used by the scheduler for Power
10641 * control of the UE.
10650 **********************************************************/
10652 PUBLIC S16 cmPkTfuSrInfo
10658 PUBLIC S16 cmPkTfuSrInfo(param, mBuf)
10664 TRC3(cmPkTfuSrInfo)
10666 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
10672 /***********************************************************
10674 * Func : cmUnpkTfuSrInfo
10677 * Desc : This structure contains the SR indication for a UE, identified by
10678 * the given RNTI. The structure also contains a PUCCH Delta power, that is
10679 * calculated by the physical layer, and is used by the scheduler for Power
10680 * control of the UE.
10689 **********************************************************/
10691 PUBLIC S16 cmUnpkTfuSrInfo
10697 PUBLIC S16 cmUnpkTfuSrInfo(param, mBuf)
10703 TRC3(cmUnpkTfuSrInfo)
10705 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
10711 /***********************************************************
10713 * Func : cmPkTfuSrIndInfo
10716 * Desc : This structure contains all the Scheduling Requests (SR) indications
10717 * received in a subframe.
10726 **********************************************************/
10728 PUBLIC S16 cmPkTfuSrIndInfo
10730 TfuSrIndInfo *param,
10734 PUBLIC S16 cmPkTfuSrIndInfo(param, mBuf)
10735 TfuSrIndInfo *param;
10742 TfuSrInfo *tfuSrInfo;
10744 TRC3(cmPkTfuSrIndInfo)
10746 count = param->srLst.count;
10747 node = param->srLst.last;
10749 tfuSrInfo = (TfuSrInfo *)node->node;
10751 CMCHKPK(cmPkTfuSrInfo, tfuSrInfo, mBuf);
10752 cmLListDelFrm(¶m->srLst, &tfuSrInfo->lnk);
10753 tfuSrInfo->lnk.node = (PTR)NULLP;
10755 CMCHKPK(SPkU32, count, mBuf);
10756 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
10757 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
10763 /***********************************************************
10765 * Func : cmUnpkTfuSrIndInfo
10768 * Desc : This structure contains all the Scheduling Requests (SR) indications
10769 * received in a subframe.
10778 **********************************************************/
10780 PUBLIC S16 cmUnpkTfuSrIndInfo
10782 TfuSrIndInfo *param,
10787 PUBLIC S16 cmUnpkTfuSrIndInfo(param, memCp, mBuf)
10788 TfuSrIndInfo *param;
10794 U32 count, loopCnt;
10795 TfuSrInfo *tfuSrInfo;
10797 TRC3(cmUnpkTfuSrIndInfo)
10799 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
10800 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
10801 cmLListInit(¶m->srLst);
10802 CMCHKUNPK(SUnpkU32, &count, mBuf);
10803 for (loopCnt=0; loopCnt<count; loopCnt++) {
10804 cmGetMem((Ptr)memCp, sizeof(*tfuSrInfo), (Ptr *)&tfuSrInfo);
10805 CMCHKUNPK(cmUnpkTfuSrInfo, tfuSrInfo, mBuf);
10806 cmLListAdd2Tail(¶m->srLst, &tfuSrInfo->lnk);
10807 tfuSrInfo->lnk.node = (PTR)tfuSrInfo;
10812 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
10813 /***********************************************************
10815 * Func : cmPkTfuHqInfo
10818 * Desc : This structure contains the HARQ feedback for a single UE.
10819 * @details RNTI is present to identify the UE.
10820 * For FDD a single feedback is present.
10821 * For TDD HARQ multiplexing a list of HARQ feedbacks is present.
10830 **********************************************************/
10832 PUBLIC S16 cmPkTfuHqInfo
10838 PUBLIC S16 cmPkTfuHqInfo(param, mBuf)
10845 TRC3(cmPkTfuHqInfo)
10847 CMCHKPK(SPkU8, param->isPusch, mBuf);
10848 for (i=TFU_MAX_HARQ_FDBKS-1; i >= 0; i--) {
10849 CMCHKPK(SPkU32, param->isAck[i], mBuf);
10852 CMCHKPK(SPkU8, param->M, mBuf);
10854 CMCHKPK(SPkU8, param->noOfTbs, mBuf);
10855 /* ACC-TDD ccpu00130520 */
10856 CMCHKPK(SPkU32, param->hqFdbkMode, mBuf);
10857 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
10861 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
10862 /***********************************************************
10864 * Func : cmUnpkTfuHqInfo
10867 * Desc : This structure contains the HARQ feedback for a single UE.
10868 * @details RNTI is present to identify the UE.
10869 * For FDD a single feedback is present.
10870 * For TDD HARQ multiplexing a list of HARQ feedbacks is present.
10879 **********************************************************/
10881 PUBLIC S16 cmUnpkTfuHqInfo
10887 PUBLIC S16 cmUnpkTfuHqInfo(param, mBuf)
10893 TRC3(cmUnpkTfuHqInfo)
10895 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
10896 /* ACC-TDD ccpu00130520 */
10897 CMCHKUNPK(SUnpkU32, (U32 *)¶m->hqFdbkMode, mBuf);
10898 CMCHKUNPK(SUnpkU8, ¶m->noOfTbs, mBuf);
10900 CMCHKUNPK(SUnpkU8, ¶m->M, mBuf);
10902 for (i=0; i<TFU_MAX_HARQ_FDBKS; i++) {
10903 CMCHKUNPK(SUnpkU32, (U32 *)¶m->isAck[i], mBuf);
10905 CMCHKUNPK(SUnpkU8, ¶m->isPusch, mBuf);
10913 /***********************************************************
10915 * Func : cmPkTfuHqIndInfo
10918 * Desc : This structure contains a list of HARQ feedback for a number of UEs.
10919 * @details All the HARQ feedback received in the subframe are clubbed together
10920 * in this data structure and given to the scheduler for processing.
10929 **********************************************************/
10931 PUBLIC S16 cmPkTfuHqIndInfo
10933 TfuHqIndInfo *param,
10937 PUBLIC S16 cmPkTfuHqIndInfo(param, mBuf)
10938 TfuHqIndInfo *param;
10945 TfuHqInfo *tfuHqInfo;
10947 TRC3(cmPkTfuHqIndInfo)
10949 count = param->hqIndLst.count;
10950 node = param->hqIndLst.last;
10952 tfuHqInfo = (TfuHqInfo *)node->node;
10954 CMCHKPK(cmPkTfuHqInfo, tfuHqInfo, mBuf);
10955 cmLListDelFrm(¶m->hqIndLst, &tfuHqInfo->lnk);
10956 tfuHqInfo->lnk.node = (PTR)NULLP;
10958 CMCHKPK(SPkU32, count, mBuf);
10959 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
10960 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
10966 /***********************************************************
10968 * Func : cmUnpkTfuHqIndInfo
10971 * Desc : This structure contains a list of HARQ feedback for a number of UEs.
10972 * @details All the HARQ feedback received in the subframe are clubbed together
10973 * in this data structure and given to the scheduler for processing.
10982 **********************************************************/
10984 PUBLIC S16 cmUnpkTfuHqIndInfo
10986 TfuHqIndInfo *param,
10991 PUBLIC S16 cmUnpkTfuHqIndInfo(param, memCp, mBuf)
10992 TfuHqIndInfo *param;
10998 U32 count, loopCnt;
10999 TfuHqInfo *tfuHqInfo;
11001 TRC3(cmUnpkTfuHqIndInfo)
11003 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
11004 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
11005 cmLListInit(¶m->hqIndLst);
11006 CMCHKUNPK(SUnpkU32, &count, mBuf);
11007 for (loopCnt=0; loopCnt<count; loopCnt++) {
11008 cmGetMem((Ptr)memCp, sizeof(*tfuHqInfo), (Ptr *)&tfuHqInfo);
11009 CMCHKUNPK(cmUnpkTfuHqInfo, tfuHqInfo, mBuf);
11010 cmLListAdd2Tail(¶m->hqIndLst, &tfuHqInfo->lnk);
11011 tfuHqInfo->lnk.node = (PTR)tfuHqInfo;
11018 /***********************************************************
11020 * Func : cmPkTfuUlCqiInfo
11023 * Desc : This structure conveys the Uplink CQI information for a single subband.
11032 **********************************************************/
11034 PUBLIC S16 cmPkTfuUlCqiInfo
11036 TfuUlCqiInfo *param,
11040 PUBLIC S16 cmPkTfuUlCqiInfo(param, mBuf)
11041 TfuUlCqiInfo *param;
11046 TRC3(cmPkTfuUlCqiInfo)
11048 CMCHKPK(cmPkTfuSubbandCqiInfo, ¶m->subbandCqi, mBuf);
11054 /***********************************************************
11056 * Func : cmUnpkTfuUlCqiInfo
11059 * Desc : This structure conveys the Uplink CQI information for a single subband.
11068 **********************************************************/
11070 PUBLIC S16 cmUnpkTfuUlCqiInfo
11072 TfuUlCqiInfo *param,
11076 PUBLIC S16 cmUnpkTfuUlCqiInfo(param, mBuf)
11077 TfuUlCqiInfo *param;
11082 TRC3(cmUnpkTfuUlCqiInfo)
11084 CMCHKUNPK(cmUnpkTfuSubbandCqiInfo, ¶m->subbandCqi, mBuf);
11090 /***********************************************************
11092 * Func : cmPkTfuUlCqiRpt
11095 * Desc : This structure contains the UL CQI estimated by the physical layer.
11096 * @details The report could be wideband CQI or subBand CQI or both.
11105 **********************************************************/
11107 PUBLIC S16 cmPkTfuUlCqiRpt
11109 TfuUlCqiRpt *param,
11113 PUBLIC S16 cmPkTfuUlCqiRpt(param, mBuf)
11114 TfuUlCqiRpt *param;
11120 TRC3(cmPkTfuUlCqiRpt)
11122 for (i=TFU_MAX_UL_SUBBAND-1; i >= 0; i--) {
11123 CMCHKPK(cmPkTfuUlCqiInfo, ¶m->ulCqiInfoArr[i], mBuf);
11125 CMCHKPK(SPkU8, param->numSubband, mBuf);
11126 CMCHKPK(SPkU8, param->wideCqi, mBuf);
11127 CMCHKPK(SPkU8, param->isTxPort0, mBuf);
11128 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
11134 /***********************************************************
11136 * Func : cmUnpkTfuUlCqiRpt
11139 * Desc : This structure contains the UL CQI estimated by the physical layer.
11140 * @details The report could be wideband CQI or subBand CQI or both.
11149 **********************************************************/
11151 PUBLIC S16 cmUnpkTfuUlCqiRpt
11153 TfuUlCqiRpt *param,
11157 PUBLIC S16 cmUnpkTfuUlCqiRpt(param, mBuf)
11158 TfuUlCqiRpt *param;
11164 TRC3(cmUnpkTfuUlCqiRpt)
11166 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
11167 CMCHKUNPK(SUnpkU8, ¶m->isTxPort0, mBuf);
11168 CMCHKUNPK(SUnpkU8, ¶m->wideCqi, mBuf);
11169 CMCHKUNPK(SUnpkU8, ¶m->numSubband, mBuf);
11170 for (i=0; i<TFU_MAX_UL_SUBBAND; i++) {
11171 CMCHKUNPK(cmUnpkTfuUlCqiInfo, ¶m->ulCqiInfoArr[i], mBuf);
11178 /***********************************************************
11180 * Func : cmPkTfuUlCqiIndInfo
11183 * Desc : This structure conveys the Uplink CQI information.
11184 * @details Uplink CQI is calculated by the physical layer, and is this
11185 * information is provided to the scheduler.
11186 * This data structure clubs together the UL CQI estimates for all the UEs that
11187 * have been scheduled in the subframe for uplink transmission.
11196 **********************************************************/
11198 PUBLIC S16 cmPkTfuUlCqiIndInfo
11200 TfuUlCqiIndInfo *param,
11204 PUBLIC S16 cmPkTfuUlCqiIndInfo(param, mBuf)
11205 TfuUlCqiIndInfo *param;
11212 TfuUlCqiRpt *tfuUlCqiRpt;
11214 TRC3(cmPkTfuUlCqiIndInfo)
11216 count = param->ulCqiRpt.count;
11217 node = param->ulCqiRpt.last;
11219 tfuUlCqiRpt = (TfuUlCqiRpt *)node->node;
11221 CMCHKPK(cmPkTfuUlCqiRpt, tfuUlCqiRpt, mBuf);
11222 cmLListDelFrm(¶m->ulCqiRpt, &tfuUlCqiRpt->lnk);
11223 tfuUlCqiRpt->lnk.node = (PTR)NULLP;
11225 CMCHKPK(SPkU32, count, mBuf);
11226 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
11227 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
11233 /***********************************************************
11235 * Func : cmUnpkTfuUlCqiIndInfo
11238 * Desc : This structure conveys the Uplink CQI information.
11239 * @details Uplink CQI is calculated by the physical layer, and is this
11240 * information is provided to the scheduler.
11241 * This data structure clubs together the UL CQI estimates for all the UEs that
11242 * have been scheduled in the subframe for uplink transmission.
11251 **********************************************************/
11253 PUBLIC S16 cmUnpkTfuUlCqiIndInfo
11255 TfuUlCqiIndInfo *param,
11260 PUBLIC S16 cmUnpkTfuUlCqiIndInfo(param, memCp, mBuf)
11261 TfuUlCqiIndInfo *param;
11267 U32 count, loopCnt;
11268 TfuUlCqiRpt *tfuUlCqiRpt;
11270 TRC3(cmUnpkTfuUlCqiIndInfo)
11272 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
11273 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
11274 cmLListInit(¶m->ulCqiRpt);
11275 CMCHKUNPK(SUnpkU32, &count, mBuf);
11276 for (loopCnt=0; loopCnt<count; loopCnt++) {
11277 cmGetMem((Ptr)memCp, sizeof(*tfuUlCqiRpt), (Ptr *)&tfuUlCqiRpt);
11278 CMCHKUNPK(cmUnpkTfuUlCqiRpt, tfuUlCqiRpt, mBuf);
11279 cmLListAdd2Tail(¶m->ulCqiRpt, &tfuUlCqiRpt->lnk);
11280 tfuUlCqiRpt->lnk.node = (PTR)tfuUlCqiRpt;
11288 /***********************************************************
11290 * Func : cmPkTfuDlCqiRpt
11293 * Desc : This structure contains the DL CQI report for a single UE.
11294 * @details The report could either be reported on PUCCH or PUSCH, a flag
11295 * conveys this information.
11304 **********************************************************/
11306 PUBLIC S16 cmPkTfuDlCqiRpt
11308 TfuDlCqiRpt *param,
11312 PUBLIC S16 cmPkTfuDlCqiRpt(param, mBuf)
11313 TfuDlCqiRpt *param;
11318 TRC3(cmPkTfuDlCqiRpt)
11320 if (cmPkTfuDlCqiInfo(param->isPucchInfo, ¶m->dlCqiInfo, mBuf) != ROK)
11322 CMCHKPK(SPkU8, param->isPucchInfo, mBuf);
11323 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
11329 /***********************************************************
11331 * Func : cmUnpkTfuDlCqiRpt
11334 * Desc : This structure contains the DL CQI report for a single UE.
11335 * @details The report could either be reported on PUCCH or PUSCH, a flag
11336 * conveys this information.
11345 **********************************************************/
11347 PUBLIC S16 cmUnpkTfuDlCqiRpt
11349 TfuDlCqiRpt *param,
11353 PUBLIC S16 cmUnpkTfuDlCqiRpt(param, mBuf)
11354 TfuDlCqiRpt *param;
11359 TRC3(cmUnpkTfuDlCqiRpt)
11361 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
11362 CMCHKUNPK(SUnpkU8, ¶m->isPucchInfo, mBuf);
11363 if (cmUnpkTfuDlCqiInfo (param->isPucchInfo, ¶m->dlCqiInfo, mBuf) != ROK)
11370 /***********************************************************
11372 * Func : cmPkTfuDlCqiIndInfo
11375 * Desc : This structure contains a list of Downlink CQI reports transmitted by
11377 * @details This structure clubs together DL CQI reports for a number of UEs.
11386 **********************************************************/
11388 PUBLIC S16 cmPkTfuDlCqiIndInfo
11390 TfuDlCqiIndInfo *param,
11394 PUBLIC S16 cmPkTfuDlCqiIndInfo(param, mBuf)
11395 TfuDlCqiIndInfo *param;
11402 TfuDlCqiRpt *tfuDlCqiRpt;
11404 TRC3(cmPkTfuDlCqiIndInfo)
11406 count = param->dlCqiRptsLst.count;
11407 node = param->dlCqiRptsLst.last;
11409 tfuDlCqiRpt = (TfuDlCqiRpt *)node->node;
11411 CMCHKPK(cmPkTfuDlCqiRpt, tfuDlCqiRpt, mBuf);
11412 cmLListDelFrm(¶m->dlCqiRptsLst, &tfuDlCqiRpt->lnk);
11413 tfuDlCqiRpt->lnk.node = (PTR)NULLP;
11415 CMCHKPK(SPkU32, count, mBuf);
11416 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
11417 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
11423 /***********************************************************
11425 * Func : cmUnpkTfuDlCqiIndInfo
11428 * Desc : This structure contains a list of Downlink CQI reports transmitted by
11430 * @details This structure clubs together DL CQI reports for a number of UEs.
11439 **********************************************************/
11441 PUBLIC S16 cmUnpkTfuDlCqiIndInfo
11443 TfuDlCqiIndInfo *param,
11448 PUBLIC S16 cmUnpkTfuDlCqiIndInfo(param, memCp, mBuf)
11449 TfuDlCqiIndInfo *param;
11455 U32 count, loopCnt;
11456 TfuDlCqiRpt *tfuDlCqiRpt;
11458 TRC3(cmUnpkTfuDlCqiIndInfo)
11460 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
11461 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
11462 cmLListInit(¶m->dlCqiRptsLst);
11463 CMCHKUNPK(SUnpkU32, &count, mBuf);
11464 for (loopCnt=0; loopCnt<count; loopCnt++) {
11465 cmGetMem((Ptr)memCp, sizeof(*tfuDlCqiRpt), (Ptr *)&tfuDlCqiRpt);
11466 CMCHKUNPK(cmUnpkTfuDlCqiRpt, tfuDlCqiRpt, mBuf);
11467 cmLListAdd2Tail(¶m->dlCqiRptsLst, &tfuDlCqiRpt->lnk);
11468 tfuDlCqiRpt->lnk.node = (PTR)tfuDlCqiRpt;
11475 /***********************************************************
11477 * Func : cmPkTfuCrcInfo
11480 * Desc : This structure contains the CRC indication for a single
11490 **********************************************************/
11492 PUBLIC S16 cmPkTfuCrcInfo
11498 PUBLIC S16 cmPkTfuCrcInfo(param, mBuf)
11504 TRC3(cmPkTfuCrcInfo)
11506 CMCHKPK(cmPkTknU8, ¶m->rv, mBuf);
11507 CMCHKPK(SPkU8, param->isFailure, mBuf);
11508 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
11514 /***********************************************************
11516 * Func : cmUnpkTfuCrcInfo
11519 * Desc : This structure contains the CRC indication for a single
11529 **********************************************************/
11531 PUBLIC S16 cmUnpkTfuCrcInfo
11537 PUBLIC S16 cmUnpkTfuCrcInfo(param, mBuf)
11543 TRC3(cmUnpkTfuCrcInfo)
11545 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
11546 CMCHKUNPK(SUnpkU8, ¶m->isFailure, mBuf);
11547 CMCHKUNPK(cmUnpkTknU8, ¶m->rv, mBuf);
11553 /***********************************************************
11555 * Func : cmPkTfuCrcIndInfo
11558 * Desc : This structure contains information that is passed as a part of the
11559 * CRC Indication from PHY to MAC.
11560 * @details This structure clubs together all the CRC indications for
11561 * a single subframe and conveys this information to the scheduler.
11570 **********************************************************/
11572 PUBLIC S16 cmPkTfuCrcIndInfo
11574 TfuCrcIndInfo *param,
11578 PUBLIC S16 cmPkTfuCrcIndInfo(param, mBuf)
11579 TfuCrcIndInfo *param;
11586 TfuCrcInfo *tfuCrcIndInfo;
11588 TRC3(cmPkTfuCrcIndInfo)
11591 CMCHKPK(SPkU8, param->sccIdx, mBuf);
11592 CMCHKPK(SPkU8, param->sectorId, mBuf);
11593 #endif /* TFU_5GTF */
11594 count = param->crcLst.count;
11595 node = param->crcLst.last;
11597 tfuCrcIndInfo = (TfuCrcInfo *)node->node;
11599 CMCHKPK(cmPkTfuCrcInfo, tfuCrcIndInfo, mBuf);
11600 cmLListDelFrm(¶m->crcLst, &tfuCrcIndInfo->lnk);
11601 tfuCrcIndInfo->lnk.node = (PTR)NULLP;
11603 CMCHKPK(SPkU32, count, mBuf);
11604 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
11605 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
11611 /***********************************************************
11613 * Func : cmUnpkTfuCrcIndInfo
11616 * Desc : This structure contains information that is passed as a part of the
11617 * CRC Indication from PHY to MAC.
11618 * @details This structure clubs together all the CRC indications for
11619 * a single subframe and conveys this information to the scheduler.
11628 **********************************************************/
11630 PUBLIC S16 cmUnpkTfuCrcIndInfo
11632 TfuCrcIndInfo *param,
11637 PUBLIC S16 cmUnpkTfuCrcIndInfo(param, memCp, mBuf)
11638 TfuCrcIndInfo *param;
11644 U32 count, loopCnt;
11645 TfuCrcInfo *tfuCrcIndInfo;
11647 TRC3(cmUnpkTfuCrcIndInfo)
11649 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
11650 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
11651 cmLListInit(¶m->crcLst);
11652 CMCHKUNPK(SUnpkU32, &count, mBuf);
11653 for (loopCnt=0; loopCnt<count; loopCnt++) {
11654 cmGetMem((Ptr)memCp, sizeof(*tfuCrcIndInfo), (Ptr *)&tfuCrcIndInfo);
11655 CMCHKUNPK(cmUnpkTfuCrcInfo, tfuCrcIndInfo, mBuf);
11656 cmLListAdd2Tail(¶m->crcLst, &tfuCrcIndInfo->lnk);
11657 tfuCrcIndInfo->lnk.node = (PTR)tfuCrcIndInfo;
11660 CMCHKUNPK(SUnpkU8, ¶m->sectorId, mBuf);
11661 CMCHKUNPK(SUnpkU8, ¶m->sccIdx, mBuf);
11662 #endif /* TFU_5GTF */
11668 /***********************************************************
11670 * Func : cmPkTfuTimingAdvInfo
11673 * Desc : This structure contains the timing advance information for a single
11683 **********************************************************/
11685 PUBLIC S16 cmPkTfuTimingAdvInfo
11687 TfuTimingAdvInfo *param,
11691 PUBLIC S16 cmPkTfuTimingAdvInfo(param, mBuf)
11692 TfuTimingAdvInfo *param;
11697 TRC3(cmPkTfuTimingAdvInfo)
11699 CMCHKPK(SPkU8, param->timingAdv, mBuf);
11700 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
11706 /***********************************************************
11708 * Func : cmUnpkTfuTimingAdvInfo
11711 * Desc : This structure contains the timing advance information for a single
11721 **********************************************************/
11723 PUBLIC S16 cmUnpkTfuTimingAdvInfo
11725 TfuTimingAdvInfo *param,
11729 PUBLIC S16 cmUnpkTfuTimingAdvInfo(param, mBuf)
11730 TfuTimingAdvInfo *param;
11735 TRC3(cmUnpkTfuTimingAdvInfo)
11737 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
11738 CMCHKUNPK(SUnpkU8, ¶m->timingAdv, mBuf);
11744 /***********************************************************
11746 * Func : cmPkTfuTimingAdvIndInfo
11749 * Desc : This structure contains information that is passed as part of the Timing
11750 * Advance indication from PHY to MAC.
11751 * @details This structure clubs together timing advances for a number of UEs.
11760 **********************************************************/
11762 PUBLIC S16 cmPkTfuTimingAdvIndInfo
11764 TfuTimingAdvIndInfo *param,
11768 PUBLIC S16 cmPkTfuTimingAdvIndInfo(param, mBuf)
11769 TfuTimingAdvIndInfo *param;
11776 TfuTimingAdvInfo *tfuTimingAdvInfo;
11778 TRC3(cmPkTfuTimingAdvIndInfo)
11780 count = param->timingAdvLst.count;
11781 node = param->timingAdvLst.last;
11783 tfuTimingAdvInfo = (TfuTimingAdvInfo *)node->node;
11785 CMCHKPK(cmPkTfuTimingAdvInfo, tfuTimingAdvInfo, mBuf);
11786 cmLListDelFrm(¶m->timingAdvLst, &tfuTimingAdvInfo->lnk);
11787 tfuTimingAdvInfo->lnk.node = (PTR)NULLP;
11789 CMCHKPK(SPkU32, count, mBuf);
11790 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
11791 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
11797 /***********************************************************
11799 * Func : cmUnpkTfuTimingAdvIndInfo
11802 * Desc : This structure contains information that is passed as part of the Timing
11803 * Advance indication from PHY to MAC.
11804 * @details This structure clubs together timing advances for a number of UEs.
11813 **********************************************************/
11815 PUBLIC S16 cmUnpkTfuTimingAdvIndInfo
11817 TfuTimingAdvIndInfo *param,
11822 PUBLIC S16 cmUnpkTfuTimingAdvIndInfo(param, memCp, mBuf)
11823 TfuTimingAdvIndInfo *param;
11829 U32 count, loopCnt;
11830 TfuTimingAdvInfo *tfuTimingAdvInfo;
11832 TRC3(cmUnpkTfuTimingAdvIndInfo)
11834 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
11835 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
11836 cmLListInit(¶m->timingAdvLst);
11837 CMCHKUNPK(SUnpkU32, &count, mBuf);
11838 for (loopCnt=0; loopCnt<count; loopCnt++) {
11839 cmGetMem((Ptr)memCp, sizeof(*tfuTimingAdvInfo), (Ptr *)&tfuTimingAdvInfo);
11840 CMCHKUNPK(cmUnpkTfuTimingAdvInfo, tfuTimingAdvInfo, mBuf);
11841 cmLListAdd2Tail(¶m->timingAdvLst, &tfuTimingAdvInfo->lnk);
11842 tfuTimingAdvInfo->lnk.node = (PTR)tfuTimingAdvInfo;
11848 /***********************************************************
11850 * Func : cmPkTfuTtiCellInfo
11853 * Desc : This structure contains information that is
11854 * passed as a part of the TTI indication sent
11855 * from CL to MAC and SCH
11864 **********************************************************/
11866 PUBLIC S16 cmPkTfuTtiCellInfo
11868 TfuTtiCellInfo *param,
11872 PUBLIC S16 cmPkTfuTtiCellInfo(param, mBuf)
11873 TfuTtiCellInfo *param;
11878 TRC3(cmPkTfuTtiCellInfo)
11880 CMCHKPK(SPkU8, param->ulBlankSf, mBuf);
11881 CMCHKPK(SPkU8, param->dlBlankSf, mBuf);
11882 CMCHKPK(SPkU8, param->schTickDelta, mBuf);
11883 CMCHKPK(cmPkBool, param->isDummyTti, mBuf);
11884 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
11885 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
11890 /***********************************************************
11892 * Func : cmPkTfuTtiIndInfo
11895 * Desc : This structure contains information that is passed as a part of the TTI
11896 * indication sent from PHY to MAC.
11905 **********************************************************/
11907 PUBLIC S16 cmPkTfuTtiIndInfo
11909 TfuTtiIndInfo *param,
11913 PUBLIC S16 cmPkTfuTtiIndInfo(param, mBuf)
11914 TfuTtiIndInfo *param;
11920 TRC3(cmPkTfuTtiIndInfo)
11923 for (i=(param->numCells-1); i >= 0; i--) {
11924 CMCHKPK(cmPkTfuTtiCellInfo, ¶m->cells[i], mBuf);
11926 CMCHKPK(SPkU8, param->numCells, mBuf);
11932 /***********************************************************
11934 * Func : cmUnpkTfuTtiCellInfo
11937 * Desc : This structure contains information that is
11938 * passed as a part of the TTI indication sent
11939 * from CL to MAC and SCH
11948 **********************************************************/
11950 PUBLIC S16 cmUnpkTfuTtiCellInfo
11952 TfuTtiCellInfo *param,
11956 PUBLIC S16 cmUnpkTfuTtiCellInfo(param, mBuf)
11957 TfuTtiCellInfo *param;
11962 TRC3(cmUnpkTfuTtiCellInfo)
11964 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
11965 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
11966 CMCHKUNPK(cmUnpkBool, ¶m->isDummyTti, mBuf);
11967 CMCHKUNPK(SUnpkU8, ¶m->schTickDelta, mBuf);
11968 CMCHKUNPK(SUnpkU8, ¶m->dlBlankSf, mBuf);
11969 CMCHKUNPK(SUnpkU8, ¶m->ulBlankSf, mBuf);
11975 /***********************************************************
11977 * Func : cmUnpackSlotIndInfo
11980 * Desc : This structure contains information that is passed as a part of the Slot
11981 * indication sent from PHY to MAC.
11990 **********************************************************/
11991 PUBLIC S16 cmUnpackSlotIndInfo
11993 SlotIndInfo *param,
11997 CMCHKUNPK(SUnpkU16, ¶m->sfn, mBuf);
11998 CMCHKUNPK(SUnpkU16, ¶m->slot, mBuf);
12005 /***********************************************************
12007 * Func : cmPkTfuRaReqInfo
12010 * Desc : This structure contains the information for a single Random Access Request.
12011 * @details The information present in this structure is for a single preamble.
12012 * Associated with each preamble are fields that the physical layer calculates
12013 * based on the reception of the Random Access Request. These are the following
12014 * -# Timing Advance
12016 * -# CQI (optional).
12025 **********************************************************/
12027 PUBLIC S16 cmPkTfuRaReqInfo
12029 TfuRaReqInfo *param,
12033 PUBLIC S16 cmPkTfuRaReqInfo(param, mBuf)
12034 TfuRaReqInfo *param;
12039 TRC3(cmPkTfuRaReqInfo)
12041 CMCHKPK(SPkU8, param->cqiIdx, mBuf);
12042 CMCHKPK(SPkU8, param->cqiPres, mBuf);
12043 CMCHKPK(SPkU8, param->tpc, mBuf);
12044 CMCHKPK(SPkU16, param->ta, mBuf);
12045 CMCHKPK(SPkU8, param->rapId, mBuf);
12051 /***********************************************************
12053 * Func : cmUnpkTfuRaReqInfo
12056 * Desc : This structure contains the information for a single Random Access Request.
12057 * @details The information present in this structure is for a single preamble.
12058 * Associated with each preamble are fields that the physical layer calculates
12059 * based on the reception of the Random Access Request. These are the following
12060 * -# Timing Advance
12062 * -# CQI (optional).
12071 **********************************************************/
12073 PUBLIC S16 cmUnpkTfuRaReqInfo
12075 TfuRaReqInfo *param,
12079 PUBLIC S16 cmUnpkTfuRaReqInfo(param, mBuf)
12080 TfuRaReqInfo *param;
12085 TRC3(cmUnpkTfuRaReqInfo)
12087 CMCHKUNPK(SUnpkU8, ¶m->rapId, mBuf);
12088 CMCHKUNPK(SUnpkU16, ¶m->ta, mBuf);
12089 CMCHKUNPK(SUnpkU8, ¶m->tpc, mBuf);
12090 CMCHKUNPK(SUnpkU8, ¶m->cqiPres, mBuf);
12091 CMCHKUNPK(SUnpkU8, ¶m->cqiIdx, mBuf);
12097 /***********************************************************
12099 * Func : cmPkTfuRachInfo
12102 * Desc : This structure contains RACH request information for a single
12112 **********************************************************/
12114 PUBLIC S16 cmPkTfuRachInfo
12117 TfuRachInfo *param,
12121 PUBLIC S16 cmPkTfuRachInfo(memCp, param, mBuf)
12123 TfuRachInfo *param;
12129 TRC3(cmPkTfuRachInfo)
12131 for (i= (param->numRaReqInfo - 1); i >= 0; i--) {
12132 CMCHKPK(cmPkTfuRaReqInfo, &(param->raReqInfoArr[i]), mBuf);
12135 CMCHKPK(SPkU16, param->nPwrFactor, mBuf);
12136 CMCHKPK(SPkU8, param->nPRACHSymbIndex, mBuf);
12137 CMCHKPK(SPkU8, param->nf1Value, mBuf);
12138 CMCHKPK(SPkU8, param->nCyclicShift, mBuf);
12139 CMCHKPK(SPkU8, param->nRootSeq, mBuf);
12140 CMCHKPK(SPkU8, param->nPRACHConfiguration, mBuf);
12141 CMCHKPK(SPkU8, param->nPreambleFormat, mBuf);
12143 CMCHKPK(SPkU8, param->numRaReqInfo, mBuf);
12144 CMCHKPK(cmPkLteRnti, param->raRnti, mBuf);
12150 /***********************************************************
12152 * Func : cmUnpkTfuRachInfo
12155 * Desc : This structure contains RACH request information for a single
12165 **********************************************************/
12167 PUBLIC S16 cmUnpkTfuRachInfo
12170 TfuRachInfo *param,
12174 PUBLIC S16 cmUnpkTfuRachInfo(memCp, param, mBuf)
12176 TfuRachInfo *param;
12182 TRC3(cmUnpkTfuRachInfo)
12184 CMCHKUNPK(cmUnpkLteRnti, ¶m->raRnti, mBuf);
12185 CMCHKUNPK(SUnpkU8, ¶m->numRaReqInfo, mBuf);
12187 CMCHKUNPK(SPkU8, param->nPreambleFormat, mBuf);
12188 CMCHKUNPK(SPkU8, param->nPRACHConfiguration, mBuf);
12189 CMCHKUNPK(SPkU8, param->nRootSeq, mBuf);
12190 CMCHKUNPK(SPkU8, param->nCyclicShift, mBuf);
12191 CMCHKUNPK(SPkU8, param->nf1Value, mBuf);
12192 CMCHKUNPK(SPkU8, param->nPRACHSymbIndex, mBuf);
12193 CMCHKUNPK(SPkU16, param->nPwrFactor, mBuf);
12195 if (cmGetMem (&(memCp), (sizeof(TfuRaReqInfo) * param->numRaReqInfo),
12196 (Ptr *)¶m->raReqInfoArr) != ROK)
12200 for (i=0; i<param->numRaReqInfo; i++) {
12201 CMCHKUNPK(cmUnpkTfuRaReqInfo, ¶m->raReqInfoArr[i], mBuf);
12208 /***********************************************************
12210 * Func : cmPkTfuRaReqIndInfo
12213 * Desc : This structure contains the list of Random Access Requests received in a
12215 * @details Random Access Request is associated with a RA-RNTI, which remains
12216 * common for all the Random access requests within a subframe. This structure
12217 * thus carries the RA-RNTI and a list of Random Access Request information.
12218 * This information consists of the following
12219 * -# preamble-id - this corresponds to the Index of the Preamble choosen by the
12221 * -# Timing Advance - this corresponds to the timing adjustment that the UE
12222 * needs to be uplink synchronized. This value is calculated by physical layer.
12223 * -# tpc - this is the power control command that the physical layer calculates
12224 * from the received RA request. This value is transmitted in the RA Response
12226 * -# CQI - this is the Channel quality index of the UL channel estimated by the
12227 * physical layer. This aids MAC in the scheduling of this UE.
12236 **********************************************************/
12238 PUBLIC S16 cmPkTfuRaReqIndInfo
12240 TfuRaReqIndInfo *param,
12244 PUBLIC S16 cmPkTfuRaReqIndInfo(param, mBuf)
12245 TfuRaReqIndInfo *param;
12251 TRC3(cmPkTfuRaReqIndInfo)
12253 for (i= (param->nmbOfRaRnti-1); i >= 0; i--)
12255 if (ROK != cmPkTfuRachInfo(param->memCp,
12256 &(param->rachInfoArr[i]), mBuf))
12261 CMCHKPK(SPkU8, param->nmbOfRaRnti, mBuf);
12262 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
12263 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
12269 /***********************************************************
12271 * Func : cmUnpkTfuRaReqIndInfo
12274 * Desc : This structure contains the list of Random Access Requests received in a
12276 * @details Random Access Request is associated with a RA-RNTI, which remains
12277 * common for all the Random access requests within a subframe. This structure
12278 * thus carries the RA-RNTI and a list of Random Access Request information.
12279 * This information consists of the following
12280 * -# preamble-id - this corresponds to the Index of the Preamble choosen by the
12282 * -# Timing Advance - this corresponds to the timing adjustment that the UE
12283 * needs to be uplink synchronized. This value is calculated by physical layer.
12284 * -# tpc - this is the power control command that the physical layer calculates
12285 * from the received RA request. This value is transmitted in the RA Response
12287 * -# CQI - this is the Channel quality index of the UL channel estimated by the
12288 * physical layer. This aids MAC in the scheduling of this UE.
12297 **********************************************************/
12299 PUBLIC S16 cmUnpkTfuRaReqIndInfo
12301 TfuRaReqIndInfo *param,
12305 PUBLIC S16 cmUnpkTfuRaReqIndInfo(param, mBuf)
12306 TfuRaReqIndInfo *param;
12312 TRC3(cmUnpkTfuRaReqIndInfo)
12314 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
12315 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
12316 CMCHKUNPK(SUnpkU8, ¶m->nmbOfRaRnti, mBuf);
12317 if (cmGetMem (&(param->memCp), (sizeof(TfuRachInfo) * param->nmbOfRaRnti),
12318 (Ptr *)¶m->rachInfoArr) != ROK)
12322 for (i=0; i<param->nmbOfRaRnti; i++)
12324 if (ROK != cmUnpkTfuRachInfo(param->memCp, ¶m->rachInfoArr[i], mBuf))
12334 /***********************************************************
12336 * Func : cmPkTfuPucchDeltaPwr
12339 * Desc : This structure contains PUCCH Delta power for a single UE.
12348 **********************************************************/
12350 PUBLIC S16 cmPkTfuPucchDeltaPwrInfo
12352 TfuPucchDeltaPwr *param,
12356 PUBLIC S16 cmPkTfuPucchDeltaPwrInfo(param, mBuf)
12357 TfuPucchDeltaPwr *param;
12362 TRC3(cmPkTfuPucchDeltaPwrInfo)
12364 CMCHKPK(SPkS8, param->pucchDeltaPwr, mBuf);
12365 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
12371 /***********************************************************
12373 * Func : cmUnpkTfuPucchDeltaPwr
12376 * Desc : This structure contains PUCCH Delta power for a single UE.
12385 **********************************************************/
12387 PUBLIC S16 cmUnpkTfuPucchDeltaPwrInfo
12389 TfuPucchDeltaPwr *param,
12393 PUBLIC S16 cmUnpkTfuPucchDeltaPwrInfo(param, mBuf)
12394 TfuPucchDeltaPwr *param;
12399 TRC3(cmUnpkTfuPucchDeltaPwrInfo)
12401 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
12402 CMCHKUNPK(SUnpkS8, ¶m->pucchDeltaPwr, mBuf);
12408 /***********************************************************
12410 * Func : cmPkTfuPucchDeltaPwrIndInfo
12413 * Desc : This structure contains information that is passed as a part of the
12414 * PUCCH Delta power indication from PHY to SCH.
12415 * @details This structure clubs together PUCCH Delta power values for a number
12425 **********************************************************/
12427 PUBLIC S16 cmPkTfuPucchDeltaPwrIndInfo
12429 TfuPucchDeltaPwrIndInfo *param,
12433 PUBLIC S16 cmPkTfuPucchDeltaPwrIndInfo(param, mBuf)
12434 TfuPucchDeltaPwrIndInfo *param;
12441 TfuPucchDeltaPwr *tfuPucchDeltaPwr;
12443 TRC3(cmPkTfuPucchDeltaPwrIndInfo)
12445 count = param->pucchDeltaPwrLst.count;
12446 node = param->pucchDeltaPwrLst.last;
12448 tfuPucchDeltaPwr = (TfuPucchDeltaPwr *)node->node;
12450 CMCHKPK(cmPkTfuPucchDeltaPwrInfo, tfuPucchDeltaPwr, mBuf);
12451 cmLListDelFrm(¶m->pucchDeltaPwrLst, &tfuPucchDeltaPwr->lnk);
12452 tfuPucchDeltaPwr->lnk.node = (PTR)NULLP;
12454 CMCHKPK(SPkU32, count, mBuf);
12455 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
12456 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
12462 /***********************************************************
12464 * Func : cmUnpkTfuPucchDeltaPwrIndInfo
12467 * Desc : This structure contains information that is passed as a part of the
12468 * PUCCH Delta power indication from PHY to SCH.
12469 * @details This structure clubs together PUCCH Delta power values for a number
12479 **********************************************************/
12481 PUBLIC S16 cmUnpkTfuPucchDeltaPwrIndInfo
12483 TfuPucchDeltaPwrIndInfo *param,
12488 PUBLIC S16 cmUnpkTfuPucchDeltaPwrIndInfo(param, memCp, mBuf)
12489 TfuPucchDeltaPwrIndInfo *param;
12495 U32 count, loopCnt;
12496 TfuPucchDeltaPwr *tfuPucchDeltaPwr;
12498 TRC3(cmUnpkTfuPucchDeltaPwrIndInfo)
12500 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
12501 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
12502 cmLListInit(¶m->pucchDeltaPwrLst);
12503 CMCHKUNPK(SUnpkU32, &count, mBuf);
12504 for (loopCnt=0; loopCnt<count; loopCnt++) {
12505 cmGetMem((Ptr)memCp, sizeof(*tfuPucchDeltaPwr), (Ptr *)&tfuPucchDeltaPwr);
12506 CMCHKUNPK(cmUnpkTfuPucchDeltaPwrInfo, tfuPucchDeltaPwr, mBuf);
12507 cmLListAdd2Tail(¶m->pucchDeltaPwrLst, &tfuPucchDeltaPwr->lnk);
12508 tfuPucchDeltaPwr->lnk.node = (PTR)tfuPucchDeltaPwr;
12514 PUBLIC S16 cmPkBuffer
12520 PUBLIC S16 cmPkBuffer(param, mBuf)
12527 if (SFndLenMsg(*param, &msgLen) != ROK)
12529 if (SCatMsg(mBuf, *param, M1M2) != ROK)
12531 TFU_FREE_MSG(*param);
12533 CMCHKPK(cmPkMsgLen, msgLen, mBuf);
12537 PUBLIC S16 cmUnpkBuffer
12543 PUBLIC S16 cmUnpkBuffer(param, mBuf)
12548 MsgLen msgLen=0, totalMsgLen=0;
12550 CMCHKUNPK(cmUnpkMsgLen, &msgLen, mBuf);
12551 if (SFndLenMsg(mBuf, &totalMsgLen) != ROK)
12553 if (SSegMsg(mBuf, totalMsgLen-msgLen, param) != ROK)
12559 /***********************************************************
12561 * Func : cmPkTfuDoaInd
12564 * Desc : This API is used to indicate DOA(Direction Of Arrival)
12565 * identifier for one or more UEs.
12566 * It carries a DOA for each UE.
12567 * @param pst Pointer to the post structure.
12568 * @param suId SAP ID of the service user.
12569 * @param doaInd Pointer to the TfuDoaIndInfo structure.
12570 * @return ROK/RFAILED
12579 **********************************************************/
12581 PUBLIC S16 cmPkTfuDoaInd
12585 TfuDoaIndInfo * doaInd
12588 PUBLIC S16 cmPkTfuDoaInd(pst, suId, doaInd)
12591 TfuDoaIndInfo * doaInd;
12594 Buffer *mBuf = NULLP;
12595 TRC3(cmPkTfuDoaInd)
12597 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
12598 #if (ERRCLASS & ERRCLS_ADD_RES)
12599 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
12600 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
12601 (ErrVal)ETFU125, (ErrVal)0, "Packing failed");
12603 SPutSBuf(pst->region, pst->pool, (Data *)doaInd, sizeof(TfuDoaIndInfo));
12606 cmPkTfuDoaIndInfo(doaInd, mBuf);
12607 if (SPkS16(suId, mBuf) != ROK) {
12608 #if (ERRCLASS & ERRCLS_ADD_RES)
12609 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
12610 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
12611 (ErrVal)ETFU126, (ErrVal)0, "Packing failed");
12613 TFU_FREE_MEM(doaInd);
12614 TFU_FREE_MSG(mBuf);
12617 TFU_FREE_MEM(doaInd);
12618 pst->event = (Event) EVTTFUDOAIND;
12619 RETVALUE(SPstTsk(pst,mBuf));
12623 /***********************************************************
12625 * Func : cmUnpkTfuDoaInd
12628 * Desc : This API is used to indicate DOA(Direction Of Arrival)
12629 * identifier for one or more UEs.
12630 * It carries a DOA for each UE.
12631 * @param pst Pointer to the post structure.
12632 * @param suId SAP ID of the service user.
12633 * @param doaInd Pointer to the TfuDoaIndInfo structure.
12634 * @return ROK/RFAILED
12643 **********************************************************/
12645 PUBLIC S16 cmUnpkTfuDoaInd
12652 PUBLIC S16 cmUnpkTfuDoaInd(func, pst, mBuf)
12659 TfuDoaIndInfo *doaInd;
12661 TRC3(cmUnpkTfuDoaInd)
12663 if (SUnpkS16(&suId, mBuf) != ROK) {
12664 TFU_FREE_MSG(mBuf);
12665 #if (ERRCLASS & ERRCLS_ADD_RES)
12666 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
12667 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
12668 (ErrVal)ETFU127, (ErrVal)0, "Packing failed");
12674 sMem.region = pst->region;
12675 sMem.pool = pst->pool;
12676 if ((cmAllocEvnt(sizeof(TfuDoaIndInfo), TFU_BLKSZ, &sMem, (Ptr *)&doaInd)) != ROK) {
12677 #if (ERRCLASS & ERRCLS_ADD_RES)
12678 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
12679 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
12680 (ErrVal)ETFU128, (ErrVal)0, "Packing failed");
12682 TFU_FREE_MSG(mBuf);
12687 cmUnpkTfuDoaIndInfo(doaInd, (Ptr)&doaInd->memCp, mBuf);
12688 TFU_FREE_MSG(mBuf);
12689 RETVALUE((*func)(pst, suId, doaInd));
12694 /***********************************************************
12696 * Func : cmPkTfuDciFormatTbInfo
12699 * Desc : This structure contains the TB level DCI signalling
12700 * parameters in case of DCI formats 2 and 2A
12709 **********************************************************/
12711 PUBLIC S16 cmPkTfuDciFormatTbInfo
12713 TfuDciFormatTbInfo *param,
12717 PUBLIC S16 cmPkTfuDciFormatTbInfo(param, mBuf)
12718 TfuDciFormatTbInfo *param;
12723 TRC3(cmPkTfuDciFormatTbInfo)
12725 CMCHKPK(SPkU8, param->mcs, mBuf);
12726 CMCHKPK(SPkU8, param->rv, mBuf);
12727 CMCHKPK(SPkU8, param->ndi, mBuf);
12733 /***********************************************************
12735 * Func : cmUnpkTfuDciFormatTbInfo
12738 * Desc : This structure contains the TB level DCI signalling
12739 * parameters in case of DCI formats 2 and 2A
12748 **********************************************************/
12750 PUBLIC S16 cmUnpkTfuDciFormatTbInfo
12752 TfuDciFormatTbInfo *param,
12756 PUBLIC S16 cmUnpkTfuDciFormatTbInfo(param, mBuf)
12757 TfuDciFormatTbInfo *param;
12762 TRC3(cmUnpkTfuDciFormatTbInfo)
12764 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
12765 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
12766 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
12772 /***********************************************************
12774 * Func : cmPkTfuSubbandDlCqiInfo
12777 * Desc : This structure is used to convey the subbannd CQI reported.
12786 **********************************************************/
12788 PUBLIC S16 cmPkTfuSubbandDlCqiInfo
12790 TfuSubbandDlCqiInfo *param,
12794 PUBLIC S16 cmPkTfuSubbandDlCqiInfo(param, mBuf)
12795 TfuSubbandDlCqiInfo *param;
12801 TRC3(cmPkTfuSubbandDlCqiInfo)
12803 for (i=TFU_MAX_TB-1; i >= 0; i--) {
12804 CMCHKPK(SPkU8, param->cqiIdx[i], mBuf);
12806 CMCHKPK(cmPkTfuSubbandInfo, ¶m->subband, mBuf);
12812 /***********************************************************
12814 * Func : cmUnpkTfuSubbandDlCqiInfo
12817 * Desc : This structure is used to convey the subbannd CQI reported.
12826 **********************************************************/
12828 PUBLIC S16 cmUnpkTfuSubbandDlCqiInfo
12830 TfuSubbandDlCqiInfo *param,
12834 PUBLIC S16 cmUnpkTfuSubbandDlCqiInfo(param, mBuf)
12835 TfuSubbandDlCqiInfo *param;
12841 TRC3(cmUnpkTfuSubbandDlCqiInfo)
12843 CMCHKUNPK(cmUnpkTfuSubbandInfo, ¶m->subband, mBuf);
12844 for (i=0; i<TFU_MAX_TB; i++) {
12845 CMCHKUNPK(SUnpkU8, ¶m->cqiIdx[i], mBuf);
12850 /***********************************************************
12852 * Func : cmPkTfuDlCqiPuschInfo
12855 * Desc : This structure conveys explicitly the PMI information in case
12856 * of PUSCH feedback usage in scheduling. Applicable for TM 4,5,6.
12865 **********************************************************/
12867 PUBLIC S16 cmPkTfuDlCqiPuschInfo
12869 TfuDlCqiPuschInfo *param,
12873 PUBLIC S16 cmPkTfuDlCqiPuschInfo(param, mBuf)
12874 TfuDlCqiPuschInfo *param;
12879 TRC3(cmPkTfuDlCqiPuschInfo)
12881 switch(param->mode) {
12882 case TFU_PUSCH_CQI_MODE_31:
12883 CMCHKPK(cmPkTfuCqiPuschMode31, ¶m->u.mode31Info, mBuf);
12885 case TFU_PUSCH_CQI_MODE_22:
12886 CMCHKPK(cmPkTfuCqiPuschMode22, ¶m->u.mode22Info, mBuf);
12888 case TFU_PUSCH_CQI_MODE_12:
12889 CMCHKPK(cmPkTfuCqiPuschMode12, ¶m->u.mode12Info, mBuf);
12894 CMCHKPK(SPkU32, param->mode, mBuf);
12900 /***********************************************************
12902 * Func : cmUnpkTfuDlCqiPuschInfo
12905 * Desc : This structure conveys explicitly the PMI information in case
12906 * of PUSCH feedback usage in scheduling. Applicable for TM 4,5,6.
12915 **********************************************************/
12917 PUBLIC S16 cmUnpkTfuDlCqiPuschInfo
12919 TfuDlCqiPuschInfo *param,
12923 PUBLIC S16 cmUnpkTfuDlCqiPuschInfo(param, mBuf)
12924 TfuDlCqiPuschInfo *param;
12929 TRC3(cmUnpkTfuDlCqiPuschInfo)
12931 CMCHKUNPK(SUnpkU32, (U32 *)¶m->mode, mBuf);
12932 switch(param->mode) {
12933 case TFU_PUSCH_CQI_MODE_12:
12934 CMCHKUNPK(cmUnpkTfuCqiPuschMode12, ¶m->u.mode12Info, mBuf);
12936 case TFU_PUSCH_CQI_MODE_22:
12937 CMCHKUNPK(cmUnpkTfuCqiPuschMode22, ¶m->u.mode22Info, mBuf);
12939 case TFU_PUSCH_CQI_MODE_31:
12940 CMCHKUNPK(cmUnpkTfuCqiPuschMode31, ¶m->u.mode31Info, mBuf);
12948 /***********************************************************
12950 * Func : cmPkTfuDoaRpt
12953 * Desc : This structure contains the DOA estimated by the physical layer.
12954 * @details DOA for a given UE.
12963 **********************************************************/
12965 PUBLIC S16 cmPkTfuDoaRpt
12971 PUBLIC S16 cmPkTfuDoaRpt(param, mBuf)
12977 TRC3(cmPkTfuDoaRpt)
12979 CMCHKPK(SPkU32, param->doa, mBuf);
12980 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
12986 /***********************************************************
12988 * Func : cmUnpkTfuDoaRpt
12991 * Desc : This structure contains the DOA estimated by the physical layer.
12992 * @details DOA for a given UE.
13001 **********************************************************/
13003 PUBLIC S16 cmUnpkTfuDoaRpt
13009 PUBLIC S16 cmUnpkTfuDoaRpt(param, mBuf)
13015 TRC3(cmUnpkTfuDoaRpt)
13017 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
13018 CMCHKUNPK(SUnpkU32, ¶m->doa, mBuf);
13024 /***********************************************************
13026 * Func : cmPkTfuDoaIndInfo
13029 * Desc : This structure conveys the DOA(Direction Of Arrival) indicator.
13030 * @details DOA is calculated by the physical layer, and this
13031 * information is provided to the scheduler.
13032 * This data structure clubs together the DOAs for all the UEs
13033 * calculated by PHY in this subframe.
13042 **********************************************************/
13044 PUBLIC S16 cmPkTfuDoaIndInfo
13046 TfuDoaIndInfo *param,
13050 PUBLIC S16 cmPkTfuDoaIndInfo(param, mBuf)
13051 TfuDoaIndInfo *param;
13058 TfuDoaRpt *tfuDoaRpt;
13059 TRC3(cmPkTfuDoaIndInfo)
13061 count = param->doaRpt.count;
13062 node = param->doaRpt.last;
13064 tfuDoaRpt = (TfuDoaRpt *)node->node;
13066 CMCHKPK(cmPkTfuDoaRpt, tfuDoaRpt, mBuf);
13067 cmLListDelFrm(¶m->doaRpt, &tfuDoaRpt->lnk);
13068 tfuDoaRpt->lnk.node = (PTR)NULLP;
13070 CMCHKPK(SPkU32, count, mBuf);
13071 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
13077 /***********************************************************
13079 * Func : cmUnpkTfuDoaIndInfo
13082 * Desc : This structure conveys the DOA(Direction Of Arrival) indicator.
13083 * @details DOA is calculated by the physical layer, and this
13084 * information is provided to the scheduler.
13085 * This data structure clubs together the DOAs for all the UEs
13086 * calculated by PHY in this subframe.
13095 **********************************************************/
13097 PUBLIC S16 cmUnpkTfuDoaIndInfo
13099 TfuDoaIndInfo *param,
13104 PUBLIC S16 cmUnpkTfuDoaIndInfo(param, memCp, mBuf)
13105 TfuDoaIndInfo *param;
13111 U32 count, loopCnt;
13112 TfuDoaRpt *tfuDoaRpt;
13113 TRC3(cmUnpkTfuDoaIndInfo)
13115 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
13116 cmLListInit(¶m->doaRpt);
13117 CMCHKUNPK(SUnpkU32, &count, mBuf);
13118 for (loopCnt=0; loopCnt<count; loopCnt++) {
13119 cmGetMem((Ptr)memCp, sizeof(*tfuDoaRpt), (Ptr *)&tfuDoaRpt);
13120 CMCHKUNPK(cmUnpkTfuDoaRpt, tfuDoaRpt, mBuf);
13121 cmLListAdd2Tail(¶m->doaRpt, &tfuDoaRpt->lnk);
13122 tfuDoaRpt->lnk.node = (PTR)tfuDoaRpt;
13128 /* tfu_c_001.main_7. Added changes of TFU_UPGRADE */
13132 /***********************************************************
13134 * Func : cmPkTfuSrsRpt
13137 * Desc : This structure conveys the Uplink SRS indication of a UE.
13138 * @details Uplink SRS from each UE is received by the physical layer, and this
13139 * information is provided to the scheduler.
13148 **********************************************************/
13150 PUBLIC S16 cmPkTfuSrsRpt
13156 PUBLIC S16 cmPkTfuSrsRpt(param, mBuf)
13163 TRC3(cmPkTfuSrsRpt)
13165 CMCHKPK(SPkU8, param->wideCqi, mBuf);
13166 CMCHKPK(SPkU8, param->wideCqiPres, mBuf);
13167 for (i=TFU_MAX_UL_RB-1; i >= 0; i--) {
13168 CMCHKPK(SPkU8, param->snr[i], mBuf);
13170 CMCHKPK(SPkU8, param->rbStart, mBuf);
13171 CMCHKPK(SPkU8, param->numRbs, mBuf);
13172 CMCHKPK(SPkU16, param->ta, mBuf);
13173 CMCHKPK(SPkU16, param->dopEst, mBuf);
13174 CMCHKPK(cmPkLteRnti, param->ueId, mBuf);
13180 /***********************************************************
13182 * Func : cmUnpkTfuSrsRpt
13185 * Desc : This structure conveys the Uplink SRS indication of a UE.
13186 * @details Uplink SRS from each UE is received by the physical layer, and this
13187 * information is provided to the scheduler.
13196 **********************************************************/
13198 PUBLIC S16 cmUnpkTfuSrsRpt
13204 PUBLIC S16 cmUnpkTfuSrsRpt(param, mBuf)
13211 TRC3(cmUnpkTfuSrsRpt)
13213 CMCHKUNPK(cmUnpkLteRnti, ¶m->ueId, mBuf);
13214 CMCHKUNPK(SUnpkU16, ¶m->dopEst, mBuf);
13215 CMCHKUNPK(SUnpkU16, ¶m->ta, mBuf);
13216 CMCHKUNPK(SUnpkU8, ¶m->numRbs, mBuf);
13217 CMCHKUNPK(SUnpkU8, ¶m->rbStart, mBuf);
13218 for (i=0; i<TFU_MAX_UL_RB; i++) {
13219 CMCHKUNPK(SUnpkU8, ¶m->snr[i], mBuf);
13221 CMCHKUNPK(SUnpkU8, ¶m->wideCqiPres, mBuf);
13222 CMCHKUNPK(SUnpkU8, ¶m->wideCqi, mBuf);
13228 /***********************************************************
13230 * Func : cmPkTfuSrsIndInfo
13233 * Desc : This structure conveys the Uplink SRS indication.
13234 * @details Uplink SRS is received by the physical layer, and this
13235 * information is provided to the scheduler.
13236 * This data structure clubs together the UL SRS indications of all the UEs
13246 **********************************************************/
13248 PUBLIC S16 cmPkTfuSrsIndInfo
13250 TfuSrsIndInfo *param,
13254 PUBLIC S16 cmPkTfuSrsIndInfo(param, mBuf)
13255 TfuSrsIndInfo *param;
13262 TfuSrsRpt *tfuSrsRpt;
13264 TRC3(cmPkTfuSrsIndInfo)
13266 count = param->srsRpt.count;
13267 node = param->srsRpt.last;
13269 tfuSrsRpt = (TfuSrsRpt *)node->node;
13271 CMCHKPK(cmPkTfuSrsRpt, tfuSrsRpt, mBuf);
13272 cmLListDelFrm(¶m->srsRpt, &tfuSrsRpt->lnk);
13273 tfuSrsRpt->lnk.node = (PTR)NULLP;
13275 CMCHKPK(SPkU32, count, mBuf);
13276 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
13277 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
13283 /***********************************************************
13285 * Func : cmUnpkTfuSrsIndInfo
13288 * Desc : This structure conveys the Uplink SRS indication.
13289 * @details Uplink SRS is received by the physical layer, and this
13290 * information is provided to the scheduler.
13291 * This data structure clubs together the UL SRS indications of all the UEs
13301 **********************************************************/
13303 PUBLIC S16 cmUnpkTfuSrsIndInfo
13305 TfuSrsIndInfo *param,
13310 PUBLIC S16 cmUnpkTfuSrsIndInfo(param, memCp, mBuf)
13311 TfuSrsIndInfo *param;
13317 U32 count, loopCnt;
13318 TfuSrsRpt *tfuSrsRpt;
13320 TRC3(cmUnpkTfuSrsIndInfo)
13322 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
13323 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
13324 cmLListInit(¶m->srsRpt);
13325 CMCHKUNPK(SUnpkU32, &count, mBuf);
13326 for (loopCnt=0; loopCnt<count; loopCnt++) {
13327 cmGetMem((Ptr)memCp, sizeof(*tfuSrsRpt), (Ptr *)&tfuSrsRpt);
13328 CMCHKUNPK(cmUnpkTfuSrsRpt, tfuSrsRpt, mBuf);
13329 cmLListAdd2Tail(¶m->srsRpt, &tfuSrsRpt->lnk);
13330 tfuSrsRpt->lnk.node = (PTR)tfuSrsRpt;
13337 /***********************************************************
13339 * Func : cmPkTfuRawCqiRpt
13342 * Desc : This structure contains the Raw CQI information i.e. the CQI report
13343 * as transmitted by the UE.
13344 * @details These bits shall be interpretted by MAC to derive the following
13357 **********************************************************/
13359 PUBLIC S16 cmPkTfuRawCqiRpt
13361 TfuRawCqiRpt *param,
13365 PUBLIC S16 cmPkTfuRawCqiRpt(param, mBuf)
13366 TfuRawCqiRpt *param;
13371 TRC3(cmPkTfuRawCqiRpt)
13373 CMCHKPK(SPkU32, param->uciPayload, mBuf);
13376 for (i=CM_LTE_MAX_CELLS-1; i >= 0; i--) {
13377 CMCHKPK(SPkU8, param->ri[i], mBuf);
13379 for (i=TFU_MAX_CQI_BYTES-1; i >= 0; i--) {
13380 CMCHKPK(SPkU8, param->cqiBits[i], mBuf);
13383 CMCHKPK(SPkU8, param->numBits, mBuf);
13384 CMCHKPK(cmPkLteRnti, param->crnti, mBuf);
13390 /***********************************************************
13392 * Func : cmUnpkTfuRawCqiRpt
13395 * Desc : This structure contains the Raw CQI information i.e. the CQI report
13396 * as transmitted by the UE.
13397 * @details These bits shall be interpretted by MAC to derive the following
13410 **********************************************************/
13412 PUBLIC S16 cmUnpkTfuRawCqiRpt
13414 TfuRawCqiRpt *param,
13418 PUBLIC S16 cmUnpkTfuRawCqiRpt(param, mBuf)
13419 TfuRawCqiRpt *param;
13424 TRC3(cmUnpkTfuRawCqiRpt)
13426 CMCHKUNPK(cmUnpkLteRnti, ¶m->crnti, mBuf);
13427 CMCHKUNPK(SUnpkU8, ¶m->numBits, mBuf);
13430 for (i=0; i<TFU_MAX_CQI_BYTES; i++) {
13431 CMCHKUNPK(SUnpkU8, ¶m->cqiBits[i], mBuf);
13433 for (i=0; i<CM_LTE_MAX_CELLS; i++) {
13434 CMCHKUNPK(SUnpkU8, ¶m->ri[i], mBuf);
13437 CMCHKUNPK(SUnpkU32, ¶m->uciPayload, mBuf);
13444 /***********************************************************
13446 * Func : cmPkTfuRawCqiIndInfo
13449 * Desc : This structure contains the Raw CQI reports received for the
13450 * transmitting UEs in a single subframe.
13451 * @details Raw CQI corresponds to the actual bits transmitted by the UE, whose
13452 * interpretation is upto the MAC layer.
13461 **********************************************************/
13463 PUBLIC S16 cmPkTfuRawCqiIndInfo
13465 TfuRawCqiIndInfo *param,
13469 PUBLIC S16 cmPkTfuRawCqiIndInfo(param, mBuf)
13470 TfuRawCqiIndInfo *param;
13476 TfuRawCqiRpt *tfuRawCqiRpt;
13479 TRC3(cmPkTfuRawCqiIndInfo)
13481 count = param->rawCqiRpt.count;
13482 node = param->rawCqiRpt.last;
13484 tfuRawCqiRpt = (TfuRawCqiRpt *)node->node;
13486 CMCHKPK(cmPkTfuRawCqiRpt, tfuRawCqiRpt, mBuf);
13487 cmLListDelFrm(¶m->rawCqiRpt, &tfuRawCqiRpt->lnk);
13488 tfuRawCqiRpt->lnk.node = (PTR)NULLP;
13490 CMCHKPK(SPkU32, count, mBuf);
13491 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
13492 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
13498 /***********************************************************
13500 * Func : cmUnpkTfuRawCqiIndInfo
13503 * Desc : This structure contains the Raw CQI reports received for the
13504 * transmitting UEs in a single subframe.
13505 * @details Raw CQI corresponds to the actual bits transmitted by the UE, whose
13506 * interpretation is upto the MAC layer.
13515 **********************************************************/
13517 PUBLIC S16 cmUnpkTfuRawCqiIndInfo
13519 TfuRawCqiIndInfo *param,
13524 PUBLIC S16 cmUnpkTfuRawCqiIndInfo(param, memCp, mBuf)
13525 TfuRawCqiIndInfo *param;
13531 U32 count, loopCnt;
13532 TfuRawCqiRpt *tfuRawCqiRpt;
13534 TRC3(cmUnpkTfuRawCqiIndInfo)
13536 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
13537 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
13538 cmLListInit(¶m->rawCqiRpt);
13539 CMCHKUNPK(SUnpkU32, &count, mBuf);
13540 for (loopCnt=0; loopCnt<count; loopCnt++) {
13541 cmGetMem((Ptr)memCp, sizeof(*tfuRawCqiRpt), (Ptr *)&tfuRawCqiRpt);
13542 CMCHKUNPK(cmUnpkTfuRawCqiRpt, tfuRawCqiRpt, mBuf);
13543 cmLListAdd2Tail(¶m->rawCqiRpt, &tfuRawCqiRpt->lnk);
13544 tfuRawCqiRpt->lnk.node = (PTR)tfuRawCqiRpt;
13555 /***********************************************************
13557 * Func : cmPkTfuUePucchHqRecpInfo
13560 * Desc : This structure is sent from scheduler to PHY in order to request the
13561 * reception of harq information on PUCCH.
13570 **********************************************************/
13572 PUBLIC S16 cmPkTfuUePucchHqRecpInfo
13574 TfuUePucchHqRecpInfo *param,
13578 PUBLIC S16 cmPkTfuUePucchHqRecpInfo(param, mBuf)
13579 TfuUePucchHqRecpInfo *param;
13585 TRC3(cmPkTfuUePucchHqRecpInfo)
13587 CMCHKPK(SPkU8, param->a, mBuf);
13588 for (i=TFU_MAX_HQ_RES-1; i >= 0; i--) {
13589 CMCHKPK(SPkU16, param->hqRes[i], mBuf);
13591 CMCHKPK(SPkU8, param->pucchResCnt, mBuf);
13592 CMCHKPK(SPkU8, param->hqSz, mBuf);
13593 CMCHKPK(SPkU32, param->hqFdbkMode, mBuf);
13599 /***********************************************************
13601 * Func : cmUnpkTfuUePucchHqRecpInfo
13604 * Desc : This structure is sent from scheduler to PHY in order to request the
13605 * reception of harq information on PUCCH.
13614 **********************************************************/
13616 PUBLIC S16 cmUnpkTfuUePucchHqRecpInfo
13618 TfuUePucchHqRecpInfo *param,
13622 PUBLIC S16 cmUnpkTfuUePucchHqRecpInfo(param, mBuf)
13623 TfuUePucchHqRecpInfo *param;
13629 TRC3(cmUnpkTfuUePucchHqRecpInfo)
13631 CMCHKUNPK(SUnpkU32, (U32 *)¶m->hqFdbkMode, mBuf);
13632 CMCHKUNPK(SUnpkU8, ¶m->hqSz, mBuf);
13633 CMCHKUNPK(SUnpkU8, ¶m->pucchResCnt, mBuf);
13634 for (i=0; i<TFU_MAX_HQ_RES; i++) {
13635 CMCHKUNPK(SUnpkU16, ¶m->hqRes[i], mBuf);
13637 CMCHKUNPK(SUnpkU8, ¶m->a, mBuf);
13646 #ifndef TFU_TDD /* else of TFU_TDD */
13648 #ifndef TFU_TDD /* else of TFU_TDD */
13651 /***********************************************************
13653 * Func : cmPkTfuUePucchHqRecpInfo
13656 * Desc : This structure is sent from scheduler to PHY in order to request the
13657 * reception of harq information on PUCCH.
13666 **********************************************************/
13668 PUBLIC S16 cmPkTfuUePucchHqRecpInfo
13670 TfuUePucchHqRecpInfo *param,
13674 PUBLIC S16 cmPkTfuUePucchHqRecpInfo(param, mBuf)
13675 TfuUePucchHqRecpInfo *param;
13680 TRC3(cmPkTfuUePucchHqRecpInfo)
13683 for (idx=(TFU_MAX_HQ_RES-1); idx >= 0; idx--) {
13684 CMCHKPK(SPkU16, param->hqRes[idx], mBuf);
13687 CMCHKPK(SPkU16, param->hqRes[0], mBuf);
13689 CMCHKPK(SPkU8, param->pucchResCnt, mBuf);
13690 CMCHKPK(SPkU8, param->hqSz, mBuf);
13691 CMCHKPK(SPkU32, param->hqFdbkMode, mBuf);
13698 /***********************************************************
13700 * Func : cmUnpkTfuUePucchHqRecpInfo
13703 * Desc : This structure is sent from scheduler to PHY in order to request the
13704 * reception of harq information on PUCCH.
13713 **********************************************************/
13715 PUBLIC S16 cmUnpkTfuUePucchHqRecpInfo
13717 TfuUePucchHqRecpInfo *param,
13721 PUBLIC S16 cmUnpkTfuUePucchHqRecpInfo(param, mBuf)
13722 TfuUePucchHqRecpInfo *param;
13726 TRC3(cmUnpkTfuUePucchHqRecpInfo)
13728 CMCHKUNPK(SUnpkU32, (U32 *)¶m->hqFdbkMode, mBuf);
13729 CMCHKUNPK(SUnpkU8, ¶m->hqSz, mBuf);
13730 CMCHKUNPK(SUnpkU8, ¶m->pucchResCnt, mBuf);
13733 for (idx=0; idx<TFU_MAX_HQ_RES; idx++) {
13734 CMCHKUNPK(SUnpkU16, ¶m->hqRes[idx], mBuf);
13737 CMCHKUNPK(SUnpkU16, ¶m->hqRes[0], mBuf);
13749 /***********************************************************
13751 * Func : cmPkTfuUePucchSrRecpInfo
13754 * Desc : This structure is sent from scheduler to PHY in order to request the
13755 * reception of SR information on PUCCH.
13764 **********************************************************/
13766 PUBLIC S16 cmPkTfuUePucchSrRecpInfo
13768 TfuUePucchSrRecpInfo *param,
13772 PUBLIC S16 cmPkTfuUePucchSrRecpInfo(param, mBuf)
13773 TfuUePucchSrRecpInfo *param;
13778 TRC3(cmPkTfuUePucchSrRecpInfo)
13780 CMCHKPK(SPkU16, param->n1PucchIdx, mBuf);
13786 /***********************************************************
13788 * Func : cmUnpkTfuUePucchSrRecpInfo
13791 * Desc : This structure is sent from scheduler to PHY in order to request the
13792 * reception of SR information on PUCCH.
13801 **********************************************************/
13803 PUBLIC S16 cmUnpkTfuUePucchSrRecpInfo
13805 TfuUePucchSrRecpInfo *param,
13809 PUBLIC S16 cmUnpkTfuUePucchSrRecpInfo(param, mBuf)
13810 TfuUePucchSrRecpInfo *param;
13815 TRC3(cmUnpkTfuUePucchSrRecpInfo)
13817 CMCHKUNPK(SUnpkU16, ¶m->n1PucchIdx, mBuf);
13823 /***********************************************************
13825 * Func : cmPkTfuUePucchCqiRecpInfo
13828 * Desc : This structure is sent from scheduler to PHY in order to request the
13829 * reception of CQI information on PUCCH.
13838 **********************************************************/
13840 PUBLIC S16 cmPkTfuUePucchCqiRecpInfo
13842 TfuUePucchCqiRecpInfo *param,
13846 PUBLIC S16 cmPkTfuUePucchCqiRecpInfo(param, mBuf)
13847 TfuUePucchCqiRecpInfo *param;
13852 TRC3(cmPkTfuUePucchCqiRecpInfo)
13854 CMCHKPK(SPkU8, param->cqiPmiSz, mBuf);
13855 CMCHKPK(SPkU16, param->n2PucchIdx, mBuf);
13861 /***********************************************************
13863 * Func : cmUnpkTfuUePucchCqiRecpInfo
13866 * Desc : This structure is sent from scheduler to PHY in order to request the
13867 * reception of CQI information on PUCCH.
13876 **********************************************************/
13878 PUBLIC S16 cmUnpkTfuUePucchCqiRecpInfo
13880 TfuUePucchCqiRecpInfo *param,
13884 PUBLIC S16 cmUnpkTfuUePucchCqiRecpInfo(param, mBuf)
13885 TfuUePucchCqiRecpInfo *param;
13890 TRC3(cmUnpkTfuUePucchCqiRecpInfo)
13892 CMCHKUNPK(SUnpkU16, ¶m->n2PucchIdx, mBuf);
13893 CMCHKUNPK(SUnpkU8, ¶m->cqiPmiSz, mBuf);
13899 /***********************************************************
13901 * Func : cmPkTfuUePucchSrsRecpInfo
13904 * Desc : This structure is sent from scheduler to PHY in order to request the
13905 * reception of SRS information on PUCCH.
13914 **********************************************************/
13916 PUBLIC S16 cmPkTfuUePucchSrsRecpInfo
13918 TfuUePucchSrsRecpInfo *param,
13922 PUBLIC S16 cmPkTfuUePucchSrsRecpInfo(param, mBuf)
13923 TfuUePucchSrsRecpInfo *param;
13928 TRC3(cmPkTfuUePucchSrsRecpInfo)
13930 CMCHKPK(SPkU32, param->srsCyclicShft, mBuf);
13931 CMCHKPK(SPkU16, param->srsCfgIdx, mBuf);
13932 CMCHKPK(SPkU8, param->transComb, mBuf);
13933 CMCHKPK(SPkU32, param->srsHopBw, mBuf);
13934 CMCHKPK(SPkU8, param->nRrc, mBuf);
13935 CMCHKPK(SPkU32, param->srsBw, mBuf);
13941 PUBLIC S16 cmPkTfuUePucchUciRecpInfo
13943 TfuUePucchUciRecpInfo *param,
13947 PUBLIC S16 cmPkTfuUePucchUciRecpInfo(param, mBuf)
13948 TfuUePucchUciRecpInfo *param;
13953 TRC3(cmPkTfuUePucchUciRecpInfo)
13955 CMCHKPK(SPkU8, param->SCID, mBuf);
13956 CMCHKPK(SPkU8, param->pucchIndex, mBuf);
13957 CMCHKPK(SPkU8, param->numBits, mBuf);
13963 /***********************************************************
13965 * Func : cmUnpkTfuUePucchSrsRecpInfo
13968 * Desc : This structure is sent from scheduler to PHY in order to request the
13969 * reception of SRS information on PUCCH.
13978 **********************************************************/
13980 PUBLIC S16 cmUnpkTfuUePucchSrsRecpInfo
13982 TfuUePucchSrsRecpInfo *param,
13986 PUBLIC S16 cmUnpkTfuUePucchSrsRecpInfo(param, mBuf)
13987 TfuUePucchSrsRecpInfo *param;
13992 TRC3(cmUnpkTfuUePucchSrsRecpInfo)
13994 CMCHKUNPK(SUnpkU32, (U32 *)¶m->srsBw, mBuf);
13995 CMCHKUNPK(SUnpkU8, ¶m->nRrc, mBuf);
13996 CMCHKUNPK(SUnpkU32, (U32 *)¶m->srsHopBw, mBuf);
13997 CMCHKUNPK(SUnpkU8, ¶m->transComb, mBuf);
13998 CMCHKUNPK(SUnpkU16, ¶m->srsCfgIdx, mBuf);
13999 CMCHKUNPK(SUnpkU32, (U32 *)¶m->srsCyclicShft, mBuf);
14004 /***********************************************************
14006 * Func : cmPkTfuUePucchBsiBriRecpInfo
14009 * Desc : This structure is sent from scheduler to PHY in order to request the
14010 * reception of BSI_BRI information on PUCCH.
14019 **********************************************************/
14021 PUBLIC S16 cmPkTfuUePucchBsiBriRecpInfo
14023 TfuUePucchBsiBriRecpInfo *param,
14027 PUBLIC S16 cmPkTfuUePucchBsiBriRecpInfo(param, mBuf)
14028 TfuUePucchBsiBriRecpInfo *param;
14033 TRC3(cmPkTfuUePucchBsiBriRecpInfo)
14035 CMCHKPK(SPkU8, param->briRpt, mBuf);
14036 CMCHKPK(SPkU8, param->bsiRpt, mBuf);
14037 CMCHKPK(SPkU8, param->SCID, mBuf);
14038 CMCHKPK(SPkU8, param->pucchIndex, mBuf);
14039 CMCHKPK(SPkU8, param->puschFlag, mBuf);
14043 /***********************************************************
14045 * Func : cmUnpkTfuUePucchBsiBriRecpInfo
14048 * Desc : This structure is sent from scheduler to PHY in order to request the
14049 * reception of BSI_BRI information on PUCCH.
14058 **********************************************************/
14060 PUBLIC S16 cmUnpkTfuUePucchBsiBriRecpInfo
14062 TfuUePucchBsiBriRecpInfo *param,
14066 PUBLIC S16 cmUnpkTfuUePucchBsiBriRecpInfo(param, mBuf)
14067 TfuUePucchBsiBriRecpInfo *param;
14072 TRC3(cmUnpkTfuUePucchBsiBriRecpInfo)
14074 CMCHKUNPK(SUnpkU8, ¶m->puschFlag, mBuf);
14075 CMCHKUNPK(SUnpkU8, ¶m->pucchIndex, mBuf);
14076 CMCHKUNPK(SUnpkU8, ¶m->SCID, mBuf);
14077 CMCHKUNPK(SUnpkU8, ¶m->bsiRpt, mBuf);
14078 CMCHKUNPK(SUnpkU8, ¶m->briRpt, mBuf);
14085 PUBLIC S16 cmUnpkTfuUePucchUciRecpInfo
14087 TfuUePucchUciRecpInfo *param,
14091 PUBLIC S16 cmUnpkTfuUePucchUciRecpInfo(param, mBuf)
14092 TfuUePucchUciRecpInfo *param;
14097 TRC3(cmUnpkTfuUePucchUciRecpInfo)
14099 CMCHKUNPK(SUnpkU8, ¶m->numBits, mBuf);
14100 CMCHKUNPK(SUnpkU8, ¶m->pucchIndex, mBuf);
14101 CMCHKUNPK(SUnpkU8, ¶m->SCID, mBuf);
14108 /***********************************************************
14110 * Func : cmPkTfuUePucchRecpReq
14113 * Desc : This structure is sent from scheduler to PHY in order to request the
14114 * reception of UCI on PUCCH. This may contain the following:
14134 **********************************************************/
14136 PUBLIC S16 cmPkTfuUePucchRecpReq
14138 TfuUePucchRecpReq *param,
14142 PUBLIC S16 cmPkTfuUePucchRecpReq(param, mBuf)
14143 TfuUePucchRecpReq *param;
14148 TRC3(cmPkTfuUePucchRecpReq)
14151 CMCHKPK(cmPkTfuUePucchBsiBriRecpInfo, ¶m->bsiBriInfo, mBuf);
14152 CMCHKPK(cmPkTfuUePucchUciRecpInfo, ¶m->uciPduInfo, mBuf);
14153 #endif /* TFU_5GTF */
14154 CMCHKPK(cmPkTfuUePucchSrsRecpInfo, ¶m->srsInfo, mBuf);
14155 CMCHKPK(cmPkTfuUePucchHqRecpInfo, ¶m->hqInfo, mBuf);
14156 CMCHKPK(cmPkTfuUePucchSrRecpInfo, ¶m->srInfo, mBuf);
14157 CMCHKPK(cmPkTfuUePucchCqiRecpInfo, ¶m->cqiInfo, mBuf);
14158 CMCHKPK(SPkU32, param->uciInfo, mBuf);
14164 /***********************************************************
14166 * Func : cmUnpkTfuUePucchRecpReq
14169 * Desc : This structure is sent from scheduler to PHY in order to request the
14170 * reception of UCI on PUCCH. This may contain the following:
14190 **********************************************************/
14192 PUBLIC S16 cmUnpkTfuUePucchRecpReq
14194 TfuUePucchRecpReq *param,
14198 PUBLIC S16 cmUnpkTfuUePucchRecpReq(param, mBuf)
14199 TfuUePucchRecpReq *param;
14204 TRC3(cmUnpkTfuUePucchRecpReq)
14206 CMCHKUNPK(SUnpkU32, (U32 *)¶m->uciInfo, mBuf);
14207 CMCHKUNPK(cmUnpkTfuUePucchCqiRecpInfo, ¶m->cqiInfo, mBuf);
14208 CMCHKUNPK(cmUnpkTfuUePucchSrRecpInfo, ¶m->srInfo, mBuf);
14209 CMCHKUNPK(cmUnpkTfuUePucchHqRecpInfo, ¶m->hqInfo, mBuf);
14210 CMCHKUNPK(cmUnpkTfuUePucchSrsRecpInfo, ¶m->srsInfo, mBuf);
14212 CMCHKUNPK(cmUnpkTfuUePucchUciRecpInfo, ¶m->uciPduInfo, mBuf);
14213 CMCHKUNPK(cmUnpkTfuUePucchBsiBriRecpInfo, ¶m->bsiBriInfo, mBuf);
14214 #endif /* TFU_5GTF */
14220 /***********************************************************
14222 * Func : cmPkTfuUeUlSchRecpInfo
14225 * Desc : This structure is sent from scheduler to PHY in order to request the
14226 * reception of UEs data on ULSCH.
14235 **********************************************************/
14237 PUBLIC S16 cmPkTfuUeUlSchRecpInfo
14239 TfuUeUlSchRecpInfo *param,
14243 PUBLIC S16 cmPkTfuUeUlSchRecpInfo(param, mBuf)
14244 TfuUeUlSchRecpInfo *param;
14249 TRC3(cmPkTfuUeUlSchRecpInfo)
14251 CMCHKPK(SPkU8, param->beamIndex, mBuf);
14252 CMCHKPK(SPkU8, param->uciWoTBFlag, mBuf);
14253 CMCHKPK(SPkU8, param->PMI, mBuf);
14254 CMCHKPK(SPkU8, param->SCID, mBuf);
14255 CMCHKPK(SPkU8, param->nAntPortLayer, mBuf);
14256 CMCHKPK(SPkU8, param->xPUSCHRange, mBuf);
14257 CMCHKPK(SPkU8, param->numRbg, mBuf);
14258 CMCHKPK(SPkU8, param->rbgStart, mBuf);
14260 CMCHKPK(SPkU8, param->mcs, mBuf);
14261 CMCHKPK(SPkU8, param->nSrs, mBuf);
14262 CMCHKPK(SPkU8, param->crntTxNb, mBuf);
14263 CMCHKPK(SPkU8, param->txMode, mBuf);
14264 CMCHKPK(SPkU8, param->harqProcId, mBuf);
14265 CMCHKPK(SPkU8, param->rv, mBuf);
14266 CMCHKPK(SPkU8, param->ndi, mBuf);
14267 CMCHKPK(SPkU8, param->isRtx, mBuf);
14268 CMCHKPK(SPkU8, param->hoppingBits, mBuf);
14269 CMCHKPK(SPkU8, param->hoppingEnbld, mBuf);
14270 CMCHKPK(SPkU8, param->nDmrs, mBuf);
14271 CMCHKPK(SPkU32, param->modType, mBuf);
14272 CMCHKPK(SPkU8, param->numRb, mBuf);
14273 CMCHKPK(SPkU8, param->rbStart, mBuf);
14274 CMCHKPK(SPkU16, param->size, mBuf);
14281 /***********************************************************
14283 * Func : cmUnpkTfuUeUlSchRecpInfo
14286 * Desc : This structure is sent from scheduler to PHY in order to request the
14287 * reception of UEs data on ULSCH.
14296 **********************************************************/
14298 PUBLIC S16 cmUnpkTfuUeUlSchRecpInfo
14300 TfuUeUlSchRecpInfo *param,
14304 PUBLIC S16 cmUnpkTfuUeUlSchRecpInfo(param, mBuf)
14305 TfuUeUlSchRecpInfo *param;
14310 TRC3(cmUnpkTfuUeUlSchRecpInfo)
14312 CMCHKUNPK(SUnpkU16, ¶m->size, mBuf);
14313 CMCHKUNPK(SUnpkU8, ¶m->rbStart, mBuf);
14314 CMCHKUNPK(SUnpkU8, ¶m->numRb, mBuf);
14315 CMCHKUNPK(SUnpkU32, (U32 *)¶m->modType, mBuf);
14316 CMCHKUNPK(SUnpkU8, ¶m->nDmrs, mBuf);
14317 CMCHKUNPK(SUnpkU8, ¶m->hoppingEnbld, mBuf);
14318 CMCHKUNPK(SUnpkU8, ¶m->hoppingBits, mBuf);
14319 CMCHKUNPK(SUnpkU8, ¶m->isRtx, mBuf);
14320 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
14321 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
14322 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
14323 CMCHKUNPK(SUnpkU8, ¶m->txMode, mBuf);
14324 CMCHKUNPK(SUnpkU8, ¶m->crntTxNb, mBuf);
14325 CMCHKUNPK(SUnpkU8, ¶m->nSrs, mBuf);
14326 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
14328 CMCHKUNPK(SUnpkU8, ¶m->rbgStart, mBuf);
14329 CMCHKUNPK(SUnpkU8, ¶m->numRbg, mBuf);
14330 CMCHKUNPK(SUnpkU8, ¶m->xPUSCHRange, mBuf);
14331 CMCHKUNPK(SUnpkU8, ¶m->nAntPortLayer, mBuf);
14332 CMCHKUNPK(SUnpkU8, ¶m->SCID, mBuf);
14333 CMCHKUNPK(SUnpkU8, ¶m->PMI, mBuf);
14334 CMCHKUNPK(SUnpkU8, ¶m->uciWoTBFlag, mBuf);
14335 CMCHKUNPK(SUnpkU8, ¶m->beamIndex, mBuf);
14342 /***********************************************************
14344 * Func : cmPkTfuUePuschCqiRecpInfo
14347 * Desc : This structure is sent from scheduler to PHY in order to request the
14348 * reception of CQI_RI info on PUSCH.
14357 **********************************************************/
14359 PUBLIC S16 cmPkTfuUePuschCqiRecpInfo
14361 TfuUePuschCqiRecpInfo *param,
14365 PUBLIC S16 cmPkTfuUePuschCqiRecpInfo(param, mBuf)
14366 TfuUePuschCqiRecpInfo *param;
14372 TRC3(cmPkTfuUePuschCqiRecpInfo)
14374 CMCHKPK(SPkU8, param->riBetaOff, mBuf);
14375 CMCHKPK(SPkU8, param->cqiBetaOff, mBuf);
14376 for (idx = 0; idx < param->cCNum; idx++)
14378 CMCHKPK(cmPkTknU8, ¶m->riSz[idx], mBuf);
14379 CMCHKPK(SPkU8, param->cqiPmiSzRn1[idx], mBuf);
14380 CMCHKPK(SPkU8, param->cqiPmiSzR1[idx], mBuf);
14382 CMCHKPK(SPkU8, param->cCNum, mBuf);
14383 CMCHKPK(SPkU8, param->reportType, mBuf);
14389 /***********************************************************
14391 * Func : cmUnpkTfuUePuschCqiRecpInfo
14394 * Desc : This structure is sent from scheduler to PHY in order to request the
14395 * reception of CQI_RI info on PUSCH.
14404 **********************************************************/
14406 PUBLIC S16 cmUnpkTfuUePuschCqiRecpInfo
14408 TfuUePuschCqiRecpInfo *param,
14412 PUBLIC S16 cmUnpkTfuUePuschCqiRecpInfo(param, mBuf)
14413 TfuUePuschCqiRecpInfo *param;
14419 TRC3(cmUnpkTfuUePuschCqiRecpInfo)
14421 CMCHKUNPK(SUnpkU8, ¶m->reportType, mBuf);
14422 CMCHKUNPK(SUnpkU8, ¶m->cCNum, mBuf);
14423 for (idx = param->cCNum; idx > 0; idx--)
14425 CMCHKUNPK(SUnpkU8, ¶m->cqiPmiSzR1[idx-1], mBuf);
14426 CMCHKUNPK(SUnpkU8, ¶m->cqiPmiSzRn1[idx-1], mBuf);
14427 CMCHKUNPK(cmUnpkTknU8, ¶m->riSz[idx-1], mBuf);
14429 CMCHKUNPK(SUnpkU8, ¶m->cqiBetaOff, mBuf);
14430 CMCHKUNPK(SUnpkU8, ¶m->riBetaOff, mBuf);
14436 /***********************************************************
14438 * Func : cmPkTfuUePuschHqRecpInfo
14441 * Desc : This structure is sent from scheduler to PHY in order to request the
14442 * reception of Harq info on PUSCH.
14451 **********************************************************/
14453 PUBLIC S16 cmPkTfuUePuschHqRecpInfo
14455 TfuUePuschHqRecpInfo *param,
14459 PUBLIC S16 cmPkTfuUePuschHqRecpInfo(param, mBuf)
14460 TfuUePuschHqRecpInfo *param;
14465 TRC3(cmPkTfuUePuschHqRecpInfo)
14469 CMCHKPK(SPkU8, param->ulDai, mBuf);
14470 CMCHKPK(SPkU8, param->nBundled, mBuf);
14471 CMCHKPK(SPkU32, param->hqFdbkMode, mBuf);
14473 CMCHKPK(SPkU8, param->hqBetaOff, mBuf);
14474 CMCHKPK(SPkU8, param->hqSz, mBuf);
14480 /***********************************************************
14482 * Func : cmUnpkTfuUePuschHqRecpInfo
14485 * Desc : This structure is sent from scheduler to PHY in order to request the
14486 * reception of Harq info on PUSCH.
14495 **********************************************************/
14497 PUBLIC S16 cmUnpkTfuUePuschHqRecpInfo
14499 TfuUePuschHqRecpInfo *param,
14503 PUBLIC S16 cmUnpkTfuUePuschHqRecpInfo(param, mBuf)
14504 TfuUePuschHqRecpInfo *param;
14509 TRC3(cmUnpkTfuUePuschHqRecpInfo)
14511 CMCHKUNPK(SUnpkU8, ¶m->hqSz, mBuf);
14512 CMCHKUNPK(SUnpkU8, ¶m->hqBetaOff, mBuf);
14515 CMCHKUNPK(SUnpkU32, (U32 *)¶m->hqFdbkMode, mBuf);
14516 CMCHKUNPK(SUnpkU8, ¶m->nBundled, mBuf);
14517 CMCHKUNPK(SUnpkU8, ¶m->ulDai, mBuf);
14524 /***********************************************************
14526 * Func : cmPkTfuUePuschRecpReq
14529 * Desc : This structure is sent from scheduler to PHY in order to request the
14530 * reception of UEs data on PUSCH. This may contain the following:
14534 * -# Data + HARQ + SRS
14536 * -# Data + CQI/RI + SRS
14537 * -# Data + CQI/RI + HARQ
14538 * -# Data + CQI/RI + HARQ + SRS
14547 **********************************************************/
14549 PUBLIC S16 cmPkTfuUePuschRecpReq
14551 TfuUePuschRecpReq *param,
14555 PUBLIC S16 cmPkTfuUePuschRecpReq(param, mBuf)
14556 TfuUePuschRecpReq *param;
14561 TRC3(cmPkTfuUePuschRecpReq)
14563 CMCHKPK(cmPkTknU8, ¶m->initialNumRbs, mBuf);
14564 CMCHKPK(cmPkTknU8, ¶m->initialNSrs, mBuf);
14565 CMCHKPK(cmPkTfuUePucchSrsRecpInfo, ¶m->srsInfo, mBuf);
14566 CMCHKPK(cmPkTfuUePuschHqRecpInfo, ¶m->hqInfo, mBuf);
14567 CMCHKPK(cmPkTfuUePuschCqiRecpInfo, ¶m->cqiRiInfo, mBuf);
14568 CMCHKPK(cmPkTfuUeUlSchRecpInfo, ¶m->ulSchInfo, mBuf);
14569 CMCHKPK(SPkU32, param->rcpInfo, mBuf);
14575 /***********************************************************
14577 * Func : cmUnpkTfuUePuschRecpReq
14580 * Desc : This structure is sent from scheduler to PHY in order to request the
14581 * reception of UEs data on PUSCH. This may contain the following:
14585 * -# Data + HARQ + SRS
14587 * -# Data + CQI/RI + SRS
14588 * -# Data + CQI/RI + HARQ
14589 * -# Data + CQI/RI + HARQ + SRS
14598 **********************************************************/
14600 PUBLIC S16 cmUnpkTfuUePuschRecpReq
14602 TfuUePuschRecpReq *param,
14606 PUBLIC S16 cmUnpkTfuUePuschRecpReq(param, mBuf)
14607 TfuUePuschRecpReq *param;
14612 TRC3(cmUnpkTfuUePuschRecpReq)
14614 CMCHKUNPK(SUnpkU32, (U32 *)¶m->rcpInfo, mBuf);
14615 CMCHKUNPK(cmUnpkTfuUeUlSchRecpInfo, ¶m->ulSchInfo, mBuf);
14616 CMCHKUNPK(cmUnpkTfuUePuschCqiRecpInfo, ¶m->cqiRiInfo, mBuf);
14617 CMCHKUNPK(cmUnpkTfuUePuschHqRecpInfo, ¶m->hqInfo, mBuf);
14618 CMCHKUNPK(cmUnpkTfuUePucchSrsRecpInfo, ¶m->srsInfo, mBuf);
14619 CMCHKUNPK(cmUnpkTknU8, ¶m->initialNSrs, mBuf);
14620 CMCHKUNPK(cmUnpkTknU8, ¶m->initialNumRbs, mBuf);
14626 /***********************************************************
14628 * Func : cmPkTfuUeRecpReqInfo
14631 * Desc : This structure is a Per UE reception request for either PUCCH or PUSCH
14632 * data. This contains information needed by PHY to decode the data sent by the
14642 **********************************************************/
14644 PUBLIC S16 cmPkTfuUeRecpReqInfo
14646 TfuUeRecpReqInfo *param,
14650 PUBLIC S16 cmPkTfuUeRecpReqInfo(param, mBuf)
14651 TfuUeRecpReqInfo *param;
14656 TRC3(cmPkTfuUeRecpReqInfo)
14658 switch(param->type) {
14659 case TFU_RECP_REQ_PUSCH:
14660 CMCHKPK(cmPkTfuUePuschRecpReq, ¶m->t.puschRecpReq, mBuf);
14662 case TFU_RECP_REQ_PUCCH:
14663 CMCHKPK(cmPkTfuUePucchRecpReq, ¶m->t.pucchRecpReq, mBuf);
14668 CMCHKPK(SPkU32, param->type, mBuf);
14670 CMCHKPK(SPkU8, param->groupId, mBuf);
14671 #endif /* TFU_5GTF */
14672 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
14678 /***********************************************************
14680 * Func : cmUnpkTfuUeRecpReqInfo
14683 * Desc : This structure is a Per UE reception request for either PUCCH or PUSCH
14684 * data. This contains information needed by PHY to decode the data sent by the
14694 **********************************************************/
14696 PUBLIC S16 cmUnpkTfuUeRecpReqInfo
14698 TfuUeRecpReqInfo *param,
14702 PUBLIC S16 cmUnpkTfuUeRecpReqInfo(param, mBuf)
14703 TfuUeRecpReqInfo *param;
14708 TRC3(cmUnpkTfuUeRecpReqInfo)
14710 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
14712 CMCHKUNPK(SUnpkU8, ¶m->groupId, mBuf);
14713 #endif /* TFU_5GTF */
14714 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
14715 switch(param->type) {
14716 case TFU_RECP_REQ_PUCCH:
14717 CMCHKUNPK(cmUnpkTfuUePucchRecpReq, ¶m->t.pucchRecpReq, mBuf);
14719 case TFU_RECP_REQ_PUSCH:
14720 CMCHKUNPK(cmUnpkTfuUePuschRecpReq, ¶m->t.puschRecpReq, mBuf);
14727 #endif /* TFU_UPGRADE */
14728 #ifndef TFU_UPGRADE /* TFU_UPGRADE */
14729 /***********************************************************
14731 * Func : cmPkTfuUePucchRecpReq
14734 * Desc : This structure is sent from Scheduler to PHY in order to request the
14735 * reception of an UEs data on PUCCH. This may contain the following:
14737 * -# Scheduling Request (SR)
14738 * -# HARQ-ACK and SR
14740 * -# CQI and HARQ-ACK
14749 **********************************************************/
14751 PUBLIC S16 cmPkTfuUePucchRecpReq
14753 TfuUePucchRecpReq *param,
14757 PUBLIC S16 cmPkTfuUePucchRecpReq(param, mBuf)
14758 TfuUePucchRecpReq *param;
14766 TRC3(cmPkTfuUePucchRecpReq)
14770 for (i=TFU_MAX_M-1; i >= 0; i--) {
14771 CMCHKPK(SPkU8, param->p[i], mBuf);
14773 for (i=TFU_MAX_M-1; i >= 0; i--) {
14774 CMCHKPK(SPkU8, param->m[i], mBuf);
14776 CMCHKPK(SPkU8, param->M, mBuf);
14777 CMCHKPK(SPkU8, param->multCnt, mBuf);
14780 CMCHKPK(SPkU32, param->type, mBuf);
14781 switch(param->hqType) {
14782 case TFU_HQ_RECP_REQ_N1PUCCH:
14783 CMCHKPK(SPkU16, param->t.n1Pucch, mBuf);
14787 case TFU_HQ_RECP_REQ_NORMAL:
14788 for (i=TFU_MAX_M-1; i >= 0; i--) {
14789 CMCHKPK(SPkU16, param->t.nCce[i], mBuf);
14796 case TFU_HQ_RECP_REQ_NORMAL:
14797 CMCHKPK(SPkU16, param->t.nCce, mBuf);
14804 CMCHKPK(SPkU32, param->hqType, mBuf);
14810 /***********************************************************
14812 * Func : cmUnpkTfuUePucchRecpReq
14815 * Desc : This structure is sent from Scheduler to PHY in order to request the
14816 * reception of an UEs data on PUCCH. This may contain the following:
14818 * -# Scheduling Request (SR)
14819 * -# HARQ-ACK and SR
14821 * -# CQI and HARQ-ACK
14830 **********************************************************/
14832 PUBLIC S16 cmUnpkTfuUePucchRecpReq
14834 TfuUePucchRecpReq *param,
14838 PUBLIC S16 cmUnpkTfuUePucchRecpReq(param, mBuf)
14839 TfuUePucchRecpReq *param;
14847 TRC3(cmUnpkTfuUePucchRecpReq)
14849 CMCHKUNPK(SUnpkU32, (U32 *)¶m->hqType, mBuf);
14850 switch(param->hqType) {
14853 case TFU_HQ_RECP_REQ_NORMAL:
14854 CMCHKUNPK(SUnpkU16, ¶m->t.nCce, mBuf);
14860 case TFU_HQ_RECP_REQ_NORMAL:
14861 for (i=0; i<TFU_MAX_M; i++) {
14862 CMCHKUNPK(SUnpkU16, ¶m->t.nCce[i], mBuf);
14867 case TFU_HQ_RECP_REQ_N1PUCCH:
14868 CMCHKUNPK(SUnpkU16, ¶m->t.n1Pucch, mBuf);
14873 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
14876 CMCHKUNPK(SUnpkU8, ¶m->multCnt, mBuf);
14877 CMCHKUNPK(SUnpkU8, ¶m->M, mBuf);
14878 for (i=0; i<TFU_MAX_M; i++) {
14879 CMCHKUNPK(SUnpkU8, ¶m->m[i], mBuf);
14881 for (i=0; i<TFU_MAX_M; i++) {
14882 CMCHKUNPK(SUnpkU8, ¶m->p[i], mBuf);
14891 /***********************************************************
14893 * Func : cmPkTfuUeMsg3RecpReq
14896 * Desc : This structure is sent from scheduler to PHY in order to request the
14897 * reception of UEs data sent as MSG3 for Random access.
14906 **********************************************************/
14908 PUBLIC S16 cmPkTfuUeMsg3RecpReq
14910 TfuUeMsg3RecpReq *param,
14914 PUBLIC S16 cmPkTfuUeMsg3RecpReq(param, mBuf)
14915 TfuUeMsg3RecpReq *param;
14920 TRC3(cmPkTfuUeMsg3RecpReq)
14922 CMCHKPK(SPkU32, param->modType, mBuf);
14923 CMCHKPK(SPkU16, param->size, mBuf);
14924 /*ccpu00128993 - ADD - fix for msg3 softcombining bug*/
14925 CMCHKPK(SPkU8, param->nDmrs, mBuf);
14926 CMCHKPK(SPkU8, param->rv, mBuf);
14927 CMCHKPK(SPkU8, param->ndi, mBuf);
14928 CMCHKPK(SPkU8, param->harqProcId, mBuf);
14929 CMCHKPK(SPkU8, param->isRtx, mBuf);
14930 CMCHKPK(SPkU8, param->ulDelay, mBuf);
14931 CMCHKPK(SPkU8, param->expCqi, mBuf);
14932 CMCHKPK(SPkU8, param->mcs, mBuf);
14933 CMCHKPK(SPkU8, param->numRb, mBuf);
14934 CMCHKPK(SPkU8, param->rbStart, mBuf);
14935 CMCHKPK(SPkU8, param->hoppingEnbld, mBuf);
14941 /***********************************************************
14943 * Func : cmUnpkTfuUeMsg3RecpReq
14946 * Desc : This structure is sent from scheduler to PHY in order to request the
14947 * reception of UEs data sent as MSG3 for Random access.
14956 **********************************************************/
14958 PUBLIC S16 cmUnpkTfuUeMsg3RecpReq
14960 TfuUeMsg3RecpReq *param,
14964 PUBLIC S16 cmUnpkTfuUeMsg3RecpReq(param, mBuf)
14965 TfuUeMsg3RecpReq *param;
14970 TRC3(cmUnpkTfuUeMsg3RecpReq)
14972 CMCHKUNPK(SUnpkU8, ¶m->hoppingEnbld, mBuf);
14973 CMCHKUNPK(SUnpkU8, ¶m->rbStart, mBuf);
14974 CMCHKUNPK(SUnpkU8, ¶m->numRb, mBuf);
14975 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
14976 CMCHKUNPK(SUnpkU8, ¶m->expCqi, mBuf);
14977 CMCHKUNPK(SUnpkU8, ¶m->ulDelay, mBuf);
14978 CMCHKUNPK(SUnpkU8, ¶m->isRtx, mBuf);
14979 /*ccpu00128993 - ADD - fix for msg3 softcombining bug*/
14980 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
14981 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
14982 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
14983 CMCHKUNPK(SUnpkU8, ¶m->nDmrs, mBuf);
14984 CMCHKUNPK(SUnpkU16, ¶m->size, mBuf);
14985 CMCHKUNPK(SUnpkU32, (U32 *)¶m->modType, mBuf);
14991 /***********************************************************
14993 * Func : cmPkTfuUePuschRecpReq
14996 * Desc : This structure is sent from scheduler to PHY in order to request the
14997 * reception of UEs data on PUSCH. This may contain the following:
14999 * -# Data + CQI and RI
15000 * -# Data + CQI and HARQ
15009 **********************************************************/
15011 PUBLIC S16 cmPkTfuUePuschRecpReq
15013 TfuUePuschRecpReq *param,
15017 PUBLIC S16 cmPkTfuUePuschRecpReq(param, mBuf)
15018 TfuUePuschRecpReq *param;
15023 TRC3(cmPkTfuUePuschRecpReq)
15025 CMCHKPK(SPkU32, param->modType, mBuf);
15026 CMCHKPK(SPkU16, param->size, mBuf);
15027 CMCHKPK(SPkU32, param->mode, mBuf);
15028 CMCHKPK(SPkU8, param->expHarq, mBuf);
15029 CMCHKPK(SPkU8, param->expCqi, mBuf);
15030 CMCHKPK(SPkU8, param->nDmrs, mBuf);
15031 CMCHKPK(SPkU8, param->rv, mBuf);
15032 CMCHKPK(SPkU8, param->isRtx, mBuf);
15033 CMCHKPK(SPkU8, param->ndi, mBuf);
15034 CMCHKPK(SPkU8, param->harqProcId, mBuf);
15035 CMCHKPK(SPkU8, param->mcs, mBuf);
15036 CMCHKPK(SPkU8, param->numRb, mBuf);
15037 CMCHKPK(SPkU8, param->rbStart, mBuf);
15038 CMCHKPK(SPkU8, param->hoppingBits, mBuf);
15039 CMCHKPK(SPkU8, param->hoppingEnbld, mBuf);
15045 /***********************************************************
15047 * Func : cmUnpkTfuUePuschRecpReq
15050 * Desc : This structure is sent from scheduler to PHY in order to request the
15051 * reception of UEs data on PUSCH. This may contain the following:
15053 * -# Data + CQI and RI
15054 * -# Data + CQI and HARQ
15063 **********************************************************/
15065 PUBLIC S16 cmUnpkTfuUePuschRecpReq
15067 TfuUePuschRecpReq *param,
15071 PUBLIC S16 cmUnpkTfuUePuschRecpReq(param, mBuf)
15072 TfuUePuschRecpReq *param;
15077 TRC3(cmUnpkTfuUePuschRecpReq)
15079 CMCHKUNPK(SUnpkU8, ¶m->hoppingEnbld, mBuf);
15080 CMCHKUNPK(SUnpkU8, ¶m->hoppingBits, mBuf);
15081 CMCHKUNPK(SUnpkU8, ¶m->rbStart, mBuf);
15082 CMCHKUNPK(SUnpkU8, ¶m->numRb, mBuf);
15083 CMCHKUNPK(SUnpkU8, ¶m->mcs, mBuf);
15084 CMCHKUNPK(SUnpkU8, ¶m->harqProcId, mBuf);
15085 CMCHKUNPK(SUnpkU8, ¶m->ndi, mBuf);
15086 CMCHKUNPK(SUnpkU8, ¶m->isRtx, mBuf);
15087 CMCHKUNPK(SUnpkU8, ¶m->rv, mBuf);
15088 CMCHKUNPK(SUnpkU8, ¶m->nDmrs, mBuf);
15089 CMCHKUNPK(SUnpkU8, ¶m->expCqi, mBuf);
15090 CMCHKUNPK(SUnpkU8, ¶m->expHarq, mBuf);
15091 CMCHKUNPK(SUnpkU32, (U32 *)¶m->mode, mBuf);
15092 CMCHKUNPK(SUnpkU16, ¶m->size, mBuf);
15093 CMCHKUNPK(SUnpkU32, (U32 *)¶m->modType, mBuf);
15099 /***********************************************************
15101 * Func : cmPkTfuUeRecpReqInfo
15104 * Desc : This structure is a Per UE reception request for either PUCCH or PUSCH
15105 * data. This contains information needed by PHY to decode the data sent by the
15115 **********************************************************/
15117 PUBLIC S16 cmPkTfuUeRecpReqInfo
15119 TfuUeRecpReqInfo *param,
15123 PUBLIC S16 cmPkTfuUeRecpReqInfo(param, mBuf)
15124 TfuUeRecpReqInfo *param;
15129 TRC3(cmPkTfuUeRecpReqInfo)
15131 switch(param->type) {
15132 case TFU_RECP_REQ_PUSCH:
15133 CMCHKPK(cmPkTfuUePuschRecpReq, ¶m->t.puschRecpReq, mBuf);
15135 case TFU_RECP_REQ_MSG3:
15136 CMCHKPK(cmPkTfuUeMsg3RecpReq, ¶m->t.msg3RecpReq, mBuf);
15138 case TFU_RECP_REQ_PUCCH:
15139 CMCHKPK(cmPkTfuUePucchRecpReq, ¶m->t.pucchRecpReq, mBuf);
15144 CMCHKPK(SPkU32, param->type, mBuf);
15145 CMCHKPK(cmPkLteRnti, param->rnti, mBuf);
15151 /***********************************************************
15153 * Func : cmUnpkTfuUeRecpReqInfo
15156 * Desc : This structure is a Per UE reception request for either PUCCH or PUSCH
15157 * data. This contains information needed by PHY to decode the data sent by the
15167 **********************************************************/
15169 PUBLIC S16 cmUnpkTfuUeRecpReqInfo
15171 TfuUeRecpReqInfo *param,
15175 PUBLIC S16 cmUnpkTfuUeRecpReqInfo(param, mBuf)
15176 TfuUeRecpReqInfo *param;
15181 TRC3(cmUnpkTfuUeRecpReqInfo)
15183 CMCHKUNPK(cmUnpkLteRnti, ¶m->rnti, mBuf);
15184 CMCHKUNPK(SUnpkU32, (U32 *)¶m->type, mBuf);
15185 switch(param->type) {
15186 case TFU_RECP_REQ_PUCCH:
15187 CMCHKUNPK(cmUnpkTfuUePucchRecpReq, ¶m->t.pucchRecpReq, mBuf);
15189 case TFU_RECP_REQ_MSG3:
15190 CMCHKUNPK(cmUnpkTfuUeMsg3RecpReq, ¶m->t.msg3RecpReq, mBuf);
15192 case TFU_RECP_REQ_PUSCH:
15193 CMCHKUNPK(cmUnpkTfuUePuschRecpReq, ¶m->t.puschRecpReq, mBuf);
15202 #endif /* ifndef TFU_UPGRADE */
15203 /*LAA: Packing and Unpacking*/
15205 /***********************************************************
15207 * Func : cmPkTfuErrIndInfo
15210 * Desc : This structure contains information that is passed as a part of
15211 * the ERR indication sent from PHY to MAC.
15220 **********************************************************/
15222 PRIVATE S16 cmPkTfuErrIndInfo
15224 TfuErrIndInfo *param,
15228 PRIVATE S16 cmPkTfuErrIndInfo(param, mBuf)
15229 TfuErrIndInfo *param;
15234 TRC3(cmPkTfuErrIndInfo)
15236 CMCHKPK(cmPkLteTimingInfo, ¶m->timingInfo, mBuf);
15237 CMCHKPK(cmPkLteCellId, param->cellId, mBuf);
15240 /***********************************************************
15242 * Func : cmUnpkTfuErrIndInfo
15245 * Desc : This structure contains information that is passed as a part of the ERR
15246 * indication sent from PHY to MAC.
15255 **********************************************************/
15257 PRIVATE S16 cmUnpkTfuErrIndInfo
15259 TfuErrIndInfo *param,
15263 PRIVATE S16 cmUnpkTfuErrIndInfo(param, mBuf)
15264 TfuErrIndInfo *param;
15269 TRC3(cmUnpkTfuErrIndInfo)
15271 CMCHKUNPK(cmUnpkLteCellId, ¶m->cellId, mBuf);
15272 CMCHKUNPK(cmUnpkLteTimingInfo, ¶m->timingInfo, mBuf);
15276 /***********************************************************
15278 * Func : cmPkTfuErrInd
15281 * This API is invoked by PHY to send ERROR INDICATION to scheduler
15282 * Currently invoked in the cases when the Unlicensed SCell transmission
15284 * This API contains the Cell and subframe information for which the
15285 * transmission failed.
15287 * @param[in] Pst *pst
15288 * @param[in] SuId suId
15289 * @param[in] TfuErrIndInfo *errIndInfo
15301 **********************************************************/
15303 PUBLIC S16 cmPkTfuErrInd
15307 TfuErrIndInfo * errInd
15310 PUBLIC S16 cmPkTfuErrInd(pst, suId, errInd)
15313 TfuErrIndInfo * errInd;
15316 Buffer *mBuf = NULLP;
15317 TRC3(cmPkTfuErrInd)
15319 if (SGetMsg(pst->region, pst->pool, &mBuf) != ROK) {
15320 #if (ERRCLASS & ERRCLS_ADD_RES)
15321 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15322 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15323 (ErrVal)ETFU105, (ErrVal)0, "Packing failed");
15325 SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo));
15328 if (pst->selector == ODU_SELECTOR_LC) {
15329 if (cmPkTfuErrIndInfo(errInd, mBuf) != ROK) {
15330 #if (ERRCLASS & ERRCLS_ADD_RES)
15331 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15332 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15333 (ErrVal)ETFU106, (ErrVal)0, "Packing failed");
15335 SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo));
15336 TFU_FREE_MSG(mBuf);
15340 else if(pst->selector == ODU_SELECTOR_LWLC)
15342 if (cmPkPtr((PTR)errInd, mBuf) != ROK)
15344 #if (ERRCLASS & ERRCLS_ADD_RES)
15345 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15346 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15347 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC Packing failed");
15350 /*MS_FIX:71858:Changed to SPutSBuf as being allocated with SGetSBuf*/
15351 SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo));
15352 TFU_FREE_MSG(mBuf);
15357 if (SPkS16(suId, mBuf) != ROK) {
15358 #if (ERRCLASS & ERRCLS_ADD_RES)
15359 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15360 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15361 (ErrVal)ETFU107, (ErrVal)0, "Packing failed");
15363 SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo));
15364 TFU_FREE_MSG(mBuf);
15367 if (pst->selector != ODU_SELECTOR_LWLC) {
15368 if (SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo)) != ROK) {
15369 #if (ERRCLASS & ERRCLS_ADD_RES)
15370 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15371 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15372 (ErrVal)ETFU108, (ErrVal)0, "Packing failed");
15374 TFU_FREE_MSG(mBuf);
15379 pst->event = (Event) EVTTFUERRIND;
15380 RETVALUE(SPstTsk(pst,mBuf));
15384 /***********************************************************
15386 * Func : cmUnpkTfuErrInd
15389 * This API is invoked by PHY to send ERROR INDICATION to scheduler
15390 * Currently invoked in the cases when the Unlicensed SCell transmission
15392 * This API contains the Cell and subframe information for which the
15393 * transmission failed.
15394 * @param pst Pointer to the post structure.
15395 * @param suId SAP ID of the service user.
15396 * @param errInd Pointer to the TfuErrIndInfo.
15397 * @return ROK/RFAILED
15406 **********************************************************/
15408 PUBLIC S16 cmUnpkTfuErrInd
15415 PUBLIC S16 cmUnpkTfuErrInd(func, pst, mBuf)
15422 TfuErrIndInfo *errInd;
15424 TRC3(cmUnpkTfuErrInd)
15426 if (SUnpkS16(&suId, mBuf) != ROK) {
15427 TFU_FREE_MSG(mBuf);
15428 #if (ERRCLASS & ERRCLS_ADD_RES)
15429 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15430 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15431 (ErrVal)ETFU109, (ErrVal)0, "Packing failed");
15435 if (pst->selector != ODU_SELECTOR_LWLC) {
15436 if ((SGetSBuf(pst->region, pst->pool, (Data **)&errInd, sizeof(TfuErrIndInfo))) != ROK) {
15437 #if (ERRCLASS & ERRCLS_ADD_RES)
15438 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15439 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15440 (ErrVal)ETFU110, (ErrVal)0, "Packing failed");
15442 TFU_FREE_MSG(mBuf);
15447 if (pst->selector == ODU_SELECTOR_LC)
15449 if (cmUnpkTfuErrIndInfo(errInd, mBuf) != ROK) {
15450 SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo));
15451 TFU_FREE_MSG(mBuf);
15452 #if (ERRCLASS & ERRCLS_ADD_RES)
15453 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15454 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15455 (ErrVal)ETFU111, (ErrVal)0, "Packing failed");
15460 else if(pst->selector == ODU_SELECTOR_LWLC)
15462 if (cmUnpkPtr((PTR *)&errInd, mBuf) != ROK)
15464 #if (ERRCLASS & ERRCLS_ADD_RES)
15465 SLogError(pst->srcEnt, pst->srcInst, pst->srcProcId,
15466 __FILE__, __LINE__, (ErrCls)ERRCLS_ADD_RES,
15467 (ErrVal)ETFUXXX, (ErrVal)0, "LWLC un-Packing failed");
15469 SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo));
15470 TFU_FREE_MSG(mBuf);
15474 TFU_FREE_MSG(mBuf);
15475 /* [ccpu00141698]-MOD- MAC/SCH does not free the TTI ind anymore */
15476 (*func)(pst, suId, errInd);
15477 SPutSBuf(pst->region, pst->pool, (Data *)errInd, sizeof(TfuErrIndInfo));
15481 #endif /* if defined(LCTFU) */
15483 /**********************************************************************
15485 **********************************************************************/