IP Library Granted Patent US 9,154,427
Granted Patent B2
US 9,154,427 · App. 13/732,370 · Granted Oct 6, 2015

Adaptive receive path learning to facilitate combining TCP offloading and network adapter teaming

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 9,154,427
App. No.
13/732,370
Granted
Oct 6, 2015
Kind
B2
Abstract

One or more modules include a first portion that teams together multiple physical network interface ports of a computing system to appear as a single virtual network interface port to a switch to which the physical ports are linked. A second portion determines a receive port upon which a packet of a TCP session was received. A third portion assigns a transmit port to be the receive port, wherein the transmit port is used by the computing system to transmit packets of the TCP session. The third portion assigns the transmit port prior to a TCP offload engine (TOE) being enabled to offload from the system CPU processing of packets of the TCP session transceived on the assigned transmit/receive port. If a subsequent packet for the TCP session is received on a different second port, the transmit port is reassigned to be the second port.

Claims (42)

1. A method, comprising:

teaming together a plurality of physical network interface ports of a computing system to appear as a single virtual network interface port to a switch having a corresponding plurality of ports to which the plurality of physical ports are linked;

determining a receive port upon which a packet of a TCP session was received, wherein the receive port is one of the plurality of physical network interface ports of the virtual network interface port; and

assigning a transmit port to be the receive port, wherein the transmit port is used by the computing system to transmit packets of the TCP session;

wherein said assigning is performed prior to a Transmission Control Protocol (TCP) offload engine (TOE) of the computing system being enabled to offload from a CPU of the computing system processing of packets of the TCP session transceived on the assigned transmit/receive port.

2. The method of claim 1 , further comprising:

receiving a second packet of the TCP session, after the TOE is enabled;

detecting the second packet was received on a second receive port of the plurality of physical ports different from the assigned transmit/receive port; and

assigning the transmit port for the TCP session to be the second receive port in response to said detecting the second packet was received on the second receive port that was different from the assigned transmit/receive port.

3. The method of claim 2 , wherein said assigning the transmit port for the TCP session to be the second receive port is performed prior to a second TOE of the computing system being enabled to offload from the CPU processing of packets of the TCP session transceived on the second receive/transmit port, wherein the second TOE is different from the first TOE.

4. The method of claim 1 , wherein the plurality of physical network interface ports are teamed together to appear as the single virtual network interface port to the switch according to the Link Aggregation Control Protocol (LACP) standard.

5. The method of claim 1 , wherein the plurality of physical network interface ports are teamed together to appear as the single virtual network interface port to the switch according to the IEEE 802.3ad teaming protocol standard.

6. The method of claim 1 , wherein the plurality of physical network interface ports comprise Ethernet ports.

7. The method of claim 1 , wherein the enabled TOE is included on a same network interface adapter as the assigned transmit/receive port.

8. One or more modules, comprising:

a first portion of the one or more modules, configured to team together a plurality of physical network interface ports of a computing system to appear as a single virtual network interface port to a switch having a corresponding plurality of ports to which the plurality of physical ports are linked;

a second portion of the one or more modules, configured to determine a receive port upon which a packet of a TCP session was received, wherein the receive port is one of the plurality of physical network interface ports of the virtual network interface port; and

a third portion of the one or more modules, configured to assign a transmit port to be the receive port, wherein the transmit port is used by the computing system to transmit packets of the TCP session;

wherein the third portion assigns the transmit port to be the receive port prior to a Transmission Control Protocol (TCP) offload engine (TOE) of the computing system being enabled to offload from a CPU of the computing system processing of packets of the TCP session transceived on the assigned transmit/receive port.

9. The one or more modules of claim 8 , further comprising:

a fourth portion of the one or more modules, configured to receive a second packet of the TCP session, after the TOE is enabled;

a fifth portion of the one or more modules, configured to detect the second packet was received on a second receive port of the plurality of physical ports different from the assigned transmit/receive port; and

a sixth portion of the one or more modules, configured to assign the transmit port for the TCP session to be the second receive port in response to the fourth portion detecting the second packet was received on the second receive port that was different from the assigned transmit/receive port.

10. The one or more modules of claim 9 , wherein the sixth portion of the one or more modules assigns the transmit port for the TCP session to be the second receive port prior to a second TOE of the computing system being enabled to offload from the CPU processing of packets of the TCP session transceived on the second receive/transmit port, wherein the second TOE is different from the first TOE.

11. The one or more modules of claim 8 , wherein the first portion of the one or more modules is configured to team together the plurality of physical network interface ports to appear as the single virtual network interface port to the switch according to the Link Aggregation Control Protocol (LACP) standard.

12. The one or more modules of claim 8 , wherein the first portion of the one or more modules is configured to team together the plurality of physical network interface ports to appear as the single virtual network interface port to the switch according to the IEEE 802.3ad teaming protocol standard.

13. The one or more modules of claim 8 , wherein the plurality of physical network interface ports comprise Ethernet ports.

14. The one or more modules of claim 8 , wherein the enabled TOE is included on a same network interface adapter as the assigned transmit/receive port.

15. A computer program product encoded in at least one non-transitory computer usable medium, the computer program product comprising:

computer usable program code embodied in said medium, the computer usable program code comprising:

first program code for teaming together a plurality of physical network interface ports of a computing system to appear as a single virtual network interface port to a switch having a corresponding plurality of ports to which the plurality of physical ports are linked;

second program code for determining a receive port upon which a packet of a TCP session was received, wherein the receive port is one of the plurality of physical network interface ports of the virtual network interface port; and

third program code for assigning a transmit port to be the receive port, wherein the transmit port is used by the computing system to transmit packets of the TCP session;

wherein the third program code assigns the transmit port to be the receive port prior to a Transmission Control Protocol (TCP) offload engine (TOE) of the computing system being enabled to offload from a CPU of the computing system processing of packets of the TCP session transceived on the assigned transmit/receive port.

16. The computer program product of claim 15 , the computer usable program code further comprising:

fourth program code for receiving a second packet of the TCP session, after the TOE is enabled;

fifth program code for detecting the second packet was received on a second receive port of the plurality of physical ports different from the assigned transmit/receive port; and

sixth program code for assigning the transmit port for the TCP session to be the second receive port in response to the fifth program code detecting the second packet was received on the second receive port that was different from the assigned transmit/receive port.

17. The computer program product of claim 16 , wherein the sixth program code assigns the transmit port for the TCP session to be the second receive port prior to a second TOE of the computing system being enabled to offload from the CPU processing of packets of the TCP session transceived on the second receive/transmit port, wherein the second TOE is different from the first TOE.

18. The computer program product of claim 15 , wherein the first program code is configured to team together the plurality of physical network interface ports to appear as the single virtual network interface port to the switch according to the Link Aggregation Control Protocol (LACP) standard.

19. The computer program product of claim 15 , wherein the first program code is configured to team together the plurality of physical network interface ports to appear as the single virtual network interface port to the switch according to the IEEE 802.3ad teaming protocol standard.

20. The computer program product of claim 19 , wherein the at least one non-transitory computer usable medium is selected from the set of a disk, tape, or other magnetic, optical, or electronic storage medium and a network or wire line communications medium.

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 2, 2013
From: YAM, WILSON KWONG THAI
To: EMULEX DESIGN AND MANUFACTURING CORP.
Reel/Frame 029553/0130 →