//--------------------------------------------------------------------------- //For demo, add automatically a radio bearer //Equivalent to rb add send 0 5 2 void nasrg_ASCTL_start_default_rb(struct cx_entity *cx){ //--------------------------------------------------------------------------- #ifdef DEMO_3GSM struct rb_entity *rb; int status; // Start debug information #ifdef GRAAL_DEBUG_DC printk("nasrg_ASCTL_start_default_rb - begin \n"); #endif if (!cx){ printk("nasrg_ASCTL_start_default_rb - input parameter cx is NULL \n"); return; } // End debug information // rb=graal_COMMON_add_rb(cx, 5, 2); rb = nasrg_COMMON_add_rb(cx, NASRG_DEFAULTRAB_RBID, NASRG_DEFAULTRAB_QoS); if (rb!=NULL){ rb->cnxid = (GRAAL_RB_MAX_NUM * cx->lcr)+1; //rb->default_rab =1; rb->dscp = NASRG_DEFAULTRAB_DSCP; status=nasrg_ASCTL_DC_send_rb_establish_request(cx, rb); } else status=-GRAAL_ERROR_NOMEMORY; #ifdef GRAAL_DEBUG_DC printk("nasrg_ASCTL_start_default_rb - end %d \n",status); #endif }
/////////////////////////////////////////////////////////////////////////////// // Radio Bearer Establishment //--------------------------------------------------------------------------- void nasrg_set_msg_rb_establishment_reply(struct nas_msg_rb_establishment_reply *msgrep, struct nas_msg_rb_establishment_request *msgreq) { //--------------------------------------------------------------------------- if ((msgreq->rab_id<5)||(msgreq->rab_id>(NAS_RB_MAX_NUM-1))) msgrep->status=-NAS_ERROR_NOTCORRECTRABI; else { struct cx_entity *cx; cx=nasrg_COMMON_search_cx(msgreq->lcr); if (cx!=NULL) { //not multicast struct rb_entity *rb; rb=nasrg_COMMON_add_rb(cx, msgreq->rab_id, msgreq->qos); if (rb!=NULL) { rb->cnxid = msgreq->cnxid; rb->dscp = msgreq->dscp_dl; rb->dscp_ul = msgreq->dscp_ul; msgrep->status=nasrg_ASCTL_DC_send_rb_establish_request(cx, rb); } else { msgrep->status=-NAS_ERROR_NOMEMORY; } } else { //no MT found if (msgreq->mcast_flag) { //multicast int mbms_ix=0; // should allocate index based on Service_id /cnxid / MC IP address // gpriv->mbms_rb[mbms_ix].cnxid = msgreq->cnxid; gpriv->mbms_rb[mbms_ix].serviceId = msgreq->cnxid; gpriv->mbms_rb[mbms_ix].sessionId = NASRG_TEMP_MBMS_SESSION_ID; //Temp hard coded gpriv->mbms_rb[mbms_ix].mbms_rbId = msgreq->rab_id; gpriv->mbms_rb[mbms_ix].sapi = NAS_DC_INPUT_SAPI; #ifdef NAS_DEBUG_MBMS_PROT gpriv->mbms_rb[mbms_ix].sapi = NAS_DRB_INPUT_SAPI; //Only one RT-FIFO is used #endif gpriv->mbms_rb[mbms_ix].qos = msgreq->qos; gpriv->mbms_rb[mbms_ix].dscp = msgreq->dscp_dl; gpriv->mbms_rb[mbms_ix].duration = NASRG_TEMP_MBMS_DURATION; //Temp hard coded memcpy ((char *)&(gpriv->mbms_rb[mbms_ix].mcast_address),(char *)&(msgreq->mcast_group), 16); msgrep->status=nasrg_ASCTL_GC_send_mbms_bearer_establish_req(mbms_ix); } else { msgrep->status=-NAS_ERROR_NOTCORRECTLCR; } msgrep->cnxid = msgreq->cnxid; } } }