专利名称:双驱动器接口的制作方法
技术领域:
本发明涉及一种网络接口,例如一种用于将计算机链接到网络的接口装置。
背景技术:
传统上,操作系统提供多个抽象内部接口,设计这些抽象内部接口用来支持连接到该系统的各族硬件装置,例如,存储装置、组网装置、图形装置。操作系统通常还提供这样的驱动器模型,该驱动器模型使得能够连接不适合标准驱动器模型的订制硬件(bespoke hardware)。在当前的微软Windows实现中,网络模型被称为NDIS,而通用驱动器模型被称为WDM。实现规则声明NDIS装置驱动器不应该与WDM驱动器直接交互。这也是好的工程实践。
通常的网络接口装置不支持将NDIS作为到WDM的纵向(对等)接口。因此,例如IETF RDMA协会和Infiniband架构不是用垂直分离的结构定义的。图1示出了这种架构的示例。该架构难以支持将两种基于标准内核的网络服务同时作为应用级的网络服务,并且引起了功能的分层例如,将NDIS驱动器功能建立在内核代理之上或者建立为内核代理的一部分。
已经建议提供一种网络接口,该网络接口表现出具有这样的驱动器架构的用户级网络接口,该驱动器架构支持(a)受保护的控制接口,其可以从用户级传输库(transport library)访问;和(b)标准网络驱动器接口。过去,通过将这样的接口(b)层叠在这样的接口(a)的顶部来实现这种架构。该方法的优点是在驱动器之间传递消息相对容易。然而,该方法效率低,在Windows架构下尤其如此,并且该方法的缺点是为了操作接口(b)必须装载两个驱动器,并且接口(a)必须向(b)暴露上层API以及向用户级传输库暴露控制API。
发明内容
根据本发明,提供了如所附权利要求所述的装置和方法。
现在将参照附图通过示例描述本发明,在附图中图1示出了用于用户可访问网络的现有驱动器结构的示例;图2是使用中的网络接口装置的示意图;图3示出了根据本发明的驱动器结构的示例;图4示出了通过共享中断线的信息传送;以及图5示出了驱动器之间的事件传送。
具体实施例方式
图2是示出了网络接口装置以及其中可使用该装置的系统的一般架构的示意图。网络接口装置10经由数据链路5连接到诸如计算机1的处理装置,并且经由数据链路14连接到数据网络20。诸如处理装置30的其他网络接口装置也连接到网络,以在网络与诸如处理装置40的其他处理装置之间提供接口。
计算机1例如可以是个人计算机、服务器或专用处理装置(诸如数据记录器或控制器)。在该示例中,计算机1包括处理器2、程序存储器4和存储器3。程序存储器存储定义操作系统的指令以及可以在该操作系统上运行的应用。操作系统提供了诸如驱动器和接口库的手段,通过这些手段,应用可以访问与该计算机相连接的外围硬件装置。
如通常的操作系统中的一样,驱动器可以有两种类型通用型和专用型。通用型驱动器为特定类型的外围装置(例如网络接口装置)提供到OS的标准接口。其优点在于,OS可以向该通用型的所有装置提供支持功能,例如以太网ARP支持。通用型驱动器的具体示例是插入到Windows NDIS驱动器架构中的NDIS小端口(miniport)驱动器。专用型驱动器提供到特定装置的接口。通常将专用型驱动器提供为可由操作系统使用以支持专用驱动器接口的驱动器软件。其示例是Windows WDM驱动器。这种驱动器可以提供用户级应用或传输库所需的任何API。
链路5可以是串行链路或并行链路。在一典型示例中,链路5可以是PCI总线。
网络接口装置10可以是独立装置或诸如网络接口卡(NIC)的内部装置。装置10包括处理器(或硬件逻辑)12、存储有由处理器执行(或者配置硬件逻辑)以实现网络接口功能(包括建立和支持与计算机1进行的通信的协议栈)的指令的非易失性存储器13、以及用作临时数据存储器和缓冲器的存储器11。该网络接口装置具有硬件接口15、16,通过它们连接到链路5、14。它们处理物理层问题,诸如链路的电压规则等。可以用固件或硬件来处理该网络接口装置的某些或全部功能。
通常,网络接口装置会在网络链路14上实现分组交换通信。因此,它将通过该链路发送和接收作为分组的业务数据(traffic data)。这些分组例如可以是IP(互联网协议)分组,但也可以是其他形式的分组。
图3示出了在本发明的示例中可以建立的驱动器结构的示例。它包括将数据处理装置(诸如计算机1)与网络装置硬件(诸如网络接口装置10)相连的两个并行的驱动器栈50、51。在该示例中,计算机1实现Windows操作系统,但是本发明不限于这种实现。栈51表示WDM型栈,其实现硬件控制面(hardware control plane)。栈50表示NDIS型栈,其实现标准驱动器接口。一旦通过该WDM接口分配了硬件资源,传输库就可以直接访问网络装置硬件。
最优选地,将图3的栈50和51完全分开(纵向分开)。优选地,它们彼此独立,从而通过一个栈的单独通信独立于通过另一个栈的通信。这些驱动器可单独地从而可独立地寻址。网络接口装置可以独立于其他装置地将数据提供给各个装置。如下所述,这可以由支持各自的输入队列的各个驱动器方便地实现。当建立各驱动器时,可以向它分配用作该队列的存储区。当建立队列时可以将队列的地址发送到接口装置并由其存储。为了实现此点,可以在每个驱动器启动时向其分配可由该驱动器和网络接口装置两者访问的存储器区域。提供该区域的位置,然后传递给网络接口装置以进行使用,网络接口装置可以存储该位置,以寻址导向各个驱动器的区域数据(业务数据或控制数据)。按该方式,可以独立于其他驱动器地寻址各驱动器。
为了以此方式支持两个独立的纵向驱动器结构,网络装置硬件可以向操作系统呈现为多功能装置。在一体化的外设包含多于一种类型的装置,例如提供组合的网络接口和调制解调器的PC卡的情况下,通常使用该技术。然而,在本实例中,两个装置具有相同的类型即网络接口。即使硬件控制面和标准驱动器接口驱动器(在Windows的情况下为WDM和NDIS驱动器)对应于同一物理装置功能,通过给出两个接口,操作系统驱动器管理软件(例如Windows硬件即插即用子系统)也可以容易地、分立且独立地对它们进行装载或卸载以及配置。
应该考虑无论驱动器的状态如何都能使硬件一直被正确管理。具体地,在驱动器之一活动或两者都活动的情况下,应该可以管理硬件或者使其处于可管理的状态。在要向驱动器传送中断和事件以及驱动器在没有可用的直接软件机制的情况下必须向对等驱动器通告状态时,能够进行正确操作。
根据本发明的示例的网络接口装置可以使用事件作为将错误和控制信息传递到操作系统和传输库的基本手段。为了实现此点,网络接口可以将时间数据块形式的信息通过所述栈中的一个提供给数据处理装置1。可以将按此方式传递的事件排进事件队列,通常通过使用读写指针以先入先出形式实现所述事件队列,在从保存该队列的缓冲器中读取事件或将事件写入该缓冲器时,所述读写指针在整个缓冲器上移动(incremented)。通过由事件源施加给数据处理装置的中断,可以触发在该数据处理装置上运行的驱动器来读取队列。可以使用这种事件向数据处理装置传递控制数据以及由网络接口装置通过链路14接收到的业务数据。因此,中断提供了一种硬件机制,通过这种硬件机制,网络接口装置可以请求执行装置驱动器中的一个或另一个;并且中断可以对应于物理中断线,该中断线可由网络接口装置进行断言(assert)。在对中断线进行断言时,CPU 2相应切换到其中断处理器,该中断处理器具有执行相关装置驱动器代码的任务。对于诸如PCI的总线,会有比中断线更多的装置,所以可能用单个物理中断登记多个装置驱动器。因此,对于某物理中断线,可登记WDM接口和NDIS接口两者,只要它们都能快速且有效地识别中断是否是针对它们的即可。对于不能共享中断线的总线或者总线能够支持用于一装置的多条中断线的情况,该装置将实现两条独立的中断线。
图4示出了如何实现经由共享中断线来传送信息。在步骤[a],网络接口装置将数据传入(post)驱动器事件队列(其被预登记)。然后,在步骤[b],网络接口装置对中断(IRQ)线进行断言。因为两个驱动器都向操作系统登记了同一中断,所以它们都被执行。然而,每个驱动器都可以通过检查它们自己的私有事件队列来确定该中断是否是针对它们的。执行两个驱动器以及它们的检查处理的开销通常较小,例如只有几百个处理器周期。当驱动器从它们的事件队列中独立地消耗事件时,它们将指针更新写回到网络接口装置。因而,网络接口装置通过指针比较(或者通过某种其他形式的确认,诸如装置通知从各队列状态寄存器中进行读取)能够确定哪些事件队列具有未解决的事件。网络接口装置被配置为,只要在中断被使能的事件队列中存在至少一个未解决的事件,就对该网络接口装置的中断线进行断言,例如通过对中断进行断言直到驱动器读取到它的中断事件寄存器为止。可以执行其他策略例如中断拖延(hold-off)策略,其中,仅当未解决事件的数量大于预定数量,或者仅当事件已在队列中等待了长于预定时间,才施加中断。
更具体地,在优选实施例中,将数据信道和控制信道安排为响应于一个或更多个中断,以从它们各自的队列中读取事件。在从其队列中读取事件时,信道从该队列中删除该事件,释放队列中的空间以向该队列添加更多事件。所述队列以如上所述的先入先出方式方便地操作。对于去除事件的定时,可以采用许多策略。首先,可以安排要从队列读取数据的驱动器或传输库对该队列一直进行轮询,以确定队列中是否存在事件。轮询之间的时间间隔可以取决于队列的状态例如,如果在最后一次轮询时没有发现队列中有数据,那么可以增加所述时间间隔,反之亦然。另选地或另外地,驱动器或传输库可以响应于与其队列相对应的中断来对该队列进行轮询。可以每个队列有一个中断,或者可以在多个队列之间共享一个中断。当设置了各个信道时,向网络接口装置通知与各个队列相对应的中断的标识,并且网络接口装置存储这些标识。网络接口装置可以采用对中断进行断言的多个策略之一,并且可以对各个信道采取不同的策略。在各种情况下,都以触发要被断言的中断的标准来对网络接口装置进行预编程。然后网络接口装置确定是否满足这些标准,如果满足,则它对中断进行断言。如下是可用策略的示例a、如果队列中有数据,则对中断进行断言;b、如果任何事件留在队列中超过了预定时间,则对中断进行断言;c、如果队列保持非空超过同一预定时间或另一预定时间,则对中断进行断言。
可以使用这些策略的混合策略。驱动器或传输库在清空其队列时或者在从队列中去掉数据时,可以清除中断。
如果事件留在队列中经过一段较长时间,则可能是这种情况因为与该队列相关联的应用、驱动器或传输库发生故障或者被终止或被解调度(deschedule),所以该队列被卡住。因此,在如以上的a至c所列出的情况下,代替发出要由相应队列与之相关联的实体进行处理的中断,网络接口装置向队列中的另一个(优选地为控制信道的队列)发出事件(可选地还有相关联的中断)。该事件可以指示其性质(即被卡住队列的指示)以及被卡住队列的标识。优选地,安排与该队列相关联的实体(优选地为控制实体),诸如驱动器之一,通过访问并释放所指示的队列来响应这种消息。
由网络接口装置传送的事件分为以下几个不同类别(a)管理事件例如表明网络接口装置的物理介质(例如线缆)已改变状态(例如被拔出)的信息。确切地只有一个驱动器来接收和处理管理事件是非常理想的。
(b)传送事件例如表明NDIS驱动器已接收到数据分组或者WDM客户机已在其传入缓冲区(posted buffer)之一中接收到数据的事件。关键的是,将传送事件发送到被配备用来处理特定事件的合适的驱动器或客户机(例如传输库)。
可以通过事件队列绑定来控制(b)和(c)型事件的传送,所述事件队列绑定由引起该事件的行为的传送地址(例如传送的分组的IP头信息)来识别。因此,可以将该事件通过网络接口卡发送到特定事件队列。如果该事件是需要对中断进行断言的类型,那么在向数据处理器施加中断时,两个驱动器都会询问它们的事件队列以及该事件被施加至其队列的驱动器。为了避免溢出,系统保存潜在事件数量的限值,可以在任何时间将该限值传送至队列。
每个用户级虚拟接口都可以将其事件队列与QN(NDIS事件队列)或QW(WDM事件队列)之一进行绑定。在实践中,因为总是期望将来自用户级传输库的管理请求导向WDM驱动器,所以将总是期望与QW绑定。类似地,隐含地依靠上述多功能硬件映射,例如通过PCI槽,向NDIS驱动器分配它自己的虚拟接口,该虚拟接口绑定到事件队列QN。
因此,只要涉及传送,网络接口装置就只支持一种抽象,将NDIS驱动器和所有用户级客户机看作同一抽象的实例。这大大简化了硬件设计。
利用事件传送掩码(mask)可以控制(a)型事件的传送。这类似于标准中断掩码,但其是针对每个多功能装置(在当前情况下是针对NDIS和WDM功能)独立实现的。通过驱动器在其自己的事件传送掩码中设置一位,可有效地与网络接口装置约定处理由该位所指定的事件类型,因而还请求该网络接口装置传送该类型的事件。
在实践中,网络接口装置可以通过数据总线(例如PCI总线)连接到处理器或它要服务的其他单元。当将所述装置连接到所述单元时,该单元通常需要装载对于其操作所必需的驱动器。如上所述,它们可以是两种不同类型的驱动器(例如Windows环境下的WDM和NDIS)。另选地,它们可以是同一类型的可独立操作的驱动器。在支持此点的情况下,优选地,将该装置配置为例如通过即插即用机制来触发所述单元使其装载合适的驱动器。为了实现此点,对于所述单元,该装置可能必需将自身呈现为两个明显独立的装置。
驱动器提供了两个独立信道,通过其可以进行与网络接口装置的通信。优选地,驱动器之一(例如Windows实现中的NDIS驱动器)能够在网络装置和其所服务的单元之间传送业务数据,从而提供了数据信道。优选地,该驱动器还可在网络装置和所述单元之间运送控制数据。另一驱动器(例如Windows实现中的WDM驱动器)能够在网络装置和其所服务的单元之间传送控制数据,从而提供了控制信道。在该驱动器和网络装置之间,可以在任一方向或两个方向上传递控制数据。控制数据可包括对网络装置的命令,用于控制网络装置的操作的目的;和对驱动器的命令,例如用于发起数据信道的开启和关闭,或者报告网络装置的状态,或者报告网络装置与主机计算机的连接。所述另一驱动器可以但不需要能够运送业务数据它可以专门运送控制数据。
如上所述,可以建立另外的数据信道(见图3中存储器映射的硬件接口1...N)。网络接口装置所连接的单元上的应用或其他任务可以触发建立这些信道中的一个。优选地,通过装置的传输库建立这些另外的数据信道,所述装置针对来自应用的请求,可以从操作系统和/或驱动器确定要与该信道相关联的参数,可以将资源分配给该信道并将该信道的详细情况通知给网络接口装置。优选地,在建立了该另外的数据信道之后,网络接口装置可以不通过驱动器地对其进行访问。实现此点的一种手段是提供一存储器,所述另外的数据信道(或者管理这些信道的应用或库)和网络接口装置都可以访问该存储器。这种存储器可以放置在所述装置上,或者更优选地放置在所述装置所服务的单元上,并且数据信道在该存储器上运行。在后一情况下,网络接口装置可以经由总线或通过该网络接口装置连接至所述单元的其他数据路径来访问该存储器。将存储器的区域分开地分配给各个另外的数据信道,并将这些区域的地址通知给网络接口装置,并由网络接口装置存储。当网络接口装置希望将数据(通常为从网络业务得到的数据)传递给另外的数据信道时,它将该数据写到与该数据信道(或者该数据信道的专用于数据接收的部分)相对应的存储器区域,该区域作为该信道的数据缓冲区进行工作。然后,信道可以从该区域读取数据。类似地,当该另外的数据信道希望经由网络接口装置通过网络发送数据时,它可以将该数据写入到该存储器区域(或者该存储器区域的专用于数据发送的部分)。然后,网络接口装置可以从该区域读取数据并通过网络发送该数据。当建立了数据信道时,存储器区域的地址可以由驱动器中的一个进行分配。
数据信道和网络接口装置可以有规律地分别轮询数据接收部分和数据发送部分,以确定是否存在应该从缓冲区清除的接收数据/发送数据。另选地,或另外地,可以提供诸如中断的信令手段,以使各个数据信道和网络接口装置通知另一方数据正等待被读取。更优选地,将由网络接口装置所服务的单元上的一个中断分配给各个另外的数据信道以及各个驱动器。这使网络接口装置可以通过设置合适的中断来向各个驱动器或另外的数据信道通知已将数据放置在该实体的缓冲区中。优选地,提供这样的手段,其使得在数据被读取时各个数据信道和网络接口装置可以控制从另一方到存储器区域的数据流,从而防止崩溃(corruption)。
为了使网络接口装置可以将进入的业务数据分配给合适的数据信道,当每个另外的数据信道建立时分配给其一端口号。将各个另外的数据信道的端口号发送到网络接口装置,在网络接口装置之中存储该数据。网络接口装置分析进入的业务数据以确定其目的地端口,并将其传送给与该端口相对应的另外的数据信道。如果进入的数据的目的地端口与分配给所述另外的数据信道的任何端口都不匹配,那么将其传送给驱动器之一(在优选实施例中传送给可接收业务数据的驱动器)以由该驱动器进行处理。
对于每个事件类型,网络接口装置将仅允许一个驱动器或者允许两个驱动器来设置其事件掩码中的位。对于驱动器而言,没有设置位表示它无法建立对特定事件的控制/管理。例如,两个驱动器都可接收不需要对硬件进行操作的信息管理事件(比如链路速度改变),但是只有一个驱动器可以接收需要该驱动器与硬件进行交互的管理数据(比如链路断开)。因此,在装载驱动器时,通过配置信息(诸如存储在Windows注册表中的数据)将一个驱动器任命为主驱动器,而将另一个驱动器任命为从属驱动器(slavedriver)。主驱动器将向硬件登记所有管理事件,还将执行硬件的日常初始化的启动。从属驱动器将仅登记信息管理事件,并将不会尝试管理硬件的初始化或错误条件。尝试在同一机器上装载两个从属驱动器或两个主驱动器将被解释为配置错误。如果从属驱动器可以从网络接口装置的状态寄存器中检测到没有驱动器对事件进行登记,则从属驱动器可以检测到前者。无法设置事件登记位的主驱动器可以检测到后者。当主驱动器被卸载时,网络接口装置提供DRIVER-UNLOAD(驱动器卸载)信息事件,这提供了一种手段,由此可以向从属驱动器通知它正独自运行,给予从属驱动器请求将其状态更新到主驱动器的机会。因为每个驱动器都可以从网络接口装置的硬件推断出配置其操作所需的状态信息,所以该机制减少了在驱动器之间进行通信的需要,并且即使在系统配置信息不正确的情况下也可以正确地操作。
上述机制使两个独立装置驱动器能够有效地管理同一硬件,并且不需要链接或共享状态。然而存在某些情况,在这些情况下可能期望一个驱动器向另一个驱动器发送信息。这是通过以下方式实现的网络接口装置提供这样的功能,该功能使每个驱动器的事件队列能够作为由另一驱动器发送的控制事件的目的地而被寻址。在从所连接的数据处理装置接收到这种事件时,网络接口装置将该事件本地传送给合适的事件队列。例如,可以是这种情况WDM驱动器要求由经NDIS驱动器处理过的ARP分组返回的MAC地址信息。NDIS驱动器的一扩展(extension)将使用本地事件传送机制把ARP信息传送给WDM驱动器。
图5示出了此过程的示例。参照图5中的步骤,这些步骤可以是如下的步骤(i)用户级传输可以直接发送ARP请求(或者可以请求WDM驱动器发送ARP请求)(ii)将ARP响应(其为没有用户级句柄的标准以太网分组)与数据传送事件一起传送到NDIS驱动器。NDIS驱动器通过其传送链将该ARP分组推送至OS ARP协议代码,该协议代码管理系统所持有的ARP高速缓冲存储器。
(iii)NDIS驱动器还将ARP更新事件发送到WDM驱动器(iv)WDM驱动器以该信息对用户级传输作出响应应该注意的是,该机制不需要存在NDIS驱动器。如果不存在NDIS驱动器,则WDM可以简单地管理ARP直接应答。此外,在两个驱动器都还存在的情况下,用户级传输可以通过正常系统装置查询ARP信息,虽然性能会下降。
可以将网络接口装置实施为网络接口卡。另选地,可以将网络接口装置实施在可位于主机中的集成电路上,或者可以将其嵌入其他数据处理设备中。该主机装置可以是计算机,例如个人计算机或服务器。
网络接口装置能够通过数据网络与其他网络装置通信。这些装置可以是其他网络接口装置、专用网络终端装置、或诸如路由器或交换机的网络基础设施装置。
通过指定保存信息的存储器缓冲区的地址,控制事件还可以传递更长的信息块。
由此,申请人将在此描述的各个单独的特征以及两个或更多个这种特征的任意组合孤立地公开到以下程度,即,使本领域的技术人员根据公有的一般知识基于整个本说明书能够执行这些特征或组合,而不管这些特征或特征的组合是否解决在此公开的任何问题,并且不限制权利要求的范围。申请人指出,本发明的多个方面可由任何这种单独特征或特征的组合所组成。考虑到前面的描述,对本领域的技术人员显而易见的是,可以在本发明的范围内进行各种修改。
权利要求
1.一种网络接口装置,该网络接口装置能够与支持操作系统和至少一个应用的数据处理系统进行通信,该网络接口装置通过以下信道与所述操作系统进行通信两个或更多个数据信道,每个数据信道都可由所述网络接口装置单独寻址,并且都能够在所述网络接口装置和所述数据处理装置之间运送应用级数据;以及控制信道,其可由所述网络接口装置单独寻址,并且能够在所述数据处理系统和所述网络接口装置之间运送控制数据,所述控制数据定义命令,所述网络接口响应于通过所述控制信道发送的至少一个命令来建立至少一个附加的这种数据信道。
2.根据权利要求1所述的网络接口装置,其中,所述网络接口装置能够向所述数据处理系统发送用于所述控制信道和至少一个所述数据信道的独立中断消息。
3.根据权利要求1或2所述的网络接口装置,其中,所述网络接口装置具有可分配给要由所述网络接口装置执行的任务的一组资源,并且响应于通过所述控制信道发送的至少一个命令来改变对要由所述网络接口装置执行的任务的资源分配。
4.根据权利要求3所述的网络接口装置,其中,所述资源包括硬件资源。
5.根据权利要求3或4所述的网络接口装置,其中,所述网络接口装置能够支持与另一网络装置的通信链路,并且所述资源包括该链路的状态。
6.根据权利要求3至5中任一项所述的网络接口装置,其中,所述网络接口装置能够根据预定义的过滤条件,对通过一个或更多个所述数据信道进行传送的数据进行过滤,并且所述资源包括所述过滤条件。
7.根据前述权利要求任一项所述的网络接口装置,其中,所述数据信道中的至少一个能够运送定义命令的控制数据,并且所述网络接口响应于这些命令来配置所述网络接口装置的状态。
8.根据权利要求7所述的网络接口装置,其中,所述网络接口装置能够在不建立控制信道的情况下支持与另一网络接口装置的通信链路。
9.根据前述权利要求任一项所述的网络接口装置,其中,所述数据信道中的至少一个可根据网络装置标识规范(NDIS)接口进行操作。
10.根据前述权利要求任一项所述的网络接口装置,其中,所述控制信道可根据视窗装置模型(WDM)进行操作。
11.根据前述权利要求任一项所述的网络接口装置,其中,所述网络接口装置能够支持与另一网络接口装置的通信链路,并且能够将通过所述数据信道之一接收到的应用级数据通过所述链路进行发送。
12.根据前述权利要求任一项所述的网络接口装置,其中,所述网络接口装置能够支持与另一网络接口装置的通信链路,并且能够将通过所述链路接收到的数据通过数据信道进行发送。
13.根据权利要求12所述的网络接口装置,其中,所述网络接口卡能够以数据分组的形式通过所述数据信道发送和/或接收数据。
14.根据权利要求13所述的网络接口装置,其中,所述网络接口卡能够以互联网协议分组的形式通过所述数据信道发送和/或接收数据。
15.根据前述权利要求任一项所述的网络接口装置,其中,所述装置能够产生多种类型的状态报告消息,并且能够从各个信道接收要将哪个状态报告消息发送到该信道的指示,并且所述装置被配置为仅向各个信道发送与从该信道接收到的所述指示所指出的类型相匹配的那些状态报告消息。
16.根据权利要求15所述的网络接口装置,其中,所述指示是掩码,在该掩码中,一位对应于状态报告消息的一种类型,并且位的第一值指示应该将对应类型的状态报告消息发送到相应信道,而位的第二值指示不应该将对应类型的状态报告消息发送到相应信道。
17.根据前述权利要求任一项所述的网络接口装置,其中,每个数据信道支持一事件队列,并且将所述网络接口配置为将事件消息施加到信道的事件队列,以将数据传送到所述信道。
18.根据权利要求17所述的网络接口装置,其中,各个数据信道都能够通过由数据处理系统从所述网络接口装置接收到的中断而被触发,以从其所支持的事件队列中读取数据,并且所述网络接口装置能够向所述数据处理系统施加这种中断。
19.根据权利要求18所述的网络接口装置,其中,每个信道都能够通过单个中断被这样触发。
20.根据权利要求19所述的网络接口装置,其中,将所述网络接口装置配置为,如果所述事件队列包括事件消息,则施加所述中断。
21.根据权利要求19所述的网络接口装置,其中,将所述网络接口装置配置为,如果所述事件队列包括超过预定数量的事件消息,则施加所述中断。
22.根据权利要求19所述的网络接口装置,其中,将所述网络接口装置配置为,如果一事件消息包括在所述事件队列中已超过了预定时长,则施加所述中断。
23.根据权利要求19所述的网络接口装置,其中,将所述网络接口装置配置为,如果从所述事件队列空无消息起经过了长于预定时长,则施加所述中断。
24.根据前述权利要求任一项所述的网络接口装置,其中,将所述网络接口装置配置为,在停用控制信道时向所述或各个数据信道发送指示停用所述控制信道的消息。
25.根据前述权利要求任一项所述的网络接口装置,其中,将所述网络接口装置配置为,为能够接收控制消息的各个信道存储数据集,所述数据集针对多种类型的控制消息,指示这些类型的控制消息中的哪些要发送到该信道,并且将所述网络接口装置配置为根据存储的数据集将控制消息发送到这些信道。
26.根据前述权利要求任一项所述的网络接口,其中,将所述网络装置配置为,在从所述多个信道中的一个信道接收到了表明请求将数据施加到所述多个信道中的另一信道的消息时,将所述数据施加到所述多个信道中的所述另一信道。
27.一种根据前述权利要求任一项所述的网络接口,以及所述数据处理系统。
28.根据权利要求24所述的网络接口和数据处理系统,其中,将所述数据处理系统配置为,为每个信道存储该信道是数据信道还是控制信道的指示。
29.一种通过支持操作系统和至少一个应用的数据处理系统与网络接口装置进行通信的方法,该方法包括以下步骤建立两个或更多个数据信道,每个数据信道都可由所述网络接口装置单独寻址,并且都能够在所述网络接口装置和所述数据处理装置之间运送应用级数据;以及建立控制信道,其可由所述网络接口装置单独寻址,并且能够在所述网络接口装置之间运送控制数据,所述控制数据定义命令,所述网络接口响应于通过所述控制信道发送的至少一个命令来建立至少一个附加的数据信道。
30.一种通过支持操作系统和至少一个应用的数据处理系统与网络接口装置进行通信的方法,该方法包括以下步骤建立一个或更多个信道,每个信道都能够在所述网络接口装置和所述数据处理装置之间运送数据;从所述信道中的一个信道向另一个信道发送表明所述一个信道的状态和/或能力的数据;以及基于该发送的数据,确定用哪个信道担当用于在所述网络接口装置之间运送控制数据的控制信道,以及用哪个信道担当用于在所述网络接口装置和所述数据处理装置之间运送应用级数据的数据信道。
31.一种能够通过以下信道与网络接口装置进行通信的操作系统数据信道,其能够在所述网络接口装置和所述数据处理装置之间运送应用级数据;以及控制信道,其能够在网络接口装置之间运送控制数据,所述控制数据定义命令,所述网络接口响应于通过所述控制信道发送的至少一个命令来建立至少一个附加的数据信道;所述数据信道和所述控制信道由所述操作系统的分立的驱动器空间所支持。
32.根据权利要求31所述的操作系统,其中,将所述操作系统配置为,针对从所述网络接口装置接收的用于所述控制信道和所述数据信道中的至少一个的中断消息,独立地进行反应。
全文摘要
本发明提供了一种双驱动器接口。一种能够与支持操作系统和至少一个应用的数据处理系统进行通信的网络接口装置,该网络接口装置通过以下信道与所述操作系统通信两个或更多个数据信道,每个数据信道都可由所述网络接口装置单独寻址,并且都能够在所述网络接口装置和所述数据处理装置之间运送应用级数据;以及控制信道,其可由所述网络接口装置单独寻址,并且能够在所述网络接口装置之间运送控制数据,所述控制数据定义命令,所述网络接口响应于通过所述控制信道发送的至少一个命令来建立至少一个附加的数据信道。
文档编号G11C5/00GK1934552SQ200580006574
公开日2007年3月21日 申请日期2005年3月2日 优先权日2004年3月2日
发明者史蒂夫·莱斯利·波普, 大卫·詹姆士·里多克 申请人:五级网络公司