********************************************************************************
Expander Firmware Download Utility (Xfdlutil) for EFI platform.
********************************************************************************

********************************************************************************
REQUIREMENTS:
********************************************************************************
Server:
    Xfdlutil is intended to run on EFI enabled server platform.
    This platform shall have LSI SAS (Gen1 and Gen2) HBA’s and drivers to
    support inband interface.

Host Bus Adapter Compatibility:
    Xfdlutil is compatible with LSI SAS Gen1 and Gen2 HBAs supporting
    MPT interface.

Expander Compatibility:
    Xfdlutil is compatible with the following LSI SAS2x Expanders.
        SAS2x (Bobcat).
********************************************************************************

********************************************************************************
FEATURES:
********************************************************************************
    Xfdlutil includes the following features:
        Easy-to-use menu-driven interface, described below,
        "Using Xfdlutil in Menu-Driven Mode".
        Flexible, full-featured command line interface, described below,
        "Using  Xfdlutil in Command Line Mode".
        HBA selection, if multiple adapters are installed.
        Options for updating board firmware and manufacturing data.


Using Xfdlutil in Menu-Driven Mode:
    LSI SAS HBA selection
    LSI SAS expander selection
    Image download to LSI SAS2x expander(Option 20)
        Download firmware.
        Download firmware and activate.
        Download manufacturing binary.
        Download manufacturing binary and activate.
    Reset LSI SAS2x expander(Option 98)
    Reset LSI SAS port.( Option 99)


Using  Xfdlutil in Command Line Interface Mode:
    xfdlutil [ -p portNumber ][-a] [ -f ]\n"
        -p  portNumber  Specify the port number to operate on.
                        If not specified, all ports are used.

        -a  Pass in menu option arguments.
            Use this option to pass in arguments that are required by any menu
            driven option.

        -f  filename  Specify the filename on the command line.

Example
1.  Entire firmware download process in a single step
    "xfdlutil -p1 -a 20,1,2,2,y -f <filename>"
********************************************************************************

********************************************************************************
FACTS:
********************************************************************************
1.  Following bufferIds are to be used for firmware update.
        0x00
        0x02
        0xE2
2.  Following bufferIds are to be used for mfg update.
        0x01
        0xE3
3.  Following mode is to be used for fw/mfg update.
        0x02
4.  Following mode is to be used for fw/mfg update along with activate.
        0x00
        0x02
        0xE2

Note: The above values are based on current firmware support,and any change
        in above shall require changing of these settings.
********************************************************************************

********************************************************************************
KNOWN ISSUES:
********************************************************************************

1)Xfdlutil some time does not display topology information correctly with Gen1 
controllers, when multiple time reset expander  (option 98)is executed. This happens 
when the topology is having more than two expander connected in cascade. This issue is not seen,
If delay of 15 second or more is kept in successive expander reset (option 98) .
Also even after executing reset ports command (option 99), topology is displayed correctly.

2)In Xfdlutil,with Gen1 controller,some times "reset expander" shows wrong details about the topology,
This happens when expanders are not connected in Table to table when connected in cascaded topology.
The issue is not reproducible when expanders are connected in Table to subtractive in forward direction 
in cascaded topology.When there is no expander in the topology and option 20/98 is accessed the Xfdlutil,
utility asks for the device handle. This error can be avoided by connecting expander in topology before 
executing any option in Xfdlutil. 


