# US 7,609,722 B2 · Method and apparatus for transmitting and receiving compressed frame of data over a wireless channel

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

- Number: US 7,609,722 B2
- Document ID: US7609722B2
- Status: Granted
- Kind: B2
- Application number: 10/367,663
- Filed: 2003-02-14
- Published: 2004-08-19
- Granted: 2009-10-27
- Earliest claimed: 2003-02-14
- Assignees: Atheros Communications, Inc.
- Inventors: Jeffrey S. Kuskin; Jeffrey M. Gilbert
- Web page: https://patentgrep.com/patent/US7609722B2

## CPC

- H04W 28/06: Optimizing {the usage of the radio link}, e.g. header compression, information sizing {, discarding information (system modifying transmission characteristic according to link quality by modifying frame length H04L1/0007; dynamic adaptation of the packet size for flow control or congestion control H04L47/365)}
- H04L 69/04: Protocols for data compression, e.g. ROHC
- H04L 69/22: Parsing or analysis of headers
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A transmitting apparatus and method is described that determines, on a frame-by-frame basis, whether to transmit a compressed frame or a non-compressed frame, depending upon whether the compressed frame or the non-compressed frame will actually be smaller in size. The frame that is smaller is indicated for transmission, with a header of the frame being adapted to include a compression flag indicating whether that frame is the compressed or the non-compressed frame. After wireless transmission and reception, the received frame is, if needed, decompressed if so indicated by the compression flag.

## Claims

### Claim 1

A method of communicating digital data partitioned into a plurality of frames over a wireless communication channel, the method comprising:
using a transmitter, identifying on which of the plurality of frames compression should be attempted;
for each identified frame, repetitively compressing different search strings obtained from the identified frame, thereby creating a partially compressed frame;
continuing repetitively compressing until
either an entire frame has been compressed, thereby resulting in a compressed frame for transmission;
or the partially compressed frame is larger than the identified frame, thereby resulting in a non-compressed frame for transmission;
setting a compression flag in a header to:
indicate whether the compressed frame or the non-compressed frame has resulted for the each identified frame; and
indicate that a non-compressed frame has resulted for each frame that was not identified; and
transmitting over the wireless communication channel a transmit block, the transmit block comprising:
the header with a set compression flag; and
one of the compressed frame and the non-compressed frame,
wherein the step of repetitively compressing, for each different search string, includes the steps of:
obtaining a hash of the search string using a hash function;
using the hash to select a plurality of potential match strings within the identified frame, wherein using the hash includes:
populating a hash table with the hash and a corresponding address; and
selecting the plurality of potential match strings using the hash and a populated hash table;
comparing each of the plurality of potential match strings with the search string to determine which potential match string will result in the most matches;
for a potential match string that results in the most matches, identifying an index and a length to identify a location of the potential match string within the identified frame; and
using the index and the length to create the partially compressed frame,
wherein the search string includes a plurality of bytes, and the hash is generated using less than all of the plurality of bytes.

### Claim 2 (depends on 1)

The method according to claim 1 further including the steps of:
for each of the transmit blocks;
determining, using the set compression flag within the header, whether the compressed frame or the non-compressed frame was transmitted;
if the non-compressed frame was transmitted, passing the non-compressed frame to subsequent processing circuitry; and
if the compressed frame was transmitted, decompressing the compressed frame and then passing the decompressed frame to the subsequent processing circuitry.

### Claim 3 (depends on 1)

The method according to claim 1, wherein, for each of the plurality of frames identified, the hash table is regenerated.

### Claim 4

A method of communicating digital data partitioned into a plurality of frames over a wireless communication channel, the method comprising:
using a transmitter, identifying on which of the plurality of frames compression should be attempted;
for each identified frame, repetitively compressing different search strings obtained from the identified frame, thereby creating a partially compressed frame;
continuing repetitively compressing until
either an entire frame has been compressed, thereby resulting in a compressed frame for transmission;
or the partially compressed frame is larger than the identifed frame, thereby resulting in a non-compressed frame for transmission, wherein repetitively compressing includes: for each different search string, comparing, in parallel, each potential match strings with a search string to determine which potential match string will result in most matches;
for the potential match string that results in the most matches, identifying an index and a length to identify a location of the potential match string within the identified frame; and
using the index and the length to create the partially compressed frame;
setting a compression flag in a header to:
indicate whether the compressed frame or the non-compressed frame has resulted for the each identified frame, and
indicate that a non-compressed frame has resulted for each frame that was not identified; and
transmitting over the wireless communication channel a transmit block, the transmit block comprising:
the header with a set compression flag, the set compression flag indicating a type of compression based on a bit size of the set compression flag; and
one of the compressed frame and the non-compressed frame.

### Claim 5 (depends on 4)

The method according to claim 4 wherein the header within each transmit block is uncompressed.

### Claim 6 (depends on 4)

The method according to claim 4 wherein, prior to the step of transmitting, there is further included the step of encrypting the transmit block.

### Claim 7

An apparatus for communicating digital data partitioned into a plurality of frames over a wireless communication channel, the apparatus comprising:
Media Access Control (MAC) layer transmit circuitry, the MAC layer transmit circuitry including:
a direct memory access (DMA) block that receives a frame;
a compression engine for identifying on which of the plurality of frames compression should be attempted and, for each such frame, determining whether the frame can be compressed,
for such determining, the compression engine including a plurality of parallel match logic circuits, each of the plurality of parallel match logic circuits comparing one of a plurality of search strings obtained from the frame to one of a plurality of match strings also obtained from the frame, the plurality of search strings being selected using a hash, wherein for each search string including a plurality of bytes, the hash is generated using less than all of the plurality of bytes, the compression engine updating information regarding the frame in compressed form based on results of the comparing,
wherein when the frame in compressed form is larger than the frame, the compression engine indicates that a non-compressed frame is to be transmitted,
wherein when the frame in compressed form is smaller than the frame, the compression engine indicates that a compressed frame is to be transmitted, and
for any non-identified frame, the compression engine indicates that a non-compressed frame is to be transmitted; and
a frame transmit control block for controlling when to transmit the compressed/non-compressed frame;
baseband transmit circuitry that receives the compressed/non-compressed frame for transmission and generates a baseband signal therefrom; and
radio frequency transmit circuitry that receives the baseband signal and generates a radio frequency signal therefrom,
wherein the compression engine includes:
a frame content buffer for storing the frame;
a hash function block that obtains a hash of each of the plurality of search strings;
a hash table that is populated with at least some hashes of the plurality of search strings and is used to determine addresses from which to obtain the plurality of match strings; and
compression control logic that controls a sequence of operations using the hash function block, the hash table, and the parallel match logic circuits.

### Claim 8 (depends on 7)

The apparatus according to claim 7 wherein:
the compression engine repetitively compresses using different ones of the plurality of search strings obtained from the frame and the parallel match logic circuits to determine best matches between each search string and the match strings, and wherein each best match is used to create a partially compressed frame; and
further including a scratchpad buffer for storing the partially compressed frame.

### Claim 9 (depends on 7)

The apparatus according to claim 7 wherein the compression engine further includes:
a frame content buffer that stores the frame; and
compression control logic that controls reading of the plurality of search strings and the match strings from the frame content buffer and providing the plurality of search strings and the match strings to the parallel match logic circuits.

### Claim 10 (depends on 7)

The apparatus according to claim 7, formed on a single integrated circuit chip.

### Claim 11 (depends on 7)

The apparatus according to claim 7, further including a processor that performs operations other than the compression that is performed by the compression engine.

### Claim 12 (depends on 7)

The apparatus according to claim 7, wherein the processor operates based upon received instructions, and the compression engine does not operate based upon received instructions.
