//--------------------------------------------------------------------------- // Function for transfer with RRC static void nasrg_rrcnl_data_ready (struct sk_buff *skb) { //--------------------------------------------------------------------------- struct nlmsghdr *nlh = NULL; char target_sap; uint8_t cxi; // Start debug information #ifdef NAS_DEBUG_RRCNL printk("nasrg_rrcnl_data_ready - begin \n"); #endif if (!skb) { printk("nasrg_rrcnl_data_ready - input parameter skb is NULL \n"); return; } // End debug information nlh = (struct nlmsghdr *)skb->data; //pdcph = (struct pdcp_data_ind_header_t *)NLMSG_DATA(nlh); //nasrg_TOOL_print_buffer((char *)NLMSG_DATA(nlh), 48); target_sap = ((char*)NLMSG_DATA(nlh))[0]; #ifdef NAS_DEBUG_RRCNL printk("nasrg_rrcnl_data_ready - Received on socket from RRC, SAP %d\n", target_sap); #endif //NAS_DEBUG_RRCNL switch (target_sap) { case RRC_NAS_DC0_OUT: //printk("nasrg_rrcnl_data_ready - Calling nasrg_ASCTL_DC_receive\n"); cxi = 0; nasrg_ASCTL_DC_receive(gpriv->cx+cxi, &((char*)NLMSG_DATA(nlh))[1]); break; case RRC_NAS_DC1_OUT: //printk("nasrg_rrcnl_data_ready - Calling nasrg_ASCTL_DC_receive\n"); cxi = 1; nasrg_ASCTL_DC_receive(gpriv->cx+cxi, &((char*)NLMSG_DATA(nlh))[1]); break; case RRC_NAS_DC2_OUT: //printk("nasrg_rrcnl_data_ready - Calling nasrg_ASCTL_DC_receive\n"); cxi = 2; nasrg_ASCTL_DC_receive(gpriv->cx+cxi, &((char*)NLMSG_DATA(nlh))[1]); break; default: printk("nasrg_rrcnl_data_ready - Invalid SAP value received\n"); } }
//--------------------------------------------------------------------------- void *nasrg_interrupt(void) { //--------------------------------------------------------------------------- uint8_t cxi; #ifdef NAS_DEBUG_INTERRUPT printk("nasrg_interrupt - begin\n"); #endif //spin_lock(&gpriv->lock); for (cxi=0; cxi<NAS_CX_MAX; ++cxi) nasrg_COMMON_QOS_receive(gpriv->cx+cxi); for (cxi=0; cxi<NAS_CX_MAX; ++cxi) nasrg_ASCTL_DC_receive(gpriv->cx+cxi); //spin_unlock(&gpriv->lock); #ifdef NAS_DEBUG_INTERRUPT printk("nasrg_interrupt: end\n"); #endif // return 0; }