# US 8,787,402 B2 · Systems and methods to control flow and to define and interleave multiple channels

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 8,787,402 B2
- Document ID: US8787402B2
- Status: Granted
- Kind: B2
- Application number: 13/600,095
- Filed: 2012-08-30
- Published: 2012-12-20
- Granted: 2014-07-22
- Earliest claimed: 2006-07-22
- Assignees: Cisco Technology, Inc.
- Applicants: Hugh Barrass
- Inventors: Hugh Barrass
- Web page: https://patentgrep.com/patent/US8787402B2

## CPC

- H04L 47/10: Flow control; Congestion control
- H04L 47/13: {in a LAN segment, e.g. ring or bus}
- H04L 47/263: Rate modification at the source after receiving feedback
- H04L 69/323: in the physical layer [OSI layer 1]
- H04L 69/324: in the data link layer [OSI layer 2], e.g. HDLC
- H04L 47/35: by embedding flow control information in regular packets, e.g. piggybacking
- H04L 47/38: by adapting coding or compression rate
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A transmitter transmits a data frame as an uninterrupted stream of codeblocks of predefined size on a first data path between a MAC and PHY. It inserts a first idle block of predefined size within the data frame if there is insufficient data. A receiver receives a second idle block on a second data path, the second idle block including a request to slow down the transmission on the first data path. The receiver causes the transmitter to insert a third idle block in response to receiving the second idle block. The transmitter may further send a stream identifier including an identifier for a data stream and a bandwidth factor. The transmitter may send one codeblock chosen from data blocks for the data stream and idle blocks, and then send the bandwidth factor number of codeblocks chosen from data blocks for other data streams and idle blocks.

## Claims

### Claim 1

A device for transmitting data between a media access controller (MAC) and a physical layer (PHY), the device comprising:
a transmitter that is part of the MAC and that transmits a data frame from the MAC as an uninterrupted stream of codeblocks of a predefined size on a first data path between the MAC and the PHY, the data frame transmitted from the MAC as the uninterrupted stream of codeblocks by insertion of a first idle block within the data frame if there is insufficient data, idle blocks being of the predefined size and including only characters chosen from a set of control characters that are undefined such that idle blocks are invalid codeblocks.

### Claim 2 (depends on 1)

The device of claim 1 further comprising a receiver coupled to the transmitter and to a second data path between the MAC and the PHY, the second data path transferring data in an opposite direction from the first data path, the receiver
to receive a second idle block on the second data path, the second idle block including a request to slow down the transmission on the first data path, and
to cause the transmitter to insert a third idle block in the data frame in response to receiving the second idle block.

### Claim 3 (depends on 2)

The device of claim 2 wherein the receiver causes the transmitter to insert a fourth idle block in the data frame if the request to slow down the transmission is received, such that two idle blocks are transmitted when one request to slow down the transmission is received.

### Claim 4 (depends on 3)

The device of claim 3 wherein the transmitter transmits the two idle blocks within a predefined period of time after the receiver receives the request to slow down the transmission.

### Claim 5 (depends on 2)

The device of claim 2 wherein the second data path is a 10 Gigabit Attachment Unit Interface (XAUI), and each codeblock consists of two consecutive sets of four 8B/10B codewords.

### Claim 6 (depends on 2)

The device of claim 2 wherein the second data path is a 10 Gigabit Interface Media Independent Interface (XGMII), and each codeblock consists of two consecutive sets of thirty-two data bits with corresponding controls.

### Claim 7 (depends on 2)

The device of claim 2 wherein the second data path is a high speed serial electrical interface for 10 Gb/s small form-factor pluggable transceiver (XFP) modules (XFI), and each codeblock consists of one 64B/66B codeword.

### Claim 8 (depends on 1)

The device of claim 1 wherein the transmitter further:
sends a stream identifier block during an inter-frame period between successive data frames, the stream identifier block including an identifier for a data stream having a net data rate of less than 10 Gigabit/second and a bandwidth factor that indicates a number of codeblocks that will be sent between successive data blocks for the data stream;
sends one codeblock chosen from a group consisting of data blocks for the data stream and idle blocks; and
sends the bandwidth factor number of codeblocks chosen from a group consisting of data blocks for other data streams and idle blocks.

### Claim 9

A method of transmitting data between a media access controller (MAC) and a physical layer (PHY), the method comprising:
transmitting, from a transmitter that is part of the MAC a data frame from the MAC as an uninterrupted stream of codeblocks of a predefined size on a first data path between the MAC and the PHY, the transmitting from the MAC including inserting a first idle block within the data frame if there is insufficient data, idle blocks being of the predefined size and including only characters chosen from a set of control characters that are undefined such that idle blocks are invalid codeblocks.

### Claim 10 (depends on 9)

The method of claim 9 further comprising:
receiving a second idle block on a second data path between the MAC and the PHY, the second data path transferring data in an opposite direction from the first data path, the second idle block including a request to slow down the transmission on the first data path; and
inserting a third idle block in the data frame in response to receiving the second idle block.

### Claim 11 (depends on 10)

The method of claim 10 further comprising inserting a fourth idle block in the data frame if the request to slow down the transmission is received, such that two idle blocks are transmitted when one request to slow down the transmission is received.

### Claim 12 (depends on 11)

The method of claim 11 wherein the two idle blocks are transmitted within a predefined period of time after receiving the request to slow down the transmission.

### Claim 13 (depends on 10)

The method of claim 10 wherein the second data path is a 10 Gigabit Attachment Unit Interface (XAUI), and each codeblock consists of two consecutive sets of four 8B/10B codewords.

### Claim 14 (depends on 10)

The method of claim 10 wherein the second data path is a 10 Gigabit Interface Media Independent Interface (XGMII), and each codeblock consists of two consecutive sets of thirty-two data bits with corresponding controls.

### Claim 15 (depends on 10)

The method of claim 10 wherein the second data path is a high speed serial electrical interface for 10 Gb/s small form-factor pluggable transceiver (XFP) modules (XFI), and each codeblock consists of one 64B/66B codeword.

### Claim 16 (depends on 9)

The method of claim 9 further comprising:
sending a stream identifier block during an inter-frame period between successive data frames, the stream identifier block including an identifier for a data stream having a net data rate of less than 10 Gigabit/second and a bandwidth factor that indicates a number of codeblocks that will be sent between successive data blocks for the data stream;
wherein transmitting data in the data frame between the MAC and the PHY includes
sending one codeblock chosen from a group consisting of data blocks for the data stream and idle blocks, and
sending the bandwidth factor number of codeblocks chosen from a group consisting of data blocks for other data streams and idle blocks.
