bcm-v4

[Specification

Overview

When sending data, a Transmit (TX) Header is prepended to data to be transmitted.

Data

TX Header

PLCP Header

PDU

Size

0x64

0x06

Variable

Transmit Header Layout

for ucode rev 351

Offset

Size

Function

0x0000

2

MAC TX Control Low

0x0002

2

MAC TX Control High

0x0004

2

MAC Frame Control (copy of frame control field)

0x0006

2

TX FES Time Normal (set to 0)

0x0008

2

PHY TX Control Word

0x000A

2

PHY TX Control Word 1 (see below)

0x000C

2

PHY TX Control Word 1 (for fallback rate)

0x000E

2

PHY TX Control Word 1 RTS

0x0010

2

PHY TX Control Word 1 RTS (for fallback rate)

0x0012

2

PHY Rates [Main Rates]

0x0014

2

Extra Frame Types

0x0016

16

IV/crypto field

0x0026

6

TX Frame Receiver Address

0x002C

2

TX FES Time Fallback (set to 0)

0x002E

6

RTS PLCP Fallback

0x0034

2

RTS Duration Fallback

0x0036

6

PLCP Fallback

0x003C

2

Duration Fallback

0x003E

2

mixed-mode L-SIG spoof length

0x0040

2

fallback mixed-mode L-SIG spoof length

0x0042

2

Timeout Low

0x0044

2

TImeout High

0x0046

2

Unused

0x0048

2

TX Frame ID (frame cookie, 0xffff should not be used due to multicast/broadcast buffering)

0x004A

2

TX Status (set to 0)

0x004C

6

RTS PLCP Header

0x0052

16

RTS Frame

0x0062

2

Unused

for ucode rev 410 and later

Offset

Size

Function

0x0000

2

MAC TX Control Low

0x0002

2

MAC TX Control High

0x0004

2

MAC Frame Control (copy of frame control field)

0x0006

2

TX FES Time Normal (set to 0)

0x0008

2

PHY TX Control Word

0x000A

2

PHY TX Control Word 1 (see below)

0x000C

2

PHY TX Control Word 1 FB (for fallback rate)

0x000E

2

PHY TX Control Word 1 RTS

0x0010

2

PHY TX Control Word 1 RTS FB (for fallback rate)

0x0012

2

PHY Rates [Main Rates]

0x0014

2

Extra Frame Types

0x0016

16

IV/crypto field

0x0026

6

TX Frame Receiver Address

0x002C

2

TX FES Time Fallback (set to 0)

0x002E

6

RTS PLCP Fallback

0x0034

2

RTS Duration Fallback

0x0036

6

PLCP Fallback

0x003C

2

Duration Fallback

0x003E

2

MIMO mode length

0x0040

2

MIMO fallback rate length

0x0042

2

Timeout Low

0x0044

2

Timeout High

0x0046

2

MIMO antenna select

0x0048

2

preload size

0x004a

2

Unused

0x004c

2

TX Frame ID (frame cookie, 0xffff should not be used due to multicast/broadcast buffering)

0x004e

2

TX Status (set to 0)

0x0050

6

RTS PLCP Header

0x0056

16

RTS Frame

0x0066

2

Unused

Transmit Header Fields

MAC TX Control Low

Mask

Function

0x8000

AMIC

0x4000

use RIFS

0x2000

lifetime

0x1000

Frameburst

0x0800

Send CTS-to-self (ignored for CCK rates, e.g. done first when using an OFDM rate but not done for fallback if fallback rate is CCK)

0x0600

AMPDU status, supported values are: 0: regular MPDU, not an AMPDU, 1: first MPDU of AMPDU, 2: intermediate MPDU of AMPDU, 3: last (or only) MPDU of AMPDU

0x0100

use 40 MHz Bandwidth

0x0080

5GHz Band

0x0040

Disable FCS calculation/appending

0x0020

Ignore PMQ

0x0010

Use Hardware Sequence Number

0x0008

Start MSDU

0x0004

Send RTS

0x0002

Long Frame

0x0001

Immediate ACK

MAC TX Control High

Mask

Function

0x1000

use fallback rate for this AMPDU

0x0FF0

Security Key Index

0x0007

Security Algorithm

Extra Frame Types

Mask

Function

0x0003

data frame fallback encoding

0x000c

RTS/CTS encoding

0x0030

RTS/CTS fallback rate type

0xFF00

Channel radio code. This value is ORed with 0x100 if the 5GHz Band bit is set in MAC TX Control Low and ORed with 0x200 if the 40 MHz bandwidth bit is set, and then compared to SHM 0x00A0. On mismatch, the frame is suppressed for channel mismatch.

number

encoding

0

CCK

1

OFDM

2

EWC (mimo)

3

N (? unused)

PHY TX Control Word

Mask

Function

0x0003

frame encoding (see above table)

0x0010

use short preamble

0x03C0

antenna selection

0xFC00

TX Power

Antenna selection values are:

Value

Meaning

0

antenna 0 (LP PHY: last antenna)

1

antenna 1

3

antenna 0/1 auto (older microcode: last good)

4

antenna 2

8

antenna 3

PHY TX Control Word 1 (same layout for FB, RTS, and RTS FB)

N, LP, and SSLPN PHYs, bandwidth fixed to 20 (2) for LP: See PHY TX Control1 for setup

Mask

Function

0x0007

bandwidth (0: 10 MHz, 1: 10 MHz upper, 2: 20 MHz, 3: 20 MHz upper, 4: 40 MHz, 5: 40 MHz duplicate)

0x0038

mode (0: SISO, 1: CDD, 2: STBC, 3: SDM)

0x00c0

?

0x0700

coding rate (0: 1/2, 1: 2/3, 2: 3/4, 3: 4/5, 4: 5/6, 6: 7/8)

0x3800

modulation scheme (0: bpsk, 1: qpsk, 2: qam16, 3: qam64, 4: qam256)

0x4000

ADC coding

0x8000

short GI

PHY Rates

Mask

Value

0x00FF

PHY rate

0xFF00

PHY rate for CTS/RTS

IV/crypto field

For WEP this contains the IV to use. For TKIP, this must contain the phase 1 key followed by the first four bytes of the TKIP extended IV.

Queue Selection

If QoS is enabled, use FIFOs 0-3 for the different access categories, otherwise always use FIFO 1 for data frames.

In an AP, use FIFO 4 for multicast frames, set the more data bit in the frame and with each frame update the SHM last broadcast/multicast frame ID value. This will cause the Microcode to send out all frames on this FIFO after the DTIM beacon, the frame ID value is used to clear the more data bit in the frame header.

Microcode Involvement

The microcode controls the TXE (TX engine) which allows it to read data from FIFOs and push it to the outgoing data path etc. For some more information see txpath.pdf. Note that this is incomplete, the FIFO control is not included etc.


Exported/Archived from the wiki to HTML on 2016-10-27