ADSL接入及共享技术的实现(一)(6)

2012-08-21 20:39

  6.1.2   数据结构初始化

  服务子层在收发相关数据报文时,可能需要申请或释放网络内存块。为避免系统正常运行期间频繁使用系统内存块操作导致效率降低或稳定性降低,可以在初始化时预先申请一个内存区域,由 netBufLib 所提供的net Buffer控制机制进行管理。

  其它如接口的状态、服务子层数据封装类型、MUX接口初始化 Cookie、服务子层地址映射表等参数结构也需要在这一步进行初始化。

  6.1.3   数据收发处理

  如上所述,网络服务子层通过 muxBind 函数将数据接收例程绑定至底层设备驱动。底层设备驱动接收到报文后,通过调用 stackRcvRtn 函数将数据经由 MUX 层查找特定协议类型返回至服务子层。服务子层处理该报文之后如果返回 FALSE,则系统将报文发往其它服务子层继续处理,否则,该报文被丢弃。

  数据报文被封装成 mBlk 形式从协议栈上层发送至网络服务子层,网络服务子层对报文进行处理后,再调用 muxSend 或 muxTkSend 函数将报文通过 MUX 层发送至该接口设备驱动。在这期间,网络服务子层可以通过调用该接口设备指定的地址解析函数获得二层目标地址,然后对数据帧进行二层封装。

  具体的数据收发处理实例可参见 6.2.3  AAL5 Service 协议数据处理流程。

  6.1.4   错误报告

    当设备驱动层向网络服务子层汇报收发或其它错误时,网络服务子层可以通过回调 stackErrorRtn 函数向上层报告这个错误。

  6.1.5  设备控制

  设备驱动程序需要增加相应的控制接口函数(如 xxxIoCtrl), 并注册至 MUX 层,网络服务子层就可以通过调用 muxIoCtl 控制底层设备驱动。

  6.2   AAL5 业务Service的实现

  Service 层主要实现如下相关协议类型:

  ATMARP Service.  用于收发 ATMARP 报文,绑定类型为 0x1577

      PPPOE  Service,  用于收发 PPPOE 报文,绑定类型为 0x8863,0x8864

  PPPOA  Service,  用于收发 PPPOA 报文,绑定类型为 0x2516

    如6.1 所介绍的,我们首先需要向 MUX 注册(绑定)这些 Service,然后在 Service 的收发中对相关协议的数据报文进行处理。

  6.2.1   向vxworks MUX 层注册Service

  1)  根据协议类型,初始化封装数据、大小等值

  2)  用muxBind 函数绑定接收函数,使某接口收到相应类型的报文时能够提        交该函数处理。例如(代码摘选自 atmSrv.c  atmSrv1483RoutedAttach函数),绑定 ATMARP 时作如下调用:

#define  MUX_PROTO_ATMARP  0x1577

        int unit = 1;

       muxBind(“pvc”, unit ,(FUNCPTR) AtmSrv1483RoutedRcvRtn, NULL,NULL,NULL, MUX_PROTO_ATMARP, "AtmSrv1483RoutedRcvRtn", unit);

        /* 此处,把 AtmSrv1483RoutedRcvRtn 函数绑定至pvc1接口,当pvc1收到 0x1577 类型的数据报文时,就会自动提交给该函数进行处理 */

  3)  初始化 Service 网络参数,定义报文发送时的处理函数,并向 MUX 层注册该Service,例程如下:

struct ifnet* pIfp = &AtmSrvCtrl[unit].ifp;


    bzero ((char *) pIfp, sizeof (struct ifnet));

     pIfp->if_unit   = unit;

     pIfp->if_name   = ifName;

ADSL接入及共享技术的实现(一)(6).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:GPS测量技术在农村公路的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: