IP Library Granted Patent US 7,953,876
Granted Patent B1
US 7,953,876 · App. 10/651,426 · Granted May 31, 2011

Virtual interface over a transport protocol

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,953,876
App. No.
10/651,426
Granted
May 31, 2011
Kind
B1
Abstract

A method and system comprising a host system and a host bus adapter (HBA). The HBA is configured to handle a Virtual Interface and Transmission Control Protocol (TCP)/Internet Protocol (IP) processing for applications running on the host system.

Claims (54)

1. A method of preparing application data for transmission from a host application across a TCP network, the method comprising:

writing a transmit descriptor in a host memory queue, said transmit descriptor indicating the application data to be transmitted by the host application;

establishing a Transmission Control Protocol (TCP) connection for a Virtual Interface (VI) connection;

notifying a host bus adapter of the transmit descriptor in the host memory queue, said host bus adapter coupled to a host executing said host application, said host including said host memory queue;

initiating a VI context loading task by finding appropriate VI context information from a host bus adapter VI context cache or loading appropriate VI context information from host memory VI context buffers, the VI context information including state information for the TCP and VI connections;

reading the transmit descriptor from the host memory queue and writing into a host bus adapter VI context cache after the VI context information is loaded;

scheduling a Virtual Interface packet for transmission in a TCP packet in response to transferring the application data from a host memory buffer to a host bus adapter packet buffer in accordance with the transmit descriptor; and

transmitting the application data in the TCP packet from said host bus adapter across the TCP network.

2. The method of claim 1 , further comprising storing said application data in one or more host memory buffers in said host, wherein said host bus adapter configured to have access to said one or more host memory buffers.

3. The method of claim 1 , wherein the transmit descriptor includes pointers to one or more host memory buffers that store the application data for transmission.

4. The method of claim 1 , further comprising sending a command to a host bus adapter command processor to establish the Transmission Control Protocol (TCP) connection for the Virtual Interface (VI) connection.

5. The method of claim 1 , further comprising polling a host bus adapter doorbell queue for a new entry indicating the application data is ready for transmission.

6. The method of claim 1 , further comprising loading the VI context state information from a host memory Virtual Interface context cache to the host bus adapter VI context cache.

7. The method of claim 1 , further comprising transferring the application data from a host memory to a host bus adapter memory via direct memory access.

8. The method of claim 1 , further comprising preparing a plurality of Virtual Interface packets for transmission for a plurality of Virtual Interface connections corresponding to a plurality of TCP connections.

9. The method of claim 1 , further comprising using a round robin method to schedule a plurality of Virtual Interface packets for transmission for a plurality of Virtual Interface connections corresponding to a plurality of TCP connections.

10. The method of claim 1 , further comprising notifying the host application that the transmit descriptor has been processed.

11. The method of claim 1 , further comprising scheduling the TCP packet for transmission.

12. The method of claim 1 , further comprising retransmitting the TCP packet.

13. The method of claim 1 , further comprising performing TCP protocol processing in the host bus adapter.

14. The method of claim 1 , further comprising forming a media access control (MAC) descriptor for transmitting the application data over a MAC layer.

15. The method of claim 14 , further comprising posting the MAC descriptor in a MAC transmit descriptor queue.

16. The method of claim 1 , wherein the transmitted TCP packet comprises a TCP header, an Internet Protocol header, a Virtual Interface header and application data.

17. A method of preparing to receive a packet transmitted over a TCP network into a host, the method comprising:

loading eligible MAC descriptors into a media access control (MAC) receive descriptor queue in a host bus adapter coupled to the host, the MAC descriptors pointing to available packet receive buffers in a host bus adapter memory;

writing a receive descriptor to a host receive descriptor queue in the host;

notifying the host bus adapter of the receive descriptor;

loading Virtual Interface context information from a host memory Virtual Interface context cache into a host bus adapter Virtual Interface context cache;

reading the receive descriptor from the host receive descriptor queue and writing into the host bus adapter Virtual Interface context cache;

configuring a receive buffer in the host bus adapter memory for receiving the packet in accordance with the receive descriptor; and

setting up a host receive buffer in the host for receiving the packet from the receive buffer in the host bus adapter memory,

wherein the packet may be dropped if received prior to setting up the host receive buffer.

18. A method of processing a received packet from a TCP network in a host, the method comprising:

receiving a packet at a host bus adapter coupled to the host from a physical layer and a media access control (MAC) layer, the packet including a Virtual Interface (VI) header that identifies a VI connection;

notifying a host application of the received packet;

dropping the received packet if the host application has not yet set up a VI receive buffer, otherwise storing the received packet in a pre-posted receive packet buffer in a host bus adapter memory;

searching a Virtual Interface (VI) connection table in the host bus adapter memory for the VI connection identified by the VI header of the received packet;

if the VI connection is found in the VI connection table, retrieving VI context information from a VI context cache and passing the received packet to a TCP receive function; and

if the VI connection is not found in the VI connection table, performing TCP processing on the received packet in a host TCP/IP stack,

wherein the TCP receive function comprises a VI receive function configured for retrieving a pre-posted VI receive descriptor associated with the received packet, and transferring the received packet from the pre-posted receive packet buffer in the host bust adapter memory to a receive data buffer in a host memory in accordance with the retrieved pre-posted VI receive descriptor.

19. The method of claim 18 , further comprising writing completion bits into the VI receive descriptor that describes the receive data buffer in the host memory where the received packet was placed.

20. The method of claim 18 , further comprising setting an interrupt to a host processor after the packet is received in the host memory.

21. A host bus adapter coupled to a host for receiving packets over a TCP network, the host bus adapter comprising:

a first processor configured to process commands;

a Virtual Interface (VI) connection manager configured to establish VI connections corresponding to Transmission Control Protocol (TCP) connections;

a second processor configured to process doorbells;

a command queue configured to store commands from the host;

a doorbell queue configured to store doorbells;

a VI connection table; and

packet buffers configured to store VI packets,

wherein the host bus adapter is configured to determine whether a packet received at a physical layer of the host bus adapter is a VI packet and if so, whether to drop or store the received packet depending on whether a host application has set up a VI receive buffer in the host.

22. The host bus adapter of claim 21 , further comprising a Transmission Control Protocol/Internet Protocol (TCP/IP) stack.

23. The host bus adapter of claim 21 , further comprising a VI context cache configured to provide connection state information for the VI connections.

24. The host bus adapter of claim 21 , wherein each of the VI packets comprises a Transmission Control Protocol header, an Internet Protocol header and a VI header.

Assignments (8)
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 →
CORRECTED COVER SHEET TO CORRECT INCORRECT SERIAL NUMBER 10652426, PREVIOUSLY RECORDED AT REEL/FRAME 014529/0192 (ASSIGNMENT OF ASSIGNOR'S INTEREST) Recorded Apr 29, 2004
From: EMULEX CORPORATION
To: EMULEX DESIGN & MANUFACTURING CORPORATION
Reel/Frame 014566/0171 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 28, 2003
From: ROMAN, HAROLD E.; WILLIAMS, JAMES B.
To: EMULEX CORPORATION
Reel/Frame 014464/0800 →