一种PCI/PCIe设备状态的监测卡及千兆网卡链路监测方法_2

文档序号:9787299阅读:来源:国知局
驱动程序执行包括如下步骤的流程,通知所述板卡取消对于PCI/PCIe地址为MADDR的存储地址内容的监视:
[0036]CONFl遍历所述监测卡的监视对象寄存器组,寻找地址寄存器的值与MADDR相等的监测记录,假设此监测记录为record_find ;
[0037]C0NF2将监测记录record_find的使能寄存器设置为O。
[0038]所述监测卡的驱动程序通过中断获知监测的设备发生了异常,其中断处理程序执行包括如下步骤的流程获得发生异常的PCI/PCIe设备:
[0039]ONERRl读取所述监测卡的异常地址寄存器的值,该值对应了 “当前包含非正常内容的PCI/PCIe地址”;
[0040]0NERR2将所述监测卡的异常地址寄存器清零;
[0041 ] 0NERR3将步骤ONERRl获得值通知给关心此事件的进程。
[0042]在所述监测卡加电后,其执行的ROM中的代码包含一个无限循环,该无限循环的循环体包括如下步骤:
[0043]WORKl针对所述监测对象寄存器组中的每一个监测记录record,执行监测记录处理流程。
[0044]其中监测记录处理流程包括了包含M0NIT0R1?M0NIT0R6的如下步骤:
[0045]M0NIT0R1若所述监测记录record的使能寄存器包含的值为0,则跳过当前监测记录 record ;
[0046]MONIT0R2通知PCI/PCIe接口模块从地址addr中读取字长为bs的数据,其中addr为所述监测记录record的地址寄存器包含的内容,bs为所述监测记录record的字长寄存器包含的内容;
[0047]M0NIT0R3若步骤M0NIT0R2读取到的值等于所述监测记录record的正常值寄存器所包含的内容,则跳过当前监测记录record ;
[0048]MONIT0R4将addr写入异常地址寄存器,其中addr为所述监测记录record的地址寄存器包含的内容;
[0049]MONIT0R5通知PCI/PCIe接口模块向计算机的处理器发送中断信号;
[0050]MONIT0R6轮询,直到异常地址寄存器包含的内容为全0.
[0051]在有的实现方式中,监测卡在发现异常并通过中断上报后,采用临时禁用监测记录的方式来防止该异常反复引起中断,从而避免上述M0NIT0R6步骤事实上导致监测停止的问题。此时将 M0NIT0R5 ?M0NIT0R6 修改为 M0NIT0R5’ ?M0NIT0R6’:
[0052]M0NIT0R5’将所述监测记录record的使能寄存器清零;
[0053]M0NIT0R6’通知PCI/PCIe接口模块向计算机的处理器发送中断信号。
[0054]在这种情况下,所述监测卡的驱动程序在处理中断后,需要再次将此监测记录使能,而无需将异常地址寄存器清零。
[0055]对于“在监测到异常值时修改PCI/PCIe设备寄存器”的监测卡,其驱动程序端主要完成监测地址、正常监测值、上报地址等的设定;监测卡在加电后,其执行的ROM中的代码包括一个无限循环,该无限循环的循环体包括如下步骤:
[0056]DOl针对所述监测对象寄存器组中的每一个监测记录record,执行监测记录处理流程。
[0057]其中监测记录处理流程包括了包含TRIGl?TRIG6的如下步骤:
[0058]TRIGl若所述监测记录record的使能寄存器包含的值为0,则跳过当前监测记录record ;
[0059]TRIG2通知PCI/PCIe接口模块从地址addr中读取字长为bs的数据,其中addr为所述监测记录record的地址寄存器包含的内容,bs为所述监测记录record的字长寄存器包含的内容;
[0060]TRIG3若步骤M0NIT0R2读取到的值等于所述监测记录record的正常值寄存器所包含的内容,贝1J跳过当前监测记录record ;
[0061]TRIG4将PCI/PCIe的notify存储单元中mask所指示的位,设置为value值,其中notify存储单元为所述监测记录record的上报地址寄存器所指示的存储单元,mask为所述监测记录record的上报位詈寄存器所包含的倌,value为所述监测记录record的上报方式寄存器所包含的值。
[0062]需要指出的是,以上典型实施方式仅为说明本发明思想用途,并未对本发明的【具体实施方式】进行任何形式的限定,本领域的工程技术人员可以在本发明思想的启示下,自行设计出其它的实现方式,包括但不限于:1)所述监测卡不对外部软件暴露监测对象寄存器组,而是为外部软件提供信息写入接口,使得外部软件可以使用向这些接口写入不同的数值,来达到设定监测记录的目的;2)图1所示的R0M、处理器和RAM由一个单片机模块或DSP或FPGA实现;3)所述监测卡由FPGA实现;4)所述监测卡内部可持久存储监测记录,从而无需在使用前由驱动程序进行设定;5)所述监测卡在进行无限循环监测中,在每次循环中引入适当延迟,以便在满足用户要求的最大异常值发现延迟的情况下,降低所述监测卡对于PCI/PCIe相关资源的占用;6)采用等价于本发明典型实施方式所述监测记录的方式存储被监测PCI/PCIe地址的相关信息;7)在监测发现某个地址包含非正常值时,仅向外部处理器发送中断,而不通过异常地址寄存器报告出现异常值的地址,由上层软件自行检查获知;8)当监测发现某个地址包含非正常值时,通过修改该地址对应PCI/PCIe设备的中断相关寄存器,令该地址对应的PCI/PCIe设备自行上报中断。
[0063]本发明的一种典型应用场景为监视千兆以太网连接状态,按照相关规范,千兆网卡内部的maxwait_timer定时器在350ms左右没有收到来自物理层的数据时,才会去检测底层通信链路是否被断开,在对可靠性和敏感性有很高要求的场合,350ms左右的延迟过大。
[0064]在使用本发明所述的“在监测到异常值时自行上报中断”的监测卡时,将“被监视千兆网卡的链路状态寄存器的PCI/PCIe总线地址、该网卡规范中规定的网络链路状态寄存器的字长、该网络链路状态寄存器在链路正常时的值”写入所述监测卡的某个监测记录中,并将此监测记录使能,就可以实现对网络链路断开情况的实时监测。高可用相关任务可通过关注所述监测卡创建的设备文件,从而在网络链路出现断开时得到通知,进而进行网络链路切换或进行网络链路情况的进一步监测。
[0065]所述监测卡的中断处理程序也可以采取其他操作来实现事件通知目的,如:方法I)向中断处理程序注册当发生中断是需要执行的程序(该程序可能执行千兆网卡链路监测任务);方法2)通过事件机制将中断事件投送给在外部睡眠等待的任务(如千兆网卡链路监测任务);方法3)直接唤醒睡眠在所述监测卡驱动程序内部等待队列上的任务(如千兆网卡链路监测任务)。
[0066]当使用本发明所述的“在监测到异常值时修改PCI/PCIe设备寄存器”的监测卡时,只需将“被监视千兆网卡的链路状态寄存器的PCI/PCIe总线地址、该网卡规范中规定的网络链路状态寄存器的字长、该网络链路状态寄存器在链路正常时的值、该网卡中断寄存器地址、该网卡中断寄存器中反映链路状态变化的位、该网卡中断寄存器中反映链路状态变化的位为何种值时表示需要产生中断”等信息写入所述监测卡的某个监测记录中,并将此监测记录使能,从而实现对网络链路断开情况的实时监测。此时所述千兆网卡自身的驱动程序即可实时对网络链路断开情况的监测。
【主权项】
1.一种可定期监测PCI/PCIe设备状态的监测卡,其特征在于: (1)所述监测卡具有PCI/PCIe插口,插入到包含被监测PCI/PCIe设备的计算机中; (2)所述检测卡周期性读取被监测PCI/PCIe设备的指定存储空间,并在读取的值与预定值不同时,执行所述监测卡被事先设定应执行的操作。2.如权利要求1所述的监测卡,其特征在于:当所述监测卡发现被监测存储空间包含非正常值时,自行向处理器上报中断。3.如权利要求1所述的监测卡,其特征在与:当所述监测卡发现被监测存储空间包含非正常值时,根据预先设定的方式,修改PCI/PCIe空间特定存储单元的值。4.一种使用权利要求2所述监测卡对千兆以太网物理链路进行监测的方法,其特征在于: (1)在监测开始前,通过软件将千兆以太网卡的链路状态寄存器的PCI/PCIe地址以及所述链路状态寄存器在链路正常时的值写入所述监测卡,并令所述监测卡开始对所述链路状态寄存器的值进行监测; (2)所述监测卡的中断处理程序在收到中断后,执行系统设定的事件通知操作。5.一种使用权利要求3所述监测卡对千兆以太网物理链路进行监测的方法,其特征在于:在监测开始前,通过软件将所述千兆以太网卡的链路状态寄存器的PCI/PCIe地址以及所述链路状态寄存器在链路正常时的值、所述千兆以太网网卡的中断寄存器地址、所述千兆以太网网卡中断寄存器的网络链路状态改变指示位位詈.、#为使所述千兆以太网网卡产生网络链路状态改变相关中断,应如何设置所述指示位的方法写入所述监测卡,并令所述监测卡开始对所述链路状态寄存器的值进行监测。
【专利摘要】本发明公开一种可定期监测PCI/PCIe设备状态的监测卡,该监测卡具有PCI/PCIe插口,插入到包含被监测PCI/PCIe设备的计算机中,且在加电后周期性读取被监测PCI/PCIe设备的指定存储空间,并在读取的值与预定值不同时,向计算机的处理器发送中断。本发明还公开此种监测卡在千兆以太网卡物理链路监测上的一种使用方法,其特征为:(1)在监测开始前,通过软件将千兆以太网卡的链路状态寄存器的PCI/PCIe地址以及所述链路状态寄存器在链路正常时的值写入所述监测卡,并令所述监测卡开始对所述链路状态寄存器的值进行监测;(2)所述监测卡的中断处理程序在收到中断后,执行系统设定的事件通知操作。
【IPC分类】H04L12/26, G06F11/30
【公开号】CN105550091
【申请号】CN201510568560
【发明人】刘晓建
【申请人】刘晓建
【公开日】2016年5月4日
【申请日】2015年9月3日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1