# US 8,751,881 B1 · Transmission buffer under-run protection

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

- Number: US 8,751,881 B1
- Document ID: US8751881B1
- Status: Granted
- Kind: B1
- Application number: 12/614,243
- Filed: 2009-11-06
- Granted: 2014-06-10
- Earliest claimed: 2009-11-06
- Assignees: Brocade Communications Systems, Inc.
- Applicants: John M. Terry; Jan Bialkowski
- Inventors: John M. Terry; Jan Bialkowski
- Web page: https://patentgrep.com/patent/US8751881B1

## CPC

- H04L 1/0053: {specially adapted for power saving}
- H04L 1/0044: {specially adapted for power saving}
- H04L 12/6418: {Hybrid transport}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

One embodiment of the present invention provides a system that facilitates transmission buffer under-run protection. During operation, the system stores bits of a data frame in a transmission buffer associated with an output port. The system also monitors the state of the transmission buffer and commences transmission of the data frame to the output port prior to complete reception of the data frame in the transmission buffer. The system further determines that the amount of data stored in the transmission buffer is below a predetermined threshold and inserts a number of predetermined unique bit sequences after the partially transmitted data frame, thereby allowing a receiving device to temporarily suspend reception of the data frame and resume reception at a later time without dropping the data frame.

## Claims

### Claim 1

A method performed by a switching device, comprising:
associating a first portion of data frame with an output port prior to receiving a remaining portion of the data frame in a transmission buffer;
inserting continuously a number of predetermined intra-frame bit sequences indicating at least one idle period until receiving the remaining portion of the data frame in the transmission buffer; and
associating the remaining portion of the data frame with the output port from the transmission buffer.

### Claim 2 (depends on 1)

The method of claim 1, further comprising determining a potential buffer under-run in response to the amount of data in the transmission buffer being below a predetermined threshold.

### Claim 3 (depends on 1)

The method of claim 1, wherein the transmission buffer is a first-in-first-out (FIFO) buffer; and
wherein the method further comprises fetching the data frame from a central shared memory.

### Claim 4 (depends on 1)

The method of claim 1, further comprises encapsulating the data frame based on a Fibre Channel (FC) frame format.

### Claim 5 (depends on 1)

The method of claim 1, further comprising:
attaching a sequence number to the data frame; and
preventing the predetermined intra-frame bit sequence from intersecting the sequence number.

### Claim 6 (depends on 1)

The method of claim 1, further comprising associating the remaining portion of the data frame with the output port after sufficient data is received at the transmission buffer.

### Claim 7 (depends on 1)

The method of claim 1, further comprising:
associating a high-priority data frame with the output port after the predetermined intra-frame bit sequences and before associating the remaining portion of the interrupted data frame with the output port; and
associating the interrupted data frame with the output port in response to the high-priority data frame not being in the transmission buffer.

### Claim 8

A method in a switching device, comprising:
identifying one or more continuou predetermined intra-frame bit sequences indicating at least one idle period in received bits for a first portion of a data frame;
temporarily suspending error-checking calculation for the data frame in response to identifying the predetermined intra-frame bit sequences; and
resuming the error-checking calculation for the data frame in response to identifying a received bit sequence for the data frame which is not the predetermined intra-frame bit sequence, wherein the received bit sequence corresponds to a remaining portion of the data frame.

### Claim 9 (depends on 8)

The method of claim 8, further comprising:
receiving a beginning-of-frame bit sequence after the identified predetermined intra-frame bit sequence(s), wherein the beginning-of-frame bit sequence corresponds to a high-priority frame which is different from the data frame whose error-checking calculation is suspended; and
receiving the high-priority data frame prior to resuming the error-checking calculation of the suspended data frame.

### Claim 10

An apparatus, comprising:
a transmission module operable to associate a first portion of a data frame with an output port prior to receiving a remaining portion of the data frame in a transmission buffer;
an insertion module operable to continuously insert a number of predetermined intra-frame bit sequences indicating at least one idle period until receiving the remaining portion of the data frame in the transmission buffer; and
wherein the transmission module is further operable to associate the remaining portion of the data frame with the output port from the transmission buffer.

### Claim 11 (depends on 10)

The apparatus of claim 10, further comprising a monitoring module operable to determine a potential buffer under-run in response to the amount of data in the transmission buffer being below a predetermined threshold.

### Claim 12 (depends on 10)

The apparatus of claim 10, wherein the transmission buffer is a first-in-first-out (FIFO) buffer configured to fetch the data frame from a central shared memory.

### Claim 13 (depends on 10)

The apparatus of claim 10, further comprising an encapsulation module operable to encapsulate the data frame based on an FC frame format.

### Claim 14 (depends on 10)

The apparatus of claim 10, further comprising:
a frame editing module operable to attach a sequence number to the data frame; and
wherein the insertion module is operable to prevent the predetermined intra-frame bit sequence from intersecting the sequence number.

### Claim 15 (depends on 10)

The apparatus of claim 10, wherein the transmission module is further operable to associating the remaining portion of the data frame with the output port after sufficient data is received at the transmission buffer.

### Claim 16 (depends on 10)

The apparatus of claim 10, wherein the transmission module is further operable to:
assocaite a high-priority data frame with the output port after the predetermined intra-frame bit sequences and before associating the remaining portion of the interrupted data frame with the output port; and
associating the interrupted data frame with output port in response to the high-priority data frame not being in the transmission buffer.

### Claim 17

An apparatus, comprising:
a bit-sequence identification module operable to identify one or more continuous predetermined intra-frame bit sequences indicating at least one idle period in received bits for a first portion of a data frame;
a suspension module operable to temporarily suspend error-checking calculation for the data frame in response to identifying the predetermined intra-frame bit sequences; and
an error-checking module operable to resume the error-checking calculation for the data frame in response to identifying a received bit sequence for the data frame which is not the predetermined intr-frame bit sequence, wherein the received bit sequence corresponds to a remaining portion of the data frame.

### Claim 18 (depends on 17)

The apparatus of claim 17, further comprising a receiving module operable to:
receive a beginning-of-frame bit sequence after the identified predetermined intra-frame bit sequence(s), wherein the beginning-of-frame bit sequence corresponds to a high-priority frame which is different from the data frame whose error-checking is suspended; and
receive the high-priority data frame prior to resuming the error-checking of the suspended data frame.

### Claim 19

A switching system including an edge device and a core switching device, wherein the edge device comprises:
a transmission module operable to associate a first portion of a data frame with an output port prior to receiving a remaining portion of the data frame in a transmission buffer; and
an insertion module configurable to continuously insert a number of predetermined intra-frame bit sequences indicating at least one idle period until receiving the remaining portion of the data frame in the transmission buffer;
wherein the transmission module is further operable to assocaite the remaining portion of the data frame with the output port from the transmission buffer in response to receiving the remaining portion of the data frame.

### Claim 20 (depends on 19)

The switching system of claim 19, wherein the edge device further comprises a monitoring module operable to determine a potential buffer under-run in response to the amount of data in the transmission buffer being below a predetermined threshold.

### Claim 21 (depends on 19)

The switching system of claim 19, wherein the transmission buffer is a first-in-first-out (FIFO) buffer configured to fetch the data frame from a central shared memory.

### Claim 22 (depends on 19)

The switching system of claim 19, wherein the core switching device is a Fibre Channel (FC) switch; and
wherein the edge device further comprises an encapsulation module operable to encapsulate the data frame based on an FC frame format.

### Claim 23 (depends on 19)

The switching system of claim 19, wherein the edge device further comprises a frame editing module operable to attach a sequence number to the data frame; and
wherein the insertion module is operable to prevent the predetermined intra-frame bit sequence from intersecting the sequence number.

### Claim 24 (depends on 19)

The switching system of claim 19, wherein the transmission module is further operable associate the remaining portion of the data frame with the output port after sufficient data is received at the transmission buffer.

### Claim 25 (depends on 19)

The switching system of claim 19, wherein the edge device further comprises a preemption module operable to:
assocaite a high-priority data frame with the output port after the predetermined intra-frame bit sequences and before assocaiting the end of the interrupted data frame with the output port; and
the remaining portion of the interrupted data frame with the output port in response to the high-priority data frame not being in the transmission buffer.

### Claim 26 (depends on 19)

The switching system of claim 19, wherein the core switching device comprises:
a bit-sequence identification module operable to identify one or more continuous predetermined intra-frame bit sequences indicating at least one idle period in received bits for a first portion of the data frame;
a suspension module operable to temporarily suspend error-checking calculation for the data frame in response to identifying the predetermined intra-frame bit sequences; and
an error-checking module operable to resume the error-checking calculation for the data frame in response to identifying a received bit sequence for the data frame which is not the predetermined intra-frame bit sequence, wherein the received bit sequence corresponds to a remaining portion of the data frame.

### Claim 27 (depends on 26)

The switching system of claim 26, wherein the core switching device comprises a receiving module operable to:
receive a beginning-of-frame bit sequence after the identified predetermined intra-frame bit sequence(s), wherein the beginning-of-frame bit sequence corresponds to a high-priority frame which is different from the data frame whose error-checking is suspended; and
receive the high-priority data frame prior to resuming the error-checking of the suspended data frame.
