IP Library Granted Patent US 7,669,000
Granted Patent B2
US 7,669,000 · App. 11/877,116 · Granted Feb 23, 2010

Host bus adapter with multiple hosts

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,669,000
App. No.
11/877,116
Granted
Feb 23, 2010
Kind
B2
Abstract

A multi-host host bus adapter (HBA) can be connected to multiple host devices to allow the multiple host devices to communicate on a SAN fabric. More specifically, the multi-host HBA provides an interface for multiple SAN hosts without necessitating an HBA on each host, eliminating the need for an on-board HBA on each SAN host. The multi-host HBA interfaces to memory in each SAN host to which it is connected using PCI-Express (or a similar protocol), and communicates with other devices on the SAN fabric using Fibre Channel ports. The multi-host HBA communicates by receiving a command from a connected host, forwarding the command to a processor in the multi-host HBA, and sending the command to a device on a SAN. When the multi-host HBA receives a response from the device on the SAN, the multi-host HBA associates the response with the process and sends the response to the host.

Claims (127)

1. A multi-host device, through which data is transferred between a host device and a network device, configured to convert the data between a host device protocol and a network device protocol, comprising:

a plurality of host device ports, each for interfacing to one host device;

at least one external interface port for interfacing to the network device;

at least one memory controller configured to receive the data from the host device and send an acknowledgement to the host device via at least one of the plurality of host device ports;

a plurality of queues configured to schedule a command interpreted from the data received from the host device;

at least one processor configured to execute the commands in the plurality of queues, comprising:

a plurality of registers, including a register corresponding to each host device;

command logic configured to pass commands to and from the registers; and

execution logic configured to execute the commands in the registers;

a transmit buffer configured to temporarily store the data before it is transferred to the network device via the at least one external interface port; and

a receive buffer configured to temporarily store the acknowledgement before it is transferred to the host device,

wherein to each host device connected to the multi-host device, the multi-host device appears connected to no other host device, and

wherein to the multi-host device, each host device connected to the multi-host device appears distinct from other host devices connected to the multi-host device.

2. The multi-host device of claim 1 , wherein the network device interprets the commands from the plurality of host devices to be sent from a single device.

3. The multi-host device of claim 1 , further comprising an input/output handler (IOH) configured to capture upstream and downstream frames and associate the upstream and downstream frames with the command, wherein the IOH comprises an input/output state table.

4. The multi-host device of claim 1 , wherein the host device communicates with the multi-host device using a PCI-compliant protocol.

5. A network, comprising:

a host device comprising a memory;

a storage unit; and

a fabric, comprising:

a multi-host device through which data is transferred between the host device and the storage unit, configured to transform the data between a host device protocol and a network device protocol, comprising:

a plurality of host device ports, each for interfacing to one host device;

at least one external interface port for interfacing to the network device;

at least one memory controller configured to receive the data from the host device, wherein the data comprises a command;

a plurality of queues configured to schedule the command for execution;

at least one processor configured to execute the command, comprising:

a plurality of registers, including a register corresponding to each host device;

command logic configured to pass the command to and from the registers; and

execution logic configured to execute the command in the registers;

a transmit buffer for temporarily storing the data before it is transferred to the storage unit; and

a receive buffer for temporarily storing an acknowledgement before it is transferred to the host device,

wherein to the host device, the multi-host device appears connected to no other host device; and

wherein to the multi-host device, the host device appears distinct from other devices connected to the multi-host device.

6. The network of claim 5 , wherein the multi-host device comprises a core configured to interface to the host device.

7. The network of claim 5 , wherein the multi-host device comprises an input/output handler (IOH) configured to capture upstream and downstream frames and associate the upstream and downstream frames with the command.

8. The network of claim 5 , wherein the memory in the host device comprises:

a command queue and a completion queue, wherein the command queue and the completion queue are accessed by the multi-host device.

9. The network of claim 5 , wherein the host device comprises a plurality of command registers configured to interface with the multi-host device.

10. The network of claim 5 , wherein the host device communicates with the multi-host device with a PCI-compliant protocol.

11. A blade computer system, comprising:

a blade chassis for receiving at least a plurality of host blades and an interface unit;

first and second host blades installed in said blade chassis; and

an interface unit installed in said blade chassis, said interface unit including a multi-host device through which data is transferred from one of the first host blade and the second host blade to a network device, configured to transform the data between a host blade protocol and a network device protocol, comprising:

a plurality of host blade ports, each for interfacing to one host blade;

at least one external interface port for interfacing to the network device;

at least one memory controller configured to receive the data from the host blade, wherein the data comprises a command;

a plurality of queues configured to schedule the command for execution;

at least one processor configured to execute the command, comprising:

a plurality of registers, including a register corresponding to each host device;

command logic configured to pass the command to and from the registers; and

execution logic configured to execute the command in the registers;

a transmit buffer for temporarily storing the data before it is transferred to the network device; and

a receive buffer for temporarily storing an acknowledgement before it is transferred to the host device,

wherein to the first host blade, the multi-host device appears connected to no other device; and

wherein to the multi-host device, the first host blade appears distinct from the second host blade.

12. The blade computer system of claim 11 , wherein the multi-host device further comprises an input/output handler (IOH) configured to capture upstream and downstream frames and associate the upstream and downstream frames with the command, wherein the IOH comprises an input/output state table.

13. The blade computer system of claim 11 , wherein the host blade communicates with the multi-host device using a PCI-compliant protocol.

14. The blade computer system of claim 11 , wherein the network device interprets the commands from the first and second host blades to be sent from a single device.

15. The blade computer system of claim 11 , wherein the multi-host device comprises a core configured to interface to the host blade.

16. The blade computer system of claim 11 , wherein the memory in each of the first and second host blades comprises:

a command queue and a completion queue, wherein the command queue and the completion queue are accessed by the multi-host device.

17. The blade computer system of claim 11 , wherein the first and second host blades each comprise a plurality of command registers configured to interface with the multi-host device.

18. A multi-host device, through which data is transferred between a host device and a network device, configured to convert the data between a host device protocol and a network device protocol, comprising:

a plurality of host device ports, each for interfacing to one host device;

at least one external interface port for interfacing to the network device;

at least one memory controller configured to receive the data from the host device and send an acknowledgement to the host device via at least one of the plurality of host device ports;

a plurality of queues configured to schedule a command interpreted from the data received from the host device;

at least one processor configured to execute the commands in the plurality of queues, comprising:

a plurality of registers;

command logic configured to pass commands to and from the registers; and

execution logic configured to execute the commands in the registers;

a transmit buffer configured to temporarily store the data before it is transferred to the network device via the at least one external interface port; and

a receive buffer configured to temporarily store the acknowledgement before it is transferred to the host device,

wherein to each host device connected to the multi-host device, the multi-host device appears connected to no other host device,

wherein to the multi-host device, each host device connected to the multi-host device appears distinct from other host devices connected to the multi-host device, and

wherein when the multi-host device receives a repeated command from a host device, the multi-host device returns an acknowledgement of completion of the repeated command to the host device without performing the repeated command.

19. The multi-host device of claim 18 , wherein the network device interprets the commands from the plurality of host devices to be sent from a single device.

20. The multi-host device of claim 18 , further comprising an input/output handler (IOH) configured to capture upstream and downstream frames and associate the upstream and downstream frames with the command, wherein the IOH comprises an input/output state table.

21. The multi-host device of claim 18 , wherein the host device communicates with the multi-host device using a PCI-compliant protocol.

22. A network, comprising:

a host device comprising a memory;

a storage unit; and

a fabric, comprising:

a multi-host device through which data is transferred between the host device and the storage unit, configured to transform the data between a host device protocol and a network device protocol, comprising:

a plurality of host device ports, each for interfacing to one host device;

at least one external interface port for interfacing to the network device;

at least one memory controller configured to receive the data from the host device, wherein the data comprises a command;

a plurality of queues configured to schedule the command for execution;

at least one processor configured to execute the command, comprising:

a plurality of registers;

command logic configured to pass the command to and from the registers; and

execution logic configured to execute the command in the registers;

a transmit buffer for temporarily storing the data before it is transferred to the storage unit; and

a receive buffer for temporarily storing an acknowledgement before it is transferred to the host device,

wherein to the host device, the multi-host device appears connected to no other host device,

wherein to the multi-host device, the host device appears distinct from other devices connected to the multi-host device, and

wherein when the processor receives a repeated command from a host, the processor returns an acknowledgement of completion of the repeated command to the host without performing the repeated command.

23. The network of claim 22 , wherein the multi-host device comprises a core configured to interface to the host device.

24. The network of claim 22 , wherein the multi-host device comprises an input/output handler (IOH) configured to capture upstream and downstream frames and associate the upstream and downstream frames with the command.

25. The network of claim 22 , wherein the memory in the host device comprises:

a command queue and a completion queue, wherein the command queue and the completion queue are accessed by the multi-host device.

26. The network of claim 22 , wherein the host device communicates with the multi-host device with a PCI-compliant protocol.

27. The network of claim 22 , wherein the host device comprises a plurality of command registers configured to interface with the multi-host device.

28. A blade computer system, comprising:

a blade chassis for receiving at least a plurality of host blades and an interface unit;

first and second host blades installed in said blade chassis; and

an interface unit installed in said blade chassis, said interface unit including a multi-host device through which data is transferred from one of the first host blade and the second host blade to a network device, configured to transform the data between a host blade protocol and a network device protocol, comprising:

a plurality of host blade ports, each for interfacing to one host blade;

at least one external interface port for interfacing to the network device;

at least one memory controller configured to receive the data from the host blade, wherein the data comprises a command;

a plurality of queues configured to schedule the command for execution;

at least one processor configured to execute the command, comprising:

a plurality of registers;

command logic configured to pass the command to and from the registers; and

execution logic configured to execute the command in the registers;

a transmit buffer for temporarily storing the data before it is transferred to the network device; and

a receive buffer for temporarily storing an acknowledgement before it is transferred to the host device,

wherein to the first host blade, the multi-host device appears connected to no other device,

wherein to the multi-host device, the first host blade appears distinct from the second host blade, and

wherein when the multi-host device receives a repeated command from a host blade, the multi-host device returns an acknowledgement of completion of the repeated command to the host blade without performing the repeated command.

29. The blade computer system of claim 28 , wherein the multi-host device further comprises an input/output handler (IOH) configured to capture upstream and downstream frames and associate the upstream and downstream frames with the command, wherein the IOH comprises an input/output state table.

30. The blade computer system of claim 28 , wherein the host blade communicates with the multi-host device using a PCI-compliant protocol.

31. The blade computer system of claim 28 , wherein the network device interprets the commands from the first and second host blades to be sent from a single device.

32. The blade computer system of claim 28 , wherein the multi-host device comprises a core configured to interface to the host blade.

33. The blade computer system of claim 28 , wherein the memory in each of the first and second host blades comprises:

a command queue and a completion queue, wherein the command queue and the completion queue are accessed by the multi-host device.

34. The blade computer system of claim 28 , wherein the first and second host blades each comprise a plurality of command registers configured to interface with the multi-host device.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 18, 2018
From: BROCADE COMMUNICATIONS SYSTEMS LLC
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047270/0247 →
CHANGE OF NAME Recorded Dec 13, 2017
From: BROCADE COMMUNICATIONS SYSTEMS, INC.
To: BROCADE COMMUNICATIONS SYSTEMS LLC
Reel/Frame 044891/0536 →
RELEASE OF SECURITY INTEREST Recorded Jan 22, 2015
From: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC
Reel/Frame 034804/0793 →
RELEASE OF SECURITY INTEREST Recorded Jan 21, 2015
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: BROCADE COMMUNICATIONS SYSTEMS, INC.; INRANGE TECHNOLOGIES CORPORATION; FOUNDRY NETWORKS, LLC
Reel/Frame 034792/0540 →
SECURITY AGREEMENT Recorded Jan 20, 2010
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, LLC; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION; MCDATA SERVICES CORPORATION
To: WELLS FARGO BANK, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 023814/0587 →
SECURITY AGREEMENT Recorded Dec 22, 2008
From: BROCADE COMMUNICATIONS SYSTEMS, INC.; FOUNDRY NETWORKS, INC.; INRANGE TECHNOLOGIES CORPORATION; MCDATA CORPORATION
To: BANK OF AMERICA, N.A. AS ADMINISTRATIVE AGENT
Reel/Frame 022012/0204 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 23, 2007
From: SHARMA, PRATEEK; NGUYEN, TONY SONTHE; WALTER, GREGORY S.; VARANASI, SURYA P.
To: BROCADE COMMUNICATIONS SYSTEMS, INC.
Reel/Frame 019999/0879 →