Changes between Version 15 and Version 16 of 802.11/MAC/Support_HW
- Timestamp:
- Dec 14, 2016, 3:38:22 PM (7 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
802.11/MAC/Support_HW
v15 v16 293 293 The Tx Controller B state machine is implemented as an m-code block in the {{{wlan_mac_hw}}} core. The m source code is in the repository at [browser:/ReferenceDesigns/w3_802.11/sysgen/wlan_mac_hw/mcode_blocks/mac_tx_ctrl_b_fsm.m mac_tx_ctrl_b_fsm.m] 294 294 295 == MAC Tx Controller C==296 297 Tx Controller C is a simpler state machine designed to support transmission of Beacon frames. Beacon transmissions are unique in that they can occur in between re-transmissions of other MPDUs. The reference DCF implementation uses Tx Controller A for MPDU transmissions, so a separate controller (Controller C) is required to support Beacontransmissions.298 299 The Tx Controller C logic includes a dedicated backoff counter, independet of the backoff counter implemented for Tx Controller A. This dedicated backoff counter is required to allow beacon transmissions which defer to medium activity without overriding the state of primary backoff counter. This behavior is especially important in ad hoc (IBSS) networks wherevery node transmits beacons after random delays, with each node canceling its own beacon Tx if it receives a beacon from a peer in the same beacon interval.295 == MAC Tx Controllers C and D == 296 297 Tx Controllers C and D implement identical state machines. The C/D state machine is designed to support transmission of packets which do not require timeouts and re-transmissions. In our reference DCF implementation Tx C is used for Beacon frames and Tx D is used for multicast frames buffered between DTIM intervals. Beacon and DTIM multicast transmissions are unique in that they can occur in between re-transmissions of other MPDUs. The reference DCF implementation uses Tx Controller A for MPDU transmissions, so separate controllers (Controller C and D) are required to support Beacon and multicast DTIM transmissions. 298 299 The logic for Tx Controllers C and D each include a dedicated backoff counter, independent of the backoff counter implemented for Tx Controller A. These dedicated backoff counters are required to allow beacon and DTIM multicast transmissions which defer to medium activity without overriding the state of primary backoff counter. This behavior is especially important in ad hoc (IBSS) networks where every node transmits beacons after random delays, with each node canceling its own beacon Tx if it receives a beacon from a peer in the same beacon interval. 300 300 301 301 === Implementation Details === 302 The Tx Controller C state machine is illustrated below. Each box is a state. Each arrow is a state transition, with the arrow's label specifying the input conditions that trigger the transition. The conditions for the color-coded arrows from the {{{IDLE}}} state are described in the table below.302 The Tx Controller C/D state machine is illustrated below. Each box is a state. Each arrow is a state transition, with the arrow's label specifying the input conditions that trigger the transition. The conditions for the color-coded arrows from the {{{IDLE}}} state are described in the table below. The MAC core implements separate instances of this state machine for Tx Controllers C and D. 303 303 304 304 [[Image(tx_fsm_c.png)]] 305 305 306 306 {{{#!th colspan=2 align=center 307 '''Tx Controller C FSM - Transitions from {{{IDLE}}}'''307 '''Tx Controller C/D FSM - Transitions from {{{IDLE}}}''' 308 308 }}} 309 309 |----------------------------------- … … 368 368 The lower MAC framework provides macros for configuring the software parameters above: 369 369 {{{#!c 370 // Configure Tx Controller C 370 // Configure Tx Controller C and D 371 371 // pktBuf: Tx packet buffer index (passed directly to PHY at TX_START) 372 372 // antMask: antenna selection mask (passed directly to PHY at TX_START) … … 374 374 // phy_mode: Tx PHY mode (1 for NONHT, 2 for HTMF) 375 375 // num_slots: number of backoff slots, if this FSM starts the C backoff counter 376 377 // Tx Controller C 376 378 wlan_mac_tx_ctrl_C_params(pktBuf, antMask, req_backoff, phy_mode, num_slots); 377 }}} 378 379 The Tx Controller C state machine is started by toggling its enable bit in the MAC support core's register bank: 379 380 // Tx Controller D 381 wlan_mac_tx_ctrl_D_params(pktBuf, antMask, req_backoff, phy_mode, num_slots); 382 }}} 383 384 The Tx Controller C/D state machine is started by toggling its enable bit in the MAC support core's register bank: 380 385 {{{#!c 381 386 // Start Tx Controller C 382 387 wlan_mac_tx_ctrl_C_start(1); 383 388 wlan_mac_tx_ctrl_C_start(0); 384 }}} 385 386 The Tx Controller C state machine is implemented as an m-code block in the {{{wlan_mac_hw}}} core. The m source code is in the repository at [browser:/ReferenceDesigns/w3_802.11/sysgen/wlan_mac_hw/mcode_blocks/mac_tx_ctrl_c_fsm.m mac_tx_ctrl_c_fsm.m] 387 389 390 // Start Tx Controller D 391 wlan_mac_tx_ctrl_D_start(1); 392 wlan_mac_tx_ctrl_D_start(0); 393 }}} 394 395 The Tx Controller C/D state machine is implemented as an m-code block in the {{{wlan_mac_hw}}} core. The m source code is in the repository at [browser:/ReferenceDesigns/w3_802.11/sysgen/wlan_mac_hw/mcode_blocks/mac_tx_ctrl_cd_fsm.m mac_tx_ctrl_cd_fsm.m] 396