# US 10,372,637 B2 · Methods and apparatus for aggregating packet transfer over a virtual bus interface

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

- Number: US 10,372,637 B2
- Document ID: US10372637B2
- Status: Granted
- Kind: B2
- Application number: 15/721,485
- Filed: 2017-09-29
- Published: 2018-03-29
- Granted: 2019-08-06
- Earliest claimed: 2014-09-16
- Assignees: Apple Inc.
- Applicants: Apple Inc.
- Inventors: Radha Kumar Pulyala; Saurabh Garg; Karan Sanghi
- Web page: https://patentgrep.com/patent/US10372637B2

## CPC

- G06F 13/287: {Multiplexed DMA (G06F13/30 takes precedence)}
- G06F 13/4022: {using switching circuits, e.g. switching matrix, connection or expansion network (G06F13/4009 takes precedence)}
- G06F 13/4282: {on a serial bus, e.g. I2C bus, SPI bus (on daisy chain buses G06F13/4247)}
- Y02D 10/00: Energy efficient computing, e.g. low power processors, power management or thermal management
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- Y02D: CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE

## Abstract

Methods and apparatus for data aggregation and multiplexing of one or more virtual bus interfaces via a physical bus interface. Various disclosed embodiments are configured to: (i) multiplex multiple logical interfaces over a single physical interface, (ii) exchange session management and logical interface control, (iii) manage flow control, (iv) provide “hints” about the data (e.g., metadata), and/or (v) pad data packets. In one particular implementation, the methods and apparatus are configured for use within a wireless-enabled portable electronic device, such as for example a cellular-enabled smartphone, and make use of one or more features of a high-speed serialized physical bus interface.

## Claims

### Claim 1

Processor apparatus, comprising:
a first digital processor apparatus;
a physical bus interface in data communication with the first digital processor apparatus; and
a non-transitory computer-readable medium comprising computer-readable instructions, the computer-readable instructions being configured to, when executed by the first digital processor apparatus, cause the processor apparatus to:
receive an aggregated data block and an associated aggregated command block;
divide the aggregated command block into a first constituent command block and a second constituent command block, the first constituent command block being configured to reference the second constituent command block;
divide the aggregated data block into a plurality of datagrams based on the first and second constituent command blocks; and
provide the plurality of datagrams to corresponding ones of a plurality of data interfaces.

### Claim 2 (depends on 1)

The processor apparatus of claim 1, wherein the aggregated data block comprises one or more Internet Protocol (IP) datagrams.

### Claim 3 (depends on 2)

The processor apparatus of claim 2, wherein the computer-readable instructions are configured to, when executed by the first digital processor apparatus, cause the first digital processor apparatus to order at least a subset of the plurality of datagrams into a session, the session associated with one data interface.

### Claim 4 (depends on 1)

The processor apparatus of claim 1, wherein the computer-readable instructions are configured to, when executed by the first digital processor apparatus, cause the first digital processor apparatus to identify when a constituent command block is missing or corrupted, and responsively request a retransmission of the constituent command block.

### Claim 5 (depends on 1)

The processor apparatus of claim 1, wherein the computer-readable instructions are configured to, when executed by the first digital processor apparatus, cause the first digital processor apparatus to identify when a constituent command block is missing or corrupted, and responsively flag an error.

### Claim 6 (depends on 1)

The processor apparatus of claim 1, wherein the computer-readable instructions are configured to, when executed by the first digital processor apparatus, cause the first digital processor apparatus to:
separately queue one or more aggregated data blocks and one or more aggregated command blocks; and
identify the aggregated data block and the associated aggregated command block based on a sequence number associated therewith.

### Claim 7 (depends on 1)

The processor apparatus of claim 1, wherein the computer-readable instructions are configured to, when executed by the first digital processor apparatus, cause the first digital processor apparatus to:
generate a session from the plurality of datagrams;
store the session within a receive buffer; and
indicate when the receive buffer has an overflow or under-flow condition.

### Claim 8

A method of demultiplexing one or more aggregated data into a plurality of data structures, comprising:
receiving an aggregated data block and an associated aggregated command block;
dividing the aggregated command block into a plurality of different constituent command blocks;
dividing the aggregated data block into a plurality of datagrams based on the plurality of different constituent command blocks; and
generating a session from the plurality of datagrams.

### Claim 9 (depends on 8)

The method of claim 8, further comprising identifying when one of the plurality of constituent command blocks is missing or corrupted, and responsively requesting a retransmission of the one constituent command block.

### Claim 10 (depends on 8)

The method of claim 8, further comprising identifying when one of the plurality of constituent command blocks is missing or corrupted, and responsively flagging an error.

### Claim 11 (depends on 8)

The method of claim 8, further comprising separately queuing one or more aggregated data blocks and one or more aggregated command blocks; and
identifying the aggregated data block and the associated aggregated command block based on a sequence number associated therewith.

### Claim 12 (depends on 8)

The method of claim 8, further comprising storing the session within a receive buffer.

### Claim 13 (depends on 12)

The method of claim 12, further comprising indicating when the receive buffer may have a future overflow or under-flow condition.

### Claim 14 (depends on 8)

The method of claim 8, wherein the generated session is based on stateful information associated with a previous aggregated command block.

### Claim 15

A processor apparatus configured to:
receive an aggregated data block and an aggregated command block associated with the aggregated data block;
divide the aggregated command block into a plurality of constituent command blocks, the plurality of constituent command blocks comprising a linked list of commands;
divide the aggregated data block into a plurality of datagrams based on the plurality of constituent command blocks comprising the linked list of commands, the plurality of datagrams comprising a linked list of datagrams;
provide the plurality of datagrams to corresponding ones of a plurality of data interfaces.

### Claim 16 (depends on 15)

The processor apparatus of claim 15, wherein the processor apparatus is further configured to order a subset of the plurality of datagrams into a session, the session associated with one data interface.

### Claim 17 (depends on 15)

The processor apparatus of claim 15, wherein the processor apparatus is further configured to identify when one of the plurality of constituent command blocks is missing or corrupted, and responsively request a retransmission of the one command block.

### Claim 18 (depends on 15)

The processor apparatus of claim 15, wherein the processor apparatus is further configured to identify when one of the plurality of constituent command blocks is missing or corrupted, and responsively flag an error.

### Claim 19 (depends on 15)

The processor apparatus of claim 15, wherein the processor apparatus is further configured to:
separately queue one or more aggregated data blocks and one or more aggregated command blocks; and
identify the aggregated data block and the associated aggregated command block based on a sequence number associated therewith.

### Claim 20 (depends on 15)

The processor apparatus of claim 15, wherein the processor apparatus is further configured to:
generate a session from the plurality of datagrams;
store the session within a receive buffer; and
indicate when the receive buffer has an overflow or under-flow condition.
