Link level packet flow control mechanism
AssigneeIntel Corporation
InventorsDean S. Susnow, Richard D. Reohr, Jr.
Life of this patent
Estimating the term…
Abstract
Some embodiments of the present invention include data network comprising a host system having a host-fabric adapter; at least one remote system; a switch fabric which interconnects said host system via said host-fabric adapter to said remote system along different physical links for data communications; and at least one communication port provided in the host-fabric adapter of the host system including a set of transmit and receive buffers capable of sending and receiving data packets concurrently via respective transmitter and receiver at an end of a physical link, via the switched fabric, and a flow control mechanism utilized to prevent loss of data due to receive buffer overflow at the end of the physical link. Other embodiments are described and claims.
Claims25
A Link Packet Scheduler for each virtual lane (VL) at a given port, comprising:
- a N—bit counter arranged to accumulate free credits relinquished, when a data packet is removed from a receive buffer and buffer space is reclaimed as available for data packet storage, or when a link packet is received whose Flow Control Total Bytes Sent (FCTBS) field differs from actual blocks received (ABR) at the given port;
- a first comparator arranged to make comparison between accumulated free credits from the N—bit counter and a programmable credit threshold;
- a second comparator arranged to make comparison between a current buffer receive utilization indicating a data storage level of the receive buffer and a programmable utilization threshold;
- and
- a logic device arranged to track a current link state of a corresponding port, to monitor amount of receive buffer resources from the first and second comparators and to schedule a link packet transmission, via a physical link.
A data network, comprising:
- a host system having a host—fabric adapter;
- at least one remote system;
- a switch fabric which interconnects said host system via said host—fabric adapter to said at least one remote system along different physical links for data communications;
- and
- one or more communication ports provided in said host—fabric adapter of said host system, each port including a set of transmit and receive buffers to send and receive data packets concurrently via respective transmitter and receiver at an end of a physical link, via said switched fabric, and a flow control mechanism utilized to prevent loss of data due to receive buffer overflow at the end of said physical link, said flow control mechanism including a N—bit counter arranged to accumulate free credits relinquished, when a data packet is removed from a receive buffer and buffer space is reclaimed as available for data packet storage, or when a link packet is received whose Flow Control Total Bytes Sent (FCTBS) field differs from actual blocks received (ABR) at a given port, a first comparator arranged to make comparison between accumulated free credits from the N—bit counter and a programmable credit threshold, a second comparator arranged to make comparison between a current buffer receive utilization indicating a data storage level of the receive buffer and a programmable utilization threshold, and a logic device arranged to track a current link state of a corresponding port, to monitor the amount of receive buffer resources from the first and second comparators and to schedule a link packet transmission, via the physical link.
A data network, comprising:
- a host system having a host—fabric adapter;
- at least one remote system;
- a switch fabric which interconnects said host system via said host—fabric adapter to said at least one remote system along different physical links for data communications;
- and
- one or more communication ports provided in said host—fabric adapter of said host systems, each port including a set of transmit and receive buffers to send and receive data packets concurrently via respective transmitter and receiver at an end of a physical link, via said switched fabric, and a flow control mechanism utilized to prevent loss of data due to receive buffer overflow at the end of said physical link, wherein said flow control mechanism is configured to support flow control through multiple virtual lanes (VLs) on a given port and to perform:
- determining when a Link State Machine transitions into one of a LinkInitialize state, a LinkArm state and a LinkActive state, or when a configuration strap for enabling loopback operation changes states;
- if the Link State Machine transitions into one of the LinkInitialize state, the LinkArm state and the LinkActive state, or when the configuration strap for enabling loopback operation changes states, scheduling a link packet transmission for all supported virtual lanes (VLs) on the given port;
- if the Link State Machine does not transition into one of the LinkInitialize state, the LinkArm state and the LinkActive state, or when the configuration strap for enabling loopback operation does not change states, determining whether a Link Packet Watchdog Timer per virtual lane (VL) has expired;
- if the per VL Link Packet Watchdog Timer has expired, scheduling a link packet transmission for a virtual lane (VL) corresponding to said timer;
- if the per VL Link Packet Watchdog Timer has not expired, determining whether a receive buffer utilization indicating a data storage level of the receive buffer exceeds a programmable utilization threshold;
- if the receive buffer utilization exceeds the programmable utilization threshold, prohibiting the link packet transmission for that virtual lane (VL);
- if the receive buffer utilization does not exceed the programmable utilization threshold, determining whether free credits accumulated exceeds a programmable credit threshold;
- if the free credits accumulated exceeds the programmable credit threshold, scheduling the link packet transmission for that virtual lane (VL);
- and
- if the free credits accumulated does not exceed the programmable credit threshold, prohibiting the link packet transmission for that virtual lane (VL).
A data network, comprising:
- a host system having a host—fabric adapter;
- at least one remote system;
- a switch fabric which interconnects said host system via said host—fabric adapter to said at least one remote system along different physical links for data communications;
- and
- one or more communication ports provided in said host—fabric adapter of said host system, each port including a set of transmit and receive buffers to send and receive data packets concurrently via respective transmitter and receiver at an end of a physical link, via said switched fabric, and a flow control mechanism utilized to prevent loss of data due to receive buffer overflow at the end of said physical link, wherein said flow control mechanism contains a Link Packet Scheduler per virtual lane (VL) arranged to schedule a link packet transmission for a virtual lane (VL) corresponding to said Link Packet Scheduler, wherein said Link Packet Scheduler comprises:
- a N—bit counter arranged to accumulate free credits relinquished, when a data packet is removed from a receive buffer and buffer space is reclaimed as available for data packet storage, or when a link packet is received whose Flow Control Total Bytes Sent (FCTBS) field differs from actual blocks received (ABR) at a given port;
- a first comparator arranged to make comparison between accumulated free credits from the N—bit counter and a programmable credit threshold;
- a second comparator arranged to make comparison between a current buffer receive utilization indicating a data storage level of the receive buffer and a programmable utilization threshold;
- and
- a logic device arranged to track a current link state of a corresponding port, to monitor amount of receive buffer resources from the first and second comparators and to schedule the link packet transmission, via the physical link.
A method of flow control of a link packet in a host—fabric adapter installed in a data network, comprising:
- determining when a Link State Machine transitions into one of a LinkInitialize state, a LinkArm state and a LinkActive state, or when a configuration strap for enabling loopback operation changes state;
- if the Link State Machine transitions into one of the LinkInitialize state, the LinkArm state and the LinkActive state, or when the configuration strap for enabling loopback operation changes states, scheduling transmission of a link packet for all supported virtual lanes (VLs) on a given port;
- if the Link State Machine does not transition into one of the LinkInitialize state, the LinkArm state and the LinkActive state, or when the configuration strap for enabling loopback operation does not change states, determining whether a Link Packet Watchdog Timer per virtual lane (VL) has expired;
- if the per VL Link Packet Watchdog Timer has expired, scheduling transmission of said link packet for a virtual lane (VL) corresponding to said timer;
- if the per VL Link Packet Watchdog Timer has not expired, determining whether a receive buffer utilization indicating a data storage level of a corresponding receive buffer exceeds a programmable utilization threshold;
- if the receive buffer utilization exceeds the programmable utilization threshold, prohibiting transmission of the link packet for that virtual lane (VL);
- if the receive buffer utilization does not exceed the programmable utilization threshold, determining whether free credits accumulated exceeds a programmable credit threshold;
- if the free credits accumulated exceeds the programmable credit threshold, scheduling transmission of the link packet for that virtual lane (VL);
- and
- if the free credits accumulated does not exceed the programmable credit threshold, prohibiting transmission of the link packet for that virtual lane (VL).
Dependencies are inferred from the claim text.