branch LG_PRE_RELEASE_0.3 reintegration
git-svn-id: http://svn.eurecom.fr/openair4G/trunk@7117 818b1a75-f10b-46b9-bf7c-635c3b92a50f
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# NAS CELLULAR Driver makefile
|
||||
#
|
||||
include $(OPENAIR_HOME)/common/utils/Makefile.inc
|
||||
include $(OPENAIR_DIR)/common/utils/Makefile.inc
|
||||
NAS_UPDIR := $(shell /bin/pwd)
|
||||
|
||||
####################################################
|
||||
@@ -21,8 +21,8 @@ EXTRA_CFLAGS += -DNAS_DRIVER_TYPE_ETHERNET
|
||||
endif
|
||||
|
||||
|
||||
ifdef NAS_NETLINK
|
||||
EXTRA_CFLAGS += -DNAS_NETLINK
|
||||
ifdef PDCP_USE_NETLINK
|
||||
EXTRA_CFLAGS += -DPDCP_USE_NETLINK
|
||||
else
|
||||
EXTRA_CFLAGS += $(shell rtai-config --module-cflags) -DRTAI -D__IN_RTAI__ -Wall
|
||||
endif
|
||||
@@ -52,7 +52,7 @@ nascellmt-objs += nasmt_iocontrol.o
|
||||
nascellmt-objs += nasmt_classifier.o
|
||||
nascellmt-objs += nasmt_tool.o
|
||||
nascellmt-objs += nasmt_ascontrol.o
|
||||
ifdef NAS_NETLINK
|
||||
ifdef PDCP_USE_NETLINK
|
||||
nascellmt-objs += nasmt_netlink.o
|
||||
endif
|
||||
|
||||
@@ -61,7 +61,7 @@ endif
|
||||
####################################################
|
||||
|
||||
#netlink.ko:
|
||||
#make $(x)$(y) NAS_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
#make $(x)$(y) PDCP_USE_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
#nasmesh.ko:
|
||||
# make V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
@@ -59,7 +59,7 @@ int nasmt_ASCTL_write(int sap, unsigned char *data_buffer, unsigned int data_len
|
||||
{
|
||||
//---------------------------------------------------------------------------
|
||||
int bytes_wrote = 0;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
unsigned char xmit_buffer [NAS_MESSAGE_MAXLEN];
|
||||
//MT xmit on DC-SAP only
|
||||
xmit_buffer[0] = RRC_NAS_DC0_IN;
|
||||
@@ -68,7 +68,7 @@ int nasmt_ASCTL_write(int sap, unsigned char *data_buffer, unsigned int data_len
|
||||
#else
|
||||
//bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length); //original version
|
||||
bytes_wrote = rtf_put(sap, data_buffer, data_length);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
return bytes_wrote;
|
||||
}
|
||||
|
||||
@@ -443,7 +443,7 @@ void nasmt_ASCTL_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity
|
||||
struct nas_ue_dc_element *p;
|
||||
char data_type = 'A';
|
||||
int bytes_wrote = 0;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
unsigned char xbuffer[NAS_MESSAGE_MAXLEN];
|
||||
int count=0;
|
||||
#endif
|
||||
@@ -472,7 +472,7 @@ void nasmt_ASCTL_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity
|
||||
p->nasUEDCPrimitive.data_transfer_req.nasDataLength = (skb->len)+1; //adds category character
|
||||
|
||||
//bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length); //original version
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(xbuffer,(unsigned char *)p, p->length);
|
||||
count = p->length;
|
||||
bytes_wrote = count;
|
||||
@@ -486,7 +486,7 @@ void nasmt_ASCTL_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),(unsigned char *)&data_type, 1);
|
||||
count += 1;
|
||||
bytes_wrote = count;
|
||||
@@ -494,7 +494,7 @@ void nasmt_ASCTL_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity
|
||||
bytes_wrote += nasmt_ASCTL_write(cx->sap[NAS_DC_INPUT_SAPI], (unsigned char *)&data_type, 1);
|
||||
#endif
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),(unsigned char *)skb->data, skb->len);
|
||||
count += skb->len;
|
||||
bytes_wrote = nasmt_ASCTL_write(cx->sap[NAS_DC_INPUT_SAPI], xbuffer, count);
|
||||
@@ -524,7 +524,7 @@ void nasmt_ASCTL_DC_send_peer_sig_data_request(struct cx_entity *cx, uint8_t sig
|
||||
unsigned int nasmt_length;
|
||||
char data_type = 'Z';
|
||||
int bytes_wrote = 0;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
unsigned char xbuffer[NAS_MESSAGE_MAXLEN];
|
||||
int count=0;
|
||||
#endif
|
||||
@@ -559,7 +559,7 @@ void nasmt_ASCTL_DC_send_peer_sig_data_request(struct cx_entity *cx, uint8_t sig
|
||||
p->nasUEDCPrimitive.data_transfer_req.nasDataLength = (nasmt_length)+1; //adds category character
|
||||
|
||||
//bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length); //original version
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(xbuffer,(unsigned char *)p, p->length);
|
||||
count = p->length;
|
||||
bytes_wrote = count;
|
||||
@@ -573,14 +573,14 @@ void nasmt_ASCTL_DC_send_peer_sig_data_request(struct cx_entity *cx, uint8_t sig
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),(unsigned char *)&data_type, 1);
|
||||
count += 1;
|
||||
#else
|
||||
bytes_wrote += nasmt_ASCTL_write(cx->sap[NAS_DC_INPUT_SAPI], (unsigned char *)&data_type, 1);
|
||||
#endif
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),(unsigned char *)nasmt_data, nasmt_length);
|
||||
count += nasmt_length;
|
||||
bytes_wrote = nasmt_ASCTL_write(cx->sap[NAS_DC_INPUT_SAPI], xbuffer, count);
|
||||
@@ -720,7 +720,7 @@ void nasmt_ASCTL_DC_decode_sig_data_ind(struct cx_entity *cx, struct nas_ue_dc_e
|
||||
#endif
|
||||
|
||||
//nasmt_COMMON_receive(p->length, p->nasUEDCPrimitive.data_transfer_ind.nasDataLength, cx->sap[GRAAL_DC_OUTPUT_SAPI]); // original
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//void nasmt_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *data_buffer, int rb_id, int sap);
|
||||
// data_buffer is NULL because FIFO should be read directly in the skbuff (LITE has an intermediary buffer)
|
||||
nasmt_COMMON_receive(p->length, p->nasUEDCPrimitive.data_transfer_ind.nasDataLength, NULL, 2, cx->sap[NAS_DC_OUTPUT_SAPI]);
|
||||
@@ -945,7 +945,7 @@ int nasmt_ASCTL_DC_receive(struct cx_entity *cx, char *buffer)
|
||||
|
||||
// End debug information
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read = rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI] , gpriv->rbuffer, NAS_TL_SIZE);
|
||||
#else
|
||||
bytes_read = NAS_TL_SIZE;
|
||||
@@ -955,7 +955,7 @@ int nasmt_ASCTL_DC_receive(struct cx_entity *cx, char *buffer)
|
||||
if (bytes_read>0) {
|
||||
struct nas_ue_dc_element *p;
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
p= (struct nas_ue_dc_element *)(gpriv->rbuffer);
|
||||
//get the rest of the primitive
|
||||
bytes_read += rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI], (uint8_t *)p+NAS_TL_SIZE, p->length-NAS_TL_SIZE);
|
||||
@@ -1105,7 +1105,7 @@ int nasmt_ASCTL_GC_receive(char *buffer)
|
||||
#endif
|
||||
// End debug information
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read = rtf_get(gpriv->sap[NAS_GC_SAPI], gpriv->rbuffer, NAS_TL_SIZE);
|
||||
#else
|
||||
bytes_read = NAS_TL_SIZE;
|
||||
@@ -1114,7 +1114,7 @@ int nasmt_ASCTL_GC_receive(char *buffer)
|
||||
//
|
||||
if (bytes_read>0) {
|
||||
struct nas_ue_gc_element *p;
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
p= (struct nas_ue_gc_element *)(gpriv->rbuffer);
|
||||
//get the rest of the primitive
|
||||
bytes_read += rtf_get(gpriv->sap[NAS_GC_SAPI], (uint8_t *)p+NAS_TL_SIZE, p->length-NAS_TL_SIZE);
|
||||
@@ -1132,7 +1132,7 @@ int nasmt_ASCTL_GC_receive(char *buffer)
|
||||
// start decoding message
|
||||
switch (p->type) {
|
||||
case INFO_BROADCAST_IND :
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read += rtf_get(gpriv->sap[NAS_GC_SAPI], (uint8_t *)p+p->length, p->nasUEGCPrimitive.broadcast_ind.nasDataLength);
|
||||
|
||||
if (bytes_read!=p->length+p->nasUEGCPrimitive.broadcast_ind.nasDataLength) {
|
||||
|
||||
@@ -57,7 +57,7 @@ void nasmt_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *da
|
||||
#ifdef NAS_DEBUG_RECEIVE
|
||||
printk("nasmt_COMMON_receive: begin\n");
|
||||
#endif
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
|
||||
// data_buffer is NULL if FIFOs
|
||||
if (!data_buffer) {
|
||||
@@ -77,7 +77,7 @@ void nasmt_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *da
|
||||
|
||||
skb_reserve(skb,2);
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read += rtf_get(sap, skb_put(skb, payload_length), payload_length);
|
||||
|
||||
if (bytes_read != NAS_PDCPH_SIZE + payload_length) {
|
||||
@@ -247,14 +247,14 @@ void nasmt_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct cla
|
||||
pdcph.rb_id = ((gc->rb)->rab_id+(32*cx->lcr))-NAS_SIG_NUM_SRB;
|
||||
pdcph.inst = 0;
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote = nasmt_netlink_send((unsigned char *)&pdcph,NAS_PDCPH_SIZE, NASNL_DEST_PDCP);
|
||||
//printk("nasmt_COMMON_QOS_send - Wrote %d bytes (header for %d byte skb) to PDCP via netlink\n", bytes_wrote,skb->len);
|
||||
#else
|
||||
//bytes_wrote = rtf_put(gpriv->sap[(gc->rb)->sapi], &pdcph, NAS_PDCPH_SIZE);
|
||||
bytes_wrote = rtf_put(NAS2PDCP_FIFO, &pdcph, NAS_PDCPH_SIZE);
|
||||
//printk("nasmt_COMMON_QOS_send - Wrote %d bytes (header for %d byte skb) to PDCP fifo\n", bytes_wrote,skb->len);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != NAS_PDCPH_SIZE) {
|
||||
printk("nasmt_COMMON_QOS_send: problem while writing PDCP's header\n");
|
||||
@@ -263,12 +263,12 @@ void nasmt_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct cla
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote += nasmt_netlink_send((unsigned char *)skb->data,skb->len, NASNL_DEST_PDCP);
|
||||
#else
|
||||
//bytes_wrote += rtf_put(gpriv->sap[(gc->rb)->sapi], skb->data, skb->len);
|
||||
bytes_wrote += rtf_put(NAS2PDCP_FIFO, skb->data, skb->len);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != skb->len + NAS_PDCPH_SIZE) {
|
||||
printk("nasmt_COMMON_QOS_send: problem while writing PDCP's data\n"); // congestion
|
||||
@@ -287,7 +287,7 @@ void nasmt_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct cla
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//---------------------------------------------------------------------------
|
||||
void nasmt_COMMON_QOS_receive(struct cx_entity *cx)
|
||||
{
|
||||
@@ -361,7 +361,7 @@ void nasmt_COMMON_QOS_receive(struct nlmsghdr *nlh)
|
||||
nasmt_COMMON_receive(NAS_PDCPH_SIZE + pdcph->data_size, pdcph->data_size, (unsigned char *)NLMSG_DATA(nlh) + NAS_PDCPH_SIZE, pdcph->rb_id, 0);
|
||||
|
||||
}
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
@@ -203,7 +203,7 @@
|
||||
/**********************************************************/
|
||||
/* Constants related with Netlink sockets */
|
||||
/**********************************************************/
|
||||
#define NAS_NETLINK_ID 31
|
||||
#define OAI_IP_DRIVER_NETLINK_ID 31
|
||||
#define NL_DEST_PID 1
|
||||
|
||||
// defined in rrc_nas_sap.h
|
||||
|
||||
@@ -35,12 +35,12 @@
|
||||
* \email: michelle.wetterwald@eurecom.fr, raymond.knopp@eurecom.fr, navid.nikaein@eurecom.fr, lionel.gauthier@eurecom.fr
|
||||
*/
|
||||
/*******************************************************************************/
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
#ifdef RTAI
|
||||
#include "rtai_posix.h"
|
||||
#define RTAI_IRQ 30 //try to get this irq with RTAI
|
||||
#endif // RTAI
|
||||
#endif // NAS_NETLINK
|
||||
#endif // PDCP_USE_NETLINK
|
||||
//:::::::::::::::::::::::::::::::::::::::;;
|
||||
#include "nasmt_variables.h"
|
||||
#include "nasmt_proto.h"
|
||||
@@ -81,14 +81,14 @@ static unsigned char nas_IMEI[14];
|
||||
static int m_arg=0;
|
||||
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
extern void nasmt_netlink_release(void);
|
||||
extern int nasmt_netlink_init(void);
|
||||
#endif
|
||||
extern void nasmt_ASCTL_timer(unsigned long data);
|
||||
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//---------------------------------------------------------------------------
|
||||
//void nasmt_interrupt(void){
|
||||
void *nasmt_interrupt(void)
|
||||
@@ -121,7 +121,7 @@ int nasmt_open(struct net_device *dev)
|
||||
gpriv=netdev_priv(dev);
|
||||
|
||||
// Address has already been set at init
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
if (gpriv->irq==-EBUSY) {
|
||||
printk("nasmt_open: irq failure\n");
|
||||
@@ -169,26 +169,26 @@ void nasmt_teardown(struct net_device *dev)
|
||||
{
|
||||
//---------------------------------------------------------------------------
|
||||
int cxi;
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
struct nas_priv *priv = netdev_priv(dev);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
printk("nasmt_teardown: begin\n");
|
||||
// priv=(struct nas_priv *)(gdev.priv);
|
||||
|
||||
if (dev) {
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
if (priv->irq!=-EBUSY) {
|
||||
*pt_nas_ue_irq=-1;
|
||||
rt_free_srq(priv->irq);
|
||||
}
|
||||
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
nasmt_netlink_release();
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
// for (sapi=0; sapi<NAS_SAPI_MAX; ++sapi)
|
||||
// close(priv->sap[sapi]);
|
||||
nasmt_CLASS_flush_rclassifier();
|
||||
@@ -395,7 +395,7 @@ void nasmt_init(struct net_device *dev)
|
||||
|
||||
//gpriv->sap[NAS_CO_INPUT_SAPI] = QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
//gpriv->sap[NAS_CO_OUTPUT_SAPI] = QOS_DEVICE_CONVERSATIONAL_OUTPUT;
|
||||
gpriv->sap[NAS_DRB_INPUT_SAPI] = PDCP2NAS_FIFO;//QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
gpriv->sap[NAS_DRB_INPUT_SAPI] = PDCP2PDCP_USE_RT_FIFO;//QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
gpriv->sap[NAS_DRB_OUTPUT_SAPI] = NAS2PDCP_FIFO;//QOS_DEVICE_STREAMING_INPUT;
|
||||
|
||||
gpriv->retry_limit = NAS_RETRY_LIMIT_DEFAULT;
|
||||
@@ -469,7 +469,7 @@ int init_module (void)
|
||||
printk("\n");
|
||||
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
// Initialize parameters shared with RRC (done first to avoid going further)
|
||||
if (pt_nas_ue_irq==NULL) {
|
||||
@@ -491,7 +491,7 @@ int init_module (void)
|
||||
#endif
|
||||
priv = netdev_priv(gdev);
|
||||
////
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
priv->irq=rt_request_srq(0, nasmt_interrupt, NULL);
|
||||
|
||||
if (priv->irq == -EBUSY || priv->irq == -EINVAL) {
|
||||
@@ -514,7 +514,7 @@ int init_module (void)
|
||||
|
||||
#endif
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
|
||||
if ((err=nasmt_netlink_init()) == -1)
|
||||
printk("init_module: NETLINK failed\n");
|
||||
|
||||
@@ -133,7 +133,7 @@ int nasmt_netlink_init(void)
|
||||
//---------------------------------------------------------------------------
|
||||
printk("nasmt_netlink_init - begin \n");
|
||||
|
||||
nas_nl_sk = netlink_kernel_create(&init_net,NAS_NETLINK_ID, 0, nasmt_nl_data_ready,
|
||||
nas_nl_sk = netlink_kernel_create(&init_net,OAI_IP_DRIVER_NETLINK_ID, 0, nasmt_nl_data_ready,
|
||||
&nasmt_mutex, // NULL
|
||||
THIS_MODULE);
|
||||
|
||||
|
||||
@@ -71,7 +71,7 @@ void nasmt_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *da
|
||||
|
||||
void nasmt_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc);
|
||||
void nasmt_COMMON_del_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc);
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
void nasmt_COMMON_QOS_receive(struct cx_entity *cx);
|
||||
#else
|
||||
void nasmt_COMMON_QOS_receive(struct nlmsghdr *nlh);
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
//#define QOS_DEVICE_CONVERSATIONAL_INPUT QOS_SAPI_CONVERSATIONAL_INPUT_MT
|
||||
//#define QOS_DEVICE_CONVERSATIONAL_OUTPUT QOS_SAPI_CONVERSATIONAL_OUTPUT_MT
|
||||
|
||||
#define PDCP2NAS_FIFO 21
|
||||
#define PDCP2PDCP_USE_RT_FIFO 21
|
||||
#define NAS2PDCP_FIFO 22
|
||||
|
||||
//FIFO indexes in control blocks
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# NAS CELLULAR Driver makefile
|
||||
#
|
||||
include $(OPENAIR_HOME)/common/utils/Makefile.inc
|
||||
include $(OPENAIR_DIR)/common/utils/Makefile.inc
|
||||
|
||||
NAS_UPDIR := $(shell /bin/pwd)
|
||||
|
||||
@@ -22,8 +22,8 @@ EXTRA_CFLAGS += -DNAS_DRIVER_TYPE_ETHERNET
|
||||
endif
|
||||
|
||||
|
||||
ifdef NAS_NETLINK
|
||||
EXTRA_CFLAGS += -DNAS_NETLINK
|
||||
ifdef PDCP_USE_NETLINK
|
||||
EXTRA_CFLAGS += -DPDCP_USE_NETLINK
|
||||
else
|
||||
EXTRA_CFLAGS += $(shell rtai-config --module-cflags) -DRTAI -D__IN_RTAI__ -Wall
|
||||
endif
|
||||
@@ -53,7 +53,7 @@ nascellrg-objs += nasrg_iocontrol.o
|
||||
nascellrg-objs += nasrg_classifier.o
|
||||
nascellrg-objs += nasrg_tool.o
|
||||
nascellrg-objs += nasrg_ascontrol.o
|
||||
ifdef NAS_NETLINK
|
||||
ifdef PDCP_USE_NETLINK
|
||||
nascellrg-objs += nasrg_netlink.o
|
||||
endif
|
||||
|
||||
@@ -62,7 +62,7 @@ endif
|
||||
####################################################
|
||||
|
||||
#netlink.ko:
|
||||
#make $(x)$(y) NAS_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
#make $(x)$(y) PDCP_USE_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
#nasmesh.ko:
|
||||
# make V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
@@ -64,7 +64,7 @@ int nasrg_ASCTL_write(int sap, unsigned char *data_buffer, unsigned int data_len
|
||||
{
|
||||
//---------------------------------------------------------------------------
|
||||
int bytes_wrote = 0;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
unsigned char xmit_buffer [NAS_MESSAGE_MAXLEN];
|
||||
|
||||
//write SAP_Id
|
||||
@@ -102,7 +102,7 @@ int nasrg_ASCTL_write(int sap, unsigned char *data_buffer, unsigned int data_len
|
||||
#else
|
||||
//bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length); //original version
|
||||
bytes_wrote = rtf_put(sap, data_buffer, data_length+1);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
return bytes_wrote-1;
|
||||
}
|
||||
|
||||
@@ -410,7 +410,7 @@ int nasrg_ASCTL_GC_send_broadcast_request(uint8_t category)
|
||||
//---------------------------------------------------------------------------
|
||||
char *xmit_data = "TESTING BROADCASTING ROUTER ADVERTISEMENT. TESTING BROADCASTING ROUTER ADVERTISEMENT. BROADCASTING ROUTER.\0";
|
||||
int bytes_wrote = 0;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
unsigned char xbuffer[NAS_MESSAGE_MAXLEN];
|
||||
int count=0;
|
||||
#endif
|
||||
@@ -425,7 +425,7 @@ int nasrg_ASCTL_GC_send_broadcast_request(uint8_t category)
|
||||
p->nasRGGCPrimitive.broadcast_req.nasDataLength = strlen(xmit_data)+1; // TBD
|
||||
|
||||
//bytes_wrote = rtf_put(gpriv->sap[NAS_GC_SAPI], p, p->length); //original version
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(xbuffer,(unsigned char *)p, p->length);
|
||||
count = p->length;
|
||||
bytes_wrote = count;
|
||||
@@ -435,7 +435,7 @@ int nasrg_ASCTL_GC_send_broadcast_request(uint8_t category)
|
||||
//printk("nasrg_ASCTL_GC_send_broadcast_request - Wrote %d bytes to RRC NAS_GC_SAPII\n", bytes_wrote);
|
||||
|
||||
//bytes_wrote += rtf_put(gpriv->sap[NAS_GC_SAPI], xmit_data, p->nasRGGCPrimitive.broadcast_req.nasDataLength);
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),(unsigned char *)xmit_data, p->nasRGGCPrimitive.broadcast_req.nasDataLength);
|
||||
count += p->nasRGGCPrimitive.broadcast_req.nasDataLength;
|
||||
bytes_wrote += nasrg_ASCTL_write(gpriv->sap[NAS_GC_SAPI], xbuffer, count);
|
||||
@@ -462,7 +462,7 @@ int nasrg_ASCTL_GC_send_SIB1_broadcast_request(struct sk_buff *skb)
|
||||
struct nas_rg_gc_element *p;
|
||||
char sib1_flag; // will be used for reception in nas_ue
|
||||
int bytes_wrote = 0;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
unsigned char xbuffer[NAS_MESSAGE_MAXLEN];
|
||||
int count=0;
|
||||
#endif
|
||||
@@ -488,7 +488,7 @@ int nasrg_ASCTL_GC_send_SIB1_broadcast_request(struct sk_buff *skb)
|
||||
sib1_flag = 1;
|
||||
// send header
|
||||
//bytes_wrote = rtf_put(gpriv->sap[NAS_GC_SAPI], p, p->length); //original version
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(xbuffer,(unsigned char *)p, p->length);
|
||||
count = p->length;
|
||||
bytes_wrote = count;
|
||||
@@ -505,7 +505,7 @@ int nasrg_ASCTL_GC_send_SIB1_broadcast_request(struct sk_buff *skb)
|
||||
|
||||
// send sib1_flag
|
||||
//bytes_wrote += rtf_put(gpriv->sap[NAS_GC_SAPI], &sib1_flag, 1);
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),(unsigned char *)&sib1_flag, 1);
|
||||
count += 1;
|
||||
bytes_wrote = count;
|
||||
@@ -520,7 +520,7 @@ int nasrg_ASCTL_GC_send_SIB1_broadcast_request(struct sk_buff *skb)
|
||||
|
||||
// send data
|
||||
//bytes_wrote += rtf_put(gpriv->sap[NAS_GC_SAPI], skb->data, skb->len);
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),skb->data, skb->len);
|
||||
count += skb->len;
|
||||
bytes_wrote = nasrg_ASCTL_write(gpriv->sap[NAS_GC_SAPI], xbuffer, count);
|
||||
@@ -827,7 +827,7 @@ void nasrg_ASCTL_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity
|
||||
//---------------------------------------------------------------------------
|
||||
struct nas_rg_dc_element *p;
|
||||
int bytes_wrote = 0;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
unsigned char xbuffer[NAS_MESSAGE_MAXLEN];
|
||||
int count=0;
|
||||
#endif
|
||||
@@ -857,7 +857,7 @@ void nasrg_ASCTL_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity
|
||||
p->nasRGDCPrimitive.data_transfer_req.nasDataLength = skb->len;
|
||||
//
|
||||
//bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(xbuffer,(unsigned char *)p, p->length);
|
||||
count = p->length;
|
||||
bytes_wrote = count;
|
||||
@@ -871,7 +871,7 @@ void nasrg_ASCTL_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity
|
||||
}
|
||||
|
||||
//bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], skb->data, skb->len);
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
memcpy(&(xbuffer[count]),(unsigned char *)skb->data, skb->len);
|
||||
count += skb->len;
|
||||
bytes_wrote = nasrg_ASCTL_write(cx->sap[NAS_DC_INPUT_SAPI], xbuffer, count);
|
||||
@@ -1110,7 +1110,7 @@ void nasrg_ASCTL_DC_decode_data_transfer_ind(struct cx_entity *cx, struct nas_rg
|
||||
bytes_read=p->length;
|
||||
// Get first character
|
||||
nas_length = (p->nasRGDCPrimitive.data_transfer_ind.nasDataLength) -1;
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read += rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI], &data_type, 1);
|
||||
#else
|
||||
memcpy (&data_type, (char *)(&buffer[bytes_read]), 1);
|
||||
@@ -1121,7 +1121,7 @@ void nasrg_ASCTL_DC_decode_data_transfer_ind(struct cx_entity *cx, struct nas_rg
|
||||
if (data_type =='A') {
|
||||
// receive in a skbuff
|
||||
//nasrg_COMMON_receive((p->length) + 1, nas_length, cx->sap[NAS_DC_OUTPUT_SAPI]); // original
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//void nasrg_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *data_buffer, int rb_id, int sap);
|
||||
// data_buffer is NULL because FIFO should be read directly in the skbuff (LITE has an intermediary buffer)
|
||||
nasrg_COMMON_receive((p->length) + 1, nas_length, NULL, 2, cx->sap[NAS_DC_OUTPUT_SAPI]);
|
||||
@@ -1131,12 +1131,12 @@ void nasrg_ASCTL_DC_decode_data_transfer_ind(struct cx_entity *cx, struct nas_rg
|
||||
#endif
|
||||
} else {
|
||||
// if FIFO, empty remaining data
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read += rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI], (gpriv->rbuffer)+ (p->length), nas_length);
|
||||
#endif
|
||||
|
||||
if (data_type=='Z') {
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
memcpy (&nasrg_data, (char *)(gpriv->rbuffer)+ (p->length), 10);
|
||||
#else
|
||||
memcpy (&nasrg_data, (char *)(&buffer[bytes_read]), 10);
|
||||
@@ -1350,7 +1350,7 @@ int nasrg_ASCTL_DC_receive(struct cx_entity *cx, char *buffer)
|
||||
|
||||
// End debug information
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read = rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI] , gpriv->rbuffer, NAS_TL_SIZE);
|
||||
#else
|
||||
bytes_read = NAS_TL_SIZE;
|
||||
@@ -1358,7 +1358,7 @@ int nasrg_ASCTL_DC_receive(struct cx_entity *cx, char *buffer)
|
||||
|
||||
if (bytes_read>0) {
|
||||
struct nas_rg_dc_element *p;
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
p= (struct nas_rg_dc_element *)(gpriv->rbuffer);
|
||||
//get the rest of the primitive
|
||||
bytes_read += rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI], (uint8_t *)p+NAS_TL_SIZE, p->length-NAS_TL_SIZE);
|
||||
|
||||
@@ -56,7 +56,7 @@ void nasrg_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *da
|
||||
#ifdef NAS_DEBUG_RECEIVE
|
||||
printk("nasrg_COMMON_receive: begin\n");
|
||||
#endif
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
|
||||
// data_buffer is NULL if FIFOs
|
||||
if (!data_buffer) {
|
||||
@@ -76,7 +76,7 @@ void nasrg_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *da
|
||||
|
||||
skb_reserve(skb,2);
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
bytes_read += rtf_get(sap, skb_put(skb, payload_length), payload_length);
|
||||
|
||||
if (bytes_read != NAS_PDCPH_SIZE + payload_length) {
|
||||
@@ -244,7 +244,7 @@ void nasrg_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct cla
|
||||
pdcph.rb_id = ((gc->rb)->rab_id)-NAS_SIG_NUM_SRB;
|
||||
pdcph.inst = 0;
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote = nasrg_netlink_send((unsigned char *)&pdcph,NAS_PDCPH_SIZE, NASNL_DEST_PDCP);
|
||||
#ifdef NAS_DEBUG_SEND_DETAIL
|
||||
printk("nasrg_COMMON_QOS_send - Wrote %d bytes (header for %d byte skb) to PDCP via netlink\n", bytes_wrote,skb->len);
|
||||
@@ -255,7 +255,7 @@ void nasrg_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct cla
|
||||
#ifdef NAS_DEBUG_SEND_DETAIL
|
||||
printk("nasrg_COMMON_QOS_send - Wrote %d bytes (header for %d byte skb) to PDCP fifo\n", bytes_wrote,skb->len);
|
||||
#endif
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != NAS_PDCPH_SIZE) {
|
||||
printk("nasrg_COMMON_QOS_send: problem while writing PDCP's header\n");
|
||||
@@ -269,12 +269,12 @@ void nasrg_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct cla
|
||||
printk("Header bytes written : %d\n", bytes_wrote);
|
||||
#endif
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote += nasrg_netlink_send((unsigned char *)skb->data,skb->len, NASNL_DEST_PDCP);
|
||||
#else
|
||||
//bytes_wrote += rtf_put(gpriv->sap[(gc->rb)->sapi], skb->data, skb->len);
|
||||
bytes_wrote += rtf_put(NAS2PDCP_FIFO, skb->data, skb->len);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != skb->len+NAS_PDCPH_SIZE) {
|
||||
printk("nasrg_COMMON_QOS_send: problem while writing PDCP's data\n"); // congestion
|
||||
@@ -330,14 +330,14 @@ void nasrg_COMMON_QOS_send_test_netlink(struct sk_buff *skb)
|
||||
pdcph.rb_id = 6;
|
||||
pdcph.inst = 0;
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote = nasrg_netlink_send((unsigned char *)&pdcph,NAS_PDCPH_SIZE, NASNL_DEST_PDCP);
|
||||
//printk("nasrg_COMMON_QOS_send - Wrote %d bytes (header for %d byte skb) to PDCP via netlink\n", bytes_wrote,skb->len);
|
||||
#else
|
||||
//bytes_wrote = rtf_put(gpriv->sap[(gc->rb)->sapi], &pdcph, NAS_PDCPH_SIZE);
|
||||
bytes_wrote = rtf_put(NAS2PDCP_FIFO, &pdcph, NAS_PDCPH_SIZE);
|
||||
//printk("nasrg_COMMON_QOS_send - Wrote %d bytes (header for %d byte skb) to PDCP fifo\n", bytes_wrote,skb->len);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != NAS_PDCPH_SIZE) {
|
||||
printk("nasrg_COMMON_QOS_send: problem while writing PDCP's header\n");
|
||||
@@ -351,12 +351,12 @@ void nasrg_COMMON_QOS_send_test_netlink(struct sk_buff *skb)
|
||||
printk("Header bytes wrote : %d\n", bytes_wrote);
|
||||
#endif
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote += nasrg_netlink_send((unsigned char *)skb->data,skb->len, NASNL_DEST_PDCP);
|
||||
#else
|
||||
//bytes_wrote += rtf_put(gpriv->sap[(gc->rb)->sapi], skb->data, skb->len);
|
||||
bytes_wrote += rtf_put(NAS2PDCP_FIFO, skb->data, skb->len);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != skb->len+NAS_PDCPH_SIZE) {
|
||||
printk("nasrg_COMMON_QOS_send: problem while writing PDCP's data\n"); // congestion
|
||||
@@ -376,7 +376,7 @@ void nasrg_COMMON_QOS_send_test_netlink(struct sk_buff *skb)
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//---------------------------------------------------------------------------
|
||||
void nasrg_COMMON_QOS_receive(struct cx_entity *cx)
|
||||
{
|
||||
@@ -445,7 +445,7 @@ void nasrg_COMMON_QOS_receive(struct nlmsghdr *nlh)
|
||||
//void nasrg_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *data_buffer, int rb_id, int sap);
|
||||
nasrg_COMMON_receive(NAS_PDCPH_SIZE + pdcph->data_size, pdcph->data_size, (unsigned char *)NLMSG_DATA(nlh) + NAS_PDCPH_SIZE, pdcph->rb_id, 0);
|
||||
}
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
struct cx_entity *nasrg_COMMON_search_cx(nasLocalConnectionRef_t lcr)
|
||||
|
||||
@@ -214,7 +214,7 @@
|
||||
/**********************************************************/
|
||||
/* Constants related with Netlink sockets */
|
||||
/**********************************************************/
|
||||
#define NAS_NETLINK_ID 31
|
||||
#define OAI_IP_DRIVER_NETLINK_ID 31
|
||||
#define NL_DEST_PID 1
|
||||
|
||||
// defined in rrc_nas_sap.h
|
||||
|
||||
@@ -35,12 +35,12 @@
|
||||
* \email: michelle.wetterwald@eurecom.fr, raymond.knopp@eurecom.fr, navid.nikaein@eurecom.fr, lionel.gauthier@eurecom.fr
|
||||
*/
|
||||
/*******************************************************************************/
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
#ifdef RTAI
|
||||
#include "rtai_posix.h"
|
||||
#define RTAI_IRQ 30 //try to get this irq with RTAI
|
||||
#endif // RTAI
|
||||
#endif // NAS_NETLINK
|
||||
#endif // PDCP_USE_NETLINK
|
||||
//:::::::::::::::::::::::::::::::::::::::;;
|
||||
#include "nasrg_variables.h"
|
||||
#include "nasrg_proto.h"
|
||||
@@ -75,13 +75,13 @@ uint8_t NAS_NULL_IMEI[14]= {0x00, 0x00, 0x00, 0x00, 0x00 ,0x00, 0x00, 0x00, 0x00
|
||||
|
||||
uint16_t local_rg_cell_id;
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
extern void nasrg_netlink_release(void);
|
||||
extern int nasrg_netlink_init(void);
|
||||
#endif
|
||||
extern void nasrg_ASCTL_timer(unsigned long data);
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//---------------------------------------------------------------------------
|
||||
void *nasrg_interrupt(void)
|
||||
{
|
||||
@@ -116,7 +116,7 @@ int nasrg_open(struct net_device *dev)
|
||||
gpriv=netdev_priv(dev);
|
||||
|
||||
// Address has already been set at init
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
if (gpriv->irq==-EBUSY) {
|
||||
printk("nasrg_open: irq failure\n");
|
||||
@@ -160,25 +160,25 @@ void nasrg_teardown(struct net_device *dev)
|
||||
{
|
||||
//---------------------------------------------------------------------------
|
||||
int cxi;
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
struct nas_priv *priv = netdev_priv(dev);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
printk("nasrg_teardown: begin\n");
|
||||
|
||||
if (dev) {
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
if (priv->irq!=-EBUSY) {
|
||||
*pt_nas_rg_irq=-1;
|
||||
rt_free_srq(priv->irq);
|
||||
}
|
||||
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
nasrg_netlink_release();
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
// for (sapi=0; sapi<NAS_SAPI_MAX; ++sapi)
|
||||
// close(priv->sap[sapi]);
|
||||
@@ -385,7 +385,7 @@ void nasrg_init(struct net_device *dev)
|
||||
gpriv->cx[1].sap[NAS_DC_OUTPUT_SAPI] = RRC_DEVICE_DC_OUTPUT1;
|
||||
// gpriv->sap[NAS_CO_INPUT_SAPI] = QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
// gpriv->sap[NAS_CO_OUTPUT_SAPI] = QOS_DEVICE_CONVERSATIONAL_OUTPUT;
|
||||
gpriv->sap[NAS_DRB_INPUT_SAPI] = PDCP2NAS_FIFO;//QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
gpriv->sap[NAS_DRB_INPUT_SAPI] = PDCP2PDCP_USE_RT_FIFO;//QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
gpriv->sap[NAS_DRB_OUTPUT_SAPI] = NAS2PDCP_FIFO;//QOS_DEVICE_STREAMING_INPUT;
|
||||
//
|
||||
gpriv->retry_limit=NAS_RETRY_LIMIT_DEFAULT;
|
||||
@@ -444,7 +444,7 @@ int init_module (void)
|
||||
printk("\n\n\n\nnasrg_init_module: begin \n");
|
||||
|
||||
// Initialize parameters shared with RRC
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
if (pt_nas_rg_irq==NULL) {
|
||||
printk("nasrg_init_module: shared irq parameter not initialised\n");
|
||||
@@ -479,7 +479,7 @@ int init_module (void)
|
||||
priv = netdev_priv(gdev);
|
||||
////
|
||||
//
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
priv->irq=rt_request_srq(0, nasrg_interrupt, NULL);
|
||||
|
||||
if (priv->irq == -EBUSY || priv->irq == -EINVAL) {
|
||||
@@ -503,7 +503,7 @@ int init_module (void)
|
||||
#endif
|
||||
//
|
||||
//////
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
|
||||
if ((err=nasrg_netlink_init()) < 0)
|
||||
printk("nasrg_init_module: NETLINK failed\n");
|
||||
|
||||
@@ -141,7 +141,7 @@ int nasrg_netlink_init(void)
|
||||
//---------------------------------------------------------------------------
|
||||
printk("nasrg_netlink_init - begin \n");
|
||||
|
||||
nas_nl_sk = netlink_kernel_create(&init_net,NAS_NETLINK_ID, 0, nasrg_nl_data_ready,
|
||||
nas_nl_sk = netlink_kernel_create(&init_net,OAI_IP_DRIVER_NETLINK_ID, 0, nasrg_nl_data_ready,
|
||||
&nasrg_mutex, // NULL
|
||||
THIS_MODULE);
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ void nasrg_COMMON_receive(uint16_t bytes_read, uint16_t payload_length, void *da
|
||||
void nasrg_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc);
|
||||
void nasrg_COMMON_QOS_send_test_netlink(struct sk_buff *skb);
|
||||
void nasrg_COMMON_del_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc);
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
void nasrg_COMMON_QOS_receive(struct cx_entity *cx);
|
||||
#else
|
||||
void nasrg_COMMON_QOS_receive(struct nlmsghdr *nlh);
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
//#define QOS_DEVICE_CONVERSATIONAL_INPUT QOS_SAPI_CONVERSATIONAL_INPUT_RG
|
||||
//#define QOS_DEVICE_CONVERSATIONAL_OUTPUT QOS_SAPI_CONVERSATIONAL_OUTPUT_RG
|
||||
|
||||
#define PDCP2NAS_FIFO 21
|
||||
#define PDCP2PDCP_USE_RT_FIFO 21
|
||||
#define NAS2PDCP_FIFO 22
|
||||
|
||||
//FIFO indexes in control blocks
|
||||
|
||||
@@ -56,7 +56,7 @@ struct nlmsghdr *nlh = NULL;
|
||||
struct iovec iov;
|
||||
int sock_fd;
|
||||
struct msghdr msg;
|
||||
#define NAS_NETLINK_ID 31
|
||||
#define OAI_IP_DRIVER_NETLINK_ID 31
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -85,7 +85,7 @@ int main()
|
||||
perror("Could not install the new signal handler");
|
||||
|
||||
// create both sockets
|
||||
sock_fd = socket(PF_NETLINK, SOCK_RAW,NAS_NETLINK_ID);
|
||||
sock_fd = socket(PF_NETLINK, SOCK_RAW,OAI_IP_DRIVER_NETLINK_ID);
|
||||
printf("Opened socket with fd %d\n",sock_fd);
|
||||
ret = fcntl(sock_fd,F_SETFL,O_NONBLOCK);
|
||||
printf("fcntl returns %d\n",ret);
|
||||
|
||||
@@ -40,7 +40,7 @@ void foo( int sig )
|
||||
}
|
||||
|
||||
|
||||
#define NAS_NETLINK_ID 31
|
||||
#define OAI_IP_DRIVER_NETLINK_ID 31
|
||||
|
||||
void main()
|
||||
{
|
||||
@@ -56,7 +56,7 @@ void main()
|
||||
if ( sigaction( SIGINT, &newaction, NULL ) == -1)
|
||||
perror("Could not install the new signal handler");
|
||||
|
||||
sock_fd = socket(PF_NETLINK, SOCK_RAW,NAS_NETLINK_ID);
|
||||
sock_fd = socket(PF_NETLINK, SOCK_RAW,OAI_IP_DRIVER_NETLINK_ID);
|
||||
|
||||
printf("Opened socket with fd %d\n",sock_fd);
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# NASMESH Driver makefile
|
||||
#
|
||||
include $(OPENAIR_HOME)/common/utils/Makefile.inc
|
||||
include $(OPENAIR_DIR)/common/utils/Makefile.inc
|
||||
NAS_UPDIR := $(shell /bin/pwd)
|
||||
|
||||
KERNEL_ARCH:=$(shell echo `uname -m`)
|
||||
@@ -54,7 +54,7 @@ endif
|
||||
####################################################
|
||||
|
||||
#netlink.ko:
|
||||
#make $(x)$(y) NAS_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
#make $(x)$(y) PDCP_USE_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
#oai_nw_drv.ko:
|
||||
# make V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
//#define NETLINK_DEBUG 1
|
||||
|
||||
|
||||
#define NAS_NETLINK_ID 31
|
||||
#define OAI_IP_DRIVER_NETLINK_ID 31
|
||||
#define NL_DEST_PID 1
|
||||
|
||||
#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0)
|
||||
@@ -110,7 +110,7 @@ int oai_nw_drv_netlink_init(void)
|
||||
|
||||
nas_nl_sk = netlink_kernel_create(
|
||||
&init_net,
|
||||
NAS_NETLINK_ID,
|
||||
OAI_IP_DRIVER_NETLINK_ID,
|
||||
# if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
|
||||
THIS_MODULE,
|
||||
# endif
|
||||
@@ -118,7 +118,7 @@ int oai_nw_drv_netlink_init(void)
|
||||
#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) */
|
||||
nas_nl_sk = netlink_kernel_create(
|
||||
&init_net,
|
||||
NAS_NETLINK_ID,
|
||||
OAI_IP_DRIVER_NETLINK_ID,
|
||||
0,
|
||||
nas_nl_data_ready,
|
||||
&nasmesh_mutex, // NULL
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# NASMESH Driver makefile
|
||||
#
|
||||
include $(OPENAIR_HOME)/common/utils/Makefile.inc
|
||||
include $(OPENAIR_DIR)/common/utils/Makefile.inc
|
||||
NAS_UPDIR := $(shell /bin/pwd)
|
||||
|
||||
####################################################
|
||||
@@ -17,8 +17,8 @@ NAS_UPDIR := $(shell /bin/pwd)
|
||||
####################################################
|
||||
#EXTRA_CFLAGS = -fno-common -fno-stack-protector -mpreferred-stack-boundary=4 $(if $(SET_X64),-DARCH_64,) $(if $(SET_X64),-mcmodel=kernel,) $(if $(SET_X64),-m64,)
|
||||
EXTRA_CFLAGS += -I$(OPENAIR2_DIR)
|
||||
ifdef NAS_NETLINK
|
||||
EXTRA_CFLAGS += -DNAS_NETLINK
|
||||
ifdef PDCP_USE_NETLINK
|
||||
EXTRA_CFLAGS += -DPDCP_USE_NETLINK
|
||||
else
|
||||
EXTRA_CFLAGS += $(shell rtai-config --module-cflags) -DRTAI -D__IN_RTAI__ -Wall
|
||||
endif
|
||||
@@ -30,6 +30,13 @@ endif
|
||||
ifdef ADDRESS_FIX
|
||||
EXTRA_CFLAGS += -DNAS_ADDRESS_FIX
|
||||
endif
|
||||
ifdef NAS_DEBUG_RECEIVE
|
||||
EXTRA_CFLAGS += -DNAS_DEBUG_RECEIVE
|
||||
endif
|
||||
|
||||
ifdef NAS_DEBUG_SEND
|
||||
EXTRA_CFLAGS += -DNAS_DEBUG_SEND
|
||||
endif
|
||||
|
||||
ccflags-y := $(CFLAGS) $(EXTRA_CFLAGS)
|
||||
CFLAGS=
|
||||
@@ -44,7 +51,7 @@ nasmesh-objs += ioctl.o
|
||||
nasmesh-objs += classifier.o
|
||||
nasmesh-objs += tool.o
|
||||
nasmesh-objs += mesh.o
|
||||
ifdef NAS_NETLINK
|
||||
ifdef PDCP_USE_NETLINK
|
||||
nasmesh-objs += netlink.o
|
||||
endif
|
||||
|
||||
@@ -53,7 +60,7 @@ endif
|
||||
####################################################
|
||||
|
||||
#netlink.ko:
|
||||
# make NAS_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
# make PDCP_USE_NETLINK=1 V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
#nasmesh.ko:
|
||||
# make V=1 -C $(KERNEL_DIR) M=`pwd` modules
|
||||
|
||||
@@ -40,7 +40,7 @@ void foo( int sig )
|
||||
}
|
||||
|
||||
|
||||
#define NAS_NETLINK_ID 31
|
||||
#define OAI_IP_DRIVER_NETLINK_ID 31
|
||||
|
||||
void main()
|
||||
{
|
||||
@@ -56,7 +56,7 @@ void main()
|
||||
if ( sigaction( SIGINT, &newaction, NULL ) == -1)
|
||||
perror("Could not install the new signal handler");
|
||||
|
||||
sock_fd = socket(PF_NETLINK, SOCK_RAW,NAS_NETLINK_ID);
|
||||
sock_fd = socket(PF_NETLINK, SOCK_RAW,OAI_IP_DRIVER_NETLINK_ID);
|
||||
|
||||
printf("Opened socket with fd %d\n",sock_fd);
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
//#include "nas_common.h"
|
||||
#include "local.h"
|
||||
#include "proto_extern.h"
|
||||
#ifndef NAS_NETLINK
|
||||
#ifdef RTAI
|
||||
#include "rtai_fifos.h"
|
||||
#endif
|
||||
|
||||
@@ -402,7 +402,7 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
|
||||
pdcph.inst = inst;
|
||||
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote = nas_netlink_send((char *)&pdcph,NAS_PDCPH_SIZE);
|
||||
#ifdef NAS_DEBUG_SEND
|
||||
printk("[NAS] Wrote %d bytes (header for %d byte skb) to PDCP via netlink\n",
|
||||
@@ -414,22 +414,22 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
|
||||
printk("[NAS] Wrote %d bytes (header for %d byte skb) to PDCP fifo\n",
|
||||
bytes_wrote,skb->len);
|
||||
#endif
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != NAS_PDCPH_SIZE) {
|
||||
printk("NAS_COMMON_QOS_SEND: problem while writing PDCP's header (bytes wrote = %d )\n",bytes_wrote);
|
||||
printk("rb_id %d, Wrote %d, Header Size %lu\n", pdcph.rb_id , bytes_wrote, NAS_PDCPH_SIZE);
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
rtf_reset(NAS2PDCP_FIFO);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
bytes_wrote += nas_netlink_send((char *)skb->data,skb->len);
|
||||
#else
|
||||
bytes_wrote += rtf_put(NAS2PDCP_FIFO, skb->data, skb->len);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
if (bytes_wrote != skb->len+NAS_PDCPH_SIZE) {
|
||||
printk("NAS_COMMON_QOS_SEND: Inst %d, RB_ID %d: problem while writing PDCP's data, bytes_wrote = %d, Data_len %d, PDCPH_SIZE %lu\n",
|
||||
@@ -438,9 +438,9 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
|
||||
bytes_wrote,
|
||||
skb->len,
|
||||
NAS_PDCPH_SIZE); // congestion
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
rtf_reset(NAS2PDCP_FIFO);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -460,7 +460,7 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//---------------------------------------------------------------------------
|
||||
void nas_COMMON_QOS_receive()
|
||||
{
|
||||
@@ -479,7 +479,7 @@ void nas_COMMON_QOS_receive()
|
||||
|
||||
// End debug information
|
||||
|
||||
bytes_read = rtf_get(PDCP2NAS_FIFO,&pdcph, NAS_PDCPH_SIZE);
|
||||
bytes_read = rtf_get(PDCP2PDCP_USE_RT_FIFO,&pdcph, NAS_PDCPH_SIZE);
|
||||
|
||||
while (bytes_read>0) {
|
||||
if (bytes_read != NAS_PDCPH_SIZE) {
|
||||
@@ -490,7 +490,7 @@ void nas_COMMON_QOS_receive()
|
||||
priv=netdev_priv(nasdev[pdcph.inst]);
|
||||
rclass = nas_COMMON_search_class_for_rb(pdcph.rb_id,priv);
|
||||
|
||||
bytes_read+= rtf_get(PDCP2NAS_FIFO,
|
||||
bytes_read+= rtf_get(PDCP2PDCP_USE_RT_FIFO,
|
||||
data_buffer,
|
||||
pdcph.data_size);
|
||||
|
||||
@@ -512,7 +512,7 @@ void nas_COMMON_QOS_receive()
|
||||
pdcph.rb_id);
|
||||
}
|
||||
|
||||
bytes_read = rtf_get(PDCP2NAS_FIFO, &pdcph, NAS_PDCPH_SIZE);
|
||||
bytes_read = rtf_get(PDCP2PDCP_USE_RT_FIFO, &pdcph, NAS_PDCPH_SIZE);
|
||||
}
|
||||
|
||||
|
||||
@@ -553,7 +553,7 @@ void nas_COMMON_QOS_receive(struct nlmsghdr *nlh)
|
||||
}
|
||||
|
||||
}
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
struct cx_entity *nas_COMMON_search_cx(nasLocalConnectionRef_t lcr,struct nas_priv *priv)
|
||||
|
||||
@@ -36,12 +36,12 @@
|
||||
*/
|
||||
/*******************************************************************************/
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
#ifdef RTAI
|
||||
#include "rtai_posix.h"
|
||||
#define RTAI_IRQ 30 //try to get this irq with RTAI
|
||||
#endif // RTAI
|
||||
#endif // NAS_NETLINK
|
||||
#endif // PDCP_USE_NETLINK
|
||||
|
||||
#include "constant.h"
|
||||
#include "local.h"
|
||||
@@ -68,7 +68,7 @@
|
||||
|
||||
struct net_device *nasdev[NB_INSTANCES_MAX];
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
extern void nas_netlink_release(void);
|
||||
extern int nas_netlink_init(void);
|
||||
#endif
|
||||
@@ -97,7 +97,7 @@ int find_inst(struct net_device *dev)
|
||||
|
||||
//---------------------------------------------------------------------------
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
//void interrupt(void){
|
||||
void *nas_interrupt(void)
|
||||
{
|
||||
@@ -116,7 +116,7 @@ void *nas_interrupt(void)
|
||||
cxi=0;
|
||||
// mesh_GC_receive();
|
||||
// mesh_DC_receive(naspriv->cx+cxi);
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
nas_COMMON_QOS_receive();
|
||||
#endif
|
||||
// spin_unlock_irqrestore(&priv->lock,flags);
|
||||
@@ -138,14 +138,14 @@ int nas_open(struct net_device *dev)
|
||||
// MOD_INC_USE_COUNT;
|
||||
|
||||
// Address has already been set at init
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
if (pdcp_2_nas_irq==-EBUSY) {
|
||||
printk("OPEN: irq failure\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
/*
|
||||
netif_start_queue(dev);
|
||||
@@ -366,7 +366,7 @@ void nas_init(struct net_device *dev)
|
||||
// Initialize private structure
|
||||
// priv->sap[NAS_GC_SAPI] = RRC_DEVICE_GC;
|
||||
// priv->sap[NAS_NT_SAPI] = RRC_DEVICE_NT;
|
||||
priv->sap[NAS_RAB_INPUT_SAPI] = PDCP2NAS_FIFO;//QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
priv->sap[NAS_RAB_INPUT_SAPI] = PDCP2PDCP_USE_RT_FIFO;//QOS_DEVICE_CONVERSATIONAL_INPUT;
|
||||
priv->sap[NAS_RAB_OUTPUT_SAPI] = NAS2PDCP_FIFO;//QOS_DEVICE_STREAMING_INPUT;
|
||||
|
||||
// priv->retry_limit=RETRY_LIMIT_DEFAULT;
|
||||
@@ -450,7 +450,7 @@ int init_module (void)
|
||||
|
||||
printk("Starting NASMESH, number of IMEI paramters %d, IMEI %X%X\n",m_arg,nas_IMEI[0],nas_IMEI[1]);
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
#ifdef RTAI //with RTAI you have to indicate which irq# you want
|
||||
|
||||
@@ -505,7 +505,7 @@ int init_module (void)
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
|
||||
if ((err=nas_netlink_init()) == -1)
|
||||
printk("[NAS][INIT] NETLINK failed\n");
|
||||
@@ -528,7 +528,7 @@ void cleanup_module(void)
|
||||
|
||||
printk("[NAS][CLEANUP]nasmesh_cleanup_module: begin\n");
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
|
||||
if (pdcp_2_nas_irq!=-EBUSY) {
|
||||
pdcp_2_nas_irq=0;
|
||||
@@ -559,9 +559,9 @@ void cleanup_module(void)
|
||||
free_netdev(nasdev[inst]);
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
nas_netlink_release();
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
printk("nasmesh_cleanup_module: end\n");
|
||||
}
|
||||
|
||||
|
||||
@@ -63,7 +63,7 @@
|
||||
//#include "rrc_nas_primitives.h"
|
||||
//#include "rrc_sap.h"
|
||||
|
||||
#define PDCP2NAS_FIFO 21
|
||||
#define PDCP2PDCP_USE_RT_FIFO 21
|
||||
#define NAS2PDCP_FIFO 22
|
||||
|
||||
#include "constant.h"
|
||||
@@ -185,7 +185,7 @@ extern struct net_device *nasdev[NB_INSTANCES_MAX];
|
||||
extern uint8_t NAS_NULL_IMEI[14];
|
||||
|
||||
//global variables shared with RRC
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
extern int pdcp_2_nas_irq;
|
||||
#endif
|
||||
//extern uint8_t nas_IMEI[14];
|
||||
|
||||
@@ -288,7 +288,7 @@ int nas_mesh_DC_send_cx_establish_request(struct cx_entity *cx,struct nas_priv *
|
||||
nas_tool_print_buffer((char *)p,p->length);
|
||||
#endif
|
||||
++cx->retry;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
|
||||
#endif
|
||||
@@ -348,7 +348,7 @@ int nas_mesh_DC_send_cx_release_request(struct cx_entity *cx,
|
||||
p->length = NAS_TL_SIZE + sizeof(struct NASConnReleaseReq);
|
||||
p->nasUEDCPrimitive.conn_release_req.localConnectionRef = cx->lcr;
|
||||
p->nasUEDCPrimitive.conn_release_req.releaseCause = NAS_CX_RELEASE_UNDEF_CAUSE;
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
|
||||
#else
|
||||
// bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
|
||||
@@ -435,7 +435,7 @@ void nas_mesh_DC_send_sig_data_request(struct sk_buff *skb,
|
||||
p->nasUEDCPrimitive.data_transfer_req.localConnectionRef = cx->lcr;
|
||||
p->nasUEDCPrimitive.data_transfer_req.priority = 3; // TBD
|
||||
p->nasUEDCPrimitive.data_transfer_req.nasDataLength = (skb->len)+1; //adds category character
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
|
||||
#endif
|
||||
@@ -445,7 +445,7 @@ void nas_mesh_DC_send_sig_data_request(struct sk_buff *skb,
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], &data_type, 1);
|
||||
// bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], skb->data, skb->len);
|
||||
@@ -505,7 +505,7 @@ void nas_mesh_DC_send_peer_sig_data_request(struct cx_entity *cx, uint8_t sig_ca
|
||||
p->nasUEDCPrimitive.data_transfer_req.localConnectionRef = cx->lcr;
|
||||
p->nasUEDCPrimitive.data_transfer_req.priority = 3; // TBD
|
||||
p->nasUEDCPrimitive.data_transfer_req.nasDataLength = (nas_length)+1; //adds category character
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_wrote = rtf_put(cx->sap[NAS_DC_INPUT_SAPI], p, p->length);
|
||||
#endif
|
||||
@@ -515,7 +515,7 @@ void nas_mesh_DC_send_peer_sig_data_request(struct cx_entity *cx, uint8_t sig_ca
|
||||
return;
|
||||
}
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], &data_type, 1);
|
||||
// bytes_wrote += rtf_put(cx->sap[NAS_DC_INPUT_SAPI], (char *)nas_data, nas_length);
|
||||
@@ -659,7 +659,7 @@ void nas_mesh_DC_decode_sig_data_ind(struct cx_entity *cx, struct nas_ue_dc_elem
|
||||
}
|
||||
|
||||
// End debug information
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
// nas_COMMON_receive(p->length, p->nasUEDCPrimitive.data_transfer_ind.nasDataLength, cx->sap[NAS_DC_OUTPUT_SAPI]);
|
||||
#endif
|
||||
#ifdef NAS_DEBUG_DC
|
||||
@@ -836,7 +836,7 @@ int nas_mesh_DC_receive(struct cx_entity *cx,struct nas_priv *gpriv)
|
||||
}
|
||||
|
||||
// End debug information
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_read = rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI] , gpriv->rbuffer, NAS_TL_SIZE);
|
||||
#endif
|
||||
@@ -846,7 +846,7 @@ int nas_mesh_DC_receive(struct cx_entity *cx,struct nas_priv *gpriv)
|
||||
|
||||
p= (struct nas_ue_dc_element *)(gpriv->rbuffer);
|
||||
//get the rest of the primitive
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_read += rtf_get(cx->sap[NAS_DC_OUTPUT_SAPI], (uint8_t *)p+NAS_TL_SIZE, p->length-NAS_TL_SIZE);
|
||||
#endif
|
||||
@@ -975,7 +975,7 @@ int nas_mesh_GC_receive(struct nas_priv *gpriv)
|
||||
#ifdef NAS_DEBUG_GC
|
||||
printk("NAS_MESH_GC_RECEIVE - begin \n");
|
||||
#endif
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_read = rtf_get(gpriv->sap[NAS_GC_SAPI], gpriv->rbuffer, NAS_TL_SIZE);
|
||||
#endif
|
||||
@@ -984,7 +984,7 @@ int nas_mesh_GC_receive(struct nas_priv *gpriv)
|
||||
struct nas_ue_gc_element *p;
|
||||
p= (struct nas_ue_gc_element *)(gpriv->rbuffer);
|
||||
//get the rest of the primitive
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_read += rtf_get(gpriv->sap[NAS_GC_SAPI], (uint8_t *)p+NAS_TL_SIZE, p->length-NAS_TL_SIZE);
|
||||
#endif
|
||||
@@ -997,7 +997,7 @@ int nas_mesh_GC_receive(struct nas_priv *gpriv)
|
||||
// start decoding message
|
||||
switch (p->type) {
|
||||
case INFO_BROADCAST_IND :
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
#else
|
||||
// bytes_read += rtf_get(gpriv->sap[NAS_GC_SAPI], (uint8_t *)p+p->length, p->nasUEGCPrimitive.broadcast_ind.nasDataLength);
|
||||
#endif
|
||||
|
||||
@@ -52,7 +52,7 @@
|
||||
//#define NETLINK_DEBUG 1
|
||||
|
||||
|
||||
#define NAS_NETLINK_ID 31
|
||||
#define OAI_IP_DRIVER_NETLINK_ID 31
|
||||
#define NL_DEST_PID 1
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ int nas_netlink_init()
|
||||
|
||||
nas_nl_sk = netlink_kernel_create(
|
||||
&init_net,
|
||||
NAS_NETLINK_ID,
|
||||
OAI_IP_DRIVER_NETLINK_ID,
|
||||
# if LINUX_VERSION_CODE < KERNEL_VERSION(3,8,0)
|
||||
THIS_MODULE,
|
||||
# endif
|
||||
@@ -121,7 +121,7 @@ int nas_netlink_init()
|
||||
#else /* LINUX_VERSION_CODE >= KERNEL_VERSION(3,6,0) */
|
||||
nas_nl_sk = netlink_kernel_create(
|
||||
&init_net,
|
||||
NAS_NETLINK_ID,
|
||||
OAI_IP_DRIVER_NETLINK_ID,
|
||||
0,
|
||||
nas_nl_data_ready,
|
||||
&nasmesh_mutex, // NULL
|
||||
@@ -185,9 +185,9 @@ int nas_netlink_send(unsigned char *data,unsigned int len)
|
||||
#endif
|
||||
|
||||
#ifdef NETLINK_DEBUG
|
||||
printk("[NAS][NETLINK] In nas_netlink_send, nl_skb %p, nl_sk %x, nlh %p, nlh->nlmsg_len %d (NAS_NETLINK_ID %d)\n",
|
||||
printk("[NAS][NETLINK] In nas_netlink_send, nl_skb %p, nl_sk %x, nlh %p, nlh->nlmsg_len %d (OAI_IP_DRIVER_NETLINK_ID %d)\n",
|
||||
nl_skb,nas_nl_sk,nlh,nlh->nlmsg_len,
|
||||
NAS_NETLINK_ID);
|
||||
OAI_IP_DRIVER_NETLINK_ID);
|
||||
#endif //DEBUG_NETLINK
|
||||
|
||||
if (nas_nl_sk) {
|
||||
|
||||
@@ -101,7 +101,9 @@ void nas_COMMON_receive(unsigned short dlen,
|
||||
@param gc pointer to classifier entity for SDU
|
||||
@param inst device instance
|
||||
*/
|
||||
void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc,int inst);
|
||||
void nas_COMMON_QOS_send(struct sk_buff *skb,
|
||||
struct cx_entity *cx,
|
||||
struct classifier_entity *gc,int inst);
|
||||
|
||||
/**
|
||||
\fn void nas_COMMON_del_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc,int inst)
|
||||
@@ -111,15 +113,17 @@ void nas_COMMON_QOS_send(struct sk_buff *skb, struct cx_entity *cx, struct class
|
||||
@param gc pointer to classifier entity for SDU
|
||||
@param inst device instance
|
||||
*/
|
||||
void nas_COMMON_del_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc,int inst);
|
||||
void nas_COMMON_del_send(struct sk_buff *skb,
|
||||
struct cx_entity *cx,
|
||||
struct classifier_entity *gc,int inst);
|
||||
|
||||
#ifndef NAS_NETLINK
|
||||
#ifndef PDCP_USE_NETLINK
|
||||
/**
|
||||
\fn void nas_COMMON_QOS_receive()
|
||||
\brief Retrieve PDU from PDCP for connection
|
||||
*/
|
||||
void nas_COMMON_QOS_receive(void);
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
|
||||
/**
|
||||
\fn struct rb_entity *nas_COMMON_add_rb(struct cx_entity *cx, nasRadioBearerId_t rabi, nasQoSTrafficClass_t qos)
|
||||
@@ -128,7 +132,9 @@ void nas_COMMON_QOS_receive(void);
|
||||
@param rabi radio-bearer index
|
||||
@param qos NAS QOS traffic class
|
||||
*/
|
||||
struct rb_entity *nas_COMMON_add_rb(struct cx_entity *cx, nasRadioBearerId_t rabi, nasQoSTrafficClass_t qos);
|
||||
struct rb_entity *nas_COMMON_add_rb(
|
||||
struct cx_entity *cx, nasRadioBearerId_t rabi,
|
||||
nasQoSTrafficClass_t qos);
|
||||
|
||||
/**
|
||||
\fn struct rb_entity *nas_COMMON_search_rb(struct cx_entity *cx, nasRadioBearerId_t rabi)
|
||||
@@ -137,7 +143,8 @@ struct rb_entity *nas_COMMON_add_rb(struct cx_entity *cx, nasRadioBearerId_t rab
|
||||
@param rabi radio-bearer index
|
||||
@returns A pointer to the radio-bearer entity
|
||||
*/
|
||||
struct rb_entity *nas_COMMON_search_rb(struct cx_entity *cx, nasRadioBearerId_t rabi);
|
||||
struct rb_entity *nas_COMMON_search_rb(
|
||||
struct cx_entity *cx, nasRadioBearerId_t rabi);
|
||||
|
||||
/**
|
||||
\fn struct cx_entity *nas_COMMON_search_cx(nasLocalConnectionRef_t lcr,struct nas_priv *gpriv)
|
||||
@@ -146,7 +153,9 @@ struct rb_entity *nas_COMMON_search_rb(struct cx_entity *cx, nasRadioBearerId_t
|
||||
@param gpriv pointer to nas_priv for device
|
||||
@returns A pointer to the connection entity
|
||||
*/
|
||||
struct cx_entity *nas_COMMON_search_cx(nasLocalConnectionRef_t lcr,struct nas_priv *gpriv);
|
||||
struct cx_entity *nas_COMMON_search_cx(
|
||||
nasLocalConnectionRef_t lcr,
|
||||
struct nas_priv *gpriv);
|
||||
|
||||
/**
|
||||
\fn struct classifier_entity *nas_COMMON_search_class_for_rb(nasRadioBearerId_t rab_id,struct nas_priv *priv)
|
||||
@@ -155,7 +164,9 @@ struct cx_entity *nas_COMMON_search_cx(nasLocalConnectionRef_t lcr,struct nas_pr
|
||||
@param priv pointer to nas_priv for device
|
||||
@returns A pointer to the corresponding RX classifier entity
|
||||
*/
|
||||
struct classifier_entity *nas_COMMON_search_class_for_rb(nasRadioBearerId_t rab_id,struct nas_priv *priv);
|
||||
struct classifier_entity
|
||||
*nas_COMMON_search_class_for_rb(nasRadioBearerId_t
|
||||
rab_id,struct nas_priv *priv);
|
||||
|
||||
/**
|
||||
\fn void nas_COMMON_flush_rb(struct cx_entity *cx)
|
||||
@@ -164,7 +175,7 @@ struct classifier_entity *nas_COMMON_search_class_for_rb(nasRadioBearerId_t rab_
|
||||
*/
|
||||
void nas_COMMON_flush_rb(struct cx_entity *cx);
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
/**
|
||||
\fn int nas_netlink_send(unsigned char *data,unsigned int len)
|
||||
\brief Request the transfer of data by PDCP via netlink socket
|
||||
@@ -181,7 +192,7 @@ int nas_netlink_send(unsigned char *data,unsigned int len);
|
||||
*/
|
||||
void nas_COMMON_QOS_receive(struct nlmsghdr *nlh);
|
||||
|
||||
#endif //NAS_NETLINK
|
||||
#endif //PDCP_USE_NETLINK
|
||||
//nasmesh.c
|
||||
|
||||
/**
|
||||
@@ -191,7 +202,8 @@ void nas_mesh_init(int inst //!< Instance ID
|
||||
|
||||
);
|
||||
|
||||
void nas_mesh_timer(unsigned long data,struct nas_priv *gpriv);
|
||||
void nas_mesh_timer(unsigned long data,
|
||||
struct nas_priv *gpriv);
|
||||
|
||||
int nas_mesh_DC_receive(struct cx_entity *cx,struct nas_priv *gpriv);
|
||||
int nas_mesh_GC_receive(struct nas_priv *gpriv);
|
||||
@@ -200,9 +212,12 @@ int nas_mesh_DC_send_cx_release_request(struct cx_entity *cx,struct nas_priv *g
|
||||
void nas_mesh_DC_send_sig_data_request(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc,struct nas_priv *gpriv);
|
||||
|
||||
// iocontrol.c
|
||||
void nas_CTL_send(struct sk_buff *skb, struct cx_entity *cx, struct classifier_entity *gc);
|
||||
void nas_CTL_send(struct sk_buff *skb,
|
||||
struct cx_entity *cx,
|
||||
struct classifier_entity *gc);
|
||||
//int nas_CTL_receive_authentication(struct ipv6hdr *iph, struct cx-entity *cx, unsigned char sapi);
|
||||
int nas_CTL_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd);
|
||||
int nas_CTL_ioctl(struct net_device *dev,
|
||||
struct ifreq *ifr, int cmd);
|
||||
|
||||
// classifier.c
|
||||
|
||||
@@ -220,7 +235,8 @@ struct classifier_entity *nas_CLASS_add_sclassifier(struct cx_entity *cx, unsign
|
||||
/**
|
||||
\brief Send a socket received from IP to classifier for a particular instance ID.
|
||||
*/
|
||||
struct classifier_entity *nas_CLASS_add_fclassifier(struct cx_entity *cx,
|
||||
struct classifier_entity
|
||||
*nas_CLASS_add_fclassifier(struct cx_entity *cx,
|
||||
unsigned char dscp,
|
||||
unsigned short classref
|
||||
);
|
||||
@@ -228,7 +244,8 @@ struct classifier_entity *nas_CLASS_add_fclassifier(struct cx_entity *cx,
|
||||
/**
|
||||
\brief Send a socket received from IP to classifier for a particular instance ID.
|
||||
*/
|
||||
struct classifier_entity *nas_CLASS_add_rclassifier(unsigned char dscp,
|
||||
struct classifier_entity
|
||||
*nas_CLASS_add_rclassifier(unsigned char dscp,
|
||||
unsigned short classref,
|
||||
struct nas_priv*
|
||||
);
|
||||
@@ -297,7 +314,7 @@ void nas_tool_print_buffer(char * buffer,int length);
|
||||
void nas_print_rb_entity(struct rb_entity *rb);
|
||||
void nas_print_classifier(struct classifier_entity *gc);
|
||||
|
||||
#ifdef NAS_NETLINK
|
||||
#ifdef PDCP_USE_NETLINK
|
||||
// nas_netlink.c
|
||||
|
||||
void nas_netlink_release(void);
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
# You can modify the below as well, but probably
|
||||
# won't need to.
|
||||
|
||||
include $(OPENAIR_HOME)/common/utils/Makefile.inc
|
||||
include $(OPENAIR_DIR)/common/utils/Makefile.inc
|
||||
#UPDIR := /homes/mwett/rh_mw/RHODOS
|
||||
COMMON_DIR = $(OPENAIR2_DIR)/COMMON
|
||||
RRC_CELL_DIR = $(OPENAIR2_DIR)/RRC/CELLULAR
|
||||
|
||||
Reference in New Issue
Block a user