Changes between Version 170 and Version 171 of 802.11/Changelog

Jun 16, 2017, 10:00:14 AM (10 months ago)



  • 802.11/Changelog

    v170 v171  
    33= 802.11 Reference Design: Changelog =
     5== 1.7 Releases ==
     6'''Download Latest: []'''
     8Release Details:
     9||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =||
     10||  WARP v3  ||  [ 1.7.0]  || 16-Jun-2017  ||   [browser:ReferenceDesigns/w3_802.11?rev=6110 6110]   ||  14.4  ||  Dual MB/AXI  ||
     14'''Changes in v1.7.0:'''
     16Release v1.7 of the 802.11 Reference Design reflects months of "under the hood" improvements to the C code. These improvements include many new features (described below). Equally important, this work lays the foundation for many new extensions that are planned for the near future.
     18'''Code Organization:'''[[BR]]
     19The v1.7 code base has been reorganized to better isolate platform-agnostic ({{{framework}}}) and platform-dependent ({{{platform}}}) code. The code base now consists of:
     20 * MAC Frameworks - platform-agnostic code:
     21   * {{{wlan_mac_high_framework}}}: code common to all MAC applications in CPU High, includes Tx queues, BSS network state maintenance, associated station tracking, and wlan_exp frameworks
     22   * {{{wlan_mac_common_framework}}}: code common to MAC applications in both CPUs, including inter-processor communication via the mailbox/mutex and Tx/Rx packet buffer state maintenance
     23   * {{{wlan_mac_low_framework}}}: code common to MAC applications in CPU Low, including MAC/PHY hardware control
     24 * WARP v3 Platform Code:
     25   * {{{wlan_w3_high}}}: peripheral interface support for CPU High applications, including ETH A and B, DRAM, and UART
     26   * {{{wlan_w3_common}}}: peripheral interface support shared by applications in both CPUs, including user I/O and MAC Time
     27   * {{{wlan_w3_low}}}: peripheral interface support for CPU Low applications, including MAC/PHY register maps, EEPROM, and RF interfaces
     28 * MAC Applications:
     29   * {{{wlan_mac_high_ap}}}, {{{wlan_mac_high_sta}}}, {{{wlan_mac_high_ibss}}}: AP, STA and IBSS applications for CPU High
     30   * {{{wlan_mac_low_dcf}}} and {{{wlan_mac_low_nomac}}}: DCF and NoMAC applications for CPU Low
     32A CPU High application must use the high and common framework and platform code. A CPU Low application must use the low and common framework and platform code.
     34The SDK Workspace in the reference design archive reflects this new organization and includes references to all required platform/framework code for each of the MAC application projects.
     36'''Other high level code improvements:'''[[BR]]
     37 * Removed (nearly) all cases of header files including other headers, greatly simplifying include hierarchy and reducing chances of unintentional and circular includes
     38 * Removed any library dependencies in the BSPs
     39   * Migrated {{{wlan_exp_ip_udp}}} library into MAC High Framework source; library no longer required via BSP
     40   * Deprecated {{{WARP_HW_VER}}} library
     41 * Moved linker scripts from application source folders to high/low platform source folders; applications for same CPU now share a single linker script.
     42 * Removed dead code throughout design
     43 * Adopted tagged struct typedefs and forward declarations of struct types throughout to reduce complexity of include hierarchies
     44 * Simplified struct type definitions for almost-identical structs between MAC framework and wlan_exp
     46'''Improvements to {{{station_info}}} framework:'''[[BR]]
     47The MAC High Framework uses a data structure called {{{station_info_t}}} to track information about devices in the wireless network. The {{{station_info}}} structure has been greatly improved in v1.7.
     49The framework now maintains a flat list of {{{station_info}}} instances, with one {{{station_info}}} for every MAC address from which the nodes receives a packet or to which it transmits a packet. This list of {{{station_info}}} structs includes all associated stations and all devices from which the nodes "overhears" receptions.  The AP uses a subset of the {{{station_info}}} list as its {{{member_list}}}, reflecting which stations are members of the AP's BSS. The full {{{station_info}}} list (including the Tx/Rx counts for each device) can be retrieved with the wlan_exp method {{{node.get_station_info_list()}}}.
     51Other {{{station_info}}} changes:
     52 * Added creation of {{{station_info}}} entries for multicast MAC addresses. As a result wlan_exp can now observe how many packets have been transmitted to the broadcast address (not possible in previous releases).
     53 * Added {{{num_queued_packets}}} field to {{{station_info}}} struct to assist MAC framework and applications in tracking which {{{station_info}}} entries are safe to remove when the list gets too long.
     54 * Moved maintenance of default Tx parameters (power, rate, PHY mode, antenna selection) to the MAC framework. The MAC application can modify and re-apply the framework's default Tx params for each combination of (unicast/multicast) and (data/management). The framework uses the default Tx param structs when creating new {{{station_info}}} entries. The MAC application can also modify the Tx params for each {{{station_info}}} independently. These modifications will be preserved even if the device represented by a {{{station_info}}} changes association state. For example, the framework will remember MCS selection for a node that associates, de-associations, then re-associates. Per-station Tx params can be manipulated by MAC C code and from wlan_exp.
     55 * Updated wlan_exp methods for manipulating default and per-station Tx params (listed below). The {{{device_list}}} argument selects which {{{station_info}}} entries to modify. The new {{{update_default_}}} flags inform C code whether to overwrite the framework's default Tx params. These arguments replace the old {{{curr_assoc}}} and {{{new_assoc}}} arguments in previous releases.
     56  * {{{set_tx_power_data(power, device_list, update_default_unicast, update_default_multicast)}}}
     57  * {{{set_tx_power_mgmt(power, device_list, update_default_unicast, update_default_multicast)}}}
     59'''Other Code Changes''':[[BR]]
     60 * Simplified the definition of entries in the Tx queues. Previous releases kept a full {{{tx_frame_info_t}}} in each queue entry, implying each queue entry was a full packet. As of v1.7 each queue entry is a logical payload which can be used to construct a packet at dequeue time, and the {{{tx_frame_info}}} for each packet is created in the Tx packet buffer at dequeue time.
     61 * Extended the definition of the doubly-linked list entry ({{{dl_entry}}}) for the {{{station_info}}} list to include the station's MAC address in BRAM, greatly speeding up searches for a given MAC address in the list
     62 * Redesigned the {{{InfoStruct}}} class in {{{}}} to support hierarchical field sets shared by multiple structs
     63 * Deprecated {{{bss_info_t}}}, formalized {{{network_info_t}}} vs {{{bss_config_t}}}. A {{{network_info}}} includes a {{{bss_config}}} plus other information learned about the network from wireless activity. The updated wlan_exp methods are:
     64  * {{{n.get_bss_config()}}}: retrieves the BSS configuration of the node
     65  * {{{n.get_network_info()}}}: retrieves information about the node's current wireless network, including its BSS configuration
     66  * {{{n.get_network_info_list()}}}: retrieves information about all wireless networks the node has observed
     67  * {{{n.get_bss_info()}}}: Deprecated - use methods above instead
     68 * Removed unnecessary callback for handling mailbox IPC receptions in High Framework
     69 * Improved clarity of AP's UART prints when stations change association state
     70 * Moved all updates of user IO outputs (LEDs, hex displays) to central {{{wlan_platform_userio_disp_status()}}} functions in high/low platform code
     71 * Enabled wrapping of the wlan_exp event log by default; wrapping can still be enabled/disabled from C or Python
     72 * Merged {{{RX_OFDM}}} log entry fields {{{u8 bb_gain}}} and {{{u8 rf_gain}}} into single {{{u8 rx_gain_index}}} field ({{{rf_gain}}} is 2 MSB, {{{bb_gain}}} is 5 LSB)
     74'''Linker Script Change:'''[[BR]]
     75The linker script for CPU High has been updated to use a single 256kB memory area for the ILMB/DLMB. In hardware this 256kB area is implemented as two 128kB blocks. Due to an unfortunate limitation of the XPS->SDK flow it is now necessary to modify the {{{system.bmm}}} file written by XPS before using the hardware design in the SDK.
     77The {{{system.bmm}}} file in the reference design archive's SDK workspace is already modified and ready to use. If you modify the hardware design in XPS and re-export to the SDK you must manually edit {{{system.bmm}}}. Refer to the [ user guide] for details.
     79'''Hardware Design Changes'''[[BR]]
     80 * CFO estimate value is now explicitly reset between Rx events, so the CFO correction DDS always starts at phase=0 for each Rx. This change won't affect performance but does improve reproducibility of hardware vs simulation Rx for a given waveform.
     81 * Added pipeline registers in Tx PHY packet buffer -> encoder logic, breaking up long combinational path
     83'''Bug fixes:'''[[BR]]
     84 * Explicitly asserted {{{XIN_SVC_ALL_ISRS_OPTION}}} option for interrupt controller to ensure all asserted interrupt sources are serviced per processor interrupt, not just the highest-priority one (never actually a problem for WARP v3 design given the interrupt priorities and assertion rates in hardware)
     85 * Rearranged post-Rx/post-Tx processing in DCF to achieve zero-slot Tx following ACK reception, now with ~700nsec slack
     86 * Seeded PNRG in CPU High with node serial number, avoids race when two IBSS nodes boot simultaneously, scan for existing BSS for "random" duration before creating new BSS
     87 * Fixed bug in {{{write_phy_preamble()}}} that calculated {{{L-SIG.LENGTH}}} value too large by 3 for some rates/lengths of HTMF transmissions
     88 * Fixed {{{latest_rx_timestamp}}} and {{{latest_txrx_timestamp}}} to use same System Time value when updating both timestamps from same event
     89 * Fixed bug when DTIM Multicast Buffering was enabled or disabled while CPU Low was actively transmitting multicast frame. Now CPU Low properly handles reorganization of its Tx lists independent of current Tx activity.
     90 * Fixed potential deadlock where CPU High might stop dequeuing new Tx packets after CPU Low reboots (such as when re-loading the CPU Low application from the debugger)
     91 * Fixed potential bogus value for {{{beacon_txrx_config.dtim_period}}} if wlan_exp configures BSS to transmit beacons but doesn't explicitly set DTIM period
     92 * Fixed missing enforcement of {{{MAX_NUM_ASSOC}}} limit on number of associations at AP; now properly applies to associations created from wlan_exp or via wireless association handshake
     93 * Fixed bug in accessing TIM bit fields when length of the network's SSID string changes
     94 * Fixed a few cases of checking for {{{NULL}}} value after accessing pointer variable
     95 * Fixed a few unlikely-but-possible {{{NULL}}} pointer dereferences
     96 * Fixed wlan_exp to permit setting DCF minimum contention window exponent to 0 (was previously limited to 1 for no good reason)
     97 * Fixed missing {{{poll_tx_queues()}}} following reception of a reception from a previously-dozing STA. Should improve performance when communicating with power-savings clients in a lightly-loaded network.
    5101== 1.6 Releases  ==