IP Library Granted Patent US 7,518,995
Granted Patent B1
US 7,518,995 · App. 11/362,690 · Granted Apr 14, 2009

Method and system for managing frame flow 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,518,995
App. No.
11/362,690
Granted
Apr 14, 2009
Kind
B1
Abstract

Method and system for managing frame traffic in a Fibre Channel network with plural switch elements with receive and transmit ports is provided. The method includes limiting a number of R_RDYs sent between frames, when frames are waiting to be transmitted at a given time, for minimizing a number of ordered sets transmitted between frames. The switch element includes a R_RDY control module that stores a number of R_RDYs that a port has to send, stores an actual number of R_RDYs that are sent since a last frame is transmitted; stores a number of R_RDYs that are sent between frames and this number of R_RDYs can be programmed to be less than two; and stores a threshold value that is less than or equal to a maximum R_RDY count value.

Claims (45)

1. A method for managing frame flow in a Fibre Channel network system, comprising:

(a) determining if a frame is waiting for transmission at a transmit segment of a port of a Fibre Channel switch element at any given time; wherein the Fibre Channel switch element includes a plurality of ports, each port including a receive segment for receiving frames and a transmit segment for transmitting frames;

(b) if a frame is waiting for transmission in step (a), checking if a R_RDY register count value is greater than zero, wherein the R_RDY register stores a value indicating a number of R_RDYs that the port has to send, where R_RDY is a primitive indicating available credit at a receive segment of a destination port;

(c) comparing the R_RDY register count value with a threshold value programmed in a threshold register; wherein the threshold register stores the threshold value for controlling how often pending R_RDYs are sent by the transmit segment;

(d) sending a R_RDY if the R_RDY register count is greater than zero and greater than the threshold value, based on the comparison in step (c); and

(e) sending a certain number of idle primitives after the R_RDY is sent in step (d); wherein the certain number of idle primitives depend on a number of ordered sets that are transmitted since a last frame.

2. The method of claim 1 , further comprising:

sending a R_RDY, if the R_RDY register count value is less than the threshold value as determined in step (c) of claim 1 ; and if a R_RDY sent count value is less than a programmed R_RDY limit value; wherein the R_RDY limit value is based on a maximum number of R_RDYs that the port can send.

3. The method of claim 1 , wherein a R_RDY sent count value is increased and the R_RDY register count value is decreased, when a R_RDY is sent, where the R_RDY is sent if the R_RDY count value is equal to or greater than the threshold value.

4. The method of claim 2 , wherein the R_RDY sent count value is increased and the R_RDY register count value is decreased for each R_RDY sent when the R_RDY count value is less than the threshold value and if the R_RDY sent count value is less than the programmed R_RDY limit value.

5. The method of claim 1 , wherein if no frames are waiting in step (a) of claim 1 , and the R_RDY register count value is greater than zero in step (b) of claim 1 , then the port sends an R_RDY and decreases the R_RDY register count value and increases a R_RDY sent value maintained by a R_RDY sent register.

6. The method of claim 1 , wherein if a frame is waiting in step (a) of claim 1 , then the frame is sent if: (i) the R_RDY register count value is greater than or equal to a R_RDY limit value; and (ii) the R_RDY count value is less than the R_RDY threshold value.

7. The method of claim 1 , wherein the transmit segment maintains the R_RDY register count value, a R_RDY limit value that limits a number of R_RDYs that the port can send, a R_RDY sent value that indicates a number of R_RDYs sent by the port at any given time, and the threshold value.

8. The method of claim 1 , wherein VC_RDYs are used instead of R_RDYs if the switch element uses virtual lanes.

9. A method for a Fibre Channel network comprising:

(a) determining if a frame is waiting for transmission at a transmit segment of a port of a Fibre Channel switch element at any given time; wherein the Fibre Channel switch element includes a plurality of ports, each port including a receive segment for receiving frames and a transmit segment for transmitting frames;

(b) if a frame is waiting for transmission in step (a), checking if a R_RDY register count value is greater than zero, wherein the R_RDY register stores a value indicating a number of R_RDYs that the port has to send; and wherein R_RDY is a primitive indicating available credit at a receive segment of a destination port;

(c) comparing the R_RDY register count value with a threshold value programmed in a threshold register; wherein the threshold register stores the threshold value for controlling how often pending R_RDYs are sent by the transmit segment;

(d) sending a R_RDY if the R_RDY register count is greater than zero and greater than the threshold value; and

(e) sending a certain number of idle primitives after the R_RDY is sent in step (d); wherein the certain number of idle primitives depend on a number of ordered sets that are transmitted since a last frame;

(f) sending a R_RDY, if the R_RDY register count value is less than the threshold value as determined in step (c); and if a R_RDY sent value is less than a programmed R_RDY limit value; wherein the R_RDY limit value is based on a maximum number of R_RDYs that the port can send; and

(g) if no frames are waiting in step (a), and the R_RDY register count value is greater than zero, then sending an R_RDY and decreasing the R_RDY register count value and increasing a R_RDY sent value maintained by a R_RDY sent register.

10. The method of claim 9 , wherein a R_RDY sent count value is increased and the R_RDY register count value is decreased, when a R_RDY is sent, if the R_RDY count value is equal to or greater than the threshold value.

11. The method of claim 10 , wherein VC_RDYs are used instead of R_RDYs if the switch element uses virtual lanes.

12. The method of claim 9 , wherein the R_RDY sent count value is increased and the R_RDY register count value is decreased for each R_RDY sent, when the R_RDY count value is less than the threshold value and if the R_RDY sent count value is less than the programmed R_RDY limit value.

13. The method of claim 9 , wherein if a frame is waiting in step (a) of claim 1 , then the frame is sent if: (i) the R_RDY register count value is greater than or equal to a R_RDY limit value; and (ii) the R_RDY count value is less than the R_RDY threshold value.

14. The method of claim 9 , wherein the transmit segment maintains the R_RDY register count value, the R_RDY limit value that limits a number of R_RDYs that the port can send, the R_RDY sent value that indicates a number of R_RDYs sent by the port at any given time; and the threshold value.

15. A switch element in a Fibre Channel network, comprising:

a plurality of ports, each port including a transmit segment for transmitting frames; and a R_RDY control module for controlling flow of R_RDYs transmitted between frames by a transmit segment of a port from among the plurality of ports, wherein R_RDY is a primitive indicating available credit at a receive segment of a destination port; and

wherein the R_RDY control modules stores;

(i) a number of R_RDYs that the port has to send;

(ii) an actual number of R_RDYs that are sent since a last frame is transmitted by the transmit segment;

(iii) a programmable number of R_RDYs that are sent between frames;

(iv) a threshold value for controlling how often pending R_RDYs are sent by the transmit segment of the port; and

(v) a programmable value that determines a number of idle primitives that are sent after an R_RDY is sent, wherein the programmable value depends on a number of ordered sets that are transmitted since a last frame is transmitted by the port; and wherein if a frame is waiting for transmission at any given time, the transmit segment:

(a) checks if a R_RDY register count value is greater than zero indicating a number of R_RDYs that the port has to send;

(b) compares the R_RDY register count value with the threshold value;

(c) sends a R_RDY if the R_RDY register count is greater than zero and greater than the threshold value; and

(d) sends the programmed number of idle primitives after the R_RDY is sent.

16. The switch element of claim 15 , wherein a R_RDY limit register stores the number of R_RDYs sent between frames; a R_RDY Sent register stores the actual number of frames sent since the last frame was transmitted; and a threshold register stores the threshold value.

17. The switch element of claim 16 , wherein if no frames are waiting, and the R_RDY register count value is greater than zero, then the port sends an R_RDY and decreases the R_RDY register count value and increases a R_RDY sent value maintained by the R_RDY Sent register.

18. The switch element of claim 15 , wherein the port sends one Idle primitive between one or both of two R_RDYs; and between R_RDYs and frames.

19. The switch element of claim 18 , wherein the number of Idles sent by the port are programmed by a switch element processor.

20. The switch element of claim 15 , wherein the transmit segment maintains a value that reflects a number of ordered sets that have been sent between frames.

21. The switch element of claim 15 , wherein the number of ordered sets is less than 6.

Assignments (7)
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 27, 2006
From: DROPPS, FRANK R.; KOHLWEY, ERNEST G.; OWEN, MARK A.
To: QLOGIC CORPORATION
Reel/Frame 017631/0189 →