• Shannon Nelson's avatar
    i40e/i40evf: Add nvmupdate support · cd552cb4
    Shannon Nelson authored
    This implements a state machine intended to support the userland tool for
    updating the device eeprom. The state machine implements one-shot reads,
    writes, multi-step write sessions, and checksum requests. If we're in the middle
    of a multi-step write session, no one should fire off other writes, however, one
    shot reads are valid. The userland tool is expected to keep track of its session
    status, arrange the placement and ordering of the writes, and deal with the
    checksum requirement.
    
    This patch also adds nvmupdate support to ethtool callbacks.
    The get_eeprom() and set_eeprom() services in ethtool are used here to
    facilitate the userland NVMUpdate tool.  The 'magic' value in the get and
    set commands is used to pass additional control information for managing
    the read and write steps.
    
    The read operation works both as normally expected in the standard ethtool
    method, as well as with the extra NVM controls.  The write operation
    works only for the expanded NVM functions - the normal ethtool method is
    not allowed because of the NVM semaphore management needed for multipart
    writes, as well as the checksum requirement.
    
    Change-ID: I1d84a170153a9f437906744e2e350fd68fe7563d
    Signed-off-by: default avatarShannon Nelson <shannon.nelson@intel.com>
    Tested-by: default avatarJim Young <jamesx.m.young@intel.com>
    Signed-off-by: default avatarJeff Kirsher <jeffrey.t.kirsher@intel.com>
    cd552cb4
i40e_nvm.c 24 KB