DIAG 2.10
=============================
    - Add ARM .deb package: datapath tests are disabled on ARM platform so far.
    - Add "PHY Link Test" for Lil'Nikki based designs including single ended PHY FW.
    - Fix timeout handling for long running tests.
    - Fix first start issue for option "-s" on Linux.
    - Improve multiple devices support on Linux: print diag/production driver status in "Select Device" menu.
    - Allow option "-s" for latest selected device.
    - Source package for "aqdiag" driver is provided. Useful commands: "make" and then "make install" or "make load".

Known issues:
    - Manually built/installed aqdiag.ko must be loaded by "sudo insmod aqdiag.ko inttype=2 vectors=4" ("make load" or "make install" does the same).
    - Second run of 100M PHY loopback datapath test fails on Lil'Nikki.
    - Various issues for tests (diff results by menu and by command line option; no diagnostics for failing tests etc. etc.)

 Note: T6 support is not integrated yet.

DIAG 2.9
=============================
    - Fix crash after using "--update_fields" option (all OSes, all cards).
    - Better handle FW issues (Semaphore 1 Acquiring Timeout) keeping all other stuff functioning properly.
    - Fix OS hang/crash after PHY loopback test failure (if PHY FW is not running).
    - Avoid crash if there is no flash override.
    - Add PHY chip revision/ID and MAC secure chip info to Device Info output.
    - Restore SPI Flash interface if it hung in busy state.
    - Fix uninstalling Windows Diag driver with option "-s".
    - Fix errors when starting up from path containing round brackets.

Known issues:
    - (mostly Ubuntu ARM) Manually installed aqdiag.ko driver can't be properly used (because changing interrupt settings requires driver restart).
    - Clean Windows 7 requires VC redist packages to install.
    - Second run of 100M PHY loopback datapath test fails on Lil'Nikki.
    - Various issues for tests (diff results by menu and by command line option; no diagnostics for failing tests etc. etc.)

 Note: T6 support is not integrated yet. ARM .deb package is not release ready.

DIAG 2.8.1
=============================
    - Fix Ubuntu install by apt command including Linux kernel 4.14+: sudo apt -f -y install ./diag_x86_64.deb
    - Add boolean non-interactive option "--clx_mirror" (emulate flashBurn behavior) to use with "-f image.clx"

 Note: CentOS 6.x installation may require this command: sudo yum install "kernel-devel-uname-r == $(uname -r)"

DIAG 2.8
=============================
    - Command line option "--compare_flash"
    - Fix Flash to CLX comparison when CRC check fails
    - Fix IEEE test ("1G Fit to Template" issue) for secure chip AQC107S
    - New Flash types support (Macronix etc.)
    - Internal fix for MDIO access

Known issues:
    - [Felicity] AQS107 SFP+ module has known issue with SMBUS access hang (a retry was added to decrease issue frequency). Restarting DIAG helps to resolve it.
    - Clean Windows 7 requires VC redist packages to install.
    - Second run of 100M PHY loopback datapath test fails on Lil'Nikki.
    - Cant run from path containing round brackets.

DIAG 2.7
=============================
    - Tuned semaphore acquiring timings to eliminate sporadic semaphore issues.

Known issues:
    - AQS107 SFP+ module has known issue with SMBUS access hang (a retry was added to decrease issue frequency). Restarting DIAG helps to resolve it.
    - Clean Windows 7 requires VC redist packages to install.
    - Second run of 100M PHY loopback datapath test fails on Lil'Nikki.
    - IEEE test doesn't work on a secure chip.

DIAG 2.6
=============================
    - Fixed reset sequence issue with FW 3.X (now matches with latest driver reset sequence).
    - 
Fixed formatting message and diag driver uninstall on Linux.
    - Added .rpm packages for CentOS 6.8 and 7.x.

Known issues:
    - In some rare case there is still one more semaphore 1 acquiring issue for Felicity with FW 3.1.18 (H/W details are gathering).
    - Second run of 100M PHY loopback datapath test fails on Lil'Nikki.

DIAG 2.5
=============================
    - Felicity semaphore issue handling improved and --flash_erase option is allowed (final fix will be on FW side with FW 3.1.14+).
    - Updated reset sequence.
    - Skip PHY kickstart for Felicity.
    - 
Fixes for --no_kickstart internal option.

Known issues:
    - Second run of 100M PHY loopback datapath test fails on Lil'Nikki.

DIAG 2.4
=============================
    - Add support for ELM GD25Q64C 8 Mbyte flash
    - Speed up PHY initialization at beginning of diag
    - Fix flash menu bugs
    - Fix register menu bug that happened when user switches to new device without exiting diag

DIAG 2.3
=============================
    - Add Oprom version in device info
    - Add PHY temperature in device info
    - Add flash contents verification against clx file
    - Add ability to program mirror copy of .clx file to flash
    - Ignore " and ' characters in clx file paths
    - Ignore VPD tests for RBL_EN chips
    - No longer require reboot after flash overrides
    - Logging enhancements
    - Unstall PHY FW for IEEE Test

DIAG 2.2
=============================
    - B1 Efuse flash mode agent loading
    - Skip unsupported tests instead of reporting fail
    - Cosmetic improvements to output
    - Remove flash detect bit setting in customer version
    - Fix Linux driver licensing issues

    Issues:
    - Does not take case insensitive clx
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 2.1
=============================
    - Fix Loopback tests
    - Change hash scheme, to fix 'Python stopped working' on certain machines
    - Serdes test added

    Issues:
    - Does not take case insensitive clx
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 2.0.109
=============================
    - LED indicators for External Loopback test
    - Ability to run Diagnostic when added in Windows PATH environment variable
    - Fix fw flashing when oprom is empty
    - Fix AQC100 Mac loopback test

    Issues:
    - Does not take case insensitive clx
    - Some FW fails Phy Datapath test
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 2.0.108
=============================
    - Fix issue with setting rev

    Issues:
    - Does not take case insensitive clx
    - CLX 3.0 size issue
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 2.0.107
=============================
    - Fix --flash_fields issue
    - Print status of flash update at end (-f)

    Issues:
    - Does not take case insensitive clx
    - CLX 3.0 size issue
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 2.0.106
=============================
    - Fix help issue (-h now displays correct info)
    - Fix issue with internal bdp menu (bdp setting wasn't getting applied if it differed with flash)
    - Update --aqc to not erase flash if no clx was provided
    - Fix 'None type' exception with b1 in b0 mode

    Issues:
    - Does not take case insensitive clx
    - CLX 3.0 size issue
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 2.0.105
=============================
    - fix -k option with new dev ids
    - Fix bdp case: flash contains bdp, clx does not = no prompt
    - 3.x fw reads correct mac address if overriden by flash
    - Add security Device Id's only
    - Fix issue with IEEE tests (was missing PHY bin files)

    Issues:
    - 'None type' exception with b1 in b0 mode
    - Does not take case insensitive clx
    - CLX 3.0 size issue
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear
    - help option broken

DIAG 2.0.104
=============================
    - fix -k option with new dev ids
    - Fix bdp case: flash contains bdp, clx does not = no prompt
    - 3.x fw reads correct mac address if overriden by flash
    - Add security Device Id's only

    Issues:
    - 'None type' exception with b1 in b0 mode
    - Does not take case insensitive clx
    - CLX 3.0 size issue
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear


DIAG 2.0.102
=============================
    - Fix bdp case: flash contains bdp, clx does not = no prompt

    Issues:
    - 3.x fw reads wrong mac address if overriden by flash
    - 'None type' exception with b1 in b0 mode
    - Does not take case insensitive clx
    - CLX 3.0 size issue
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 2.0.101
=============================
    - Support clx2.0 structure
    - Use rpm to install diagnostic to different Linux flavors
    - Diagnostic Phy provisioning on the fly
    - Fix IEEE Test for 1.5.70+ mac fw
    - Driver/Os dependencies cleanup

    Issues:
    - CLX 3.0 size issue
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 1.3.21
=============================
    - Fix CentOS print issue (stdout flash needed)
    - Use Alexey's kickstart sequence

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 1.3.20
=============================
    - Fix Felicity issue where MBU code was using incorrect function
    - Cleanup uninit process
    - Handle page size more cleanly when it's not a power of 2

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 1.3.19
=============================
    - Fix semaphore issue when fw version less than 1.5.44
    - Fix I/O error when flash  is erased
    - Add attribute paused for dummy timer

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 1.3.18
=============================
    - Diag refactoring
    - Support for D100 devices
    - IEEE fixes
    - Chip ID and revision support in device info

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory
    - k option causing driver to occasionally disappear

DIAG 1.3.17
=============================
    - Fixed 100M PHY internal loopback issue
    - Fixed issue with running MAC Registers test (caused issue with production driver)
    - Now prints speed when running PHY or Ethernet Plug tests

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.16
=============================
    - Fixed issue with -s option removing device from Device Manager

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.15
=============================
    - Fixed issue with 5G link (phy was still in low power mode, had to disable it in mbu)
    - Fixed issue with MAC Register test causing PCIe hang

Issues:
    - 100M PHY internal loopback sometimes doesn't work (data corruption on PHY)
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.14
=============================
    - Added 'q' key option to quit tests gracefully
    - Reduced run time of datapath tests
    - Made datapath tests more stable
    - Fixed bug where -r results would print out 0% pass even though it was more
    - Updated info in -h

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.13
=============================
    - Default to verbosity 1 to lessen output clutter
    - Ability to run without driver, but with limited functionality
    - IEEE testing added

Issues:
    - Workaround still in place
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.12
=============================
    - Workaround for datapath bugs (MSI was seeing a lot of failures on their systems)
        * cause of the bug still needs to be investigated
    - Fix for LSO bug 

Issues:
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.11
=============================
    - Fix Memory tests affecting Ethernet Plug tests
    - VPD info only gets printed with verbosity 2
    - Log file creation in Diag folder
    - PCI Override menu and feature fixes
    - Update Driver

Issues:
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.10
=============================
    - Fix issue with verbosity
    - Fix issue with timeout (2 mins was not enough, increase to 3)
    - Fix issue where monoboost would PASS even though only 255 packets were sent and received (now causes failure)
    - Fix PHY datapath issue (was transmitting many packets, but receiving 0. MBU code change fixed this)

Issues:
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.9
=============================
    - Override pci settings without requiring reboot
        * only supported on Windows for the moment
    - If user doesn't provide all PCIe flash overrides, defaults will be retrieved from config space values

Issues:
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Datapath tests not supported on MacOS yet
    - For TX1 system (aarch64 architecture), integrity check for monoboost is not supported
        * it slows down the throughput, due to using uncached memory

DIAG 1.3.8
=============================
    - Fix flash read error
    - Kickstart after --aqc to update mac address

Issues:
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Must provide all fields for flash overriding (dev id, subsys, lane width)

DIAG 1.3.7
=============================
    - Override pci settings without requiring reboot
    - Mac Address reads from flash if present

Issues:
    - FW 2.x has semaphore issues
    - FW 2.x datapath test lock up
    - Must provide all fields for flash overriding (dev id, subsys, lane width)

DIAG 1.3.6
=============================
    -  Added missing B1 Files
    -  Check RBL_EN bit for kickstart

Issues:
    - MAC firmware does not reload after global reset is called in B1
    - MAC Address in Device Info shown from FW when Flash contains valid FW


DIAG 1.3.5
=============================
    - Added B1 Support
    - Improve Kickstart reliability
    - Ability to swap NCBs

Issues:
    - MAC firmware does not reload after global reset is called in B1
    - MAC Address in Device Info shown from FW when Flash contains valid FW


Diag 1.3.4
=============================
    - Overwrite MAC Address and Subsystem from command line
    - Rework Architecture
    - LED test included in auto.cfg
    - Fix for -s option
    - Fix for option to save flash contents to clx file
    - Fix for partial ncb flash
    - Re-add Phy datapath test

Issues:
    - Flash verify against fw file does not work.
    - Mute flash output

Diag 1.2.7
=============================
    - Fixed bug in special menu, where after erasing flash and then applying new settings, the mac fw wouldn't be burned
    - Able to build for macOS
        * the user needs to disable SIP (system integrity protection) before running the diag
    - Unix builds no longer use .exe extension
    - Add option to run fast datapath tests at multiple speeds

Issues:
    - Windows 7 needs C++ 2015 redistributable installed before running.
    - AQ_API_Flash code needs to be compiled for Ubuntu and Fedora
    - macOS issues
        * Fast datapath doesn't work on macOS (hangs system), so we print a message about this
        * Somewhat unstable: sometimes causes a segmentation fault (try to repeat test if this happens)

Diag 1.2.6
=============================
    - Fixed bug where MAC Address ending in 00-00-00 wouldn't be burned using aqc file
    - Found 2 workarounds to make diag work for macOS, in a limited mode

Issues:
    - Windows 7 needs C++ 2015 redistributable installed before running.
    - AQ_API_Flash code needs to be compiled for Ubuntu and Fedora
    - In --debug mode (which macOS version will use), special menu doesn't seem to burn mac fw

Diag 1.2.5
=============================
    - Rearranged menus
    - Added MAC Register Test to Misc Test Menu
    - Added Linux support (CentOS for now)
    - Added ability to update MACFW, PHYFW, and OPROM individually
    - Added -f BLOCKNAME FILEPATH option
    - Added --mac_addr/--mac_addr_input option to burn mac address from command line
    - Added option in flash menu, to save contents of flash to file

Issues:
    - Windows 7 needs C++ 2015 redistributable installed before running.
    - AQ_API_Flash code needs to be compiled for Ubuntu and Fedora
    - MacOS not supported (major issues with multiprocessing)

Diag 1.2.4
==============================
    - Fast loopback datapath tests added
    - Added --aqc command line option

Issues:
    - Windows 7 needs C++ 2015 redistributable installed before running.
    - Ethernet Plug test not yet functional.

Diag 1.2.3
==============================
    - Add Flash Override Capabilities
    - Add eFuse Burning Capabilities

Issues:
    - Windows 7 needs C++ 2015 redistributable installed before running.
    - Ethernet Plug test not yet functional.

Diag 1.2.1
==============================
    - Add Flash write portion test
    - B0 compatibility added
    - Read/Write eFuse functionality
    - Bin file generation for eFuse burn feature

Issues:
    - Windows 7 needs C++ 2015 redistributable installed before running.
    - WinPE is not yet supported for latest chip revision.
    - Ethernet Plug test not yet functional.

Diag 1.2.0
==============================

Features
    - Add LED Test
    - Add Flash write/verify test
    - Add PHY device info to "Device Info" option
    - Add ability to specify tests as command line arguments
    - Add 32 bit compatibility
    - Add Windows 7 compatibility
    - Add ability to loop a user specified amount of times to run auto.cfg file
    - -S option now reinstalls driver prior to diagnostic driver at end of program
    - -K option to keep diagnostic driver installed at end of program
    
Issues
    - Windows 7 needs C++ 2015 redistributable installed before running.
    
Diag 1.1.0
==============================

Features
    - Add command lines options with argparse
    - Add external ethernet loopback option for datapath tests
    - Add version info in help menu (-h) and device info (-p)
    - Add MAC address and Firmware version to data read in device info option
    - Use multiprocessing instead of threads to execute tests and check for hang
    - Create new maccontrol instance for each new test, instead of passing it around
    - Move configuration files to config folder (and add auto.cfg for automating tests through cmd line)
    - Move datapath scripts to scripts folder
    - Instead of using WMI (not supported in WinPE) to detect pci device list, use macAccess.getListOfDevices()
    - Add erase option in flash

Issues
    - Output in verbosity level 1 mode not formatted correctly
    - Doesn't work on Windows 7 x64
    - Still only 64-bit 
    - Build.cmd does't work for p4 (need changes to MAC-Bringup to extract those folders)
    - setup.py assumes a local copy, doesn't work for p4 (same cause as above issue)

Diag 1.0
==============================

Features
    - Datapath: Shallow and deep loopback tests
    - Flash: burning and verifying flash + reading ncb0 block
    - VPD: reading VPD
    - Memory: MCP memory tests and shallow loopback test with back pressure
    - Offloads: LSO offload test
    - Device Info: prints device info such as speed and lane width

Issues
    - Automatic driver load doesn't work in WinPE for now (causes program to exit prematurely)
    - Build.cmd does't work for p4 (need changes to MAC-Bringup to extract those folders)
    - setup.py assumes a local copy, doesn't work for p4 (same cause as above issue)
    - Stream compare has been disabled for now due to memory leak issue
    - Only 64-bit for now
    - Using ctrl+c causes issues when tests are running