/////////////////////////////////////////////////////////////////////////////// // Radio Bearer Establishment //--------------------------------------------------------------------------- void nas_set_msg_rb_establishment_reply(struct nas_msg_rb_establishment_reply *msgrep, struct nas_msg_rb_establishment_request *msgreq, struct nas_priv *priv) { //--------------------------------------------------------------------------- // if ((msgreq->rab_id<3)||(msgreq->rab_id>127)) if ((msgreq->rab_id<1)||(msgreq->rab_id>MAX_RABS)) // navid : increase the number msgrep->status=-NAS_ERROR_NOTCORRECTRABI; else { struct cx_entity *cx; cx=nas_COMMON_search_cx(msgreq->lcr,priv); if (cx==NULL) msgrep->status=-NAS_ERROR_NOTCORRECTLCR; else { struct rb_entity *rb; rb=nas_COMMON_add_rb(cx, msgreq->rab_id, msgreq->qos); if (rb!=NULL) { // rb->cnxid = msgreq->cnxid; // msgrep->status=nas_rg_DC_send_rb_establish_request(cx, rb); } else msgrep->status=-NAS_ERROR_NOMEMORY; // msgrep->cnxid = msgreq->cnxid; } } }
//--------------------------------------------------------------------------- // Decode RB_ESTABLISH_IND message from RRC void nas_mesh_DC_decode_rb_establish_ind(struct cx_entity *cx, struct nas_ue_dc_element *p,struct nas_priv *gpriv) { //--------------------------------------------------------------------------- struct rb_entity *rb; // Start debug information #ifdef NAS_DEBUG_DC printk("NAS_MESH_DC_DECODE_RB_ESTABLISH_IND - begin \n"); #endif if (cx==NULL) { #ifdef NAS_DEBUG_DC printk("NAS_MESH_DC_DECODE_RB_ESTABLISH_IND - input parameter cx is NULL \n"); #endif return; } if (p==NULL) { #ifdef NAS_DEBUG_DC printk("NAS_MESH_DC_DECODE_RB_ESTABLISH_IND - input parameter p is NULL \n"); #endif return; } // End debug information rb=nas_COMMON_search_rb(cx, p->nasUEDCPrimitive.rb_release_ind.rbId); if (rb==NULL) { rb=nas_COMMON_add_rb(cx, p->nasUEDCPrimitive.rb_establish_ind.rbId, p->nasUEDCPrimitive.rb_establish_ind.QoSclass); rb->state=NAS_RB_DCH; cx->state=NAS_CX_DCH; //For demo, add automatically a classifier #ifdef DEMO_3GSM rb->countimer=gpriv->timer_establishment+10; #endif #ifdef NAS_DEBUG_DC printk("NAS_MESH_DC_DECODE_RB_ESTABLISH_IND: RB_ESTABLISH_IND reception\n"); printk(" Local Connection reference %u\n",p->nasUEDCPrimitive.rb_establish_ind.localConnectionRef); printk(" Radio Bearer Identity %u \n",p->nasUEDCPrimitive.rb_establish_ind.rbId); printk(" QoS Traffic Class %u\n",p->nasUEDCPrimitive.rb_establish_ind.QoSclass); printk(" DSCP Code %u\n",p->nasUEDCPrimitive.rb_establish_ind.dscp); printk(" SAP Id %u\n",p->nasUEDCPrimitive.rb_establish_ind.sapId); print_TOOL_state(cx->state); nas_print_rb_entity(rb); #endif } else printk("NAS_MESH_DC_DECODE_RB_ESTABLISH_IND: RB_ESTABLISH_IND reception, Radio bearer already opened\n"); }