[[TracNav(802.11/TOC)]] = 802.11 Reference Design: Changelog = == 1.7 Releases == '''Download Latest: [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.7.5.zip Mango_802.11_RefDes_v1.7.5.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.7.5.zip 1.7.5] || 18-Jan-2018 || [browser:ReferenceDesigns/w3_802.11?rev=6229 6229] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.7.4.zip 1.7.4] || 6-Dec-2017 || [browser:ReferenceDesigns/w3_802.11?rev=6207 6207] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.7.2.zip 1.7.2] || 6-Sep-2017 || [browser:ReferenceDesigns/w3_802.11?rev=6147 6147] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.7.1.zip 1.7.1] || 18-Jul-2017 || [browser:ReferenceDesigns/w3_802.11?rev=6141 6141] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.7.0.zip 1.7.0] || 16-Jun-2017 || [browser:ReferenceDesigns/w3_802.11?rev=6110 6110] || 14.4 || Dual MB/AXI || ---- '''Changes in v1.7.5:''' This release includes updated [wiki:../Benchmarks/Rx_Char Rx sensitivity] characterization results for the OFDM and DSSS receivers. All PHY modes exceed the sensitivity requirements of the 802.11 spec. '''PHY and MAC Hardware Changes:''' [[BR]] * Added support for OFDM and DSSS receptions without packet detection. At low SNR the receivers don't require AGC, so there's no need for packet detection before the PHY reception. The OFDM Rx starts on an LTF correlation event; the DSSS Rx starts on a SYNC field detection. If packet detection fires the AGC will be triggered, but this is no longer required before a PHY Rx event. '''Python changes:''' [[BR]] * Added {{{require_pkt_det }}} arguments to {{{n.configure_ofdm_pkt_det()}}} and {{{n.configure_dsss_pkt_det()}}} methods to configure whether the Rx PHYs attempt receptions without explicit packet detection. ---- '''Changes in v1.7.4:''' '''PHY and MAC Hardware Changes:'''[[BR]] * Redesigned DSSS receiver in Rx PHY core * Much more robust detection and decoding of packets at mid and low SNRs * Added support for 2Mb (DQPSK) DSSS waveforms; {{{RX_DSSS}}} log entries now encode rate in MCS field ({{{MCS=0}}} for 1Mbps, {{{MCS=1}}} for 2Mbps) * Dropped support for 802.11-2016 Clause 15 waveforms (i.e. DSSS before 802.11b); all Wi-Fi devices we tested use supported Clause 16 (11b) waveforms * Redesigned Rx packet detector logic * Separated magnitude calculations for DSSS and OFDM detectors * Refined data types for correlation and energy thresholds for better configuration range across SNRs * Added registers to independently disable OFDM and DSSS receive pipelines, controlled via {{{n.enable_ofdm_rx(bool)}}} and {{{n.enable_dsss(bool)}}} wlan_exp methods * Updated delays through and around AGC DCO filter to fix sample-skipping during AGC settling * Added optional AGC mode (disabled by default) to leave RXHP disabled after a reception, re-enabled at pkt detection; default is to re-assert RXHP at RX_END * Added inputs to MAC core * {{{FORCE_CCA_BUSY}}}: holds CCA busy independent of other MAC state * {{{START_POSTRX_TIMER1}}}: starts the PostRx Timer 1, useful to time a SIFS when RX_END is inferred from logic other than the Rx PHY * {{{AUX_MAC_HW_STATUS}}}: inputs routed to MAC {{{STATUS}}} register, useful for polling non-MAC status signals in lockstep with other MAC state ''Python changes:'''[[BR]] * Refined type checking in many functions to be less arbitrary in requiring specific types * Added {{{n.disable_ofdm_rx()}}} method to control whether the OFDM Rx pipeline is enabled * Added {{{n.configure_ofdm_pkt_det()}}} and {{{n.configure_dsss_pkt_det()}}} methods to configure Rx packet detection thresholds * Added warnings when a node's active scan state machine is running when Python changes the node's channel or association state ''C code changes:'''[[BR]] * Updated defaults in {{{wlan_phy_init()}}} for redesigned DSSS Rx PHY and OFDM/DSSS packet detector params * Fixed bug in argument handling in IPC message for setting Tx power * Updated wlan_exp_ip_udp header struct definitions to properly describe 2-byte padding in transport header, not 2-byte delimiter in IP/UDP header ---- '''Changes in v1.7.2:''' Release v1.7.2 contains two important software-only fixes to bugs discovered in the previous release: * After a transmit packet buffer was used to send an HTMF waveform, the packet buffer would degrade all future NONHT transmissions by corrupting protected bits in the PHY header's SERVICE field. This issue has been fixed in this release. * An indexing error caused the MORE_DATA bit in the MAC header's frame control 2 byte to always be asserted. This issue has been fixed in this release. ---- '''Changes in v1.7.1:''' Release v1.7.1 is a minor update to fix a few bugs: * Fixed RTS/CTS handshake when using HTMF (11n) waveforms. Thanks to [https://warpproject.org/forums/viewtopic.php?id=3460 wckim] on the forums for notifying us of the issue. * Updated Tx power for RTS transmissions to use same Tx power as other control packets (CTS, ACK) * Re-enabled physical carrier sensing by default * Fixed how the {{{min_dur}}} (minimum duration) parameter is handled by the autocorrelation packet detector. The {{{min_dur}}} value is now properly interpreted as sample periods (not clock cycles), restoring the packet detectors false-positive performance at mid-to-low SNR ---- '''Changes in v1.7.0:''' Release 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. '''Code Organization:'''[[BR]] The v1.7 code base has been reorganized to better isolate platform-agnostic ({{{framework}}}) and platform-dependent ({{{platform}}}) code. The code base now consists of: * MAC Frameworks - platform-agnostic code: * {{{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 * {{{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 * {{{wlan_mac_low_framework}}}: code common to MAC applications in CPU Low, including MAC/PHY hardware control * WARP v3 Platform Code: * {{{wlan_w3_high}}}: peripheral interface support for CPU High applications, including ETH A and B, DRAM, and UART * {{{wlan_w3_common}}}: peripheral interface support shared by applications in both CPUs, including user I/O and MAC Time * {{{wlan_w3_low}}}: peripheral interface support for CPU Low applications, including MAC/PHY register maps, EEPROM, and RF interfaces * MAC Applications: * {{{wlan_mac_high_ap}}}, {{{wlan_mac_high_sta}}}, {{{wlan_mac_high_ibss}}}: AP, STA and IBSS applications for CPU High * {{{wlan_mac_low_dcf}}} and {{{wlan_mac_low_nomac}}}: DCF and NoMAC applications for CPU Low A 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. The 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. '''Other high level code improvements:'''[[BR]] * Removed (nearly) all cases of header files including other headers, greatly simplifying include hierarchy and reducing chances of unintentional and circular includes * Removed any library dependencies in the BSPs * Migrated {{{wlan_exp_ip_udp}}} library into MAC High Framework source; library no longer required via BSP * Deprecated {{{WARP_HW_VER}}} library * Moved linker scripts from application source folders to high/low platform source folders; applications for same CPU now share a single linker script. * Removed dead code throughout design * Adopted tagged struct typedefs and forward declarations of struct types throughout to reduce complexity of include hierarchies * Simplified struct type definitions for almost-identical structs between MAC framework and wlan_exp '''Improvements to {{{station_info}}} framework:'''[[BR]] The 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. The 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()}}}. Other {{{station_info}}} changes: * 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). * 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. * 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. * 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. * {{{set_tx_power_data(power, device_list, update_default_unicast, update_default_multicast)}}} * {{{set_tx_power_mgmt(power, device_list, update_default_unicast, update_default_multicast)}}} '''Other Code Changes''':[[BR]] * 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. * 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 * Redesigned the {{{InfoStruct}}} class in {{{info.py}}} to support hierarchical field sets shared by multiple structs * 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: * {{{n.get_bss_config()}}}: retrieves the BSS configuration of the node * {{{n.get_network_info()}}}: retrieves information about the node's current wireless network, including its BSS configuration * {{{n.get_network_info_list()}}}: retrieves information about all wireless networks the node has observed * {{{n.get_bss_info()}}}: Deprecated - use methods above instead * Removed unnecessary callback for handling mailbox IPC receptions in High Framework * Improved clarity of AP's UART prints when stations change association state * Moved all updates of user IO outputs (LEDs, hex displays) to central {{{wlan_platform_userio_disp_status()}}} functions in high/low platform code * Enabled wrapping of the wlan_exp event log by default; wrapping can still be enabled/disabled from C or Python * 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) '''Linker Script Change:'''[[BR]] The 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. The {{{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 [http://warpproject.org/trac/wiki/802.11/Usage/SDK#UpdatingSDKHardwareBMMFile user guide] for details. '''Hardware Design Changes'''[[BR]] * 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. * Added pipeline registers in Tx PHY packet buffer -> encoder logic, breaking up long combinational path '''Bug fixes:'''[[BR]] * 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) * Rearranged post-Rx/post-Tx processing in DCF to achieve zero-slot Tx following ACK reception, now with ~700nsec slack * 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 * Fixed bug in {{{write_phy_preamble()}}} that calculated {{{L-SIG.LENGTH}}} value too large by 3 for some rates/lengths of HTMF transmissions * Fixed {{{latest_rx_timestamp}}} and {{{latest_txrx_timestamp}}} to use same System Time value when updating both timestamps from same event * 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. * 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) * 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 * 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 * Fixed bug in accessing TIM bit fields when length of the network's SSID string changes * Fixed a few cases of checking for {{{NULL}}} value after accessing pointer variable * Fixed a few unlikely-but-possible {{{NULL}}} pointer dereferences * Fixed wlan_exp to permit setting DCF minimum contention window exponent to 0 (was previously limited to 1 for no good reason) * 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. ---- == 1.6 Releases == '''Download Latest: [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.6.2.zip Mango_802.11_RefDes_v1.6.2.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.6.2.zip 1.6.2] || 21-Feb-2017 || [browser:ReferenceDesigns/w3_802.11?rev=5883 5883] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.6.1.zip 1.6.1] || 15-Feb-2017 || [browser:ReferenceDesigns/w3_802.11?rev=5859 5859] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.6.0.zip 1.6.0] || 13-Jan-2017 || [browser:ReferenceDesigns/w3_802.11?rev=5743 5743] || 14.4 || Dual MB/AXI || ---- '''Changes in v1.6.2:''' '''MAC Software Changes:''' * Fixed bug in handling of Tx queue polling that could result in corrupted Aux. BRAM data and bogus transmissions. * Fixed bug in the MAC Low Framework that left Rx packet buffers unlocked. This bug had no adverse effects but would have produced errors if the automatically generated {{{XPAR_CPU_ID}}} became nonzero. * Fixed calls to {{{sizeof()}}} that passed a pointer rather than a type or array. * AP now checks to make sure the underlying MAC supports DTIM multicast buffering before assuming that it does. Previously, using NOMAC to transmit multicast frames from the AP would not work until DTIM multicast buffering was explicitly disabled. * Added new optional compiler warnings to each project and fixed the warnings that result from the inclusion of the new flags. From [https://gcc.gnu.org/onlinedocs/gcc-4.6.2/gcc/Warning-Options.html#Warning-Options the gcc docs] we added: * -Wclobbered * -Wempty-body * -Wmissing-field-initializers * -Wmissing-parameter-type * -Wold-style-declaration * -Woverride-init * -Wsign-compare * -Wtype-limits * -Wuninitialized * -Wunused-but-set-parameter * -Wformat * -Wstrict-aliasing * -Wshadow ---- '''Changes in v1.6.1:''' This release requires an updated [wiki:edk_user_repository] - update your local repository before using the v1.6.1 design. '''Hardware Changes:''' * Updated to latest {{{w3_ad_bridge}}}, resolves occasional per-boot issue using RF B * Doubled size of CPU Low instruction/data memory (ILMB/DLMB) to 128 kB '''MAC Software Changes:''' * Fixed bug that broke multicast Tx when DTIM multicast buffering was disabled * Added {{{WLAN_SW_CONFIG_ENABLE_ETH_BRIDGE}}} option to disable all code for Ethernet bridging at compile time * Fixed bug in NoMAC that left the {{{low_tx_details.tx_details_type}}} field uninitialized when reporting Tx events to CPU High, leading to occasional bogus RTS log entries * Updated lower MAC framework to allow leaving the RX_STARTED latch asserted after the {{{frame_receive()}}} returns, permitting MAC application's to implement Rx processing across multiple functions * Updated Rx log entry creation logic in high framework to ignore packet type filter for bad FCS receptions '''App Note:''' * Added new [wiki:../app_notes/FDD-NoMAC FDD-NoMAC app note] demonstrating how to build a simple FDD link with the 802.11 Ref Design ---- '''Changes in v1.6.0:''' '''PHY Hardware Changes:''' * Re-designed LTS correlation decision logic. New design requires correlation peaks separated by known time (63, 64 or 65 sample periods). This helps reject false positive correlation events at low SNR and for waveforms from multi-antenna devices using CDD for SISO waveforms. * Fixed quantization error in demodulator that reduced benefit of soft-decision decoder * Better pipelining in critical Rx PHY paths for easier timing closure * Expanded to 16 Tx packet buffers, required for DCF implementation of DTIM multicast buffering '''MAC Hardware Changes:''' * Added Tx Controller D state machine to handle DTIM multicast transmissions - see [wiki:../MAC/Support_HW#MACCoreTxControllers MAC core docs] for details * Removed unused cores and bus connections to simplify XPS hardware design * Extended TU Target logic to use full 54-bit TU time values; previous designs used 32-bit TU values which could behave badly when wrapping * Updated Tx controllers A, C and D to support pausing FSM state even when current backoff count is 0 '''MAC Software Changes:''' * Implemented proper DTIM Multicast behavior. The DCF now buffers multicast transmissions until immediately after the transmission of a beacon. This DTIM buffering behavior, described in 802.11-2012 10.2.1.4, permits dozing clients to wake at the right time to receive all buffered multicast frames. The updated behavior should improve performance when using our AP with battery-powered clients. * Updated the DCF code to poll the IPC mailbox during Tx and Rx processing, allowing better pipelining of Tx/Rx events. The DCF now maintains a list of ready-to-transmit packets from {{{MPDU_READY}}} messages received from CPU High. * Updated beacon timestamp processing to implement the spec's definition of when the timestamp is captured (802.11-2012 10.21.1) * Updated handling of Tx Done events in CPU Low and CPU High. Now CPU Low sends a new {{{TX_PHY_REPORT}}} message after each PHY transmission for a given MPDU. After the last transmission CPU Low sends an {{{MPDU_DONE}}} message. This allows an arbitrary number of re-transmissions to be properly logged in CPU High without overflowing the IPC mailbox. * Fixed bug in IBSS that treated received Probe Responses like beacons * Removed {{{INIT_BRAM}}} instance by: * Explicit initialization of all global variables in {{{.data}}} section * Programmatic init-to-default of {{{malloc}}} data strutures on boot * Renamed {{{usleep()}}} to {{{wlan_usleep()}}} * Removed LTG control from UART menu to avoid conflicts with wlan_exp '''wlan_exp Changes:''' * Simplified {{{TX_HIGH}}} log entries * Fixed errors in {{{configure_bss()}}} when user-supplied params are invalid * Fixed bug {{{node.configure_pkt_det_min_power()}}} that mis-interpreted power level * Associations created by {{{n_ap.add_association()}}} are now flagged to never time out * Devices represented by {{{WlanDevice}}} instances now flagged as HT-capable ---- == 1.5 Releases == '''Download Latest: [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.5.4.zip Mango_802.11_RefDes_v1.5.4.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.5.4.zip 1.5.4] || 3-Nov-2016 || see notes || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.5.3.zip 1.5.3] || 19-Aug-2016 || [browser:ReferenceDesigns/w3_802.11?rev=5607 5607] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.5.2.zip 1.5.2] || 1-July-2016 || [browser:ReferenceDesigns/w3_802.11?rev=5562 5562] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.5.1.zip 1.5.1] || 26-April-2016 || [browser:ReferenceDesigns/w3_802.11?rev=5490 5490] || 14.4 || Dual MB/AXI || || WARP v3 || [https://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.5.0.zip 1.5.0] || 19-April-2016 || [browser:ReferenceDesigns/w3_802.11?rev=5484 5484] || 14.4 || Dual MB/AXI || ---- '''Changes in v1.5.4:''' This is a minor release that (we hope) resolves an issue with the Rx PHY getting stuck when receiving packets with corrupt PHY headers. This release is based on the v1.5.3 project with a few modifications. Unfortunately the code in this release does not represent a single svn revision. The minor changes and related svn changesets are listed below. '''PHY / MAC Hardware:''' * Updated Rx PHY {{{RX_END}}} processing to better handle cases of valid-but-incorrect {{{SIGNAL}}}/{{{L-SIG}}} and {{{HT-SIG}}} fields. Many thanks to [http://warpproject.org/forums/viewtopic.php?id=3266 horace] for his invaluable feedback on this bug. '''MAC Software Changes:''' * Fixed incorrect cast of LTG params from [changeset:5640 changeset 5640]. Thanks to [http://warpproject.org/forums/viewtopic.php?pid=15669 cancub] for finding this. '''Python Changes:''' * Fixed spurious warning in {{{n.log_get()}}} from [changeset:5645 changeset 5645]. ---- '''Changes in v1.5.3:''' '''Important:''' The v1.5.3 hardware design uses updated hardware support cores. You must update your [wiki:edk_user_repository edk_user_repository] to build the v1.5.3 hardware or software projects. Release v1.5.3 contains both hardware and software improvements. '''PHY / MAC Hardware Changes:''' * None - same PHY and MAC cores as v1.5.2. '''MAC Software Changes:''' * Added high framework hooks to enable/disable bridging ETH A with the wireless interface, used by wlan_exp (see below) * Fixed time units bug in implementation of Random Schedule LTG ([changeset:5564 changeset 5564]). * Fixed bug when Python called {{{enable_DTIM_multicast_buffering()}}} when beacons are already disabled. This sequence caused substantial heap churn in previous releases, eventually crashing the node when the heap couldn't accommodate new allocations elsewhere in the code ([changeset:5563 changeset 5563]). * Fixed uninitialized pointer bug in creation of association responses - thanks to kirchhof for the [http://warpproject.org/forums/viewtopic.php?pid=15375#p15375 bug report] ([changeset:5566 changeset 5566]). * Fixed null pointer bugs in upper MAC framework/apps - thanks to kirchhof for the bug reports [http://warpproject.org/forums/viewtopic.php?id=3206 1], [http://warpproject.org/forums/viewtopic.php?pid=15404#p15404 2] ([changeset:5570 changeset 5570]). * Updated {{{bss_info}}} code to only parse multicast or unicast-to-me management packets. Previous releases updated local {{{bss_info}}} entries using any FCS-good receptions. This change avoids any bogus {{{bss_info}}} data resulting from AP's transmitting special tagged parameters in unicast packets to other nodes ([changeset:5575 changeset 5575]). * Fixed logging of {{{phy_mode}}} for control packet transmissions. In v1.5.2 {{{TX_LOW}}} entries for RTS, CTS, ACK packets copied the {{{phy_mode}}} from the related DATA packet, even though the actual RTS/CTS/ACK waveforms were always (correctly) transmitted as NONHT waveforms ([changeset:5596 changeset 5596]). '''Experiments Framework Changes:''' * Added C code compilation timestamp strings to {{{NODE_INFO}}} log entry and to node object properties {{{cpu_low_compilation_date}}}, {{{cpu_low_compilation_time}}}, {{{cpu_high_compilation_date}}}, {{{cpu_high_compilation_time}}}. These timestamps use the compiler's {{{__DATE__}}} and {{{__TIME__}}} macros in the top-level applications (AP, STA, IBSS, DCF, and NoMAC) and are the same timestamps printed to the UART by each CPU on boot. * Added {{{enable_ethernet_portal(bool)}}} node method that controls whether the high-level MAC implements the wired-wireless bridge between the ETH A interface and the wireless interface. It is good practice to disable the Ethernet portal when running LTG-based experiments. This helps avoid issues with unaccounted for Tx/Rx events due to stray Ethernet packets on the wired network. See the updated [browser:/ReferenceDesigns/w3_802.11/python/examples/log/log_capture_two_node_two_flow.py?rev=5607 log_capture_two_node_two_flow.py] script for an example. * Removed unnecessary {{{np.squeeze()}}} calls from log processing examples, fixes errors when log data contains single entries of a given type ([changeset:5597 changeset 5597]). '''Misc Hardware Changes:''' * Reworked the debug header IO using the updated w3_userio core. Now both CPUs can read and write debug pins. Individual pins can be configured as hardware-controlled (for MAC/PHY status signals) or software-contollled (for C code benchmarking). See the updated [wiki:../Usage/UserIO#DebugHeader Debug Header user guide page] for details. ---- Release v1.5.2 contains both hardware and software improvements. '''Changes in v1.5.2:''' '''PHY / MAC Hardware Changes:''' * Separated RX_END and DATA_DONE events in Rx PHY and MAC core control logic. Rx PHY can now continue writing payload after RX_END, allowing shorter Rx extension durations. FCS Result now latched on DATA_DONE '''MAC Software Changes:''' * Tx/Rx logging and Tx/Rx counts update moved out of the AP/STA/IBSS applications and into the MAC High Framework. * Merged {{{counts_txrx_t}}} into the {{{station_info_t}}} structure * Moved the location of {{{station_info_t}}} storage from the heap to DRAM. One advantage of advantage of the reduced heap usage is that networks with a larger number of associations can now be supported (though still soft-limited to 10 associations in C for this release). * Updated the MAC High Framework's scheduler so that scheduled events can be temporarily suspended without being removed entirely. The Ethernet Rx handling uses this feature to considerably reduce heap "churn." This should improve stability for long experiments where heap fragmentation might be an issue. * Fixed a bug in beacon TX_LOW log entries where {{{flags}}} were note being properly set to 0, yielding stale values in logs. * Added [https://warpproject.org/trac/browser/ReferenceDesigns/w3_802.11/c/wlan_mac_high_framework/include/wlan_mac_high_sw_config.h wlan_mac_high_sw_config.h] to control SW configuration. Parts of the design can now be safely compiled out if they are not needed and extra code space is needed. * Fixed small (~2 sample periods) per-boot differences in Rx-to-Tx turnaruond times. Now Rx-to-Tx turnaround time is accurate to 1 sample period across boots. * Thanks to forum user [http://warpproject.org/forums/viewtopic.php?pid=15272 dvanhook] for pointing out a bug in handling unicast probe requests. This has been fixed in the 1.5.2 release * [http://warpproject.org/forums/viewtopic.php?id=3186 dvanhook also found an error in SSID comparisons]. This has been fixed in the 1.5.2 release. * Forum user [http://warpproject.org/forums/viewtopic.php?pid=15297#p15297 vick] found a bug in the handling of the "join" state of a STA when controlled via UART. As of 1.5.2, "s" has been added as a UART input to separately control the scan functionality from the join functionality. * Adjusted the Rx extension to align our SIFS duration with the SIFS durations measured with other (non-WARP) clients. '''Experiments Framework Changes:''' * Enforced minimum of Python version 2.7.5, required for wlan_exp use of struct.unpack. Version 2.7.5 or later has always been required; now wlan_exp throws a helpful error if Python is too old instead of throwing cryptic unpack errors. * Added {{{wlan_exp.log.util.calc_tx_time_log(tx_low_entries)}}} method to simplify Tx durations from TX_LOW log data. The actual duration calculation is still implemented in {{{calc_tx_time()}}}. '''Misc Hardware Changes:''' * Software-controlled pins on debug header now handled by new logic in {{{w3_userio_axi}}} core. Both CPUs use new macros {{{wlan_mac_set_dbg_hdr_out(x)}}} and {{{wlan_mac_set_dbg_hdr_out(x)}}} to control debug header pins 12 to 15. Pins can also be set as inputs with {{{wlan_mac_set_dbg_hdr_dir()}}}. ---- Release v1.5.1 is a '''software-only''' update. You can upgrade an existing v1.5.0 SDK Workspace by replacing the {{{SDK_Workspace/svn_src}}} folder with the one from the v1.5.1 archive. The XPS project and SDK Workspace hw_platform project are unchanged from v1.5.0. You must also update your {{{PYTHONPATH}}} to reference the v1.5.1 Python code to use the v1.5.1 {{{wlan_exp}}} package. '''Changes from v1.5.0 to v1.5.1:''' * Fixed Python 3 support (svn [changeset:5486 changeset 5486]) * Fixed potential null pointer dereferences when AP BSS is null (svn [changeset:5488 changeset 5488]) * Added {{{TX_LOW}}} creation for all ACK Tx - thanks to [http://warpproject.org/forums/viewtopic.php?pid=15020 horace] for the bug report (svn [changeset:5488 changeset 5488]) '''Known Issues in v1.5.1:''' * The {{{flags}}} field in {{{TX_LOW}}} log entries for Beacon transmissions is incorrect. The CPU Low code should set {{{flags = 0}}}. However in v1.5.1 the code does not set {{{flags}}}, resulting in bogus values in the {{{TX_LOW['flags']}}} field in the log. The {{{flags}}} field for Beacon {{{TX_LOW}}} entries should be ignored in v1.5.0 and v1.5.1. This will be fixed in v1.5.2. * {{{uniq_seq}}} (unique sequence number) values are not being properly recorded in {{{TX_LOW}}} and {{{TX_LOW_LTG}}} log entries. This will be fixed in v1.5.2. To apply the fix to v1.5.1, add the following line to [browser:/ReferenceDesigns/w3_802.11/c/wlan_mac_low_framework/wlan_mac_low.c?rev=5490&marks=1095#L1093 wlan_mac_low.c : wlan_mac_low_proc_pkt_buf()]: {{{#!c // Insert sequence number here tx_80211_header->sequence_control = ((tx_80211_header->sequence_control) & 0xF) | ( (unique_seq&0xFFF)<<4 ); /*** START: uniq_seq fix for v1.5.1 - Add these lines ***/ // Insert unique sequence into tx_frame_info tx_frame_info->unique_seq = unique_seq; /*** END: uniq_seq fix for v1.5.1 ***/ }}} ---- '''Highlights in Release 1.5:''' * Added 11n Tx/Rx support * Overhauled [//docs/mango-wlan-exp wlan_exp documentation] * Simplified Network Scan and Network Join state machines * Fixed Rx MAC/PHY deadlocks when handing certain corrupted HT waveforms * Added [../wlan_exp/Porting_v1.5 porting guide] for updating pre-v1.5 wlan_exp scripts '''PHY Hardware Changes:''' * Redesigned Tx PHY * Much more efficient interleaver * Cleaner control logic for triggering new OFDM symbol generation * Reworked Tx PHY init script for easier control of simulation params (see {{{tx_sim}}} struct in [browser:/ReferenceDesigns/w3_802.11/sysgen/wlan_phy_tx_pmd/wlan_phy_tx_init.m#L71 wlan_phy_tx_init.m] * Added support for 11n (IEEE 802.11-2012 Clause 20 PHY) * Tx and Rx PHY now support the "HT Mixed Format (HTMF)" waveform * Supports MCS 0 (6.5 Mbps) through 7 (65 Mbps) * Waveform type (11a NONHT or 11n HTMF) controlled per Tx by MAC code * Rx PHY automatically detects waveform type per reception * Added flexible sampling rate support * 10, 20 and 40 MSps modes implemented by default * 10 MSps mode implements 802.11p * 20 MSps mode is standard 11a/11n 20 MHz channel bandwidth * 40 MSps mode is double-clocked-20, 64 subcarriers in 40 MHz * Redesigned PHY/MAC RX_START, RX_END, RX_ERROR handling to fix various "stuck" states when receiving corrupt 11n waveforms. Thanks to users [//warpproject.org/forums/viewtopic.php?id=3067 horrace] and [//warpproject.org/forums/viewtopic.php?id=3069 christian] for helping debug these states. Apologies to other users who encountered these states in v1.4. * Fixed bug in pilot phase tracking that improves PER at high SNR * Added register to capture Rx CFO estimate, now logged per packet '''MAC Hardware Changes:''' * Added fractional values for TX_START and RX_START microsecond timestamps. Fractional value captures sub-µsec sample index of TX/RX start events and is stored in Tx/Rx log entries. * Improved determinism of Rx-to-Tx turnaround timing. Previous releases were well within 802.11 SIFS timing spec. New design is even better, always accurate to 1 sample period. * Added Tx Controller C state machine to handle beacon transmissions * Removed RX_END latches that blocked Rx PHY. Now there's a single RX_STARTED latch that blocks future receptions. MAC software can clear the RX_STARTED latch anytime (even before the current Rx finishes) to release the Rx PHY for the next reception. '''MAC Software Changes:''' * Moved Beacon Tx to DCF code in CPU Low for more reliable intra-retransmit beaconing * Change allowed for much improved IBSS beaconing where nodes cancel one another's beacon transmissions * Updated Tx packet buffer ping/pong handling to use 3 buffers for better pipelining of pre-Tx and post-Tx processing (see [wiki:802.11/PacketFlow Packet Flow]) * Formalized handling of Tx and Rx packet buffers at boot for more robust behavior when debugger resets one CPU * Redesigned handling of Ethernet receptions to avoid long processing times for Eth Rx burst * Improve robustness of scheduler framework in cases where scheduled callback adds/modifies/removes other scheduled events * Updated interpretation of DIP switch bit to control at-boot association - see [wiki:../Usage/AP#UserIO AP], [wiki:../Usage/STA#UserIO STA], [wiki:../Usage/IBSS#UserIO IBSS] docs for details * Moved maintenance of a node's uniq_seq counter to CPU Low, required to have correct sequence numbers in beacon Tx * Added uniq_seq value to TX_LOW entries for ACK packets sent in response to LTG data receptions, simplifies matching Tx and Rx entries for LTG flows * Fixed a long-standing race condition during the {{{frame_receive()}}} context of the DCF (see [http://warpproject.org/forums/viewtopic.php?pid=14967#p14967 discussion here]) '''Experiments Framework Changes:''' * Overhauled [//docs/mango-wlan-exp wlan_exp documentation] * Simplified methods for configuring BSS state * New {{{node.configure_bss()}}} method safely manipulates all BSS state at a node * Simplified other BSS state methods ({{{sta.join_network()}}}, {{{node.is_associated()}}}, etc) * Simplified methods for setting antenna modes * Antenna mode methods now use simple string arguments (i.e. {{{n.set_tx_antenna_mode('RF_A')}}}) * New {{{node.set_tx_antenna_mode(ant_mode)}}} helper method to set Tx ant mode for all destinations and packet types * Simplified methods for setting Tx rates * Tx rate now specified by MCS (0 to 7) and PHY mode (NONHT for 11a, HTMF for 11n) * Reduced extraneous UART output for normal wlan_exp operations * Renamed {{{TX}}} log entry type to {{{TX_HIGH}}} * Defined new container for "magic" constants per log entry type * New {{{util.test_bss_membership(node_list)}}} tool to check all nodes agree on their association states '''Misc Hardware Changes:''' * Moved {{{w3_iic_eeprom}}} core to shared interconnect, now accessible by both CPUs * Updated [../Usage/UserIO#DebugHeaderSignals debug header pins] with 4th software-controlled bit, replacing external pkt det input ---- == 1.4 Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.4.0.zip Mango_802.11_RefDes_v1.4.0.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 1.4.0 || 17-Dec-2015 || [browser:ReferenceDesigns/w3_802.11?rev=4982 4982] || 14.4 || Dual MB/AXI || '''PHY/MAC Hardware Changes:''' * Added software-control of resets for MAC core Tx state machines; now possible to terminate a pending Tx without clearing all MAC state * Moved microsecond timer to dedicated wlan_mac_time core. New core has two microsecond counters, MAC Time and System Time (see below for details) * Added pipeline registers in multiple PHY/AGC nets that are commonly critical timing paths '''MAC Software Changes:''' * Moved beacon transmissions in the AP to the [wiki:802.11/MAC/Upper/MACHighFramework/Scheduler fine scheduler]. This provides greater flexibility for modifying the beacon interval since the minimum resolution is no longer bound to the coarse scheduler resolution. * Reduced coarse scheduler resolution from 102.4ms to 200.0ms. * Used new wlan_mac_time_hw core to simplify handling of timestamps throughout design * '''MAC Time''' used for MAC TSF (timestamps in Tx beacons, timestamp updated from Rx beacons) and for all log entry timestamps. Code can change MAC Time with {{{set_mac_time_usec(u64 new_time)}}} or apply a time delta with {{{apply_mac_time_delta_usec(s64 time_delta)}}}. These functions are supported in both CPUs. * '''System Time''' is a new 64-bit microsecond counter that cannot be changed from code. The counter starts after the FPGA is configured and runs continuously, even across CPU resets. The System Time is useful where a timer with guaranteed monotonicity is required. The MAC High Framework scheduler and the AP's node activity timeouts now use the System Time. The System Time can be recorded in the node's event log via {{{TIME_INFO}}} entries. * Fixed bug with logging of channel in Rx log entries. Previously RX_OFDM and RX_DSSS entries used CPU High's last-known channel. They now use the accurate channel value included in the {{{rx_frame_info}}} data supplied by CPU Low * Added Tx queue occupancy logging; current occupancy of the Tx queue is recorded in the {{{tx_frame_info}}} of each packet as it is enqueued. This value is eventually logged in the corresponding TX log entry. * Renamed "Tx/Rx stats" to "Tx/Rx counts" throughout the code * Used new per-FSM resets in wlan_mac_hw to better handle cancellation of pending Tx events. Previous version cleared all MAC state to cancel a pending Tx. * Improved safety when iterating over doubly-linked lists ({{{dl_list}}} instances) when handling wlan_exp commands; traversing {{{dl_list}}} instances now limits the number of iterations to the length of the list, avoiding potential infinite loops when list contents change in mid-traversal ISRs '''wlan_exp Framework Changes:''' * Simplified process for extending wlan_exp C and Python with custom commands. More details in the [wiki:../wlan_exp/Extending user guide]. * Updated wlan_exp to use new [browser:edk_user_repository/WARP/sw_services/WARP_ip_udp_v1_00_a WARP_ip_udp stack], replacing WARPxilnet * Updated definitions of BSS Info, Station Info and Tx/Rx Counts structures to not rely on numpy when used outside the context of log entries * Added support for jumbo Ethernet frames in the C and Python; larger frames are especially beneficial when retrieving large logs * Updates to log entry types: * {{{NODE_INFO}}} * Field {{{wn_ver}}} was removed * Field {{{wlan_exp_ver}}} was renamed to {{{version}}} * {{{WN_CMD_INFO}}} type was renamed to {{{CMD_INFO}}} * {{{TIME_INFO}}} * Field {{{new_time}}} was changed to {{{mac_timestamp}}} * Field {{{abs_time}}} was changed to {{{host_timestamp}}} * Field {{{system_timestamp}}} was added * {{{TX}}} and {{{TX_LTG}}} * Field {{{queue_id}}} was changed from a uint8 to a uint16 * Field {{{queue_occupancy}}} was added * {{{TXRX_STATS}}} type was renamed to {{{TXRX_COUNTS}}} '''Other Changes:''' * Updated ETH_B to use axi_dma, now with support for jumbo frames. This allows significantly faster retrieval of log data. Refer to the new [../FPGAArchitecture/802_11_v1_4 FPGA Architecture] page for details on the updated interconnect design. ---- == 1.3 Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.3.0.zip Mango_802.11_RefDes_v1.3.0.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 1.3.0 || 19-June-2015 || [browser:ReferenceDesigns/w3_802.11?rev=4628 4628] || 14.4 || Dual MB/AXI || '''PHY/MAC Hardware Changes:''' * Enabled SISO 802.11n support to Rx PHY. Note: 802.11n is not currently enabled at the MAC. This, along with Tx support, will be added in a future release. * Generalized the MAC Hardware Core to be less DCF-centric * Tx Controller A is used for MPDU & RTS transmissions * Tx Controller B is used for ACK & CTS transmissions * New documentation [wiki:802.11/MAC/Support_HW available here] * Fixed hardcoded sizes in the PHY that prevented very large frame transmission and receptions '''MAC Software Changes:''' * Added full RTS/CTS support. See [wiki:802.11/MAC/Lower/Retransmissions the retransmissions] wiki docs for details on this behavior * Added a [wiki:802.11/wlan_exp/app_notes/dcf_with_hidden_nodes new app note] that uses RTS/CTS to study a hidden node topology * Added channel 40 to the list of supported channels (5200 MHz) * Fixed a potential bad state that could occur when frame_receive() processing in CPU_LOW occurs "late" (e.g, after a reception had been completed by the PHY Rx) * STA now defaults to automatic timestamp updates from beacon receptions. This behavior can still be enabled or disabled from wlan_exp * IBSS now uses a more limited reset of the MAC hardware core to terminate previously-running backoffs prior to starting an explicit pre-beacon backoff '''wlan_exp Framework Changes:''' * Added log entries for transmitted control frames (ACK and CTS) * Added DCF control over: * [https://warpproject.org/docs/mango-wlan-exp/node.html?highlight=set_dcf#wlan_exp.node.WlanExpNode.set_dcf_rts_thresh set_dcf_rts_thresh]: Transmissions of suitable frames with size larger than the RTS threshold will employ the new RTS mechanisms. Frames smaller than this threshold will use the traditional basic access from prior releases * [https://warpproject.org/docs/mango-wlan-exp/node.html?highlight=set_dcf#wlan_exp.node.WlanExpNode.set_dcf_short_retry_limit set_dcf_short_retry_limit]: The Short Retry Limit is a parameter that affects when a node terminates retransmission attempts on short frames * [https://warpproject.org/docs/mango-wlan-exp/node.html?highlight=set_dcf#wlan_exp.node.WlanExpNode.set_dcf_long_retry_limit set_dcf_long_retry_limit]: The Long Retry Limit is a parameter that affects when a node terminates retransmission attempts on long frames * Added [https://warpproject.org/docs/mango-wlan-exp/node.html?highlight=log_configure#wlan_exp.node.WlanExpNode.log_configure new arguments to log_configure] to support disabling/enabling control frames independently from MPDUs. * By default, logs now contain entries for all frame receptions and transmissions. Previously, the default behavior only logged non-control frames by default. * Reduced numpy dependencies to only the functions that truly need it * Small edits to existing wlan_exp examples: * Arguments to FlowConfigCBR are named instead of relying on position in argument list * Added explicit filters to log processing examples to ensure processing of non-duplicate, good FCS, and appropriately typed entries * Disabled Eth PHY auto-negotiation '''Other Changes:''' * New clock_controller and EEPROM cores that mirror the connections in WARPLab 7.5.1 * New radio_controller * Fixed issue with tuning to 5200 MHz * Fixed issue with tuning to higher 5 GHz frequencies ---- == 1.2 Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.2.0.zip Mango_802.11_RefDes_v1.2.0.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 1.2.0 || 14-January-2015 || [browser:ReferenceDesigns/w3_802.11?rev=4282 4282] || 14.4 || Dual MB/AXI || '''PHY/MAC Hardware Changes:''' * Fixed a transmitter scaling issue with the 64-QAM rates. Outer symbols of the constellation were previously clipped and were therefore more prone to symbol errors. The fix improves Tx EVM for these rates by several dB. * Added a new register to prevent the PHY receiver from wrapping the address it uses to write bytes to the packet buffer. This prevents the PHY from overwriting early bytes in a packet when receiving packets longer than allocated space in the packet buffer. * Added an optional minimum packet detection power threshold. Details [wiki:802.11/Benchmarks/Pkt_Det_Min_Power_Char available here]. * Extended the duration of PHY debug outputs like LTS_Timeout and FCS_Good so they can be seen on a scope when zoomed out. * Fixed an issue with the Rx "Coded Bit Counter." Issue was identified in [http://warpproject.org/forums/viewtopic.php?pid=12369#p12369 this forum thread]. * Fixed bug in AGC configuration that reduced PER performance at higher rates '''MAC Software Changes:''' * Reordered statistics processing in the AP/STA/IBSS projects so that stats are updated even for frames that are not addressed to the node that received the frame. * Fixed an IBSS issue that would populate the bcast MAC address into the list of associated stations. * Fixed an IBSS issue where a node would ignore the capabilities field in received beacons. This led to a problem where an IBSS node would mistake an infrastructure BSS (i.e. an AP) as a BSS it could join. * Fixed an issue in the DCF that prevented the MAC from sending ACK frames on the correct RF interface when receiving MPDUs on interfaces other than RFA. * Parameterized the PHY CCA threshold so it can be specified in terms of dBm. Previously this was a hardcoded "magic number" in terms of 10-bit RSSI. '''wlan_exp Framework Changes:''' * Changed the API to [https://warpproject.org/docs/mango-wlan-exp/node.html#wlan_exp.node.WlanExpNode.set_tx_power set_tx_power] and [https://warpproject.org/docs/mango-wlan-exp/node.html#wlan_exp.node.WlanExpNode.get_tx_power get_tx_power]. * Added new command for [https://warpproject.org/docs/mango-wlan-exp/node.html#wlan_exp.node.WlanExpNode.configure_pkt_det_min_power configure_pkt_det_min_power]. * Fixed an issue with reading promiscuous statistics from a node when providing a specific MAC address. Previously, the board would only look for this MAC address within the list of associated stations instead of all promiscuous statistics. * Fixed an issue with the implementation of [https://warpproject.org/docs/mango-wlan-exp/node.html#wlan_exp.node.WlanExpNode.set_tx_rate_unicast set_tx_rate_unicast] and [https://warpproject.org/docs/mango-wlan-exp/node.html#wlan_exp.node.WlanExpNode.set_tx_ant_mode_unicast set_tx_ant_mode_unicast] when using the curr_assoc=True argument. The node will now correctly loop through all associated stations and make the necessary adjustment to the transmission parameters. * Adjusted the definition of "wlan_rx_ant_mode" in Python and C to better align to the active Rx antenna reported in logs. RFA now has an index of 0 instead of 1, and all other interface definitions were adjusted accordingly. '''Other Changes:''' * Added new characterizations of the [wiki:802.11/Benchmarks/Pkt_Det_Min_Power_Char Pkt_Det_Min_Power subsystem] ---- == 1.1 Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.1.0.zip Mango_802.11_RefDes_v1.1.0.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 1.1.0 || 12-December-2014 || [browser:ReferenceDesigns/w3_802.11?rev=4223 4223] || 14.4 || Dual MB/AXI || '''PHY/MAC Hardware Changes:''' * Updated supported Tx power range to [-9,21] dBm * Updated default Tx radio settings after thorough characterization; [wiki:../Benchmarks/Tx_Char Tx EVM and power characterization] use the new defaults * Reduced Rx PHY RSSI averaging to 4 samples (from 8) for faster Rx power estimates. RSSI averaging in the AGC is unchanged. * Added new packet detection logic that can require a minimum RSSI for all detections (can be used to realize configurable Rx sensitivity - disabled by default) * Changed the precision of the energy_thresh register in the auto correlation packet detector (now UFix14_4, was UFix14_8) * Correspondingly, the default energy_thresh is now 9 (0.5626 in UFix14_4) vs 150 (0.5859 in UFix14_18) is previous releases '''MAC Software Changes:''' * Added 16-bit averaged RSSI value to rx_frame_info; this supplements the existing 8-bit Rx power estimate derived from the averaged RSSI * Fixed a capitalization issue in a few includes that would cause errors on case-sensitive filesystems * Raised default Tx power in all top-level projects to 15 dBm (previously 13 dBm) * Added a calibration value to the IPC_MBOX_SET_TIME mailbox command to account for latency in executing the command iteself * Replaced RSSI-to-Rx-power calculation with lookup table derived from Rx power calibration experiments * Replaced Tx-power-to-Tx-VGA-gain mapping function with lookup table derived from Tx power calibration experiments '''wlan_exp Framework Changes:''' * Fixed {{{node.stats_get_txrx}}} method to accept MAC address for un-associated device, allowing retrieval of promiscuous Tx/Rx stats for specific addresses * Fixed an IBSS issue where Tx parameters (e.g. rate) would be ignored for stations that had not yet been added the station_info list at the IBSS node. '''Other Changes:''' * Added new [wiki:../Benchmarks/Tx_Char Tx] and [wiki:../Benchmarks/Rx_Char Rx] Characterizations. We're pleased to report that the Mango 802.11 Reference Design's transmitter and receiver exceed the Tx modulation accuracy and Rx sensitivity requirements in the 802.11a/g standard. ---- == 1.0 Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v1.0.0.zip Mango_802.11_RefDes_v1.0.0.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 1.0.0 || 24-October-2014 || [browser:ReferenceDesigns/w3_802.11?rev=4151 4151] || 14.4 || Dual MB/AXI || '''PHY/MAC Hardware Changes:''' * Increased maximum number of backoff slots to 65k (was 2047 in previous releases) * Reduced the size of the Tx and Rx packet buffers. There are now 8 4KB Tx buffers and 8 4KB Rx buffers (previously 16 each). The reference code only uses 3 Tx buffers; the remaining Tx buffers are free for customizations. The reference code cycles through all Rx buffers, though only 2 contain unprocessed packets at any given (assuming CPU High keeps pace with receptions by CPU Low). * Updated w3_clock_controller to [browser:/PlatformSupport/CustomPeripherals/pcores/w3_clock_controller_axi_v3_01_b version 3.01.b] * Cleaned Tx and Rx PHY init scripts. Updated Tx init script simplifies creation of new waveform files for Rx simulation. * Added new waveform files for simulating the Rx PHY (in [browser:/ReferenceDesigns/w3_802.11/sysgen/wlan_phy_rx_pmd/rx_sigs /wlan_phy_rx_pmd/rx_sigs]). Each waveform represents a valid 802.11 frame with various packet contents and modulation/coding rates. '''MAC Software Changes:''' * Assigned left-most DIP switch to disable all auto-association behaviors at boot; when asserted AP will reject associations, STA will not active-scan and IBSS will not create BSS * Reworked handshake between CPU High and Low for new transmissions, removing the {{{IPC_MBOX_TX_MPDU_ACCEPT}}} message. See the [wiki:../PacketFlow Packet Flow] page for details. * Updated wlan_mac_low.c to explicitly write the MAC core's auto-inserted timestamp value to the Tx pkt buffer after transmitting a beacon, so the packet payload in the log matches the transmitted payload ([changeset:3981 rev 3981]) * Updated contract for {{{queue_checkout_list()}}} to return number of successfully checked-out queue entries ([changeset:3968 rev 3968]) * Updated definition of "length" across the codebase to ensure any length which includes the MAC header (typically 24 bytes) also includes the FCS (4 bytes), consistent with the standard's definition * Added new packet type code {{{PKT_TYPE_DATA_PROTECTED}}} for distinguishing received packets with protected (encrypted) payloads; these were previously incorrectly treated as unencrypted, potentially leading to mis-interpreting payloads as valid LLC headers * Moved all {{{#define}}} for assigning space in DRAM and AUX BRAM to [browser:/ReferenceDesigns/w3_802.11/c/wlan_mac_high_framework/include/wlan_mac_high.h#L48 wlan_mac_high.h] (svn rev [changeset:4035]) * Fixed rare (but not impossible) race condition in LTG creation (svn rev [changeset:3980]) * Added utility functions to stop and restore the en/disable state of the interrupt controller and updated application and framework code to use new functions throughout. Application code can pause interrupts as needed, restoring the previous state when finished: {{{ interrupt_state_t prev_interrupt_state; prev_interrupt_state = wlan_mac_high_interrupt_stop(); //Do Non-Interrupt Safe Stuff Here wlan_mac_high_interrupt_restore_state(prev_interrupt_state); }}} '''wlan_exp Framework Changes:''' * Extensive documentation of Python classes and methods. wlan_exp docs now available at [//docs/mango-wlan-exp warpproject.org/docs/mango-wlan-exp] and in the {{{/python/docs}}} directory of the reference design .zip archive * Fixed retrieval of Tx/Rx stats from IBSS node for unknown partner node; a valid stats struct is now returned with all zero values * Updated example scripts to better handle unexpected log contents * Updated [wiki:../wlan_exp/log/entry_types log entry types docs] to include convenience fields (Tx/Rx addr1, addr2, addr3, seq_num) calculated during numpy array generation * Cleaned up density and formatting of UART prints when processing wlan_exp commands * Updated [wiki:../wlan_exp/examples examples] to use explicit association control from Python, instead of relying on auto-association at boot '''Other Changes:''' * Updated the [wiki:../wlan_exp/app_notes/ibss_multiple_flows IBSS] and [wiki:../wlan_exp/app_notes/dcf_with_multiple_flows multi-flow DCF] app notes * Expanded [wiki:../Usage Using the Reference Design] documentation {{{ #!comment '''Known Issues:''' The following bugs will be addressed in future releases of the design. * {{{n_sta.configure_sta()}}} wlan_exp method ignored by STA nodes - [changeset:4159 C code fix] * An IBSS node which receives a beacons from an AP with a matching SSID will adopt the BSSID of the AP and begin sending becaons - [changeset:XXX C code fix] }}} ---- == 0.96 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.96_beta.zip Mango_802.11_RefDes_v0.96_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.96 Beta || 01-October-2014 || [browser:ReferenceDesigns/w3_802.11?rev=3905 3905] || 14.4 || Dual MB/AXI || Changes in 0.96 Beta: '''MAC Software Changes:''' * Added a third primary software project alongside AP/STA: the Independent Basic Service Set (IBSS). This is also known as 'ad hoc' * AppNote that uses IBSS [wiki:802.11/wlan_exp/app_notes/ibss_multiple_flows available here] * Added support for 802.11 power save mode in the AP. Specifically, the AP will honor clients' notifications that they will go to sleep. During that time, the AP will queue traffic for them and tell them traffic is available in the traffic indication map (TIM) of beacons. * Added new CPU_LOW project: wlan_mac_low_nomac. This very simple project is an alternative to the DCF and all it does it send packets it receives from CPU_HIGH and passes all packets it receives to CPU_HIGH. This is useful for research and education applications where the complexity of the 802.11 DCF may not be needed. * Added new active scan and join state machines to STA/IBSS. * Fixed old bug in the scheduler that resulted in poor NULL handling if a scheduled callback tried to remove the schedule that called it. This is now a safe operation. * Beacon intervals are now in terms of [http://en.wikipedia.org/wiki/TU_(Time_Unit) Time Unit (TU)], where 1TU = 1024µs * Formalized information about basic service sets into the bss_info part of the high framework * Added check for bug introduced in 14.7 tools identified in [http://warpproject.org/forums/viewtopic.php?id=2472 this thread]. * Fixed potential dead lock in IPC write by disabling interrupts for the duration of the write * Fixed potential race condition in 'frame_transmit' of the DCF implementation '''wlan_exp Framework Changes:''' * Added control for new IBSS node types * Added control over association state machines in STA/IBSS. Python can now tell WARP STA/IBSS nodes to join existing networks * Tweaked behavior of 'reset_all' command. Previously, this command did not reset a node's association state. It now resets the node fully and brings it back to the same state it was in at the time of booting. This behavior may potentially break compatibility with existing scripts if 'reset_all' ever occurred after setting up an association. In these cases, the [browser:ReferenceDesigns/w3_802.11/python/wlan_exp/node.py#L528 reset] command should be used instead for fine grained control over what is reset * Added verbose reporting mode to log index filter == 0.95 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.95_beta.zip Mango_802.11_RefDes_v0.95_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.95 Beta || 18-July-2014 || [browser:ReferenceDesigns/w3_802.11?rev=3763 3763] || 14.4 || Dual MB/AXI || Changes in 0.95 Beta: '''Hardware Changes:''' * PHY changes: * Added dedicated DSSS packet detection subsystem, using similar architecture as OFDM auto-correlation detector, tuned for 20-sample periodicity * Added more aggressive timeout for DSSS packet detections, to more quickly reject false positives * Made SIGNAL field logic for Tx and Rx max packet lengths programmable in increments of 1kB (default is 2kB) * Added minimum packet length requirement for DSSS receptions, to discard rare false "good" SIGNAL fields for tiny packets * MAC hardware changes: * Fixed bug that would cause CPU Low to process one PHY Rx twice, using the new SIGNAL rate/length but wrong packet buffer (block Rx PHY only when RX_ERROR == 0) * Separate Tx_Gain values per RF interface, routed like other Tx params through MAC core to PHY Tx and radio_controller * MAC core now captures TX_START time when PHY Tx starts, drives this to gateway out so Tx PHY can insert the accurate timestamp in beacon and probe response frames; eliminates errors from software-captured pre-deferral timestamps * Shuffled debug pin map (see [../Usage#DebugSignals design usage] page for current map) * Added support for sharing RF reference and sampling clocks between nodes via CM-MMCX modules '''MAC Software Changes:''' * STA code now updates the local MAC timestamp value to match the timestamp field in beacons received from the AP (required by the standard, also very useful for aligning log entries) * Fixed bug where mac_payload_log_len value in Tx/Rx log entries was sometimes wrong * Elevated sequence number generation to framework; now uses internal u64 value as 'uniq_seq' in log, the 12 LSB of which are used as sequence number in Tx packets. This enables much easier parsing of log files with >4096 Tx packets per node * Formalized BSS descriptions for AP and STA. Framework now maintains information about BSS and association table dl_list is a member of this description. * Redesigned active scan state machine in STA (see [browser:/ReferenceDesigns/w3_802.11/c/wlan_mac_high_sta/wlan_mac_sta_scan_fsm.c@3702 wlan_mac_sta_scan_fsm.c]), using new BSS description subsystem * Redesigned association state machine in STA (see [browser:/ReferenceDesigns/w3_802.11/c/wlan_mac_high_sta/wlan_mac_sta_join_fsm.c@3706 wlan_mac_sta_join_fsm.c]), using new BSS description subsystem * Added preliminary 802.11a 5GHz support for a subset of 5GHz channels * NAV is now cleared on channel change. This is a requirement in the standard. * Updated AP and STA hex display usage (see [../Usage#LEDs design usage] page for current LED use) '''wlan_exp Framework Changes:''' * Added "forced" association commands; allows association of WARP AP with WARP STA without any wireless packet handshakes (includes example: Python_Reference/examples/[browser:/ReferenceDesigns/w3_802.11/python/examples/set_node_association_state.py@3763 set_node_association_state.py]) * Added authentication address filter support to allow/block associations at AP by MAC address (includes example: Python_Reference/examples/[browser:/ReferenceDesigns/w3_802.11/python/examples/configure_authentication_address_filter.py@3763 configure_authentication_address_filter.py]) * Added new log entry types for LTG Tx/Rx events with LTG flow ID and LTG pkt ID (previously uniq_seq was only available for Tx events) * Fixed log index generation to gracefully handle case of unknown entry type IDs in merge/include_only lists that aren't actually needed to parse a log * New command to en/disable STA timestamp updates from beacons * Improvements to WARPnet network configuration for flexibility when using multiple subnets. NOTE: This change requires [wiki:802.11/wlan_exp a small change to existing scripts]. == 0.93 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.93_beta.zip Mango_802.11_RefDes_v0.93_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.93 Beta || 2-May-2014 || [browser:ReferenceDesigns/w3_802.11?rev=3518 3518] || 14.4 || Dual MB/AXI || Changes in 0.93 Beta: * Fixed low-level MAC bug where some outgoing ACK transmissions were corrupted mid-transmission by an antenna mode switch in the construction of the next transmitted packet. Antenna mode is now set by the Tx MAC state machine core * Fixed rare post-Tx packet detection bug. On occasion, when switching back to a receive mode, a node could detect the end of its own transmission. This would manifest as an early detection for the next Rx ACK, causing it to be lost. * Fixed slow memory leak when configuring LTGs via the WLAN Exp framework * As stated in 802.11-2012, a channel change now resets NAV state * Added register for manually resetting current backoff deferral == 0.92 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.92_beta.zip Mango_802.11_RefDes_v0.92_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.92 Beta || 26-April-2014 || [browser:ReferenceDesigns/w3_802.11?rev=3478 3478] || 14.4 || Dual MB/AXI || Changes in 0.92 Beta: * Significant improvements in reliability of reading log data from boards * Updated physical carrier sensing threshold to ~60 dBm (was unintentionally too high in earlier v0.9 releases) * Improved reporting of wlan_exp version errors * HDF5 improvements * Support for continual log writing * Enforces numpy ASCII type for user string attributes * Added WLAN device class for non-WARP WLAN devices * Simplified NODE_INFO log entry * Changed WARPnet command IDs to be sparsely packed to allow easier user additions * Added WARPnet command for reading / writing arbitrary memory addresses in the design ---- == 0.91 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.91_beta.zip Mango_802.11_RefDes_v0.91_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.91 Beta || 15-April-2014 || [browser:ReferenceDesigns/w3_802.11?rev=3408 3408] || 14.4 || Dual MB/AXI || Changes in 0.91 Beta: * Minor updates to Python_Reference to match [wiki:../wlan_exp/examples examples] * No changes to C code * No changes to FPGA hardware ---- == 0.9 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.9_beta.zip Mango_802.11_RefDes_v0.9_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.9 Beta || 11-April-2014 || [browser:ReferenceDesigns/w3_802.11?rev=3400 3400] || 14.4 || Dual MB/AXI || Changes in 0.9 Beta: * Significantly expanded capabilities of [wiki:../wlan_exp experiments framework] * Added new [wiki:../wlan_exp/examples wlan_exp examples] * Detailed [wiki:../wlan_exp/log event log] at each node * Includes every Tx/Rx event in CPU High and CPU Low * Rx events capture OFDM channel estimates * Tx Low events capture per-retransmission rate, contention window and backoff values * Includes association state changes at AP and STA * Python tools to retrieve log data, parse into numpy structured arrays * New wlan_exp Python control of: * Per-node, per-destination locally generated traffic (LTG) * Tx rate and Tx power per-node, per-destination * Retrieval / reset of Tx/Rx stats * Node microsecond timestamp - node timers can be synchronized with broadcast Ethernet packet * Added duration for LTG schedules; traffic flows can now auto-terminate * Unified structures for all doubly-linked lists (LTG, scheduler, Tx queue, association table) * Reserved 16MB of DRAM for user scratch space ({{{DDR3_SCRATCH_SIZE}}} bytes starting at {{{DDR3_SCRATCH_BASEADDR}}}) * Updated to latest hardware support cores (radio_controller, w3_ad_controller) * MAC/PHY core updates * Added logic to MAC to capture timestamp of each Tx start * Added logic to Tx to automatically insert current microsecond timestamp (for beacon frames) * Added Tx gain param for MPDUO Tx and auto Tx control paths * Added more pipeline registers to debug outputs in all cores, for easier timing closure * Added basic floorplanning to UCF in XPS project, for more consistent timing closure ---- == 0.8 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.8_beta.zip Mango_802.11_RefDes_v0.8_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.8 Beta || 13-February-2014 || [browser:ReferenceDesigns/w3_802.11?rev=2800 2800] || 14.4 || Dual MB/AXI || Changes in 0.8 Beta: * Brand-new WARPnet framework for control and measurement of experiments: [wiki:../wlan_exp WARPNet Framework] * Restructured CPU_LOW in the SDK workspace to create a MAC Low Framework * Added optional address filtering to allow associations with whitelisted MAC addresses only * Improved transmit queue structure in AP * Management frames have their own high-priority queue and don't have to wait behind other queued packets * AP scans traffic for DHCP hostnames and prints these name strings in the association table for easier client identification * Added promiscuous statistics gathering at both AP and STA * Continued the ongoing documentation/comments push * Added multi-antenna reception diversity * Disabled by default -- can be enabled [browser:ReferenceDesigns/w3_802.11/c/wlan_mac_low_framework/wlan_phy_util.c?rev=2788#L271 through software changes] * Added a register to read current NAV * Added RFC and RFD to all PHY cores for 4-antenna selection support * Reference hardware project does not connect RFC/RFD to FMC slot * Users must modify MHS/UCF files for 4-antenna support; refer to _4RF MHS/UCF files for guidance * Better pipelining in PHY cores for easier timing closure * '''Important note:''' the software projects for CPU High require >128K code space. This version of the ref design includes two LMB memory blocks, each 128K. A custom linker script is required to split the large code section across both memory blocks. The GUI linker script editor cannot create a valid file for this design. Please use the {{{lscript.ld}}} files included in the AP and STA src directories. == 0.71 Beta Release == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.71_beta.zip Mango_802.11_RefDes_v0.71_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.71 Beta || 14-January-2014 || n/a || 14.4 || Dual MB/AXI || Changes in 0.71 Beta: * Fixed a bug in Ethernet reception handling identified in [http://warpproject.org/forums/viewtopic.php?id=2200 this forum thread]. * Fixed a driver issue in BSPs. Initial release used a temporary customized driver for the mailbox core. This has been replaced with the standard driver. == 0.7 Beta Release: == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.7_beta.zip Mango_802.11_RefDes_v0.7_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.7 Beta || 9-January-2014 || [browser:ReferenceDesigns/w3_802.11?rev=2520 2520] || 14.4 || Dual MB/AXI || Changes in 0.7 Beta: * Updated data type for auto-correlation pkt det energy threshold (now UFix14_8, was UFix12_0) for better detection of low-SNR receptions * Updated LTS correlator control logic for flexible sample rate support * Reworked PHY Tx output logic to reduce chances of bad states at boot * Fixed bug in Rx descrambler that caused very rare FCS errors * Updated LTS, AGC and pkt detection thresholds for better performance at high and low SNR * Added periodic active scan to STA implementation * Redesigned association table in AP implementation to support arbitrary number of stations * Removed statistics from station_info structure to separate optional statistics from state-critical station information * Redesigned scheduler around doubly-linked list framework * Added support for repeated calls to a user-provided callback * Added ability to cancel previously scheduled event * Safer wrapping of malloc/realloc/calloc/free for use throughout the code * Substantial cleaning of MAC code (ongoing - more cleaning underway for future releases) * Abstracted all uses of doubly-linked lists to use common code * Renamed MAC util files for more consistent division of framework vs. high-level MAC role * Extended and cleaned comments throughout * Started adoption of doxygen-style inline docs == 0.6 Beta Release: == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.6_beta.zip Mango_802.11_RefDes_v0.6_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.6 Beta || 18-November-2013 || [browser:ReferenceDesigns/w3_802.11?rev=2410 2410] || 14.4 || Dual MB/AXI || Changes in 0.6 Beta: * Fixed a PHY bug in the FFT reset logic that caused Rx FCS errors for some combinations of rate and length. * Fixed a PHY bug where the last sample of the transmitted preamble was zero - thanks to [http://warpproject.org/forums/viewtopic.php?pid=9386#p9386 sadiaq on the forums]. * Reduced default Tx queue size significantly (from up to 1000 packets enqueued per station to 150 packets enqueued per station). The extremely large queues caused significant performance issues in TCP (i.e. [http://en.wikipedia.org/wiki/Bufferbloat bufferbloat]). * Aligned SIFS/DIFS/Slot MAC timing values with commercial 802.11 devices. These updated parameters are also parameterized better in terms of what the 802.11 standard indicates along with hardware-specific latency corrections. * Per-subcarrier channel estimates from the PHY have been added to the metadata at the front of every received packet. Known issues: * Under very rare circumstances the board will boot up in a state where all transmitted packets have invalid signal fields. A software reset will not fix this, but a redownload/reprogram of the board will. We have never seen the design slip into this state once it is up and running -- it is purely a boot problem. An official fix will be provided in the next release. == 0.5 Beta Release: == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.5_beta.zip Mango_802.11_RefDes_v0.5_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.5 Beta || 11-October-2013 || [browser:ReferenceDesigns/w3_802.11?rev=2270 2270] || 14.4 || Dual MB/AXI || Changes in 0.5 Beta: * Added station implementation that can associate with either a WARP AP or a commercial AP (provided security is disabled). To use the station, a computer can be directly connected via Ethernet to ETH_A. The 802.11 station implementation will bridge that Ethernet link to the wireless link. The UART menu can be used to perform an active scan and attempt to join nearby APs. Otherwise, the station implementation will at boot attempt to join an AP whose SSID is specified in the top of the wlan_mac_sta.c file (default "WARP-AP"). * Split the ILMB and DLMB memories to increase code space. DLMB is now in a new 64K BRAM leaving the existing 128K BRAM exclusively for instructions. * Enhanced UART menu for both AP and STA * Adjusted AGC threshold to allow receptions of higher-power packets. In previous designs, transmitters that were too close (a few feet) to a WARP 802.11 AP would fail to communicate. These high power receptions have been addressed. == 0.4 Beta Release: == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.4_beta.zip Mango_802.11_RefDes_v0.4_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.4 Beta || 25-September-2013 || [browser:ReferenceDesigns/w3_802.11?rev=2242 2242] || 14.4 || Dual MB/AXI || Changes in 0.4 Beta: * Added 64-QAM rates to PHY Tx and Rx (48Mbps and 54Mbps) * Increased traceback depth in decoder for improved performance * Moved to interrupts for all events in top-level MAC / CPU High * New SDK workspace organization for easier code sharing between top-level projects * Fixed an issue with software resets when using malloc/realloc/free. This issue is described in [http://www.xilinx.com/support/answers/30878.html Xilinx AR# 30878], but our fix is slightly different. We have instantiated an extra BRAM (4K size) that holds the default state of the .data section. On software reset, the project will overwrite it's .data with the original .data section that is in this extra BRAM if it exists. == 0.3 Beta Release: == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.3_beta.zip Mango_802.11_RefDes_v0.3_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.3 Beta || 20-August-2013 || [browser:ReferenceDesigns/w3_802.11?rev=2164 2164] || 14.4 || Dual MB/AXI || Changes in 0.3 Beta: * Many MAC/PHY bug fixes * Resolved rare deadlock in Rx PHY following late pkt det events * Updated LTS correlator (fixed offset-by-1 bug, increased dynamic range of stored coefficients) * Added high/low SNR thresholds for LTS correlation * Fixed bug related to asynchronous resets in decoder * Re-designed phase error correction system to apply pilot-derived phase estimates in same symbol period * Added 16-QAM rates to PHY Tx and Rx (24Mbps and 36Mbps) * Re-designed Ethernet I/O to use scatter-gather DMA (replaces Ethernet FIFO) * Completely redesigned wireless transmit queue * Much better handling of bursty Ethernet receptions * Use Ethernet DMA to minimize copies (new payloads are DMA'd to queue in DRAM, then copied to PHY pkt buffer immediately before Tx) * Per-associated-station queueing of MPDUs awaiting transmission * Uses DDR3 SO-DIMM (if present) for large queues (up to 3000 packets) * Added UI for changing AP parameters over UART (after downloading design press Esc key to see menu) * Added support to en/disable new associates at run-time via the top push button (to avoid unwanted associations during experiments) == 0.2 Beta Release: == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.2_beta.zip Mango_802.11_RefDes_v0.2_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.2 Beta || 30-July-2013 || [browser:ReferenceDesigns/w3_802.11?rev=2115 2115] || 14.4 || Dual MB/AXI || Changes in 0.2 Beta: * Many MAC/PHY bug fixes * Better default thresholds for packet detection and Rx correlations * Added queue to CPU High Tx packet processing, to reduce chances of dropped packets during bursts at Ethernet Rx * Added support for disassociation and re-association handshakes in wlan_mac_ap.c * Stubbed out code for setting per-station, per-packet rates in wlan_mac_ap.c (ready for custom rate adaptation schemes) Known issues: * Under very rare circumstances a deadlock can occur when RSSI-based packet detection is enabled. RSSI-based packet detection is disabled by default (in our tests the alternative auto-correlation packet detection is sufficient by itself). * Bursts of Ethernet receptions can cause dropped packets at the Ethernet MAC, due to the Rx buffer filling faster than the wireless Tx can process new packets. This manifests as a slight asymmetry between downlink and uplink throughput when using TCP. A faster Ethernet Rx -> wireless Tx queueing scheme is in the works which should address this. == 0.1 Beta Release: == '''Download: [http://warpproject.org/dl/refdes/802.11/Mango_802.11_RefDes_v0.1_beta.zip Mango_802.11_RefDes_v0.1_beta.zip]''' Release Details: ||= Hardware =||= Release =||= Date Posted =||= SVN Rev. =||= ISE Ver. =||= Arch =|| || WARP v3 || 0.1 Beta || 23-July-2013 || [browser:ReferenceDesigns/w3_802.11?rev=2086 2086] || 14.4 || Dual MB/AXI || * Initial beta release of 802.11 Reference Design * Compiling the 802.11 Reference Design requires an edk_user_repository of revision 2086 or later. Update your local edk_user_repository working copy to the latest version.