• Danielle Ratson's avatar
    ethtool: cmis_cdb: Add a layer for supporting CDB commands · a39c84d7
    Danielle Ratson authored
    CDB (Command Data Block Message Communication) reads and writes are
    performed on memory map pages 9Fh-AFh according to the CMIS standard,
    section 8.20 of revision 5.2.
    Page 9Fh is used to specify the CDB command to be executed and also
    provides an area for a local payload (LPL).
    
    According to the CMIS standard, the firmware update process is done using
    a CDB commands sequence that will be implemented in the next patch.
    
    The kernel interface that will implement the firmware update using CDB
    command will include 2 layers that will be added under ethtool:
    
    * The upper layer that will be triggered from the module layer, is
      cmis_fw_update.
    * The lower one is cmis_cdb.
    
    In the future there might be more operations to implement using CDB
    commands. Therefore, the idea is to keep the CDB interface clean and the
    cmis_fw_update specific to the CDB commands handling it.
    
    These two layers will communicate using the API the consists of three
    functions:
    
    - struct ethtool_cmis_cdb *
      ethtool_cmis_cdb_init(struct net_device *dev,
    			struct ethtool_module_fw_flash_params *params);
    - void ethtool_cmis_cdb_fini(struct ethtool_cmis_cdb *cdb);
    - int ethtool_cmis_cdb_execute_cmd(struct net_device *dev,
    				   struct ethtool_cmis_cdb_cmd_args *args);
    
    Add the CDB layer to support initializing, finishing and executing CDB
    commands:
    
    * The initialization process will include creating of an ethtool_cmis_cdb
      instance, querying the module CDB support, entering and validating the
      password from user space (CMD 0x0000) and querying the module features
      (CMD 0x0040).
    
    * The finishing API will simply free the ethtool_cmis_cdb instance.
    
    * The executing process will write the CDB command to EEPROM using
      set_module_eeprom_by_page() that was presented earlier, and will
      process the reply from EEPROM.
    Signed-off-by: default avatarDanielle Ratson <danieller@nvidia.com>
    Reviewed-by: default avatarPetr Machata <petrm@nvidia.com>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    a39c84d7
cmis.h 3.68 KB