用于与支持多个设备的网络适配器接口的方法、系统和程序的制作方法

文档序号:6505008阅读:166来源:国知局
专利名称:用于与支持多个设备的网络适配器接口的方法、系统和程序的制作方法
背景技术
1.发明领域本发明涉及用于与支持多个设备的网络适配器接口的方法、系统和程序。
2.相关领域描述在网络环境中,主计算机上的网络适配器(诸如以太网卡、光纤信道卡等)接收输入/输出(I/O)请求或对由主机发起的I/O请求的响应。通常,主计算机操作系统包括与网络适配器硬件通信的设备驱动器(device driver),以管理在网络上进行传输的I/O请求。设备驱动器要求大量的主处理器资源来处理对网络适配器的网络传输请求。一种降低主处理器的负荷的技术是使用传输控制协议(TCP)/因特网协议(IP)卸载引擎(TOE),其中TCP/IP协议相关的操作由与设备驱动器形成对比的网络适配器硬件来支持,由此使得主处理器不必执行TCP/IP协议相关的操作。传送协议操作包括用校验和以及其他信息将数据封装为TCP/IP分组(packet),并且解封装从网络上接收的TCP/IP分组,以访问有效载荷(payload)或数据。
网络适配器可以具有针对不同转移协议来处理流量的能力。对于网络适配器所支持的每个协议,主操作系统可以加载不同的软件设备驱动器来使操作系统能够相对于该协议来与网络适配器接口。然后每个设备驱动器会将分组转移到网络适配器,以进行进一步的处理和传输。
附图简要说明现在参考附图,在所有附图中类似的参考数字代表对应的部分

图1示出在其中实现本发明的方面的计算环境;图2根据本发明的实施方案示出由操作系统执行以与网络适配器通信的操作;图3、4、5和6根据本发明的实施方案示出被执行以在操作系统和网络适配器之间进行接口的操作;图7示出可以与所描述的实施方案一起使用的体系结构。
详细描述在以下描述中将参考附图,这些附图构成了描述的一部分,并且图示了本发明的几种实施方案。可以理解,也可以使用其他实施方案并且可以作出结构和操作上的改变,而不偏离本发明的范围。
图1示出在其中可以实现本发明的方面的计算环境。计算机2包括一个或更多个中央处理单元(CPU)4(仅示出一个)、易失性存储器6、非易失性储存设备8、操作系统10,以及与网络上的远程节点通信并从所述远程节点接收数据的网络适配器12。再有,应用程序14在存储器6中执行,并且能够从远程计算机传输和接收分组。计算机2可以包括任何领域内已知的计算设备,例如大型机、服务器、个人计算机、工作站、膝上型计算机、手持式计算机、电话设备、网络装置、虚拟化设备、储存控制器等。可以使用各种领域内已知的CPU 4和操作系统10。存储器6中的程序和数据可以被交换到储存设备8中,作为存储器管理操作的一部分。适配器12所连接到的网络可以包括领域内已知的网络,例如局域网(LAN)、广域网(WAN)、储存区域网(SAN)、因特网和内部网等等。此外,适配器12可以提供网络连接或点对点连接。
一旦检测到网络适配器12的存在,操作系统10可以加载适配器虚拟总线驱动器20,这可以在初始化期间发生,或者在例如即插即用(plug-and-play)设备初始化的情况下动态地发生。虚拟总线驱动器20包括针对操作系统表示网络适配器12的设备接口驱动器。在某些实施方案中,适配器虚拟总线驱动器20将网络适配器12表示为针对操作系统的虚拟总线,例如PCI总线,并且报告在所述虚拟总线上存在着多个虚拟适配器,所有这些适配器都被所述网络适配器支持。虚拟总线上被报告的虚拟设备中的每一个与网络适配器12所支持的不同设备协议相对应,所述设备协议例如iSCSI、卸载的LAN(offloaded LAN)驱动器、非卸载的LAN(non-offloaded LAN)驱动器、光纤信道等等。针对被报告为附接到由适配器虚拟总线驱动器20所表示的虚拟总线的每个设备,操作系统10会加载协议设备驱动器22a、22b、22c。此外,适配器虚拟总线驱动器20会加载设备对象(device object)24a、24b、24c来表示网络适配器12所支持的每个设备。在图1的实施方案中,操作系统10加载三个协议设备驱动器22a、22b、22c。然而,针对网络适配器12所支持的不同转移协议,适配器虚拟总线驱动器20可以进行报告,并且操作系统10响应于此,可以加载任意数量的设备驱动器。
在某些实施方案中,适配器虚拟总线驱动器20会将网络适配器12作为单个总线函数(例如PCI函数)报告给操作系统10,所述网络适配器支持多个协议设备,并且向操作系统12呈现为具有多个附接的协议设备的虚拟总线。设备驱动器22a、22b、22c使用该总线函数(即适配器虚拟总线驱动器20)来访问例如寄存器的网络适配器12硬件的资源,从而控制用于设备的总线函数的设备驱动器承担对全部设备硬件的控制。针对整个网络适配器12提供单个总线函数的实施方案会防止多个设备驱动器执行关于网络适配器12硬件的冲突操作,例如对相同寄存器的写操作等。以这种方式,适配器虚拟总线驱动器协调设备驱动器22a、22b、22c对网络适配器12所支持的所有设备30a、30b、30c的访问。
适配器虚拟总线驱动器20还会实现中断服务例程(routine),当工作完成或失败时,例如当分组被成功地接收或传输时,所述中断服务例程由网络适配器12来通知。适配器虚拟总线驱动器20在总线接口26上与网络适配器12通信,所述总线接口26可以实现领域内已知的总线协议,例如外设部件互连(PCI)总线技术或它的变体,例如PCI Express、PCI-x等等。以这种方式,适配器虚拟总线驱动器20通过生成设备对象24a、24b、24c来仿真针对设备驱动器22a、22b、22c的总线,其中所述设备对象24a、24b、24c仿真附接到由适配器总线驱动器20所仿真的总线的设备。以这种方式,对于操作系统来说,设备驱动器22a、22b、22c与适配器虚拟总线驱动器20进行交互,如同所述适配器虚拟总线驱动器20是总线接口驱动器,所述总线接口驱动器表示具有针对设备对象24a、24b、24c的支持不同通信协议的附接设备的总线,所述设备对象24a、24b、24c表示设备30a、30b、30c。
图1示出支持多个设备30a、30b、30c的网络适配器12,其中每个设备支持一种通信协议,例如因特网小型计算机系统接口(“iSCSI”)、非卸载的LAN驱动器、卸载的LAN驱动器等等。iSCSI协议包括在TCP/IP栈(stack)之上用于在TCP/IP上运载SCSI命令的应用层,并且典型地用于储存网络。使用在这里,术语“iSCSI”是指由IETF(因特网工程任务组)标准主体所定义的iSCSI协议以及该协议的任何变体的句法(syntax)和语义(semantic)。在当前的其中使用iSCSI的储存网络中,分组配置包括以太网封装,所述以太网封装囊括(encapsulate)因特网协议(IP)和传输控制协议(TCP)封装层,并且还囊括包括一条或更多条SCSI命令的iSCSI封装。当分组在任何网络段(链路)上从点流到点时,以太网协议提供链路层的错误校验,以确定数据在链路上传递时是否已经被破坏。iSCSI引擎34a支持iSISC相关处理,例如解封装iSCSI头部以访问其中诸如SCSI数据的数据,并且TCP引擎35a支持被卸载到适配器12上的TCP/IP协议处理。
例如在设备30b中实现的非卸载的LAN,是指其中TCP协议层处理主要在主存储器6中的设备驱动器22b中被支持的实施方案,在提供适配器12上的TCP支持的非卸载的LAN引擎34b中具有较少的TCP/IP支持。例如实现在设备30c中的卸载的LAN,是指其中TCP层处理主要在网络适配器12上的卸载的LAN引擎34c中被支持的实施方案。可以包括提供用于支持不同通信协议处理的引擎的额外的或不同的设备,所述不同通信协议例如基于IP的光纤信道、远程直接存储器访问(RDMA)、光纤信道等等,其中这些额外的协议可以位于TCP之上,或者可以替代TCP使用。此外,对于每一个被支持的通信协议,网络适配器中的一个设备可以支持所述通信协议的卸载的版本,即其中所述协议主要在网络适配器中被支持,并且网络适配器中的另一个设备可以支持所述通信协议的非卸载的版本,即其中所述协议主要在主设备驱动器中被支持。
对于每一个被支持的设备30a、30b、30c,网络适配器12可以具有用于排队从适配器虚拟总线驱动器20接收的分组的协议队列32a、32b、32c,协议传送卸载引擎34a、34b、34c,以及网络协议层36a、36b、36c。网络协议层36a、36b、36c支持通信协议的网络层,例如IP。网络层36a、36b、36c处理网络通信,并且将接收的分组提供给传送协议引擎32a、32b、32c。网络协议层36a、36b、36c可以执行诸如交换和路由、创建用于将数据从节点传输到节点的被称为虚拟电路(virtual circuit)的逻辑路径、路由和转发、寻址、互相连网、错误处理、拥塞控制和分组排序的操作,以及其他领域内已知的网络层操作。物理接口38a、38b提供数据转移通过的电气硬件和组件(component),包括电气组件、线缆等。物理接口可以在铜线、电缆(例如5类电缆)、无线发射机和接收机等上传送数据。设备30a、30b、30c可以共享物理接口38a、38b,或者可替换地,某些设备30a、30b、30c可以被指派为使用具体的物理接口38a、38b。还可以支持额外的通信层,例如处理到分组的目的地的物理和逻辑连接(例如以太网协议处理)的定义网络上数据格式的数据链路层、会话层、表示层和应用层。
此外,图1针对每个设备协议示出一个协议队列30a、30b、30c,用于缓冲针对该设备接收的分组。然而,在替换的实施方案中,可以使用一个队列来缓冲针对不同设备和传送卸载引擎32a、32b、32c的分组。此外,网络协议层36a、36b、36c可以包括用于所有不同设备30a、30b、30c的单个网络协议层组件,而不是如图1中所示的分开的多个网络协议层。
图2示出一旦检测到(在框100)网络适配器12在总线26上的存在,操作系统12执行的操作。操作系统12可以在初始化期间巡查(walk)总线26以检测所有设备时检测网络适配器12,或者可以在初始化之后动态地检测网络适配器12。一旦检测到网络适配器12,操作系统12加载(在框102)并调用适配器虚拟总线驱动器20。
然后,控制前进到图3,图3表示当适配器虚拟总线驱动器20被操作系统10调用(框150)时所述适配器虚拟总线驱动器20执行的操作。一旦被初始调用(在框150),适配器虚拟总线驱动器20通过设置寄存器等操作初始化(在框152)网络适配器12硬件。如果(在框154)初始化未成功,则向操作系统10报告(在框156)初始化失败。否则,如果初始化成功,则适配器虚拟总线驱动器20读取(在框158)网络适配器12硬件配置设置,以确定网络适配器12所支持的设备30a、30b、30c。协议可以被对应驱动器22a、22b、22c以及硬件30a、30b、30c支持。一旦确定被支持的设备,虚拟总线驱动器20针对在网络适配器12中被支持的每个确定的设备30a、30b、30c创建(在框160)设备对象24a、24b、24c。设备对象24a、24b、24c会针对操作系统12将确定的设备30a、30b、30c表示为附接到由适配器虚拟总线驱动器20表示的虚拟总线上的虚拟设备。虚拟总线驱动器20还会将由设备对象24a、24b、24c表示的子虚拟设备(child virtual device)(包括它们的即插即用和功率管理相关性(dependency))向操作系统10报告(在框162)为附接到所述虚拟总线。
在某些即插即用实施方案中,适配器虚拟总线驱动器20可以将被支持的设备报告为依赖于虚拟总线,即该设备由所述虚拟总线驱动器支持。这种被报告的相关性会防止操作系统10在移除针对网络适配器12所支持的所有虚拟设备而被加载的所有相关子设备驱动器22a、22b、22c之前动态地移除适配器虚拟总线驱动器20,所述所有虚拟设备被报告为依赖于虚拟总线驱动器22。此外,虚拟总线驱动器20可以向操作系统10功率管理装置报告,只要相关的设备驱动器22a、22b、22c栈中的任何设备处于完全功率状态下,操作系统12功率管理器就不能将由适配器虚拟总线驱动器20表示的虚拟总线(即网络适配器10)置为较低功率状态。这会要求操作系统12功率管理器在试图将由适配器虚拟总线驱动器20表示的设备(即虚拟总线)置为较低功率状态之前,将所有相关的设备驱动器22a、22b、22c栈置为较低功率状态。因此,操作系统10必须对所有被网络适配器12支持的设备30a、30b、30c执行可以影响整个适配器12的状态改变操作,例如动态地移除设备驱动器或功率改变,其中所述设备30a、30b、30c对于操作系统来说呈现为在虚拟总线之后的单独的虚拟设备。此外,一旦设备可获得,虚拟适配器总线驱动器12可以针对该新检测到的设备动态地加载设备驱动器和设备对象。
关于图2,在调用适配器虚拟总线驱动器20进行初始化后,一旦操作系统12从驱动器20接收到(在框104)响应,如果(在框106)虚拟总线驱动器20的加载和初始化未成功,则适配器虚拟总线驱动器20被解加载(unload)(在框108);否则,操作系统10针对每个被报告的在网络适配器12中被支持的设备加载(在框110)设备驱动器22a、22b、22c,操作系统12将所述设备驱动器22a、22b、22c视为由虚拟总线上的设备对象24a、24b...24cn所表示的虚拟设备,所述虚拟总线由适配器虚拟总线驱动器20表示。
图4示出一旦从设备驱动器22a、22b、22c中的一个接收到(在框200)要发送给网络适配器12所支持的一个设备30a、30b、30c的分组,适配器虚拟总线驱动器20执行的操作。该分组可以寻址到表示该分组被引导到的虚拟设备的设备对象24a、24b、24c。适配器虚拟总线驱动器20会确定(在框202)网络适配器12中的设备队列32a、32b、32c,所述设备队列32a、32b、32c针对由设备对象24a、24b、24c表示的设备排队分组。然后适配器虚拟总线驱动器20将接收的分组写(在框204)到确定的队列32a、32b、32c,并且向网络适配器12发信号通知(在框206)要处理的分组。这会导致所述分组被引导到的设备30a、30b、30c中的传送卸载引擎34a、34b、34c来处理队列32a、32b、32c中的分组,并且将所述分组转发到对应的网络协议层36a、36b、36c,以在网络18上传输。
图5示出一旦从网络适配器12接收到(在框250)关于分组传输(例如成功、失败等)的通知,适配器虚拟总线驱动器20执行的操作。适配器虚拟总线驱动器20会确定(在框252)网络适配器12中生成所述分组的设备30a、30b、30c,并且确定(在框254)针对该所确定的传输所述分组的设备的设备驱动器22a、22b、22c。然后调用(在框256)所确定的设备驱动器22a、22b、22c的完成回叫处理程序(completion callback handler),以向所确定的设备驱动器通知该分组传输的状态。
图6示出一旦从网络适配器12接收到(在框280)要传输到操作系统12的分组,适配器虚拟总线驱动器20执行的操作。响应于此,适配器虚拟总线驱动器20确定(在框282)网络适配器中作为接收的分组的目标的设备30a、30b、30c,在计算机2中所述设备30a、30b、30c由设备对象24a、24b、24c表示,并且确定(在框284)针对发送所述分组的设备的设备驱动器22a、22b、22c。然后,适配器虚拟总线驱动器20调用(在框286)所确定的设备驱动器22a、22b、22c来处理所述分组。例如,实现在适配器虚拟总线驱动器20代码中的中断服务例程可以直接地或者通过操作系统12(例如通过终端服务例程处理程序)发信号通知所确定的设备驱动器22a、22b、22c在存储器中有可供处理的分组,其中网络适配器12可以直接将分组写到存储器6中指定的缓冲区。
在额外的实施方案中,网络适配器12可以被配置,从而使每个物理接口专用于不同的设备,例如一个iSCSI端口、一个LAN端口等。在这样的情况下,适配器虚拟总线驱动器20会向操作系统报告,表示网络适配器12的虚拟总线包括该网络适配器被配置所针对的每个设备,即两个iSCSI适配器,或一个iSCSI适配器一个LAN适配器等等。终端用户可以编程网络适配器,以将不同的设备(即协议)与不同的端口相关联。在这样的配置之后,适配器虚拟总线驱动器20会向操作系统12报告虚拟总线之后的新设备配置,以导致操作系统12随后移除或加载额外的设备驱动器来支持虚拟总线之后的所述虚拟设备。此外,在某些实施方案中,该重新配置可以动态地执行而无需系统重引导。
额外的实施方案细节通过使用标准的编程和/或工程技术来产生软件、固件、硬件或它们的组合,可以将这里所描述的用来接口操作系统和设备的实施方案实现为一种方法、装置或制品。使用在这里,术语“制品”是指在硬件逻辑(例如,集成电路芯片、可编程门阵列(PGA)、专用集成电路(ASIC)等)或者计算机可读介质(例如磁存储介质(例如硬盘、软盘、磁带等)、光存储设备(CD-ROM、光盘等)、易失性和非易失性存储器件(例如EEPROM、ROM、PROM、RAM、DRAM、SDRAM、固件、可编程逻辑等)上实现的代码或逻辑。在计算机可读介质中的代码可由处理器来访问并执行。还可以通过传输介质,或者通过网络从文件服务器访问其中实现了优选实施方案的代码。在这些情形中,其中实现了代码的制品可以包括传输介质,例如网络传输线,无线传输介质,通过空间、无线电波、红外信号等传播的信号等。因此,“制品”可以包括代码在其中实施的介质。此外,“制品”可以包括代码在其中实施、处理和执行的硬件和软件组件的组合。当然,本领域的技术人员将会认识到,可以对这种配置做出很多修改而不偏离本发明的范围,并且所述制品可以包括在本领域中公知的任何承载信息的介质。
在所描述的实施方案中,某些操作被描述为由设备驱动器22a、22b、22c和协议引擎34a、35a、35b、35c执行。在替换的实施方案中,被描述为由设备驱动器执行的操作可以由设备传送卸载引擎执行,反之亦然。
在所描述的实施方案中,在网络适配器卡处通过网络从远程计算机接收分组。在替换的实施方案中,由传送协议层或设备驱动器处理的所述接收和传输的分组可以从在设备驱动器和传送协议驱动器的执行所在的相同计算机中执行的单独过程来接收。
在某些实现中,设备驱动器和网络适配器实施方案可以被包括在包括例如SCSI、集成驱动电子设备(IDE)、冗余独立磁盘阵列(RAID)等控制器的储存控制器的计算机系统中,所述储存控制器管理对诸如磁盘驱动器、磁带介质、光盘等非易失性储存设备的访问。在替换的实现中,网络适配器实施方案可以被包括在不包括储存控制器的系统中,例如在某些网络中心(hub)或交换机中。
在某些实现中,网络适配器可以被配置为通过连接到网络适配器上的端口的线缆传输数据。可替换地,网络适配器实施方案可以被配置为通过诸如无线LAN、蓝牙等的无线网络或连接传输数据。
所描述的虚拟总线驱动器用于使操作系统与支持多个设备或协议的网络适配器接口。在替换的实施方案中,虚拟总线驱动器可以用于与设备而非本身支持不同设备的网络适配器接口。例如,所描述的虚拟总线驱动器可以用于与支持单独的储存设备协议的储存控制器接口。
在所描述的实施方案中,每个协议引擎,例如34a、35a、34b、34c,能够使用通信协议和分组传输协议来处理分组,所述通信协议诸如iSCSI、卸载的LAN、非卸载的LAN,所述分组传输协议例如TCP/IP。在替换的实施方案中,可以使用不同于TCP/IP的分组传输协议来传输实现其他协议的分组。
在所描述的实施方案中,在TCP/IP分组传输协议上运行的通信协议包括iSCSI、卸载的LAN、非卸载的LAN。在替换的实施方案中,可以包括其他通信协议,例如光纤信道、SCSI等。
所示出的图2、3、4、5和6的逻辑示出以某顺序发生的某些事件。在替换的实施方案中,可以以不同的顺序执行某些操作,可以修改或移除某些操作。此外,可以向上述逻辑增加步骤,并且仍然符合所描述的实施方案。此外,这里描述的操作可以顺序地发生,或者某些操作可以并行地处理。此外,操作可以由单个处理单元或分布式处理单元执行。
图7示出图1中的计算机的计算机体系结构300的一种实现。体系结构300可以包括处理器302(例如微处理器)、存储器304(例如易失性存储器设备)和储存设备306(例如非易失性储存设备,例如磁盘驱动器、光盘驱动器、磁带驱动器等)。储存设备306可以包括内部储存设备,或附接的或网络可访问的储存设备。储存设备306中的程序以本领域内已知的方式被加载到存储器304中并被处理器302执行。体系结构还包括网络卡308,以使能(enable)与诸如以太网、光纤信道仲裁环路(Fibre Channel Arbitrate Loop)等的网络进行通信。此外,在某些实施方案中,体系结构可以包括视频控制器309,以在显示监视器上呈递信息,其中视频控制器309可以被实现在视频卡上,或者集成到安装在主板上的集成电路组件上。如所讨论的,网络设备中的一些可以具有多个网络卡。输入设备310用于向处理器302提供用户输入,并且可以包括键盘、鼠标、手写笔(pen-stylus)、麦克风、触敏显示屏或任何其他本领域内已知的激活或输入机制。输出设备312能够呈递传输自处理器302或诸如显示监视器、打印机、储存设备等的其他组件的信息。
网络适配器12可以被实现在诸如外设部件互连(PCI)卡或一些其他I/O卡的网络卡上,或者可以被实现到安装在主板上的集成电路组件上。
出于图示和描述的目的已给出了对本发明各种实施方案的以上描述。这些描述不是要成为穷尽性的,或者将本发明限制为所公开的精确形式。按照以上教导,很多修改和变化都是可能的。本发明的范围是要由这一详细描述来限定,而是想用所附的权利要求书来限定。以上说明书、实施例和数据提供了生产和使用本发明的构成的完整描述。由于在不偏离本发明的精神和范围的情况下可以实现本发明的很多实施方案,所以本发明由所附的权利要求书来限制。
权利要求
1.一种用于与支持多个设备的设备硬件接口的方法,所述方法包括初始化设备接口驱动器,以针对操作系统将所述设备硬件表示为虚拟总线,并且针对所述操作系统将在所述设备硬件中被支持的每个设备表示为附接到所述虚拟总线的设备;初始化所述设备硬件;访问所述设备硬件,以确定被所述设备硬件支持的设备;针对被所述设备硬件支持的每个确定的设备生成一个设备对象,其中每个生成的设备对象针对所述操作系统表示所述确定的设备;以及向所述操作系统报告所述确定的设备,其中所述操作系统针对被所述设备硬件支持的所述被报告的设备中的每一个加载设备驱动器。
2.如权利要求1所述的方法,还包括向所述操作系统报告所述确定的设备依赖于所述虚拟总线,其中响应于被通知所述确定的设备和虚拟总线相关,所述操作系统将不移除表示所述虚拟总线的所述设备接口驱动器,直到与所述确定的设备相关联的所述设备驱动器被移除。
3.如权利要求1所述的方法,还包括向所述操作系统报告由所述设备接口驱动器表示的所述虚拟总线的功率状态不可以被更改,直到表示附接到所述虚拟总线的设备的所有所述设备驱动器使它们的功率状态被类似地更改。
4.如权利要求1所述的方法,其中所述硬件设备包括网络适配器,并且其中在所述网络适配器中可获得的每个设备支持针对不同通信协议的协议引擎。
5.如权利要求4所述的方法,其中每个协议引擎根据通信协议和网络协议处理分组,其中每个传送引擎支持不同的通信协议,但使用相同的网络协议。
6.如权利要求1所述的方法,还包括从一个设备驱动器接收分组;在所述设备硬件中确定设备队列,所述设备队列针对被与所述设备驱动器对应的所述设备硬件支持的所述设备来排队分组;以及将所述接收的分组写到所述确定的队列。
7.如权利要求1所述的方法,还包括从所述设备硬件接收关于一个分组的传输的通知;针对所述网络适配器中处理过所述分组的所述设备,确定所述设备驱动器;以及将指示从所述设备硬件接收到所述通知的通知传输到所述确定的设备驱动器。
8.如权利要求1所述的方法,还包括接收由所述设备硬件提供的分组的指示;针对被所述网络适配器支持的处理过所述提供的分组的所述设备,确定所述设备驱动器;调用呼叫程序,以使所述确定的设备驱动器处理所述提供的分组。
9.如权利要求1所述的方法,其中所有所述设备驱动器通过所述设备接口驱动器访问被所述设备硬件支持的设备。
10.如权利要求1所述的方法,其中被确定为在所述设备硬件中可获得的所述设备包括比被所述设备硬件支持的所有所述设备少的设备。
11.如权利要求1所述的方法,还包括响应于检测到被所述设备硬件支持的设备的配置中的变化,向所述操作系统发信号通知在所述设备硬件中可获得的设备的所述变化的配置,其中所述操作系统能够加载或解加载设备驱动器,以支持在所述设备硬件中可获得的设备的所述变化的配置。
12.如权利要求1所述的方法,其中初始化所述设备硬件、访问所述设备硬件以确定被所述设备硬件支持的设备、生成所述设备对象以及向所述操作系统报告所述确定的设备的所述操作由所述设备接口驱动器执行。
13.如权利要求1所述的方法,其中一个设备包括支持iSCSI协议和TCP协议的协议引擎,其中一个设备包括支持卸载的LAN协议的协议引擎,并且其中一个设备包括支持非卸载的LAN协议的协议引擎。
14.一种系统,包括处理器;由所述处理器执行的操作系统;支持多个设备的网络适配器;设备接口驱动器,所述设备接口驱动器针对所述操作系统将所述网络适配器表示为虚拟总线,并且针对所述操作系统将在所述设备硬件中被支持的每个设备表示为附接到所述虚拟总线的设备,其中,当所述处理器执行所述设备接口驱动器时,被使能为(i)访问所述网络适配器,以确定被所述网络适配器支持的设备;(ii)针对每个确定的被所述网络适配器支持的设备生成一个设备对象,其中每个生成的设备对象针对所述操作系统表示所述确定的设备;以及(iii)向所述操作系统报告所述确定的设备,其中所述操作系统针对被所述网络适配器支持的所述被报告的设备中的每一个加载设备驱动器,并且其中对所述操作系统来说每个确定的设备被视为附接到所述虚拟总线。
15.如权利要求14所述的系统,其中,当所述处理器执行所述设备接口驱动器时,还被使能为向所述操作系统报告所述确定的设备依赖于所述虚拟总线,其中响应于被通知所述确定的设备和虚拟总线相关,所述操作系统将不移除表示所述虚拟总线的所述设备接口驱动器,直到与所述确定的设备相关联的所述设备驱动器被移除。
16.如权利要求14所述的系统,其中,当所述处理器执行所述设备接口驱动器时,还被使能为向所述操作系统报告由所述设备接口驱动器表示的所述虚拟总线的功率状态不可以被更改,直到表示附接到所述虚拟总线的设备的所有所述设备驱动器使它们的功率状态被类似地更改。
17.如权利要求14所述的系统,其中在所述网络适配器中可获得的每个设备支持针对不同通信协议的协议引擎。
18.如权利要求17所述的系统,其中每个协议引擎根据通信协议处理分组,其中每个协议引擎支持不同的通信协议,但使用相同的网络协议。
19.如权利要求14所述的系统,其中,当所述处理器执行所述设备接口驱动器时,还被使能为从一个设备驱动器接收分组;在所述网络适配器中确定设备队列,所述设备队列针对被与所述设备驱动器对应的所述设备硬件支持的所述设备来排队分组;以及将所述接收的分组写到所述确定的队列。
20.如权利要求14所述的系统,其中,当所述处理器执行所述设备接口驱动器时,还被使能为从所述网络适配器接收关于一个分组的传输的通知;针对所述网络适配器中处理过所述分组的所述设备,确定所述设备驱动器;以及将指示从所述设备硬件接收到所述通知的通知传输到所述确定的设备驱动器。
21.如权利要求14所述的系统,其中,当所述处理器执行所述设备接口驱动器时,还被使能为接收由所述网络适配器提供的分组的指示;针对被所述网络适配器支持的处理过所述提供的分组的所述设备,确定所述设备驱动器;调用呼叫程序,以使所述确定的设备驱动器处理所述提供的分组。
22.如权利要求14所述的系统,其中所有所述设备驱动器通过所述设备接口驱动器访问被所述网络适配器支持的设备。
23.如权利要求14所述的系统,其中被确定为在所述网络适配器中可获得的所述设备包括比被所述网络适配器支持的所有所述设备少的设备。
24.如权利要求14所述的系统,其中,当所述处理器执行所述设备接口驱动器时,还被使能为响应于检测到被所述设备硬件支持的设备的配置中的变化,向所述操作系统发信号通知在所述设备硬件中可获得的设备的所述变化的配置,其中所述操作系统能够加载或解加载设备驱动器,以支持在所述设备硬件中可获得的设备的所述变化的配置。
25.如权利要求14所述的系统,其中一个设备包括支持iSCSI协议和TCP协议的协议引擎,其中一个设备包括支持卸载的LAN协议的协议引擎,并且其中一个设备包括支持非卸载的LAN协议的协议引擎。
26.一种与网络通信的系统,包括处理器;由所述处理器执行的操作系统;支持多个设备的网络适配器;被包括在所述网络适配器中的至少一个物理接口,所述至少一个物理接口使能所述设备和所述网络之间的分组通信,其中所述至少一个物理接口能够与铜线接口;设备接口驱动器,所述设备接口驱动器针对所述操作系统将所述网络适配器表示为虚拟总线,并且针对所述操作系统将在所述设备硬件中被支持的每个设备表示为附接到所述虚拟总线的设备,其中,当所述处理器执行所述设备接口驱动器时,被使能为(i)访问所述网络适配器,以确定被所述网络适配器支持的设备;(ii)针对每个确定的被所述网络适配器支持的设备生成一个设备对象,其中每个生成的设备对象针对所述操作系统表示所述确定的设备;以及(iii)向所述操作系统报告所述确定的设备,其中所述操作系统针对被所述网络适配器支持的所述被报告的设备中的每一个加载设备驱动器,并且其中对所述操作系统来说每个确定的设备被视为附接到所述虚拟总线。
27.如权利要求26所述的系统,其中,当所述处理器执行所述设备接口驱动器时,还被使能为向所述操作系统报告所述确定的设备依赖于所述虚拟总线,其中响应于被通知所述确定的设备和虚拟总线相关,所述操作系统将不移除表示所述虚拟总线的所述设备接口驱动器,直到与所述确定的设备相关联的所述设备驱动器被移除。
28.一种用于与支持多个设备的设备硬件接口的制品,其中所述制品导致操作被执行,所述操作包括初始化设备接口驱动器,以针对操作系统将所述设备硬件表示为虚拟总线,并且针对所述操作系统将在所述设备硬件中被支持的每个设备表示为附接到所述虚拟总线的设备;初始化所述设备硬件;访问所述设备硬件,以确定被所述设备硬件支持的设备;针对被所述设备硬件支持的每个确定的设备生成一个设备对象,其中每个生成的设备对象针对所述操作系统表示所述确定的设备;以及向所述操作系统报告所述确定的设备,其中所述操作系统针对被所述设备硬件支持的所述被报告的设备中的每一个加载设备驱动器。
29.如权利要求28所述的制品,其中所述操作还包括向所述操作系统报告所述确定的设备依赖于所述虚拟总线,其中响应于被通知所述确定的设备和虚拟总线相关,所述操作系统将不移除表示所述虚拟总线的所述设备接口驱动器,直到与所述确定的设备相关联的所述设备驱动器被移除。
30.如权利要求28所述的制品,其中所述操作还包括向所述操作系统报告由所述设备接口驱动器表示的所述虚拟总线的功率状态不可以被更改,直到表示附接到所述虚拟总线的设备的所有所述设备驱动器使它们的功率状态被类似地更改。
31.如权利要求28所述的制品,其中所述硬件设备包括网络适配器,并且其中在所述网络适配器中可获得的每个设备支持针对不同通信协议的协议引擎。
32.如权利要求31所述的制品,其中每个协议引擎根据通信协议和网络协议处理分组,其中每个传送引擎支持不同的通信协议,但使用相同的网络协议。
33.如权利要求28所述的制品,其中所述操作还包括从一个设备驱动器接收分组;在所述设备硬件中确定设备队列,所述设备队列针对被与所述设备驱动器对应的所述设备硬件支持的所述设备来排队分组;以及将所述接收的分组写到所述确定的队列。
34.如权利要求28所述的制品,其中所述操作还包括从所述设备硬件接收关于一个分组的传输的通知;针对所述网络适配器中处理过所述分组的所述设备,确定所述设备驱动器;以及将指示从所述设备硬件接收到所述通知的通知传输到所述确定的设备驱动器。
35.如权利要求28所述的制品,其中所述操作还包括接收由所述设备硬件提供的分组的指示;针对被所述网络适配器支持的处理过所述提供的分组的所述设备,确定所述设备驱动器;调用呼叫程序,以使所述确定的设备驱动器处理所述提供的分组。
36.如权利要求28所述的制品,其中所有所述设备驱动器通过所述设备接口驱动器访问被所述设备硬件支持的设备。
37.如权利要求28所述的制品,其中被确定为在所述设备硬件中可获得的所述设备包括比被所述设备硬件支持的所有所述设备少的设备。
38.如权利要求28所述的制品,其中所述操作还包括响应于检测到被所述设备硬件支持的设备的配置中的变化,向所述操作系统发信号通知在所述设备硬件中可获得的设备的所述变化的配置,其中所述操作系统能够加载或解加载设备驱动器,以支持在所述设备硬件中可获得的设备的所述变化的配置。
39.如权利要求28所述的制品,其中初始化所述设备硬件、访问所述设备硬件以确定被所述设备硬件支持的设备、生成所述设备对象以及向所述操作系统报告所述确定的设备的所述操作由所述设备接口驱动器执行。
40.如权利要求281所述的方法,其中一个设备包括支持iSCSI协议和TCP协议的协议引擎,其中一个设备包括支持卸载的LAN协议的协议引擎,并且其中一个设备包括支持非卸载的LAN协议的协议引擎。
全文摘要
所提供的为用于与支持多个设备的设备硬件进行接口的方法、系统和程序。设备接口驱动器被初始化,以针对操作系统将设备硬件表示为虚拟总线,并且针对操作系统将在设备硬件中被支持的每个设备表示为附接到虚拟总线的设备。初始化设备硬件,并且访问设备硬件,以确定被设备硬件支持的设备。针对被设备硬件支持的每个确定的设备生成一个设备对象,其中每个生成的设备对象针对操作系统表示确定的设备。向操作系统报告确定的设备,其中操作系统针对被设备硬件支持的被报告的设备中的每一个加载设备驱动器。
文档编号G06F13/10GK1902585SQ200480040311
公开日2007年1月24日 申请日期2004年11月3日 优先权日2003年11月12日
发明者拉杰什·萨赫, 阿尼尔·凯沙瓦默西 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1