# US 8,542,585 B2 · Method and system for transmit scheduling for multi-layer network interface controller (NIC) operation

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

- Number: US 8,542,585 B2
- Document ID: US8542585B2
- Status: Granted
- Kind: B2
- Application number: 13/205,862
- Filed: 2011-08-09
- Published: 2011-12-15
- Granted: 2013-09-24
- Earliest claimed: 2003-12-19
- Assignees: Broadcom Corporation
- Applicants: Scott McDaniel; Kan Frankie Fan; Uri El Zur
- Inventors: Scott McDaniel; Kan Frankie Fan; Uri El Zur
- Web page: https://patentgrep.com/patent/US8542585B2

## CPC

- H04L 47/10: Flow control; Congestion control
- H04L 47/2433: {Allocation of priorities to traffic types}
- H04L 47/2466: using signalling traffic
- H04L 47/50: Queue scheduling
- H04L 47/522: {Dynamic queue service slot or variable bandwidth allocation}
- H04L 47/60: implementing hierarchical scheduling
- H04L 47/621: {Individual queue per connection or flow, e.g. per VC}
- H04L 47/6225: {Fixed service order, e.g. Round Robin}
- H04L 47/6255: {queue load conditions, e.g. longest queue first}
- H04L 49/351: for local area network [LAN], e.g. Ethernet switches
- H04L 69/161: {Implementation details of TCP/IP or UDP/IP stack architecture; Specification of modified or new header fields}
- H04L 69/163: In-band adaptation of TCP data exchange; In-band control procedures
- H04L 47/43: Assembling or disassembling of packets, e.g. segmentation and reassembly [SAR]
- H04L 49/205: {Quality of Service based}
- H04L 49/254: {Centralised controller, i.e. arbitration or scheduling}
- H04L 49/602: {Multilayer or multiprotocol switching, e.g. IP switching}
- H04L 69/12: Protocol engines
- H04L 69/16: Implementation or adaptation of Internet protocol [IP], of transmission control protocol [TCP] or of user datagram protocol [UDP]
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method for processing network data includes collecting by a network interface controller (NIC), a plurality of transmit (TX) buffer indicators into a plurality of priority lists of connections. Each of the plurality of TX buffer indicators identifies transmit-ready data located externally to the NIC and not previously received by the NIC. One or more of the plurality of TX buffer indicators may be selected. The identified transmit-ready data may be retrieved into the NIC based on the selected one or more of the plurality of TX buffer indicators. At least a portion of the identified transmit-ready data may be transmitted. Each of the plurality of priority lists may be generated based on a particular connection priority characteristic and a particular connection type. The identified transmit-ready data may be associated with the same connection priority characteristic and the same connection type.

## Claims

### Claim 1

A method for processing network data, the method comprising:
collecting by a network interface controller (NIC), a plurality of transmit (TX) buffer indicators into a plurality of priority lists of connections, wherein each of said plurality of TX buffer indicators identifies transmit-ready data located externally to said NIC and not previously received by said NIC;
selecting one or more of said plurality of TX buffer indicators;
retrieving said identified transmit-ready data into said NIC based on said selected one or more of said plurality of TX buffer indicators; and
transmitting at least a portion of said identified transmit-ready data.

### Claim 2 (depends on 1)

The method according to claim 1, wherein each of said plurality of priority lists of connections is generated based on a particular connection priority characteristic and a particular connection type.

### Claim 3 (depends on 1)

The method according to claim 1, wherein said identified transmit-ready data is associated with a same connection priority characteristic and a same connection type.

### Claim 4 (depends on 2)

The method of claim 2, wherein said particular connection type comprises one or more of a level 2(L2 ) type, a level 4 (L4) type, or a level 5 (L5) type.

### Claim 5 (depends on 4)

The method of claim 4, comprising, if said particular connection type comprises said L2 type, said L4 type, or said L5 type, prioritizing one or more of said plurality of TX buffer indicators into at least one of said plurality of priority lists of connections with at least one particular connection priority characteristic.

### Claim 6 (depends on 5)

The method of claim 5, comprising prioritizing said plurality of priority lists of connections based on at least one particular connection priority characteristic.

### Claim 7 (depends on 6)

The method of claim 6, wherein one or more of said plurality of priority lists of connections is utilized to elevate transmission priority of one or more of a TCP acknowledge (ACK) message, a session layer ACK message, or a protocol element.

### Claim 8 (depends on 1)

The method of claim 1, wherein one or more of said plurality of priority lists of connections is utilized to limit transmission bandwidth dedicated to at least one type of traffic or a protocol element.

### Claim 9 (depends on 1)

The method of claim 1, wherein one or more of said plurality of TX buffer indicators is selected via a weighted round robin scheme.

### Claim 10 (depends on 1)

The method of claim 1, comprising associating one or more of said plurality of TX buffer indicators with at least one context information.

### Claim 11 (depends on 6)

The method of claim 6, wherein one or more of said plurality of priority lists of connections is utilized to guarantee low latency transmission to one or more of a type of traffic, a connection, or a protocol element.

### Claim 12 (depends on 10)

The method of claim 10, wherein said at least one context information comprises one or both of an ACK extent requirement or a maximum transmit-ready data size.

### Claim 13 (depends on 12)

The method of claim 12, comprising, if data size of said identified transmit-ready data is greater than said maximum transmit-ready data size, segmenting said identified transmit-ready data into a plurality of transmit-ready data segments, each of said plurality of transmit-ready data segments being smaller than said maximum transmit-ready data size.

### Claim 14 (depends on 13)

The method of claim 13, comprising transmitting said plurality of transmit-ready data segments of a particular connection type.

### Claim 15 (depends on 14)

The method of claim 14, wherein at least a portion of said plurality of transmit-ready data segments is separated by another identified transmit-ready data from a connection associated with at least one of a particular connection priority characteristic or said particular connection type.

### Claim 16

A non-transitory computer-readable storage medium having stored thereon, a computer program having at least one code section for processing network data for network interface controller (NIC) applications, said at least one code section being executable by a computer for causing said computer to perform steps comprising:
collecting by said NIC, a plurality of transmit (TX) buffer indicators into a plurality of priority lists of connections, wherein each of said plurality of TX buffer indicators identifies transmit-ready data located externally to said NIC and not previously received by said NIC;
selecting one or more of said plurality of TX buffer indicators;
retrieving said identified transmit-ready data into said NIC based on said selected one or more of said plurality of TX buffer indicators; and
transmitting at least a portion of said identified transmit-ready data.

### Claim 17 (depends on 16)

The non-transitory computer-readable storage medium of claim 16, wherein each of said plurality of priority lists of connections is generated based on a particular connection priority characteristic and a particular connection type.

### Claim 18 (depends on 16)

The non-transitory computer-readable storage medium of claim 16, wherein said identified transmit-ready data is associated with a same connection priority characteristic and a same connection type.

### Claim 19 (depends on 17)

The non-transitory computer-readable storage medium of claim 17, wherein said particular connection type comprises one or more of a level 2 (L2 ) type, a level 4 (L4) type, or a level 5 (L5) type.

### Claim 20 (depends on 19)

The non-transitory computer-readable storage medium of claim 19, wherein said at least one code section comprises code for prioritizing one or more of said plurality of TX buffer indicators into at least one of said plurality of priority lists of connections with at least one particular connection priority characteristic, if said particular connection type comprises said L2 type, said L4 type, or said L5 type.

### Claim 21 (depends on 20)

The non-transitory computer-readable storage medium of claim 20, wherein said at least one code section comprises code for prioritizing said plurality of priority lists of connections based on at least one particular connection priority characteristic.

### Claim 22 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein one or more of said plurality of priority lists of connections is utilized to elevate transmission priority of one or more of a TCP acknowledge (ACK) message, a session layer ACK message, or a protocol element.

### Claim 23 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein one or more of said plurality of priority lists of connections is utilized to limit transmission bandwidth dedicated to at least one type of traffic or a protocol element.

### Claim 24 (depends on 16)

The non-transitory computer-readable storage medium of claim 16, wherein one or more of said plurality of TX buffer indicators is selected via a weighted round robin scheme.

### Claim 25 (depends on 16)

The non-transitory computer-readable storage medium of claim 16, wherein said at least one code section comprises code for associating one or more of said plurality of TX buffer indicators with at least one context information.

### Claim 26 (depends on 21)

The non-transitory computer-readable storage medium of claim 21, wherein one or more of said plurality of priority lists of connections is utilized to guarantee low latency transmission to one or more of a type of traffic, a connection, or a protocol element.

### Claim 27 (depends on 26)

The non-transitory computer-readable storage medium of claim 26, wherein said at least one context information comprises one or both of an ACK extent requirement or a maximum transmit-ready data size.

### Claim 28 (depends on 27)

The non-transitory computer-readable storage medium of claim 27, wherein said at least one code section comprises code for segmenting said identified transmit-ready data into a plurality of transmit-ready data segments, each of said plurality of transmit-ready data segments being smaller than said maximum transmit-ready data size, if data size of said identified transmit-ready data is greater than said maximum transmit-ready data size.

### Claim 29 (depends on 28)

The non-transitory computer-readable storage medium of claim 28, wherein said at least one code section comprises code for transmitting said plurality of transmit-ready data segments of a particular connection type.

### Claim 30 (depends on 29)

The non-transitory computer-readable storage medium of claim 29, wherein at least a portion of said plurality of transmit-ready data segments is separated by another identified transmit-ready data from a connection associated with at least one of a particular connection priority characteristic or said particular connection type.

### Claim 31

A system for processing network data, the system comprising:
one or more processors, one or more circuits, or any combination thereof within a network interface controller (NIC), said one or more processors, one or more circuits, or any combination thereof enables collecting by said NIC, a plurality of transmit (TX) buffer indicators into a plurality of priority lists of connections, wherein each of said plurality of TX buffer indicators identifies transmit-ready data located externally to said NIC and not previously received by said NIC;
said one or more processors, one or more circuits, or any combination thereof enables selecting of one or more of said plurality of TX buffer indicators;
said one or more processors, one or more circuits, or any combination thereof enables retrieving of said identified transmit-ready data into said NIC based on said selected one or more of said plurality of TX buffer indicators; and
said one or more processors, one or more circuits, or any combination thereof enables transmitting at least a portion of said identified transmit-ready data.

### Claim 32 (depends on 31)

The system according to claim 31, wherein each of said plurality of priority lists of connections is generated based on a particular connection priority characteristic and a particular connection type.

### Claim 33 (depends on 31)

The system according to claim 31, wherein said identified transmit-ready data is associated with a same connection priority characteristic and a same connection type.

### Claim 34 (depends on 32)

The system of claim 32, wherein said particular connection type comprises one or more of a level 2 (L2 ) type, a level 4 (L4) type, or a level 5 (L5) type.

### Claim 35 (depends on 34)

The system of claim 34, wherein said one or more processors, one or more circuits, or any combination thereof enables prioritizing one or more of said plurality of TX buffer indicators into at least one of said plurality of priority lists of connections with at least one particular connection priority characteristic, if said particular connection type comprises said L2 type, said L4 type, or said L5 type.

### Claim 36 (depends on 35)

The system of claim 35, wherein said one or more processors, one or more circuits, or any combination thereof enables prioritizing said plurality of priority lists of connections based on at least one particular connection priority characteristic.

### Claim 37 (depends on 36)

The system of claim 36, wherein one or more of said plurality of priority lists of connections is utilized to elevate transmission priority of one or more of a TCP acknowledge (ACK) message, a session layer ACK message, or a protocol element.

### Claim 38 (depends on 36)

The system of claim 36, wherein one or more of said plurality of priority lists of connections is utilized to limit transmission bandwidth dedicated to at least one type of traffic or a protocol element.

### Claim 39 (depends on 31)

The system of claim 31, wherein one or more of said plurality of TX buffer indicators is selected via a weighted round robin scheme.

### Claim 40 (depends on 31)

The system of claim 31, wherein said one or more processors, one or more circuits, or any combination thereof enables associating one or more of said plurality of TX buffer indicators with at least one context information.

### Claim 41 (depends on 36)

The system of claim 36, wherein one or more of said plurality of priority lists of connections is utilized to guarantee low latency transmission to one or more of a type of traffic, a connection, or a protocol element.

### Claim 42 (depends on 41)

The system of claim 41, wherein said at least one context information comprises one or both of an ACK extent requirement or a maximum transmit-ready data size.

### Claim 43 (depends on 42)

The system of claim 42, wherein said one or more processors, one or more circuits, or any combination thereof enables segmenting said identified transmit-ready data into a plurality of transmit-ready data segments, each of said plurality of transmit-ready data segments being smaller than said maximum transmit-ready data size, if data size of said identified transmit-ready data is greater than said maximum transmit-ready data size.

### Claim 44 (depends on 43)

The system of claim 43, wherein said one or more processors, one or more circuits, or any combination thereof enables transmitting said plurality of transmit-ready data segments of a particular connection type.

### Claim 45 (depends on 44)

The system of claim 44, wherein at least a portion of said plurality of transmit-ready data segments is separated by another identified transmit-ready data from a connection associated with at least one of a particular connection priority characteristic or said particular connection type.
