The functions for the configuration, control, status and statistics
request primitives are defined here.
*/
-static const char* RLOG_MODULE_NAME="MAC";
-static int RLOG_FILE_ID=220;
-static int RLOG_MODULE_ID=4096;
/* header include files (.h) */
#include "common_def.h"
#include "rgr.h" /* LRG Interface defines */
#include "rg.h" /* MAC defines */
#include "rg_err.h" /* MAC error defines */
+#include "mac_utils.h"
/* header/extern include files (.x) */
#include "crg.x" /* CRG Interface includes */
#endif
#include "ss_rbuf.h"
#include "ss_rbuf.x"
-#include "lwr_mac.h" /* MAC CL defines */
#include "mac_sch_interface.h"
#include "lwr_mac_upr_inf.h"
#include "mac.h"
-#include "lwr_mac_phy.h"
#include "lwr_mac_fsm.h"
+#include "lwr_mac_phy.h"
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
-EXTERN Void rgGetSId ARGS((SystemId *s));
+Void rgGetSId ARGS((SystemId *s));
#ifdef __cplusplus
}
#endif /* __cplusplus */
/* Public variable declaration */
-LwrMacCb lwrMacCb;
-extern MacCb macCb;
+MacCb macCb;
/* forward references */
-PRIVATE U16 rgLMMGenCfg ARGS((
+static uint16_t rgLMMGenCfg ARGS((
Inst inst,
RgCfg *cfg
));
-PRIVATE U16 rgLMMSapCfg ARGS((
+static uint16_t rgLMMSapCfg ARGS((
Inst inst,
RgCfg *cfg,
Elmnt sapType
));
-PRIVATE Void rgLMMShutdown ARGS((
- Inst inst
-));
-
-PRIVATE Void rgLMMFillCfmPst ARGS((
+static Void rgLMMFillCfmPst ARGS((
Pst *reqPst,
Pst *cfmPst,
RgMngmt *cfm
));
-PRIVATE Void rgLMMGenCntrl ARGS((
-RgMngmt *cntrl,
-RgMngmt *cfm,
-Pst *cfmPst
-));
-
-PRIVATE Void rgLMMSapCntrl ARGS((
-RgMngmt *cntrl,
-RgMngmt *cfm,
-Pst *cfmPst
-));
-
\f
/**
* @brief Task Initiation callback function.
*
* @details
*
- * Function : rgActvInit
+ * Function : macActvInit
*
* This function is supplied as one of parameters during MAC's
* task registration. SSI will invoke this function once, after
* @return S16
* -# ROK
**/
-#ifdef ANSI
-S16 rgActvInit
+uint8_t macActvInit
(
Ent entity, /* entity */
Inst inst, /* instance */
Region region, /* region */
Reason reason /* reason */
)
-#else
-S16 rgActvInit(entity, inst, region, reason)
-Ent entity; /* entity */
-Inst inst; /* instance */
-Region region; /* region */
-Reason reason; /* reason */
-#endif
{
Inst macInst ;
#ifdef DEBUGP
#ifdef RG_DEBUG
/* disabling debugs by default */
- rgCb[macInst].rgInit.dbgMask = 0xffffffff;
+ rgCb[macInst].rgInit.dbgMask = 0xffffffff;
#endif
#endif /* DEBUGP */
#ifdef SS_DIAG
SAttachSRngBuf(SS_RNG_BUF_ULMAC_TO_ULRLC, SS_RBUF_ENT_ULRLC,SS_RNG_RX);
#endif
- /* Initializing CL control block */
- memset(&lwrMacCb, 0, sizeof(LwrMacCb));
- lwrMacCb.region = region;
- lwrMacCb.pool = 0;
- lwrMacCb.clCfgDone = TRUE;
- lwrMacCb.numCell = 0;
- lwrMacCb.phyState = PHY_STATE_IDLE;
-
- /* Initialize Scheduler as well */
- schActvInit(ENTMAC, (DEFAULT_CELLS + SCH_INST_START), DFLT_REGION, PWR_UP);
-
/* Initialize lower mac */
- lwrMacInit();
+ lwrMacLayerInit(region, 0);
return ROK;
-} /* rgActvInit */
+} /* macActvInit */
\f
/**
* @brief Layer Manager Configuration request handler.
* @return S16
* -# ROK
**/
-#ifdef ANSI
S16 RgMiLrgCfgReq
(
Pst *pst, /* post structure */
RgMngmt *cfg /* config structure */
)
-#else
-S16 RgMiLrgCfgReq(pst, cfg)
-Pst *pst; /* post structure */
-RgMngmt *cfg; /* config structure */
-#endif
{
- U16 ret = LCM_PRIM_OK;
- U16 reason = LCM_REASON_NOT_APPL;
+ uint16_t ret = LCM_PRIM_OK;
+ uint16_t reason = LCM_REASON_NOT_APPL;
RgMngmt cfm;
Pst cfmPst;
Inst inst;
- RG_DIAG_LVL0(inst,0x0a0b0001, RG_DIAG_NA, SS_DIAG_INV_ARG,
- "Received CfgReq for MAC layer, Entity = %d, Instance = %d\n",
- pst->srcEnt, pst->srcInst,0,0);
+
+ DU_LOG("\nINFO --> MAC : Received CfgReq for MAC layer, Entity = %d, Instance = %d", pst->srcEnt, pst->srcInst);
RG_IS_INST_VALID(pst->dstInst);
inst = pst->dstInst - RG_INST_START;
switch(cfg->hdr.elmId.elmnt)
{
case STGEN:
- reason = rgLMMGenCfg(inst,&cfg->t.cfg);
- break;
+#ifdef INTEL_WLS_MEM
+ /* Start WLS message receiver thread */
+ LwrMacStartWlsRcvr();
+#endif
+ reason = rgLMMGenCfg(inst,&cfg->t.cfg);
+ break;
case STRGUSAP:
case STCRGSAP:
case STTFUSAP:
- reason = rgLMMSapCfg(inst,&cfg->t.cfg, cfg->hdr.elmId.elmnt);
- break;
+ reason = rgLMMSapCfg(inst,&cfg->t.cfg, cfg->hdr.elmId.elmnt);
+ break;
default:
- ret = LCM_PRIM_NOK;
- reason = LCM_REASON_INVALID_ELMNT;
- RLOG1(L_ERROR, "Invalid Elmnt=%d",
- cfg->hdr.elmId.elmnt);
- break;
+ ret = LCM_PRIM_NOK;
+ reason = LCM_REASON_INVALID_ELMNT;
+ DU_LOG("\nERROR --> MAC : Invalid Elmnt=%d",
+ cfg->hdr.elmId.elmnt);
+ break;
}
if (reason != LCM_REASON_NOT_APPL)
cfm.cfm.reason = reason;
RgMiLrgCfgCfm(&cfmPst, &cfm);
-
+
return ROK;
}/*-- RgMiLrgCfgReq --*/
* @return S16
* -# ROK
**/
-#ifdef ANSI
S16 RgMiLrgStsReq
(
Pst *pst, /* post structure */
RgMngmt *sts /* statistics structure */
)
-#else
-S16 RgMiLrgStsReq(pst, sts)
-Pst *pst; /* post structure */
-RgMngmt *sts; /* statistics structure */
-#endif
{
Pst cfmPst;
RgMngmt cfm;
Inst inst;
-
RG_IS_INST_VALID(pst->dstInst);
inst = pst->dstInst - RG_INST_START;
/* Fill the post structure for sending the confirmation */
cfm.cfm.status = LCM_PRIM_NOK;
cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE;
RgMiLrgStsCfm(&cfmPst,&cfm);
- RLOG0(L_ERROR, "Gen Cfg not done");
+ DU_LOG("\nERROR --> MAC : Gen Cfg not done");
return ROK;
}
#ifdef MAC_SCH_STATS
{
RgGenSts *genSts = &(cfm.t.sts.s.genSts);
- U8 cqi = 0;
+ uint8_t cqi = 0;
for(cqi=0; cqi <= 14; cqi++)
{
/* Filling DL ACK/NACK stats */
}
}
#endif /* MAC_SCH_STATS*/
- }
- break;
+ }
+ break;
case STRGUSAP:
memcpy(&(cfm.t.sts.s.rguSts), &rgCb[inst].rguSap[sts->t.sts.sapInst].sapSts,
sizeof(RgSapSts));
if(sts->t.sts.action == ARST)
memset(&rgCb[inst].rguSap[sts->t.sts.sapInst].sapSts, 0, sizeof(RgSapSts));
- break;
+ break;
case STCRGSAP:
memcpy(&(cfm.t.sts.s.crgSts), &rgCb[inst].crgSap.sapSts,
sizeof(RgSapSts));
if(sts->t.sts.action == ARST)
memset(&rgCb[inst].crgSap.sapSts, 0, sizeof(RgSapSts));
- break;
+ break;
case STTFUSAP:
memcpy(&(cfm.t.sts.s.tfuSts), &rgCb[inst].tfuSap.sapSts,
sizeof(RgSapSts));
if(sts->t.sts.action == ARST)
memset(&rgCb[inst].tfuSap.sapSts, 0, sizeof(RgSapSts));
- break;
+ break;
default:
- cfm.cfm.status = LCM_PRIM_NOK;
- cfm.cfm.reason = LCM_REASON_INVALID_ELMNT;
- RLOG1(L_ERROR, "Invalid Elmnt = %d",sts->hdr.elmId.elmnt);
- break;
+ cfm.cfm.status = LCM_PRIM_NOK;
+ cfm.cfm.reason = LCM_REASON_INVALID_ELMNT;
+ DU_LOG("\nERROR --> MAC : Invalid Elmnt = %d",sts->hdr.elmId.elmnt);
+ break;
}
RgMiLrgStsCfm(&cfmPst,&cfm);
return ROK;
}/*-- RgMiLrgStsReq --*/
\f
-/**
- * @brief Layer Manager Status request handler.
- *
- * @details
- *
- * Function : RgMiLrgStaReq
- *
- * This function handles the solicited status
- * request received from the Layer Manager.
- * -# Based on sta->hdr.elmId.elmnt, it retrieves the status of a
- * particular SAP from the rgCb global control block.
- * -# Invokes the RgMiLrgStaCfm to send back the confirmation to LM.
- *
- * @param[in] Pst *pst, the post structure
- * @param[in] RgMngmt *sta, the status parameter's structure
- * @return S16
- * -# ROK
- **/
-#ifdef ANSI
-S16 RgMiLrgStaReq
-(
-Pst *pst, /* post structure */
-RgMngmt *sta /* status structure */
-)
-#else
-S16 RgMiLrgStaReq(pst, sta)
-Pst *pst; /* post structure */
-RgMngmt *sta; /* status structure */
-#endif
-{
- Pst cfmPst;
- RgMngmt cfm;
- Inst inst ;
-
-
- RG_IS_INST_VALID(pst->dstInst);
- inst = pst->dstInst - RG_INST_START;
-
-
- /* Fill the post structure for sending the confirmation */
- rgLMMFillCfmPst(pst, &cfmPst, sta);
-
- if (sta->t.ssta.s.sysId.ptNmb != NULLP)
- {
- SPutSBuf(pst->region, pst->pool, (Data *)sta->t.ssta.s.sysId.ptNmb, LRG_MAX_PT_NUM_SIZE);
- }
-
- memset(&cfm, 0, sizeof(RgMngmt));
- cfm.hdr.elmId.elmnt = sta->hdr.elmId.elmnt;
-
-#ifdef LMINT3
- cfm.hdr.transId = sta->hdr.transId;
-#endif
- /* Check if General Config Done */
- if(rgCb[inst].rgInit.cfgDone != TRUE)
- {
- SGetDateTime(&cfm.t.ssta.dt);
- if (SGetSBuf(cfmPst.region, cfmPst.pool,
- (Data **)&(cfm.t.ssta.s.sysId.ptNmb), LRG_MAX_PT_NUM_SIZE)
- != ROK)
- {
- RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
- return ROK;
- }
- memset((cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
- rgGetSId(&cfm.t.ssta.s.sysId);
- cfm.cfm.status = LCM_PRIM_NOK;
- cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE;
- cfm.hdr.elmId.elmnt = sta->hdr.elmId.elmnt;
- RgMiLrgStaCfm(&cfmPst, &cfm);
- RLOG0(L_ERROR, "Gen Cfg not done");
- return ROK;
- }
-
- switch(sta->hdr.elmId.elmnt)
- {
- case STGEN:
- SGetDateTime(&cfm.t.ssta.dt);
- if (SGetSBuf(cfmPst.region, cfmPst.pool,
- (Data **)&(cfm.t.ssta.s.sysId.ptNmb), LRG_MAX_PT_NUM_SIZE)
- != ROK)
- {
- RLOG0(L_ERROR, "Memory Unavailable for Confirmation");
- return ROK;
- }
- memset((cfm.t.ssta.s.sysId.ptNmb), 0, LRG_MAX_PT_NUM_SIZE);
- rgGetSId(&cfm.t.ssta.s.sysId);
- cfm.cfm.status = LCM_PRIM_OK;
- cfm.cfm.reason = LCM_REASON_NOT_APPL;
- RgMiLrgStaCfm(&cfmPst, &cfm);
- break;
- case STRGUSAP:
- cfm.cfm.status = LCM_PRIM_OK;
- cfm.cfm.reason = LCM_REASON_NOT_APPL;
- SGetDateTime(&cfm.t.ssta.dt);
- memcpy(&(cfm.t.ssta.s.rguSapSta),
- &rgCb[inst].rguSap[sta->t.ssta.sapInst].sapSta,
- sizeof(RgSapSta));
- RgMiLrgStaCfm(&cfmPst, &cfm);
- break;
- case STCRGSAP:
- cfm.cfm.status = LCM_PRIM_OK;
- cfm.cfm.reason = LCM_REASON_NOT_APPL;
- SGetDateTime(&cfm.t.ssta.dt);
- memcpy(&(cfm.t.ssta.s.crgSapSta), &rgCb[inst].crgSap.sapSta,
- sizeof(RgSapSta));
- RgMiLrgStaCfm(&cfmPst, &cfm);
- break;
- case STTFUSAP:
- cfm.cfm.status = LCM_PRIM_OK;
- cfm.cfm.reason = LCM_REASON_NOT_APPL;
- SGetDateTime(&cfm.t.ssta.dt);
- memcpy(&(cfm.t.ssta.s.tfuSapSta), &rgCb[inst].tfuSap.sapSta,
- sizeof(RgSapSta));
- RgMiLrgStaCfm(&cfmPst, &cfm);
- break;
- default:
- cfm.cfm.status = LCM_PRIM_NOK;
- cfm.cfm.reason = LCM_REASON_INVALID_ELMNT;
- RgMiLrgStaCfm(&cfmPst, &cfm);
- RLOG1(L_ERROR, "Invalid elmnt=%d",sta->hdr.elmId.elmnt);
- break;
- }
- return ROK;
-}/*-- RgMiLrgStaReq --*/
-
-\f
-/**
- * @brief Layer Manager Control request handler.
- *
- * @details
- *
- * Function : RgMiLrgCntrlReq
- *
- * This function handles the control
- * request received from the Layer Manager.
- * -# Based on cntrl->hdr.elmId.elmnt, cntrl->t.cntrl.action
- * and cntrl->t.cntrl.subAction, it performs the appropriate control action
- * of SAP (enable/disable), Debug (enable/disable), Trace (enable/disable)
- * and layer shutdown.
- * -# Invokes the RgMiLrgCntrlCfm to send back the confirmation to LM.
- *
- * @param[in] Pst *pst, the post structure
- * @param[in] RgMngmt *cntrl, the control parameter's structure
- * @return S16
- * -# ROK
- **/
-#ifdef ANSI
-S16 RgMiLrgCntrlReq
-(
-Pst *pst, /* post structure */
-RgMngmt *cntrl /* control structure */
-)
-#else
-S16 RgMiLrgCntrlReq(pst, cntrl)
-Pst *pst; /* post structure */
-RgMngmt *cntrl; /* control structure */
-#endif
-{
- S16 ret = ROK; /* return value */
- Pst cfmPst;
- RgMngmt cfm;
- Inst inst;
-
-
- /* Fill the post structure for sending the confirmation */
-
- RG_IS_INST_VALID(pst->dstInst);
- inst = pst->dstInst - RG_INST_START;
-
- rgLMMFillCfmPst(pst, &cfmPst, cntrl);
-
- memset(&cfm, 0, sizeof(RgMngmt));
-#ifdef LMINT3
- cfm.hdr.transId = cntrl->hdr.transId;
-#endif
- cfm.hdr.elmId.elmnt = cntrl->hdr.elmId.elmnt;
- cfm.t.cntrl.action = cntrl->t.cntrl.action;
- cfm.t.cntrl.subAction = cntrl->t.cntrl.subAction;
-
- /* Check if General Config Done*/
- if(rgCb[inst].rgInit.cfgDone != TRUE)
- {
- cfm.cfm.status = LCM_PRIM_NOK;
- cfm.cfm.reason = LCM_REASON_GENCFG_NOT_DONE;
- cfm.hdr.elmId.elmnt = cntrl->hdr.elmId.elmnt;
- RgMiLrgCntrlCfm(&cfmPst, &cfm);
- RLOG0(L_ERROR, "Gen Cfg not done");
- return ROK;
- }
-
- /* General Config done, process the Control request */
- switch(cntrl->hdr.elmId.elmnt)
- {
- case STGEN:
- rgLMMGenCntrl(cntrl, &cfm, &cfmPst);
- break;
- case STTFUSAP:
- case STRGUSAP:
- case STCRGSAP:
- rgLMMSapCntrl(cntrl, &cfm, &cfmPst);
- break;
- default:
- cfm.cfm.status = LCM_PRIM_NOK;
- cfm.cfm.reason = LCM_REASON_INVALID_PAR_VAL;
- RgMiLrgCntrlCfm(&cfmPst, &cfm);
- RLOG1(L_ERROR, "invalid elmnt=%d",cntrl->hdr.elmId.elmnt);
- break;
- }
- return (ret);
-}/*-- RgMiLrgCntrlReq --*/
-
-\f
/**
* @brief SAP Configuration Handler.
*
*
* @param[in] Inst inst
* @param[in] RgCfg *cfg, the Configuaration information
- * @return U16
+ * @return uint16_t
* -# LCM_REASON_GENCFG_NOT_DONE
* -# LCM_REASON_INVALID_SAP
* -# LCM_REASON_NOT_APPL
**/
-#ifdef ANSI
-PRIVATE U16 rgLMMSapCfg
+static uint16_t rgLMMSapCfg
(
Inst inst,
RgCfg *cfg, /* Configuaration information */
Elmnt sapType /* Sap Type */
)
-#else
-PRIVATE U16 rgLMMSapCfg(inst,cfg,sapType)
-Inst inst;
-RgCfg *cfg; /* Configuaration information */
-Elmnt sapType; /* Sap Type */
-#endif
{
- U16 ret = LCM_REASON_NOT_APPL;
+ uint16_t ret = LCM_REASON_NOT_APPL;
RgLowSapCfgInfo *lowSapCfg = NULLP;
RgUpSapCfgInfo *upSapCfg = NULLP;
- RgUpSapCb *upSapCb = NULLP;
+ RgUpSapCb *upSapCb = NULLP;
- /* Check if Gen Config has been done */
+ /* Check if Gen Config has been done */
if(rgCb[inst].rgInit.cfgDone != TRUE)
- return (LCM_REASON_GENCFG_NOT_DONE);
+ return (LCM_REASON_GENCFG_NOT_DONE);
switch(sapType)
{
case STRGUSAP:
- if ((cfg->s.rguSap.spId > LRG_MAX_RGU_SAPS) &&
- (cfg->s.rguSap.selector != ODU_SELECTOR_TC) &&
- (cfg->s.rguSap.selector != ODU_SELECTOR_LC))
- {
- ret = LCM_REASON_INVALID_PAR_VAL;
- RLOG0(L_ERROR, "unsupported Selector value for RGU");
- break;
- }
- upSapCb = &(rgCb[inst].rguSap[cfg->s.rguSap.spId]);
- if(upSapCb->sapSta.sapState == LRG_NOT_CFG)
- {
- upSapCb->sapSta.sapState = LRG_UNBND;
- }
- upSapCfg = &(upSapCb->sapCfg);
- upSapCfg->sapPst.dstEnt = cfg->s.rguSap.ent;
- upSapCfg->sapPst.dstInst = cfg->s.rguSap.inst;
- upSapCfg->sapPst.dstProcId = cfg->s.rguSap.procId;
- upSapCfg->sapPst.srcEnt = rgCb[inst].rgInit.ent;
- upSapCfg->sapPst.srcInst = rgCb[inst].rgInit.inst;
- upSapCfg->sapPst.srcProcId = rgCb[inst].rgInit.procId;
- upSapCfg->sapPst.region = cfg->s.rguSap.mem.region;
- upSapCfg->sapPst.pool = cfg->s.rguSap.mem.pool;
- upSapCfg->sapPst.selector = cfg->s.rguSap.selector;
- upSapCfg->sapPst.route = cfg->s.rguSap.route;
- upSapCfg->sapPst.intfVer = 0;
- upSapCfg->sapPst.prior = cfg->s.rguSap.prior;
- upSapCfg->suId = cfg->s.rguSap.suId;
- upSapCfg->spId = cfg->s.rguSap.spId;
- /*T2K uses 2 saps, T3K uses 1 sap. change the rgRguDlSap to 1 only if
- * there is cfg request with sap is 1*/
- break;
+ if ((cfg->s.rguSap.spId > LRG_MAX_RGU_SAPS) &&
+ (cfg->s.rguSap.selector != ODU_SELECTOR_TC) &&
+ (cfg->s.rguSap.selector != ODU_SELECTOR_LC))
+ {
+ ret = LCM_REASON_INVALID_PAR_VAL;
+ DU_LOG("\nERROR --> MAC : unsupported Selector value for RGU");
+ break;
+ }
+ upSapCb = &(rgCb[inst].rguSap[cfg->s.rguSap.spId]);
+ if(upSapCb->sapSta.sapState == LRG_NOT_CFG)
+ {
+ upSapCb->sapSta.sapState = LRG_UNBND;
+ }
+ upSapCfg = &(upSapCb->sapCfg);
+ upSapCfg->sapPst.dstEnt = cfg->s.rguSap.ent;
+ upSapCfg->sapPst.dstInst = cfg->s.rguSap.inst;
+ upSapCfg->sapPst.dstProcId = cfg->s.rguSap.procId;
+ upSapCfg->sapPst.srcEnt = rgCb[inst].rgInit.ent;
+ upSapCfg->sapPst.srcInst = rgCb[inst].rgInit.inst;
+ upSapCfg->sapPst.srcProcId = rgCb[inst].rgInit.procId;
+ upSapCfg->sapPst.region = cfg->s.rguSap.mem.region;
+ upSapCfg->sapPst.pool = cfg->s.rguSap.mem.pool;
+ upSapCfg->sapPst.selector = cfg->s.rguSap.selector;
+ upSapCfg->sapPst.route = cfg->s.rguSap.route;
+ upSapCfg->sapPst.intfVer = 0;
+ upSapCfg->sapPst.prior = cfg->s.rguSap.prior;
+ upSapCfg->suId = cfg->s.rguSap.suId;
+ upSapCfg->spId = cfg->s.rguSap.spId;
+ /*T2K uses 2 saps, T3K uses 1 sap. change the rgRguDlSap to 1 only if
+ * there is cfg request with sap is 1*/
+ break;
case STCRGSAP:
- if ((cfg->s.crgSap.selector != ODU_SELECTOR_TC) &&
- (cfg->s.crgSap.selector != ODU_SELECTOR_LC))
- {
- ret = LCM_REASON_INVALID_PAR_VAL;
- RLOG0(L_ERROR, "unsupported Selector value for CRG");
- break;
- }
- if(rgCb[inst].crgSap.sapSta.sapState == LRG_NOT_CFG)
- {
- rgCb[inst].crgSap.sapSta.sapState = LRG_UNBND;
- }
- upSapCfg = &rgCb[inst].crgSap.sapCfg;
-
- upSapCfg->sapPst.dstEnt = cfg->s.crgSap.ent;
- upSapCfg->sapPst.dstInst = cfg->s.crgSap.inst;
- upSapCfg->sapPst.dstProcId = cfg->s.crgSap.procId;
- upSapCfg->sapPst.srcEnt = rgCb[inst].rgInit.ent;
- upSapCfg->sapPst.srcInst = rgCb[inst].rgInit.inst;
- upSapCfg->sapPst.srcProcId = rgCb[inst].rgInit.procId;
- upSapCfg->sapPst.region = cfg->s.crgSap.mem.region;
- upSapCfg->sapPst.pool = cfg->s.crgSap.mem.pool;
- upSapCfg->sapPst.selector = cfg->s.crgSap.selector;
- upSapCfg->sapPst.route = cfg->s.crgSap.route;
- upSapCfg->sapPst.intfVer = 0;
- upSapCfg->sapPst.prior = cfg->s.crgSap.prior;
- upSapCfg->suId = cfg->s.crgSap.suId;
- upSapCfg->spId = cfg->s.crgSap.spId;
- break;
+ if ((cfg->s.crgSap.selector != ODU_SELECTOR_TC) &&
+ (cfg->s.crgSap.selector != ODU_SELECTOR_LC))
+ {
+ ret = LCM_REASON_INVALID_PAR_VAL;
+ DU_LOG("\nERROR --> MAC : unsupported Selector value for CRG");
+ break;
+ }
+ if(rgCb[inst].crgSap.sapSta.sapState == LRG_NOT_CFG)
+ {
+ rgCb[inst].crgSap.sapSta.sapState = LRG_UNBND;
+ }
+ upSapCfg = &rgCb[inst].crgSap.sapCfg;
+
+ upSapCfg->sapPst.dstEnt = cfg->s.crgSap.ent;
+ upSapCfg->sapPst.dstInst = cfg->s.crgSap.inst;
+ upSapCfg->sapPst.dstProcId = cfg->s.crgSap.procId;
+ upSapCfg->sapPst.srcEnt = rgCb[inst].rgInit.ent;
+ upSapCfg->sapPst.srcInst = rgCb[inst].rgInit.inst;
+ upSapCfg->sapPst.srcProcId = rgCb[inst].rgInit.procId;
+ upSapCfg->sapPst.region = cfg->s.crgSap.mem.region;
+ upSapCfg->sapPst.pool = cfg->s.crgSap.mem.pool;
+ upSapCfg->sapPst.selector = cfg->s.crgSap.selector;
+ upSapCfg->sapPst.route = cfg->s.crgSap.route;
+ upSapCfg->sapPst.intfVer = 0;
+ upSapCfg->sapPst.prior = cfg->s.crgSap.prior;
+ upSapCfg->suId = cfg->s.crgSap.suId;
+ upSapCfg->spId = cfg->s.crgSap.spId;
+ break;
case STTFUSAP:
#ifndef CL_MAC_LWLC
- if ((cfg->s.tfuSap.selector != ODU_SELECTOR_TC) &&
- (cfg->s.tfuSap.selector != ODU_SELECTOR_LC))
- {
- ret = LCM_REASON_INVALID_PAR_VAL;
- RLOG0(L_ERROR, "unsupported Selector value for TFU");
- break;
- }
+ if ((cfg->s.tfuSap.selector != ODU_SELECTOR_TC) &&
+ (cfg->s.tfuSap.selector != ODU_SELECTOR_LC))
+ {
+ ret = LCM_REASON_INVALID_PAR_VAL;
+ DU_LOG("\nERROR --> MAC : unsupported Selector value for TFU");
+ break;
+ }
#endif
if (rgCb[inst].tfuSap.sapSta.sapState == LRG_NOT_CFG)
{
sizeof(TmrCfg));
break;
default:
- /* would never reach here */
- break;
+ /* would never reach here */
+ break;
}
return (ret);
}
*
* @param[in] Inst inst
* @param[in] RgCfg *cfg, the Configuaration information
- * @return U16
+ * @return uint16_t
* -# LCM_REASON_NOT_APPL
* -# LCM_REASON_INVALID_MSGTYPE
* -# LCM_REASON_MEM_NOAVAIL
**/
-#ifdef ANSI
-PRIVATE U16 rgLMMGenCfg
+static uint16_t rgLMMGenCfg
(
Inst inst,
RgCfg *cfg /* Configuaration information */
)
-#else
-PRIVATE U16 rgLMMGenCfg(inst,cfg)
-Inst inst;
-RgCfg *cfg; /* Configuaration information */
-#endif
{
- U16 ret = LCM_REASON_NOT_APPL;
+ uint16_t ret = LCM_REASON_NOT_APPL;
/* Check if General Configuration is done already */
return (LCM_REASON_INVALID_MSGTYPE);
}
if ((cfg->s.genCfg.lmPst.selector != ODU_SELECTOR_TC) &&
- (cfg->s.genCfg.lmPst.selector != ODU_SELECTOR_LC))
+ (cfg->s.genCfg.lmPst.selector != ODU_SELECTOR_LC))
{
- RLOG0(L_ERROR, "unsupported Selector value for RGU");
+ DU_LOG("\nERROR --> MAC : unsupported Selector value for RGU");
return (LCM_REASON_INVALID_PAR_VAL);
}
/* Update the Pst structure for LM interface */
rgCb[inst].rgInit.pool = cfg->s.genCfg.mem.pool;
rgCb[inst].genCfg.tmrRes = cfg->s.genCfg.tmrRes;
+ macCb.tmrRes = cfg->s.genCfg.tmrRes;
macCb.macInst = rgCb[inst].rgInit.inst;
macCb.procId = rgCb[inst].rgInit.procId;
if(cfg->s.genCfg.numRguSaps == 0)
{
- RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Invalid numRguSap.\n"));
+ DU_LOG("\nERROR --> MAC : rgGenCfg(): Invalid numRguSap.\n");
return RFAILED;
}
/* allocate RGR saps */
- if (SGetSBuf(rgCb[inst].rgInit.region,
- rgCb[inst].rgInit.pool,
- (Data **)&rgCb[inst].rguSap,
- (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps)) != ROK)
+ MAC_ALLOC(rgCb[inst].rguSap, sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps);
+ if(rgCb[inst].rguSap == NULLP)
{
- RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgGenCfg(): Failed to allocate mem for RGU SAP's.\n"));
+ DU_LOG("\nERROR --> MAC : rgGenCfg(): Failed to allocate mem for RGU SAP's.\n");
return RFAILED;
}
rgCb[inst].numRguSaps = cfg->s.genCfg.numRguSaps;
}
rgCb[inst].tfuSap.sapSta.sapState = LRG_NOT_CFG;
/* Initialize the timer blocks */
- cmInitTimers(rgCb[inst].tmrBlk, RG_MAX_TIMER);
+ cmInitTimers(macCb.tmrBlk, MAX_NUM_TIMER);
/* Initialzie the timer queue */
- memset(&rgCb[inst].tmrTq, 0, sizeof(CmTqType)*RG_TQ_SIZE);
+ memset(&macCb.tmrTq, 0, sizeof(CmTqType) * MAC_TQ_SIZE);
/* Initialize the timer control point */
- memset(&rgCb[inst].tmrTqCp, 0, sizeof(CmTqCp));
- rgCb[inst].tmrTqCp.tmrLen = RG_TQ_SIZE;
-#if 0
+ memset(&macCb.tmrTqCp, 0, sizeof(CmTqCp));
+ macCb.tmrTqCp.tmrLen = MAC_TQ_SIZE;
+
/* Timer Registration request to SSI */
- if (SRegTmrMt(rgCb[inst].rgInit.ent, rgCb[inst].rgInit.inst,
- (S16)rgCb[inst].genCfg.tmrRes, rgActvTmr) != ROK)
+ if(ODU_REG_TMR_MT(ENTMAC, macCb.macInst, macCb.tmrRes, macActvTmr) != ROK)
{
-
- RLOG0(L_ERROR, "Failed to register timer");
- SPutSBuf(rgCb[inst].rgInit.region,
- rgCb[inst].rgInit.pool,
- (Data *)rgCb[inst].rguSap,
- (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps));
+ DU_LOG("\nERROR --> MAC : Failed to register timer");
+
+ MAC_FREE(rgCb[inst].rguSap,
+ (sizeof(RgUpSapCb) * cfg->s.genCfg.numRguSaps));
return (LCM_REASON_MEM_NOAVAIL);
}
-#endif
+
/* Set Config done in TskInit */
rgCb[inst].rgInit.cfgDone = TRUE;
}
\f
-/***********************************************************
- *
- * Func : rgLMMShutdown
- *
- *
- * Desc : Handles the MAC layer shutdown request. Calls
- * rgCFGFreeCellCb(RgCellCb*) to handle each cellCb deallocation.
- *
- *
- * Ret : Void
- *
- * Notes:
- *
- * File : rg_lmm.c
- *
- **********************************************************/
-#ifdef ANSI
-PRIVATE Void rgLMMShutdown
-(
-Inst inst
-)
-#else
-PRIVATE Void rgLMMShutdown(inst)
-Inst inst;
-#endif
-{
- RgCellCb *cell = rgCb[inst].cell;
- U8 idx;
-
-
- /* Unbind the TFU Sap */
- if(rgCb[inst].tfuSap.sapSta.sapState == LRG_WAIT_BNDCFM)
- {
- rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, LRG_UNBND);
- if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
- {
- rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
- }
- rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
- }
- if(rgCb[inst].tfuSap.sapSta.sapState == LRG_BND)
- {
- rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, LRG_UNBND);
- rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
- }
-
-
- if(cell != NULLP)
- {
- for(idx=0;idx < RG_NUM_SUB_FRAMES; idx++)
- {
- rgTOMRlsSf(inst,&cell->subFrms[idx]);
- }
-
- rgCFGFreeCellCb(cell);
- }
-
- /* Deleting the RGU SAPs */
- SPutSBuf(rgCb[inst].rgInit.region,
- rgCb[inst].rgInit.pool,
- (Data *)rgCb[inst].rguSap,
- (sizeof(RgUpSapCb) * rgCb[inst].numRguSaps));
- rgCb[inst].rguSap = NULLP;
-
- rgCb[inst].inactiveCell = NULLP;
- rgCb[inst].cell = NULLP;
-
- /* De-register the Timer Service */
- (Void) SDeregTmrMt(rgCb[inst].rgInit.ent, rgCb[inst].rgInit.inst,
- (S16)rgCb[inst].genCfg.tmrRes, rgActvTmr);
-
- /* call back the task initialization function to intialize
- * the global RgCb Struct */
- rgActvInit(rgCb[inst].rgInit.ent, rgCb[inst].rgInit.inst, rgCb[inst].rgInit.region,
- rgCb[inst].rgInit.reason);
-
- RETVOID;
-}
-
-\f
-/***********************************************************
- *
- * Func : rgLMMGenCntrl
- *
- *
- * Desc : Processes the LM control request for STGEN elmnt.
- *
- *
- * Ret : Void
- *
- * Notes:
- *
- * File : rg_lmm.c
- *
- **********************************************************/
-#ifdef ANSI
-PRIVATE Void rgLMMGenCntrl
-(
-RgMngmt *cntrl,
-RgMngmt *cfm,
-Pst *cfmPst
-)
-#else
-PRIVATE Void rgLMMGenCntrl(cntrl, cfm, cfmPst)
-RgMngmt *cntrl;
-RgMngmt *cfm;
-Pst *cfmPst;
-#endif
-{
- Inst inst = (cfmPst->srcInst - RG_INST_START);
-
- cfm->cfm.status = LCM_PRIM_OK;
- cfm->cfm.reason = LCM_REASON_NOT_APPL;
-
-
- switch(cntrl->t.cntrl.action)
- {
- case AENA:
- /* Action is Enable */
- switch(cntrl->t.cntrl.subAction)
- {
- case SATRC:
- /* Enable Traces */
- rgCb[inst].rgInit.trc = TRUE;
- rgCb[inst].trcLen = cntrl->t.cntrl.s.trcLen;
- /*Store the response and TransId for sending the Traces */
- memcpy(&rgCb[inst].genCfg.trcResp.response,
- &cntrl->hdr.response, sizeof(Resp));
- rgCb[inst].genCfg.trcResp.transId = cntrl->hdr.transId;
-
- break;
- case SAUSTA:
- /* Enable Unsolicited Status (alarms) */
- rgCb[inst].rgInit.usta = TRUE;
- /*Store the response and TransId for sending the Alarms */
- memcpy(&rgCb[inst].genCfg.ustaResp.response,
- &cntrl->hdr.response, sizeof(Resp));
- rgCb[inst].genCfg.ustaResp.transId = cntrl->hdr.transId;
- break;
- case SADBG:
- /* Enable Debug Printing */
-#ifdef DEBUGP
- rgCb[inst].rgInit.dbgMask |= cntrl->t.cntrl.s.rgDbgCntrl.dbgMask;
-#endif
- break;
-#ifdef SS_DIAG
- case SALOG:
- rgCb[inst].rgInit.logMask = cntrl->t.cntrl.s.logMask;
- break;
-#endif
-
- default:
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
- RLOG1(L_ERROR, "invalid subaction=%d",cntrl->t.cntrl.subAction);
- break;
- }
- break;
- case ADISIMM:
- /* Action is Diable immidiately */
- switch(cntrl->t.cntrl.subAction)
- {
- case SATRC:
- /* Disable Traces */
- rgCb[inst].rgInit.trc = FALSE;
- break;
- case SAUSTA:
- /* Disable Unsolicited Status (alarms) */
- rgCb[inst].rgInit.usta = FALSE;
- break;
- case SADBG:
- /* Disable Debug Printing */
-#ifdef DEBUGP
- rgCb[inst].rgInit.dbgMask &=~cntrl->t.cntrl.s.rgDbgCntrl.dbgMask;
-#endif
- break;
-#ifdef SS_DIAG
- case SALOG:
- rgCb[inst].rgInit.logMask = cntrl->t.cntrl.s.logMask;
- break;
-#endif
-
- default:
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
- RLOG1(L_ERROR, "invalid subaction=%d",cntrl->t.cntrl.subAction);
- break;
- }
- break;
- case ASHUTDOWN:
- /* Free all the memory dynamically allocated by MAC */
- rgLMMShutdown(inst);
- break;
- default:
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
- RLOG1(L_ERROR, "invalid action=%d",cntrl->t.cntrl.action);
- break;
- }
- RgMiLrgCntrlCfm(cfmPst, cfm);
- RETVOID;
-}
-
-\f
-/***********************************************************
- *
- * Func : rgLMMSapCntrl
- *
- *
- * Desc : Processes the LM control request for STxxxSAP elmnt.
- *
- *
- * Ret : Void
- *
- * Notes:
- *
- * File : rg_lmm.c
- *
- **********************************************************/
-#ifdef ANSI
-PRIVATE Void rgLMMSapCntrl
-(
-RgMngmt *cntrl,
-RgMngmt *cfm,
-Pst *cfmPst
-)
-#else
-PRIVATE Void rgLMMSapCntrl(cntrl, cfm, cfmPst)
-RgMngmt *cntrl;
-RgMngmt *cfm;
-Pst *cfmPst;
-#endif
-{
- Inst inst = cfmPst->srcInst - RG_INST_START;
-
- /* Only TFU Sap can be controlled by LM */
- switch(cntrl->hdr.elmId.elmnt)
- {
- case STTFUSAP:
- switch(cntrl->t.cntrl.action)
- {
- case ABND:
- /* Bind Enable Request */
- if ((rgCb[inst].tfuSap.sapSta.sapState == LRG_NOT_CFG) ||
- (rgCb[inst].tfuSap.sapSta.sapState == LRG_BND))
- {
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_SAP;
- }
- else
- {
- if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
- {
- rgLMMStartTmr(inst,RG_BNDREQ_TMR, rgCb[inst].tfuSap.sapCfg.bndTmr.val,
- (PTR)&rgCb[inst].tfuSap);
- }
- /* Change SAP state */
- rgCb[inst].tfuSap.sapSta.sapState = LRG_WAIT_BNDCFM;
- rgCb[inst].tfuSap.numBndRetries++;
- /* Store the response and TransId for sending
- * the Control confirm */
- memcpy(&rgCb[inst].genCfg.bndCfmResp.response,
- &cntrl->hdr.response, sizeof(Resp));
- rgCb[inst].genCfg.bndCfmResp.transId = cntrl->hdr.transId;
-
- /* Sending Status Indication to Layer Manager */
- cfm->cfm.status = LCM_PRIM_OK_NDONE;
- cfm->cfm.reason = LCM_REASON_NOT_APPL;
- RgMiLrgCntrlCfm(cfmPst, cfm);
-
- rgLIMTfuBndReq(inst,rgCb[inst].tfuSap.sapCfg.suId,
- rgCb[inst].tfuSap.sapCfg.spId);
- RETVOID;
- }
- break;
- case AUBND:
- /* Unbind request */
-
- /* Check if the SAP is configured */
- if( (rgCb[inst].tfuSap.sapSta.sapState == LRG_NOT_CFG) ||
- (rgCb[inst].tfuSap.sapSta.sapState == LRG_UNBND))
- {
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_MSGTYPE;
- }
- else
- {
- rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, TFU_UBNDREQ_MNGMT);
- if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
- {
- rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
- }
- /* Change SAP state */
- rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
- cfm->cfm.status = LCM_PRIM_OK;
- cfm->cfm.reason = LCM_REASON_NOT_APPL;
- }
- break;
- case ADEL:
- /* Delete SAP, does initialization of SAP */
- if ((rgCb[inst].tfuSap.sapSta.sapState == LRG_WAIT_BNDCFM) ||
- (rgCb[inst].tfuSap.sapSta.sapState == LRG_BND))
- {
- rgLIMTfuUbndReq(inst,rgCb[inst].tfuSap.sapCfg.spId, TFU_UBNDREQ_MNGMT);
- if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
- {
- rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
- }
- }
- memset(&rgCb[inst].tfuSap, 0, sizeof(RgLowSapCb));
- rgCb[inst].tfuSap.sapSta.sapState = LRG_NOT_CFG;
- cfm->cfm.status = LCM_PRIM_OK;
- cfm->cfm.reason = LCM_REASON_NOT_APPL;
- break;
- default:
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
- RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgLMMSapCntrl(): invalid action=%d",
- cntrl->t.cntrl.action));
- break;
- }
- break;
- case STRGUSAP:
- switch(cntrl->t.cntrl.action)
- {
- case ADEL:
- memset(&rgCb[inst].rguSap[cntrl->t.cntrl.instId], 0, sizeof(RgUpSapCb));
- rgCb[inst].rguSap[cntrl->t.cntrl.instId].sapSta.sapState = LRG_NOT_CFG;
- cfm->cfm.status = LCM_PRIM_OK;
- cfm->cfm.reason = LCM_REASON_NOT_APPL;
- break;
- default:
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
- RGDBGERRNEW(inst,(rgPBuf(inst), "\nrgLMMSapCntrl(): invalid action=%d",
- cntrl->t.cntrl.action));
- break;
- }
- break;
- case STCRGSAP:
- switch(cntrl->t.cntrl.action)
- {
- case ADEL:
- memset(&rgCb[inst].crgSap, 0, sizeof(RgUpSapCb));
- rgCb[inst].crgSap.sapSta.sapState = LRG_NOT_CFG;
- cfm->cfm.status = LCM_PRIM_OK;
- cfm->cfm.reason = LCM_REASON_NOT_APPL;
- break;
- default:
- cfm->cfm.status = LCM_PRIM_NOK;
- cfm->cfm.reason = LCM_REASON_INVALID_PAR_VAL;
- RLOG1(L_ERROR, "invalid action=%d",cntrl->t.cntrl.action);
-
- break;
- }
- break;
- default:
- /* Would never here. */
- RETVOID;
- }
- RgMiLrgCntrlCfm(cfmPst, cfm);
- RETVOID;
-}
-
-\f
/***********************************************************
*
* Func : rgLMMFillCfmPst
* File : rg_lmm.c
*
**********************************************************/
-#ifdef ANSI
-PRIVATE Void rgLMMFillCfmPst
+static Void rgLMMFillCfmPst
(
Pst *reqPst,
Pst *cfmPst,
RgMngmt *cfm
)
-#else
-PRIVATE Void rgLMMFillCfmPst(reqPst, cfmPst, cfm)
-Pst *reqPst;
-Pst *cfmPst;
-RgMngmt *cfm;
-#endif
{
Inst inst;
inst = (reqPst->dstInst - RG_INST_START);
cfmPst->region = cfm->hdr.response.mem.region;
cfmPst->pool = cfm->hdr.response.mem.pool;
- RETVOID;
+ return;
}
\f
*
* @param[in] Inst inst
* @param[in] S16 tmrEvnt, the Timer Event
- * @param[in] U32 tmrVal, the Wait Time
+ * @param[in] uint32_t tmrVal, the Wait Time
* @param[in] PTR cb, Entry for which Timer expired
* @return S16
* -# ROK
**/
-#ifdef ANSI
S16 rgLMMStartTmr
(
Inst inst,
S16 tmrEvnt, /* Timer Event */
-U32 tmrVal, /* Wait Time */
+uint32_t tmrVal, /* Wait Time */
PTR cb /* Entry for which Timer Expired */
)
-#else
-S16 rgLMMStartTmr(tmrEvnt, tmrVal, cb)
-Inst inst;
-S16 tmrEvnt; /* Timer Event */
-U32 tmrVal; /* Wait Time */
-PTR cb; /* Entry for which Timer Expired */
-#endif
{
CmTmrArg arg;
- UNUSED(tmrEvnt);
+ UNUSED(tmrEvnt);
/* Initialize the arg structure */
memset(&arg, 0, sizeof(CmTmrArg));
* -# ROK
* -# RFAILED
**/
-#ifdef ANSI
S16 rgLMMStopTmr
(
Inst inst, /* Scheduler instance */
S16 tmrEvnt, /* Timer Event */
PTR cb /* Entry for which Timer Expired */
)
-#else
-S16 rgLMMStopTmr(inst,tmrEvnt, cb)
-Inst inst; /* Scheduler instance */
-S16 tmrEvnt; /* Timer Event */
-PTR cb; /* Entry for which Timer Expired */
-#endif
{
CmTmrArg arg;
- U8 i;
+ uint8_t i;
S16 ret;
* @return S16
* -# ROK
**/
-#ifdef ANSI
S16 rgLMMTmrExpiry
(
PTR cb, /* Pointer to timer control block */
S16 tmrEvnt /* Timer Event */
)
-#else
-S16 rgLMMTmrExpiry(cb,tmrEvnt)
-PTR cb; /* Pointer to timer control block */
-S16 tmrEvnt; /* Timer Event */
-#endif
{
S16 ret = ROK;
RgLowSapCb *tfuSap = (RgLowSapCb *)cb;
}
/* Send bind request */
- rgLIMTfuBndReq(inst,rgCb[inst].tfuSap.sapCfg.suId,
- rgCb[inst].tfuSap.sapCfg.spId);
+ //rgLIMTfuBndReq(inst,rgCb[inst].tfuSap.sapCfg.suId,
+ //rgCb[inst].tfuSap.sapCfg.spId);
}
break;
default:
- RLOG1(L_ERROR, "Invalid tmrEvnt=%d",tmrEvnt);
+ DU_LOG("\nERROR --> MAC : Invalid tmrEvnt=%d",tmrEvnt);
ret = RFAILED;
break;
}
* status indication to the Layer Manager.
*
* @param[in] Inst inst
- * @param[in] U16 category, the Alarm category
- * @param[in] U16 event, the Alarm event
- * @param[in] U16 cause, the cause of the Alarm
+ * @param[in] uint16_t category, the Alarm category
+ * @param[in] uint16_t event, the Alarm event
+ * @param[in] uint16_t cause, the cause of the Alarm
* @param[in] RgUstaDgn *dgn, Alarm Diagonostics
* @return S16
* -# ROK
**/
-#ifdef ANSI
S16 rgLMMStaInd
(
Inst inst,
-U16 category,
-U16 event,
-U16 cause,
+uint16_t category,
+uint16_t event,
+uint16_t cause,
RgUstaDgn *dgn
)
-#else
-S16 rgLMMStaInd(inst,category, event, cause, dgn)
-Inst inst;
-U16 category;
-U16 event;
-U16 cause;
-RgUstaDgn *dgn;
-#endif
{
RgMngmt usta;
-
-
if(rgCb[inst].rgInit.usta == FALSE)
{
return ROK;
return (RgMiLrgStaInd(&rgCb[inst].rgInit.lmPst, &usta));
}
-\f
-/**
- * @brief Layer Manager Trace Indication generation.
- *
- * @details
- *
- * Function : rgLMMTrcInd
- *
- * This API is used by the other modules of MAC to send a
- * Trace indication to the Layer Manager.
- *
- * @param[in] Inst inst
- * @param[in] Buffer *srcMbuf, the Message Buffer .
- * @param[in] U8 event, the trace event.
- * @return Void
- **/
-#ifdef ANSI
-Void rgLMMTrcInd
-(
-Inst inst,
-Buffer *srcMbuf, /* Message Buffer */
-U8 event /* event */
-)
-#else
-Void rgLMMTrcInd(inst,srcMbuf,event)
-Inst inst;
-Buffer *srcMbuf; /* Message Buffer */
-U8 event; /* event */
-#endif
-{
- Buffer *dstMbuf = NULLP;
- MsgLen bufLen = 0;
- Data *tempBuf;
- MsgLen tempCnt;
- RgMngmt trc;
- Pst pst;
-
-
-
- if ((rgCb[inst].trcLen == LRG_NO_TRACE) || (srcMbuf == NULLP))
- {
- RLOG0(L_ERROR, "Trace Disabled.");
- RETVOID;
- }
-
- memset(&trc, 0, sizeof(RgMngmt));
-
- pst = rgCb[inst].rgInit.lmPst;
- pst.selector = rgCb[inst].genCfg.trcResp.response.selector;
- pst.prior = rgCb[inst].genCfg.trcResp.response.prior;
- pst.route = rgCb[inst].genCfg.trcResp.response.route;
- pst.region = rgCb[inst].genCfg.trcResp.response.mem.region;
- pst.pool = rgCb[inst].genCfg.trcResp.response.mem.pool;
-
- trc.hdr.transId = rgCb[inst].genCfg.trcResp.transId;
-
- SGetDateTime(&trc.t.trc.dt);
-
- /* Check if the whole buffer is to be sent in Trace indication */
- if(rgCb[inst].trcLen == LRG_FULL_TRACE)
- {
- if (SCpyMsgMsg(srcMbuf, pst.region, pst.pool, &dstMbuf)
- != ROK)
- {
- RLOG0(L_ERROR, "SCpyMsgMsg Failed.");
- RETVOID;
- }
- trc.cfm.status = LCM_PRIM_OK;
- trc.cfm.reason = LCM_REASON_NOT_APPL;
- trc.t.trc.evnt = event;
-
- /* Send Trace Indication to Layer manager */
- RgMiLrgTrcInd(&pst, &trc, dstMbuf);
- }
- /* check if only a specified number of bytes are to be sent */
- else if(rgCb[inst].trcLen > 0)
- {
- /* Get the length of the recvd message buffer */
- if (SFndLenMsg(srcMbuf, &bufLen) != ROK)
- {
- RLOG0(L_ERROR, "SFndLenMsg Failed.");
- RETVOID;
- }
- /* Check if the recvd buffer size is less than request trace len */
- if(bufLen < rgCb[inst].trcLen)
- {
- /* Copy the whole of the recvd buffer in trace indication */
-
- if (SCpyMsgMsg(srcMbuf, pst.region, pst.pool, &dstMbuf)
- != ROK)
- {
- RLOG0(L_ERROR, "SCpyMsgMsg Failed.");
- RETVOID;
- }
-
- trc.cfm.status = LCM_PRIM_OK;
- trc.cfm.reason = LCM_REASON_NOT_APPL;
- trc.t.trc.evnt = event;
-
- /* Send Trace Indication to Layer manager */
- RgMiLrgTrcInd(&pst, &trc, dstMbuf);
- }
- /* if the recvd buffer size is greater than request trace len */
- if(bufLen >= rgCb[inst].trcLen)
- {
- /* Get a temporary buffer to store the msg */
- if (rgAllocSBuf(inst,&tempBuf, rgCb[inst].trcLen) != ROK)
- {
- RLOG0(L_ERROR, "rgAllocSBuf Failed.");
- RETVOID;
- }
-
- /* Copy trcLen nos of bytes from the recvd message */
- if (SCpyMsgFix(srcMbuf,0,rgCb[inst].trcLen,tempBuf,&tempCnt) != ROK)
- {
- RLOG0(L_ERROR, "SCpyMsgFix Failed.");
- RETVOID;
- }
-
- if (SGetMsg(pst.region, pst.pool, &dstMbuf) != ROK)
- {
- RLOG0(L_ERROR, "dstMbuf Allocation Failed");
- RETVOID;
- }
- /* Copy the tempBuf data to dst mBuf */
- if (SCpyFixMsg(tempBuf,dstMbuf,0,rgCb[inst].trcLen,&tempCnt) != ROK)
- {
- RLOG0(L_ERROR, "SCpyFixMsg Failed.");
- RETVOID;
- }
-
- /*ccpu00117052 - MOD - Passing double pointer for proper NULLP
- assignment */
- /* Free the memory allocated for tempBuf */
- rgFreeSBuf(inst,&tempBuf, rgCb[inst].trcLen);
-
- trc.cfm.status = LCM_PRIM_OK;
- trc.cfm.reason = LCM_REASON_NOT_APPL;
- trc.t.trc.evnt = event;
-
- /* Send Trace Indication to Layer manager */
- RgMiLrgTrcInd(&pst, &trc, dstMbuf);
- }
- }
- RETVOID;
-}
-
-\f
-/**
- * @brief Layer Manager Control Confirm generation handler
- * for Bind Confirm reception at TFU interface.
- * RgLiTfuBndCfm() forwards the confirmation to this
- * function. All SAP state related handling is restricted
- * to LMM modules, hence the cfm forwarding.
- *
- * @details
- *
- * Function : rgLMMBndCfm
- *
- * This API is used by the LIM module of MAC to forward
- * the Bind Confirm it receives over the TFU interface.
- *
- * @param[in] Pst *pst, Post Structure
- * @param[in] SuId suId, Service user ID
- * @param[in] U8 status, Status
- * @return S16
- * -# ROK
- **/
-#ifdef ANSI
-S16 rgLMMBndCfm
-(
-Pst *pst, /* Post Structure */
-SuId suId, /* Service user ID */
-U8 status /* Status */
-)
-#else
-S16 rgLMMBndCfm(pst,suId,status)
-Pst *pst; /* Post Structure */
-SuId suId; /* Service user ID */
-U8 status; /* Status */
-#endif
-{
- Inst inst = pst->dstInst - RG_INST_START;
- S16 ret = ROK;
- RgMngmt cntrlCfm;
- Pst cfmPst;
-
-
- UNUSED(pst);
-
- /* Check if the suId is valid */
- if(rgCb[inst].tfuSap.sapCfg.suId != suId)
- {
- RLOG0(L_ERROR, "Invalid SuId");
- return RFAILED;
- }
-
- /* check the Sap State */
- switch(rgCb[inst].tfuSap.sapSta.sapState)
- {
- case LRG_WAIT_BNDCFM:
- break;
- case LRG_BND:
- /* SAP is already bound */
- return ROK;
- default:
- return RFAILED;
- }
-
- cfmPst = rgCb[inst].rgInit.lmPst;
- cfmPst.selector = rgCb[inst].genCfg.bndCfmResp.response.selector;
- cfmPst.prior = rgCb[inst].genCfg.bndCfmResp.response.prior;
- cfmPst.route = rgCb[inst].genCfg.bndCfmResp.response.route;
- cfmPst.region = rgCb[inst].genCfg.bndCfmResp.response.mem.region;
- cfmPst.pool = rgCb[inst].genCfg.bndCfmResp.response.mem.pool;
-
- memset(&cntrlCfm, 0, sizeof(RgMngmt));
-
- switch(status)
- {
- case CM_BND_OK: /* status is OK */
- /* Change SAP state to Bound */
- rgCb[inst].tfuSap.sapSta.sapState = LRG_BND;
- if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
- {
- ret = rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
- }
- /* Send Control Confirm with status as OK to Layer Manager */
- cntrlCfm.cfm.status = LCM_PRIM_OK;
- cntrlCfm.cfm.reason = LCM_REASON_NOT_APPL;
- break;
-
- default:
- /* Change SAP state to UnBound */
- rgCb[inst].tfuSap.sapSta.sapState = LRG_UNBND;
- if (rgCb[inst].tfuSap.sapCfg.bndTmr.enb == TRUE)
- {
- ret = rgLMMStopTmr(inst,RG_BNDREQ_TMR, (PTR)&rgCb[inst].tfuSap);
- }
- /* Send Control Confirm with status as NOK to Layer Manager */
- cntrlCfm.cfm.status = LCM_PRIM_NOK;
- cntrlCfm.cfm.reason = LCM_REASON_NEG_CFM;
- break;
- }
- rgCb[inst].tfuSap.numBndRetries = 0;
- cntrlCfm.hdr.elmId.elmnt = STTFUSAP;
- cntrlCfm.hdr.transId = rgCb[inst].genCfg.bndCfmResp.transId;
-
- ret = RgMiLrgCntrlCfm(&cfmPst, &cntrlCfm);
-
- return (ret);
-}
-
-\f
-/**
- * @brief LTE MAC timer call back function registered with SSI.
- *
- * @details
- *
- * Function : rgActvTmr
- *
- * This function is invoked by SSI for every timer activation
- * period expiry.
- *
- * @return S16
- * -# ROK
- **/
-#ifdef ANSI
-S16 rgActvTmr
-(
- Ent ent,
- Inst inst
-)
-#else
-S16 rgActvTmr(ent, inst)
-Ent ent;
-Inst inst;
-#endif
-{
- Inst macInst = (inst - RG_INST_START);
-
- /* Check if any MAC timer has expired */
- cmPrcTmr(&rgCb[macInst].tmrTqCp, rgCb[macInst].tmrTq, (PFV) rgLMMTmrExpiry);
-
- return ROK;
-
-} /* end of rgActvTmr */
-
/**********************************************************************
-
- End of file
-**********************************************************************/
+
+ End of file
+ **********************************************************************/