IP Library Granted Patent US 11,297,006
Granted Patent B1
US 11,297,006 · App. 16/891,321 · Granted Apr 5, 2022

Use of virtual lanes to solve credit stall on target ports in FC SAN

Inventor: Harsha Bharadwaj (Bangalore, IN)
Assignee: CISCO TECHNOLOGY, INC.
H04L49/25H04L49/70H04L49/9005
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 11,297,006
App. No.
16/891,321
Granted
Apr 5, 2022
Kind
B1
Abstract

A method is performed at a switch fabric that communicates with a storage array target port. The method includes sending frames to the target port responsive to receiving buffer-to-buffer (B2B) credits that indicate a receive buffer at the target port is available for the frames. The method further includes, in response to detecting a credit stall at the target port, operating in a virtual lane mode. The operating in the virtual lane mode includes: determining whether a frame destined for the target port is a command frame or a data frame; based on the determining, marking the frame to indicate that the frame is destined for a particular virtual lane among virtual lanes of the receive buffer; and receiving from the target port a per-virtual lane B2B credit that indicates the particular virtual lane is available and, in responsive, sending the frame to that virtual lane on the target port.

Claims (67)

1. A method comprising:

at a switch fabric configured to communicate with a target port hosted by a Fibre Channel adapter of a storage array:

operating in a normal mode without virtual lanes while sending frames to the target port responsive to receiving, from the target port, buffer-to-buffer credits that indicate a receive buffer at the target port is available for the frames; and

in response to detecting a credit stall at the target port based on withholding of the buffer-to-buffer credits by the target port, negotiating with the Fibre Channel adapter to cause it to partition the receive buffer into virtual lanes, and transitioning to and operating in a virtual lane mode, including:

determining whether a frame destined for the target port is a command frame or a data frame;

based on the determining, marking the frame to indicate that the frame is destined for a particular virtual lane among the virtual lanes of the receive buffer; and

receiving from the target port a per-virtual lane buffer-to-buffer credit that indicates the particular virtual lane is available and, in response, sending the frame to the target port.

2. The method of claim 1 , wherein, when the frame is the command frame:

the marking includes marking the command frame to indicate the command frame is destined for a virtual command lane among the virtual lanes of the receive buffer; and

the receiving from the target port the per-virtual lane buffer-to-buffer credit includes receiving from the target port the per-virtual lane buffer-to-buffer credit encoded to indicate the virtual command lane is available.

3. The method of claim 1 , wherein, when the frame is the data frame:

the marking includes marking the data frame to indicate the data frame is destined for a virtual data lane among the virtual lanes of the receive buffer; and

the receiving from the target port the per-virtual lane buffer-to-buffer credit includes receiving from the target port the per-virtual lane buffer-to-buffer credit encoded to indicate the virtual data lane is available.

4. The method of claim 1 , wherein:

marking includes marking a control field of the frame.

5. The method of claim 1 , further comprising:

in response to detecting the credit stall at the target port, performing a link reset toward the target port; and

performing the negotiating and transitioning after the link reset.

6. The method of claim 1 , wherein the detecting the credit stall includes detecting that a time spent waiting to receive one of the buffer-to-buffer credits before sending one of the frames to the target port exceeds a predetermined wait time indicative of the credit stall.

7. The method of claim 1 , wherein:

the switch fabric and the storage array are part of a Fibre Channel (FC) storage area network (SAN), the target port is an FC port, and the frames are FC frames; and

the sending the frames and the sending the frame each includes sending from an FC switch port of the FC SAN.

8. The method of claim 1 , further comprising, at the Fibre Channel adapter:

receiving the frame at the target port;

storing the frame in the particular virtual lane of the receive buffer based on the marking;

processing the frame from the particular virtual lane; and

after the processing, sending the per-virtual lane buffer-to-buffer credit to the switch fabric.

9. An apparatus comprising:

a switch port of a switch fabric to communicate with a target port hosted by a Fibre Channel adapter of a storage array; and

a processor coupled to the switch port and configured to perform:

operating in a normal mode without virtual lanes while sending frames to the target port responsive to receiving, from the target port, buffer-to-buffer credits that indicate a receive buffer at the target port is available for the frames; and

in response to detecting a credit stall at the target port based on withholding of the buffer-to-buffer credits by the target port, negotiating with the Fibre Channel adapter to cause it to partition the receive buffer into virtual lanes, and transitioning to and operating in a virtual lane mode, including:

determining whether a frame destined for the target port is a command frame or a data frame;

based on the determining, marking the frame to indicate that the frame is destined for a particular virtual lane among the virtual lanes of the receive buffer; and

receiving from the target port a per-virtual lane buffer-to-buffer credit that indicates the particular virtual lane is available and, in response, sending the frame to the target port.

10. The apparatus of claim 9 , wherein the processor is configured to perform, when the frame is the command frame:

the marking by marking the command frame to indicate the command frame is destined for a virtual command lane among the virtual lanes of the receive buffer; and

the receiving from the target port the per-virtual lane buffer-to-buffer credit by receiving from the target port the per-virtual lane buffer-to-buffer credit encoded to indicate the virtual command lane is available.

11. The apparatus of claim 9 , wherein the processor is configured to perform, when the frame is the command frame:

the marking by marking the data frame to indicate the data frame is destined for a virtual data lane among the virtual lanes of the receive buffer; and

the receiving from the target port the per-virtual lane buffer-to-buffer credit by receiving from the target port the per-virtual lane buffer-to-buffer credit encoded to indicate the virtual data lane is available.

12. The apparatus of claim 9 , wherein the processor is further configured to perform:

in response to detecting the credit stall at the target port, initiating a link reset toward the target port; and

negotiating and transitioning after the link reset.

13. A method comprising:

at a Fibre Channel adapter of a storage array, the Fibre Channel adapter including a target port and a receive buffer coupled to the target port, the target port configured to communicate with a link peer, operating in a virtual lane mode, including:

partitioning the receive buffer into virtual lanes to include a command lane for storing command frames and a data lane for storing data frames;

receiving, from the link peer, a frame marked with a virtual lane identifier to identify a particular virtual lane as the command lane when the frame is a command frame and as a data lane when the frame is a data frame;

populating the particular virtual lane based on the virtual lane identifier;

mapping the command lane and the data lane to a command queue and a direct memory access channel for processing the command frame and the data frame;

processing the frame in the particular virtual lane to remove the frame from the particular virtual lane; and

sending, to the link peer, a per-virtual lane buffer-to-buffer credit encoded to indicate the particular virtual lane is available for a subsequent frame.

14. The method of claim 13 , wherein:

the frame is marked in a control field of the frame.

15. The method of claim 13 , wherein mapping is implemented using address pointers.

16. The method of claim 13 , wherein, when the frame is the command frame:

the processing includes processing the command frame in the command lane, which removes the command frame from the command lane; and

the sending includes sending, to the link peer, the per-virtual lane buffer-to-buffer credit encoded to indicate the command lane is available for a subsequent command frame.

17. The method of claim 16 , wherein the processing includes dequeuing the command frame from the command lane into the command queue for the command frames.

18. The method of claim 13 , wherein, when the frame is the data frame:

the processing includes processing the data frame in the data lane, which removes the data frame from the data lane; and

the sending includes sending, to the link peer, a per-lane buffer-to-buffer credit encoded to indicate the data lane is available for a subsequent data frame.

19. The method of claim 18 , wherein the processing includes transferring the data frame to memory of the storage array using the direct memory access channel.

20. The method of claim 13 , further comprising, at the Fibre Channel adapter:

prior to operating in the virtual lane mode, operating in a normal mode without using the virtual lanes;

negotiating with the link peer to operate in the virtual lane mode; and

responsive to the negotiating, transitioning from operating in the normal mode to operating in the virtual lane mode.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 3, 2020
From: BHARADWAJ, HARSHA
To: CISCO TECHNOLOGY, INC.
Reel/Frame 052823/0401 →
Cited By (2)
US 12,189,984 US 12,375,431