IP Library Granted Patent US 7,869,356
Granted Patent B2
US 7,869,356 · App. 12/336,402 · Granted Jan 11, 2011

Dynamic buffer pool in PCIExpress switches

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,869,356
App. No.
12/336,402
Granted
Jan 11, 2011
Kind
B2
Abstract

In a first embodiment of the present invention, a method for handling a Transaction Layer Packets (TLPs) from devices in a switch is provided, the method comprising: subtracting a first number of credits from a credit pool associated with a first port on which a first device is connected; determining if the amount of credits in the credit pool associated with the first port is less than a first predetermined threshold; and if the amount of credits in the credit pool associated with the first port is less than the first predetermined threshold, assigning a second number of credits from a shared credit pool to the credit pool associated with the first port.

Claims (77)

1. A method for handling Transaction Layer Packets (TLPs) from devices in a switch, wherein the TLPs have sizes and contain a header and a payload, the method comprising:

subtracting a first number of credits from a header credit pool associated with a first port on which a first device is connected;

determining if the amount of credits in the header credit pool associated with the first port is less than a first predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the first predetermined threshold, assigning a second number of credits from a shared credit pool to the header credit pool associated with the first port;

subtracting a third number of credits from a payload credit pool associated with the first port;

determining if the amount of credits in the payload credit pool associated with the first port is less than a second predetermined threshold;

if the amount of credits in the payload credit pool associated with the first port is less than the second predetermined threshold, assigning a fourth number of credits from the shared credit pool to the payload credit pool associated with the first port;

receiving, from a second device, a request for credits for a second TLP;

subtracting a fifth number of credits from a header credit pool associated with a second port on which the second device is connected;

determining if the amount of credits in the header credit pool associated with the second port is less than a third predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the third predetermined threshold, assigning a sixth number of credits from the shared credit pool to the header credit pool associated with the second port;

subtracting a seventh number of credits from a payload credit pool associated with the second port;

determining if the amount of credits in the payload credit pool associated with the second port is less than a fourth predetermined threshold; and

if the amount of credits in the payload credit pool associated with the second port is less than the fourth predetermined threshold, assigning an eighth number of credits from the shared credit pool to the payload credit pool associated with the second port.

2. The method of claim 1 , further comprising:

receiving, from the device, a request for credits for a first TLP.

3. The method of claim 2 , further comprising:

determining if a TLP is dropped; and

if the TLP is dropped, crediting the first number of credits back to the header and/or payload credit pool associated with the first port.

4. The method of claim 1 , wherein the first number of credits is calculated based at least partially upon the size of the first TLP.

5. The method of claim 1 , further comprising:

determining if the size of a TLP to be received on the first port is considered to be large or small;

if the size of the TLP to be received on the first port is small, assigning more header credits as the first number of credits and fewer payload credits as the third number of payload credits than if the size of the TLP to be received on the first port is large.

6. A method for handling a Transaction Layer Packets (TLPs) from device in a switch, wherein the TLPs have sizes and contain a header and a payload, the method comprising:

subtracting a first number of credits from a header credit pool associated with a first port on which a first device is connected;

determining if the amount of credits in the header credit pool associated with the first port is less than a first predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the first predetermined threshold, assigning a second number of credits from a shared header credit pool to the header credit pool associated with the first port;

subtracting a third number of credits from a payload credit pool associated with the first port;

determining if the amount of credits in the payload credit pool associated with the first port is less than a second predetermined threshold;

if the amount of credits in the payload credit pool associated with the first port is less than the second predetermined threshold, assigning a fourth number of credits from a shared payload credit pool to the payload credit pool associated with the first port;

receiving, from a second device, a request for credits for a second TLP;

subtracting a fifth number of credits from a header credit pool associated with a second port on which the second device is connected;

determining if the amount of credits in the header credit pool associated with the second port is less than a third predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the third predetermined threshold, assigning a sixth number of credits from the shared header credit pool to the header credit pool associated with the second port;

subtracting a seventh number of credits from a payload credit pool associated with the second port;

determining if the amount of credits in the payload credit pool associated with the second port is less than a fourth predetermined threshold; and

if the amount of credits in the payload credit pool associated with the second port is less than the fourth predetermined threshold, assigning an eighth number of credits from the shared payload credit pool to the payload credit pool associated with the second port.

7. The method of claim 6 , further comprising:

determining if the size of a TLP to be received on the first port is considered to be large or small;

if the size of the TLP to be received on the first port is small, assigning more header credits as the first number of credits and fewer payload credits as the third number of payload credits than if the size of the TLP to be received on the first port is large.

8. A switch comprising:

a plurality of ports;

for each of said plurality of ports, stored in a memory, a header credit pool and a payload credit pool associated with the port;

a shared credit pool stored in a memory;

a processor configured to:

subtract a first number of credits from a header credit pool associated with a first port on which a first device is connected;

determine if the amount of credits in the header credit pool associated with the first port is less than a first predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the first predetermined threshold, assign a second number of credits from a shared credit pool to the header credit pool associated with the first port;

subtract a third number of credits from a payload credit pool associated with the first port;

determine if the amount of credits in the payload credit pool associated with the first port is less than a second predetermined threshold; and

if the amount of credits in the payload credit pool associated with the first port is less than the second predetermined threshold, assign a fourth number of credits from the shared credit pool to the payload credit pool associated with the first port;

receive, from a second device, a request for credits for a second TLP;

subtract a fifth number of credits from a header credit pool associated with a second port on which the second device is connected;

determine if the amount of credits in the header credit pool associated with the second port is less than a third predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the third predetermined threshold, assign a sixth number of credits from the shared credit pool to the header credit pool associated with the second port;

subtract a seventh number of credits from a payload credit pool associated with the second port;

determine if the amount of credits in the payload credit pool associated with the second port is less than a fourth predetermined threshold; and

if the amount of credits in the payload credit pool associated with the second port is less than the fourth predetermined threshold, assign an eighth number of credits from the shared credit pool to the payload credit pool associated with the second port.

9. A switch comprising:

a plurality of ports;

for each of said plurality of ports, stored in a memory, a header credit pool and a payload credit pool associated with the port;

a shared header credit pool stored in a memory;

a shared payload credit pool stored in a memory;

a processor configured to:

subtract a first number of credits from a header credit pool associated with a first port on which a first device is connected;

determine if the amount of credits in the header credit pool associated with the first port is less than a first predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the first predetermined threshold, assign a second number of credits from a shared header credit pool to the header credit pool associated with the first port;

subtract a third number of credits from a payload credit pool associated with the first port;

determine if the amount of credits in the payload credit pool associated with the first port is less than a second predetermined threshold;

if the amount of credits in the payload credit pool associated with the first port is less than the second predetermined threshold, assign a fourth number of credits from a shared payload credit pool to the payload credit pool associated with the first port;

receive, from a second device, a request for credits for a second TLP;

subtract a fifth number of credits from a header credit pool associated with a second port on which the second device is connected;

determine if the amount of credits in the header credit pool associated with the second port is less than a third predetermined threshold;

if the amount of credits in the header credit pool associated with the first port is less than the third predetermined threshold, assign a sixth number of credits from the shared header credit pool to the header credit pool associated with the second port;

subtract a seventh number of credits from a payload credit pool associated with the second port;

determine if the amount of credits in the payload credit pool associated with the second port is less than a fourth predetermined threshold; and

if the amount of credits in the payload credit pool associated with the second port is less than the fourth predetermined threshold, assign an eighth number of credits from the shared payload credit pool to the payload credit pool associated with the second port.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 47630 FRAME: 344. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Mar 21, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 048883/0267 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 9/5/2018 PREVIOUSLY RECORDED AT REEL: 047196 FRAME: 0687. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0344 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047196/0687 →
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 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 034069-0494) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: PLX TECHNOLOGY, INC.
Reel/Frame 037682/0802 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 7, 2015
From: PLX TECHNOLOGY, INC.
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035615/0767 →
PATENT SECURITY AGREEMENT Recorded Oct 28, 2014
From: PLX TECHNOLOGY, INC.
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 034069/0494 →