IP Library Granted Patent US 7,630,384
Granted Patent B2
US 7,630,384 · App. 10/894,586 · Granted Dec 8, 2009

Method and system for distributing credit in fibre channel systems

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,630,384
App. No.
10/894,586
Granted
Dec 8, 2009
Kind
B2
Abstract

A method and system for distributing credit using a fiber channel switch element is provided. The switch element includes, a wait threshold counter that is used to set up a status for a port that has to wait for certain duration to send a frame due to lack of buffer to buffer credit; a credit module that controls buffer to buffer credit for a transmit segment of the fiber channel switch element; and a virtual lane credit module with a counter that is incremented every time a frame assigned to a virtual lane is sent and decreased every time a VC_RDY is received. The method includes, determining if a VC_RDY primitive is received; and allocating credit to a virtual lane that is not at its maximum credit, after the VC_RDY primitive is received.

Claims (35)

1. A method for distributing credit in a fibre channel switch element, comprising:

(a) determining if (i) a port for the fibre channel switch element using a plurality of virtual lanes has received a flow control link primitive, R_RDY instead of a VC_RDY, a flow control link primitive used for credit in virtual lanes; and (ii) if the fibre channel switch element has internally generated the primitive, R_RDY for recovering lost credit due to loss of data frames;

wherein each virtual lane is identified by an identification number;

(b) determining if a first virtual lane from among the plurality of virtual lanes has reached a maximum credit value allocated for the first virtual lane;

(c) if the first virtual lane has reached the maximum credit value, iteratively determining if another virtual lane for the port has not reached a maximum allocated credit value; and allocating the recovered lost credit to a virtual lane from among the plurality of virtual lanes that has not reached the maximum allocated credit value;

(d) if an R_RDY primitive is not received or generated for credit recovery in step (a); determining if the primitive, VC_RDY indicating that credit is available at a virtual lane at a destination port has been received by the port;

(e) determining if the virtual lane identified by the VC_RDY received in step (d) has already reached its maximum allocated credit; and

(f) iteratively analyzing each of the remaining plurality of virtual lanes and applying the credit based on the received VC_RDY in step (d) to a virtual lane that has not reached a maximum allocated credit even if a VC_RDY virtual lane identification number indicates that credit be allocated to a different virtual lane.

2. The method of claim 1 , wherein a processor for the fibre channel switch element resets a link if one or more of credit loss and frame loss exceeds a threshold value.

3. A method for distributing credit in a fibre channel system having a fibre channel switch element, comprising:

(a) detecting lost credit at a port for the fibre channel switch element if fewer than expected VC_RDYs and R_RDYs are received between BB_SCrs;

wherein VC_RDY is a link primitive indicating credit for a virtual lane of a port supporting a plurality of virtual lanes;

wherein R_RDY is a link primitive indicating credit at a receive segment of a port,

wherein BB_SCr is a link primitive used for tracking lost credit in the fibre channel system; and

wherein each of the plurality of virtual lanes supported by the port in step (a) is assigned an identification number and is allocated a maximum credit value;

(b) iteratively determining if a virtual lane from among the plurality of virtual lanes for the port has not reached its maximum allocated credit value; and

(c) allocating the recovered lost credit from step (a) to the virtual lane from among the plurality of virtual lanes, that has not reached the maximum allocated credit value;

wherein the recovered lost credit is allocated to a virtual lane that is different from the virtual lane identified by the VC_RDY, if the identified virtual lane has reached the maximum allocated credit value.

4. The method of claim 3 , further comprising:

determining if a BB_SCr, a link primitive, is lost or extra credit is received if a R_RDY or VC_RDY is received when a BB_SCr is expected; and

setting a status bit to indicate if a BB_SCr was lost or an extra R_RDY or VC_RDY is received.

5. A fibre channel switch element for routing fibre channel frames, comprising:

a plurality of ports for receiving and transmitting frames, each port including a transmit segment and a receive segment;

a wait threshold counter that monitors a duration a transmit segment of a port has to wait for sending a frame due to lack of buffer to buffer credit and if the duration exceeds a programmable threshold value, the wait threshold counter generates a status signal;

a credit module that controls buffer to buffer credit for a transmit segment of a port; and

a virtual lane credit module with a counter that is incremented every time a frame assigned to a virtual lane is sent and decreased every time a VC_RDY, a link primitive indicating that credit is available at a virtual lane at a destination port has been received by the port is received;

wherein for allocating recovered lost credit among a plurality of virtual lanes, based on a received R_RDY, a VC_RDY and a R_RDY generated by the switch element for lost data frames, the fibre channel switch element (a) determines if a first virtual lane from among the plurality of virtual lanes supported by a port at the fibre channel switch element has reached a maximum credit value allocated for the first virtual lane; (b) iteratively determines if another virtual lane for the port has not reached a maximum allocated credit value; and (c) allocates the recovered lost credit to a virtual lane from among the plurality of virtual lanes, that has not reached the maximum allocated credit value; and wherein the virtual lane to which credit is allocated is different from the virtual lane identified by the VC_RDY used for the lost credit, if the identified virtual lane has reached its maximum allocated value.

6. The fibre channel switch element of claim 5 further comprising:

a logic module that generates a status signal if loss of more than a threshold number of frame credit due to loss of R_RDY and VC_RDY is detected, wherein R_RDY is a link primitive indicating available credit at a receive segment of a port.

7. The fibre channel switch element of claim 6 , wherein the threshold number is programmable or fixed.

8. The fibre channel switch element of claim of 6 , wherein if lost frames are detected, then the logic module generates an equivalent number of R_RDY link primitives that should have been received and sends the generated R_RDY link primitives to a device on another end of a link.

9. The fibre channel switch element of claim 6 , wherein the fibre channel switch element firmware resets a link if loss of more than a threshold number of frame credit is detected.

10. The fibre channel switch element of claim 6 , wherein the fibre channel switch element firmware resets a link if loss of more than a threshold number of R_RDY primitive or VC_RDY primitive is detected.

11. The fibre channel switch element of claim 6 , wherein the fibre channel switch element firmware provides statistics when a loss of more than a threshold number of frame or credit is detected; and the statistics are used for trend analysis on a link.

12. The fibre channel switch element of claim 6 , wherein the fibre channel switch element firmware provides statistics if loss of more than a threshold number of R_RDY primitive or VC_RDY primitive is detected; and the statistics are used for trend analysis on a link.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →