IP Library Granted Patent US 7,921,431
Granted Patent B2
US 7,921,431 · App. 11/336,032 · Granted Apr 5, 2011

N-port virtualization driver-based application programming interface and split driver implementation

View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,921,431
App. No.
11/336,032
Granted
Apr 5, 2011
Kind
B2
Abstract

An API in an NPIV-compatible SAN is disclosed that includes functions for creating a vlink, replicating driver software for managing the vlink, monitoring resources in an HBA, or removing a target so that resources can be freed up for other vlinks. The API is part of a driver that communicates with a host OS and also communicates with an HBA to establish the vlinks between the host OS and FC devices. To create vlinks, an “add” function in the API is called by the OS. In addition, when a new vlink is created, a single version of an HBA interface function block is maintained in the driver, but a discovery function block, SCSI bus function block, and I/O function block are all duplicated, forming one logical vlink driver for each vlink. To obtain HBA resource information, a resource monitoring functions in the API may be called by the OS.

Claims (92)

1. A non-transitory storage medium storing an Application Programming Interface (API), the API including one or more functions which, when installed in a host computer executing at least one host Operating System (OS) and driver software and coupled to a Host Bus Adapter (HBA), and when called by the host OS and executed by a processor in the host computer, causes the processor to perform the steps of:

determining if the HBA is coupled to a Fibre Channel (FC) fabric;

determining if the fabric supports N_Port ID Virtualization (NPIV);

instantiating a FC link (vlink) if the HBA is coupled to the FC fabric and the FC fabric supports NPIV; and

in response to the instantiation of the vlink, replicating selected driver software to provide replicated driver software for managing the instantiated vlink and enabling the vlink to interact with the host OS, the replicated driver software forming a logical vlink driver for the instantiated vlink, wherein both the selected driver software and the replicated driver software are in shared communication with the HBA.

2. The non-transitory storage medium as recited in claim 1 , wherein the driver software includes a HBA interface function block, a discovery function block, a Small Computer System Interconnect (SCSI) bus function block, and an Input/Output (I/O) function block, and the selected driver software comprises the discovery function block, the SCSI bus function block, and the I/O function block.

3. The non-transitory storage medium as recited in claim 1 , wherein at least one of the functions, when called, further causes the processor to perform the step of gathering information about the maximum and available resources of the HBA.

4. The non-transitory storage medium as recited in claim 3 , wherein at least one of the functions, when called, further causes the processor to perform the step of gathering information about the maximum and available Report Port Index (RPI) resources of the HBA.

5. The non-transitory storage medium as recited in claim 3 , wherein at least one of the functions, when called, further causes the processor to perform the step of gathering information about the maximum and available eXchange Resource Index (XRI) resources of the HBA.

6. The non-transitory storage medium as recited in claim 1 , wherein the step of instantiating a vlink comprises:

receiving information about the HBA that the vlink is to be created on, and a World-Wide Port Name (WWPN) to be associated with the vlink;

calling the driver software to instantiate a virtual Small Computer System Interconnect (SCSI) bus;

associating the virtual SCSI bus with the vlink; and

returning a pointer to the virtual SCSI bus.

7. The non-transitory storage medium as recited in claim 1 , wherein at least one of the functions, when called, further causes the processor to perform the step of gathering information about one or more of:

a FC address and a World-Wide Port Name (WWPN) to be associated with the vlink; an active or inactive state of the vlink; and

if the vlink is or was inactive, a cause of the failure.

8. The non-transitory storage medium as recited in claim 1 , wherein at least one of the functions, when called, further causes the processor to perform the step of deleting a vlink.

9. The non-transitory storage medium as recited in claim 1 , wherein at least one of the functions, when called, further causes the processor to perform the step of removing a target.

10. The non-transitory storage medium as recited in claim 9 , wherein the step of removing a target comprises:

initiating the cessation of communications with the target;

removing the target from the instantiated vlink; and

releasing an Report Port Index (RPI) resource so that it can be made available to other vlinks.

11. The non-transitory storage medium as recited in claim 2 , wherein the HBA interface function block communicates with registers in the HBA and passes data between the HBA and the host OS.

12. The non-transitory storage medium as recited in claim 2 , wherein the discovery function block performs discovery operations comprising:

locating devices on the vlink;

determining if the located devices are FC/SCSI devices; and

establishing a connection between the devices and the HBA.

13. The non-transitory storage medium as recited in claim 2 , wherein the SCSI bus function block exports the vlink as a SCSI bus to the OS.

14. The non-transitory storage medium as recited in claim 2 , wherein each logical vlink driver causes the processor to perform the steps of:

discovering FC targets on the vlink;

logging into the FC fabric; and

presenting a FC address associated with the vlink as a SCSI bus to the OS.

15. The non-transitory storage medium as recited in claim 2 , when called by the host OS and executed by the processor in the host computer, causes the processor to perform the step of replicating the selected driver software within a single host OS.

16. The non-transitory storage medium as recited in claim 2 , when called by the host OS and executed by the processor in the host computer, causes the processor to perform the step of replicating the selected driver software within multiple host OSs.

17. The non-transitory storage medium as recited in claim 16 , wherein the HBA interface function block is located in a host OS that is different from the multiple host OSs containing the replicated selected driver software.

18. A Storage Area Network (SAN) comprising at least one host computer having the API of claim 1 installed within.

19. In a host computer executing at least one host Operating System (OS) and driver software and coupled to a Host Bus Adapter (HBA), a method comprising:

determining if the HBA is coupled to a Fibre Channel (FC) fabric;

determining if the HBA supports N_Port ID Virtualization (NPIV);

instantiating a FC link (vlink) if the HBA supports NPIV; and

in response to the instantiation of the vlink, replicating selected driver software to provide replicated driver software for managing the instantiated vlink and enabling the vlink to interact with the host OS, the replicated driver software forming a logical vlink driver for the instantiated vlink, wherein both the selected driver software and the replicated driver software are in shared communication with the HBA.

20. The method as recited in claim 19 , wherein the driver software includes a HBA interface function block, a discovery function block, a Small Computer System Interconnect (SCSI) bus function block, and an Input/Output (I/O) function block, and the step of replicating selected driver software comprises replicating the discovery function block, the SCSI bus function block, and the I/O function block.

21. The method as recited in claim 19 , further comprising gathering information about the maximum and available resources of the HBA.

22. The method as recited in claim 21 , further comprising gathering information about the maximum and available Report Port Index (RPI) resources of the HBA.

23. The method as recited in claim 21 , further comprising gathering information about the maximum and available eXchange Resource Index (XRI) resources of the HBA.

24. The method as recited in claim 19 , the step of instantiating a vlink comprising:

receiving information about the HBA that the vlink is to be created on, and a World-Wide Port Name (WWPN) to be associated with the vlink;

calling the driver software to instantiate a virtual Small Computer System Interconnect (SCSI) bus;

associating the virtual SCSI bus with the vlink; and

returning a pointer to the virtual SCSI bus.

25. The method as recited in claim 19 , further comprising gathering information about one or more of:

a FC address and a World-Wide Port Name (WWPN) to be associated with the vlink;

an active or inactive state of the vlink; and

if the vlink is or was inactive, a cause of the failure.

26. The method as recited in claim 19 , further comprising the step of deleting a vlink.

27. The method as recited in claim 19 , further comprising the step of removing a target.

28. The method as recited in claim 27 , the step of removing a target comprising:

initiating the cessation of communications with the target;

removing the target from the instantiated vlink; and

releasing an Report Port Index (RPI) resource so that it can be made available to other vlinks.

29. The method as recited in claim 20 , further comprising performing HBA interface operations for each logical vlink driver by communicating with registers in the HBA and passing data between the HBA and the host OS.

30. The method as recited in claim 20 , further comprising performing discovery operations for the instantiated vlink by:

locating devices on the vlink;

determining if the located devices are FC/SCSI devices; and

establishing a connection between the devices and the HBA.

31. The method as recited in claim 20 , further comprising performing SCSI bus operations for the instantiated vlink by exporting the vlink as a SCSI bus to the OS.

32. The method as recited in claim 20 , further comprising executing each logical vlink driver to perform the steps of:

discovering FC targets on the vlink;

logging into the FC fabric; and

presenting a FC address associated with the vlink as a SCSI bus to the OS.

33. The method as recited in claim 20 , further comprising replicating the selected driver software within a single host OS.

34. The method as recited in claim 20 , further comprising replicating the selected driver software within multiple host OSs.

35. The method as recited in claim 34 , further comprising locating the HBA interface function block in a host OS that is different from the multiple host OSs containing the replicated selected driver software.

36. A non-transitory storage medium storing an Application Programming Interface (API), the API including one or more functions which, when installed in a host computer executing at least one host Operating System (OS) and driver software and coupled to a Host Bus Adapter (HBA), and when called by the host OS and executed by a processor in the host computer, causes the processor to perform the steps of:

determining if the HBA is coupled to a Fibre Channel (FC) fabric;

determining if the fabric supports N_Port ID Virtualization (NPIV); and

gathering information about the maximum and available resources of the HBA, including a Report Port Index (RPI) resource;

determining how many FC links (vlinks) can be created between the HBA and one or more targets connected thereto based on the gathered information;

instantiating a vlink for a target of the one or more targets and allocating at least one RPI resource for the target initiating the cessation of communications with the target;

removing the target from the vlink; and

releasing the RPI resource so that it can be made available to other vlinks.

37. The non-transitory storage medium as recited in claim 36 , wherein at least one of the functions, if called, further causes the processor to perform the step of gathering information about the maximum and available eXchange Resource Index (XRI) resources of the HBA.

38. In a host computer executing at least one host Operating System (OS) and driver software and coupled to a Host Bus Adapter (HBA), a method comprising:

determining if the HBA is coupled to a Fibre Channel (FC) fabric;

determining if the fabric supports N_Port ID Virtualization (NPIV); and

gathering information about the maximum and available resources of the HBA, including a Report Port Index (RPI) resource;

determining how many FC links (vlinks) can be created between the HBA and one or more targets connected thereto based on the gathered information;

instantiating a vlink for a target of the one or more targets and allocating at least one RPI resource for the initiating the cessation of communications with the target;

removing the target from the vlink; and

releasing the RPI resource so that it can be made available to other vlinks.

39. The method as recited in claim 38 , further comprising gathering information about the maximum and available eXchange Resource Index (XRI) resources of the HBA.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE EXECUTION DATE PREVIOUSLY RECORDED AT REEL: 047422 FRAME: 0464. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 6, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0702 →
MERGER Recorded Oct 5, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047422/0464 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2015
From: EMULEX CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 036942/0213 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2014
From: EMULEX DESIGN AND MANUFACTURING CORPORATION
To: EMULEX CORPORATION
Reel/Frame 032087/0842 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 20, 2006
From: SMART, JAMES WINSTON
To: EMULEX DESIGN & MANUFACTURING CORPORATION
Reel/Frame 017556/0539 →